]> git.sesse.net Git - rdpsrv/blob - Xserver/config/imake/imakesvc.cmd
Support RDP5 logon packets.
[rdpsrv] / Xserver / config / imake / imakesvc.cmd
1 /* Rexx OS/2
2  * This script serves as a helper cmd file for imake. Install this in
3  * the path just like imake itself.
4  *
5  * $XFree86: xc/config/imake/imakesvc.cmd,v 3.10.2.1 1997/07/19 04:59:10 dawes Exp $
6  */
7 '@echo off'
8 ADDRESS CMD
9 CALL RxFuncAdd 'SysFileDelete', 'RexxUtil', 'SysFileDelete'
10 CALL RxFuncAdd 'SysFileTree', 'RexxUtil', 'SysFileTree'
11 CALL RxFuncAdd 'SysRmDir', 'RexxUtil', 'SysRmDir'
12 CALL RxFuncAdd 'SysMkDir', 'RexxUtil', 'SysMkDir'
13
14 PARSE ARG all
15 code = WORD(all,1)
16
17 SELECT
18    WHEN code=1 THEN DO
19       /* imakesvc 1 u/n dir ruledir top current */
20       instflg = WORD(all,2)
21       imakecmd = '\imake'
22       ruledir = WORD(all,4)
23       topdir = WORD(all,5)
24       currentdir = WORD(all,6)
25       IF instflg = 'u' THEN DO 
26          root = VALUE('X11ROOT',,'OS2ENVIRONMENT')
27          IF root = '' THEN DO
28             SAY 'Fatal error: no X11ROOT environment variable found!'
29             EXIT 99
30          END
31          imakecmd = 'imake'
32          IF POS(':',ruledir) = 0 THEN
33             ruledir1 = root||ruledir
34          ELSE
35             ruledir1 = ruledir
36          topdir1 = topdir
37          useinst = '-DUseInstalled'
38       END 
39       ELSE DO
40          /* in n mode, we must add a prefix ../ for MakeMakeSubdirs */
41          ruledir1 = '../'||ruledir
42          topdir1 = '../'||topdir
43          useinst = ''
44       END
45
46       ruledir = ruledir1
47       topdir = topdir1
48       curdir = DIRECTORY()
49       dir = fixbadprefix(WORD(all,3))
50       d = DIRECTORY(dir)
51       dirfwd=TRANSLATE(dir,'/','\')
52       RC = SysFileDelete('Makefile.bak')
53       IF exists('Makefile') THEN REN Makefile Makefile.bak
54       /* There is a difficulty in the Imakefiles. Some builds refer
55        * to directories that are in a different subtree. We need to adjust
56        * the CURDIR and TOPDIR and -I paths
57        */
58       IF SUBSTR(dirfwd,1,2)='..' THEN DO
59          /* must recalculate passed topdir, currentdir, and ruledir */
60          ndist = nlevels(topdir)
61          ncurdir = './'striplevel(dirfwd,ndist-1)
62          ntopdir = maketop(nlevels(ncurdir))
63          nruledir = ntopdir||'/config/cf'
64       END 
65       ELSE DO
66          /* this is simple it is relative to this dir */
67          pfx = downlevels(dirfwd)
68          nruledir = ruledir
69          IF instflg = 'n' THEN DO /*sm120296*/
70             nruledir = pfx||ruledir
71          END
72          ntopdir = pfx||topdir
73          ncurdir = currentdir  /* use to be pfx || currentdir */
74       END
75       imakecmd useinst '-I'nruledir' -DTOPDIR='ntopdir' -DCURDIR='ncurdir'/'dirfwd
76       'x11make MAKE=x11make SHELL= Makefiles'
77       d = DIRECTORY(curdir)
78    END
79    WHEN code=2 THEN DO
80       /* imakesvc 2 buildincdir buildinctop currentdir file */
81       bid = WORD(all,3)
82       cid = WORD(all,4)
83       fil = WORD(all,5)
84       curdir = DIRECTORY()
85       d = DIRECTORY(WORD(all,2))
86       rc = SysFileDelete(fil)
87       dir = TRANSLATE(bid'/'cid'/'fil,'\','/')
88       COPY dir .' >nul 2>&1 '
89       d = DIRECTORY(curdir)
90    END
91    WHEN code=3 THEN DO
92       /* imakesvc 3 subdir updir file */
93       sdi = WORD(all,2)
94       fil = WORD(all,4)
95       curdir = DIRECTORY()
96       d = DIRECTORY(WORD(all,3))
97       rc = SysFileDelete(fil)
98       dir = TRANSLATE(sdi'/'fil,'\','/')
99       COPY dir' . >nul 2>&1'
100       d = DIRECTORY(curdir)
101    END
102    WHEN code=4 THEN DO
103       /* imakesvc 4 [-r] files... */
104       rec = WORD(all,2)
105       fp = 2
106       IF rec = '-r' THEN fp = 3 
107       ELSE rec = '-n'
108       DO i=fp TO WORDS(all)
109          CALL discard rec,TRANSLATE(WORD(all,i),'\','/')
110       END       
111    END
112    WHEN code=5 THEN DO
113       /* imakesvc 5 file */
114       file = TRANSLATE(WORD(all,2),'\','/')
115       RC = SysFileDelete(file'.bak')
116       if exists(file) THEN 'REN 'file file||'.bak'
117    END
118    WHEN code=6 THEN DO
119       /* imakesvc 6 file */
120       file = TRANSLATE(WORD(all,2),'\','/')
121       CALL SysFileDelete(file||'.bak')
122       if exists(file) THEN 'REN 'file file||'.bak'
123    END
124    WHEN code=7 THEN DO
125       /* imakesvc 7 from to */
126       from = TRANSLATE(WORD(all,2),'\','/')
127       to = TRANSLATE(WORD(all,3),'\','/')
128       CALL SysFileDelete(to)
129       COPY from to' >nul 2>&1'
130    END
131    WHEN code=8 THEN DO
132       /* imakesvc 8 arg */
133       SAY SUBWORD(TRANSLATE(all,'  ','222c'x),2)
134    END
135    WHEN code=9 THEN DO
136       /* imakesvc 9 dst.c incl.h src.c */
137       dst = TRANSLATE(WORD(all,2),'\','/')
138       src = TRANSLATE(WORD(all,4),'\','/')
139       CALL SysFileDelete(dst)
140       CALL LINEOUT dst,'#include "'WORD(all,3)'"'
141       CALL LINEOUT dst,'#include "'src'"'
142       CALL LINEOUT dst 
143    END
144    WHEN code=10 THEN DO
145       /* imakesvc 10 srcfile destdir destfile suffix */
146       src = stripsuffix(WORD(all,2))
147       destdir = TRANSLATE(WORD(all,3),'\','/')
148       dest = stripsuffix(WORD(all,4))
149       suffix = WORD(all,5)
150       tgt = destdir'\'dest'.'suffix
151       /* if you have no col.exe get one from 4.4BSD */
152       'groff -e -t -man -Tascii 'src'.man | col -b >'tgt
153    END
154    WHEN code=11 THEN DO
155       /* imakesvc 11 dirtomake */
156       dirtomake = TRANSLATE(WORD(all,2),'\','/')
157       rc = SysMkDir(dirtomake)
158    END
159    WHEN code=12 THEN DO
160       /* imakesvc 12 srcfile destdir destfile */
161       src = stripsuffix(WORD(all,2))
162       destdir = TRANSLATE(WORD(all,3),'\','/')
163       dest = stripsuffix(WORD(all,4))
164       tgt = destdir'\'dest'.gz'
165       /* if you have no col.exe get one from 4.4BSD */
166       'groff -e -t -man -Tascii 'src'.man | col -b | gzip -n >'tgt
167    END
168    WHEN code=13 THEN DO
169       /* imakesvc 13 indir fromfile tofile */
170       ind = TRANSLATE(WORD(all,2),'\','/')
171       frm = TRANSLATE(WORD(all,3),'\','/')
172       tof = ind'\'WORD(all,4)
173       IF \(exists(ind)) THEN MKDIR ind
174       rc = SysFileDelete(tof)
175       COPY frm' 'tof
176    END
177    OTHERWISE NOP
178 END
179 RETURN
180
181 downlevels:
182 oldpos = 1
183 pfx = ''
184 DO FOREVER
185    newpos = POS('/',ARG(1),oldpos)
186    IF newpos = 0 THEN LEAVE
187    newpfx = '../'pfx
188    oldpos = newpos+1
189    pfx = newpfx
190 END
191 RETURN pfx
192
193 /* returns 1, if file exists */
194 exists:
195 'DIR "'arg(1)'" >nul 2>&1'
196 IF rc = 0 THEN return 1
197 RETURN 0
198
199 discard: PROCEDURE
200 rec=ARG(1)
201 files=ARG(2)
202 IF rec = '-r' THEN DO
203    old = DIRECTORY()
204    nd = DIRECTORY
205    CALL SysFileTree files, 'deld', 'DO'
206    IF deld.0 > 0 THEN DO
207       DO m=1 TO deld.0
208          CALL DIRECTORY deld.m
209          CALL discard '-R' .
210          CALL DIRECTORY ..
211          CALL SysRmDir deld.m
212       END 
213       CALL SysRmDir files
214    END
215    CALL SysFileTree files, 'delf', 'FO'
216    DO k=1 TO delf.0
217       DEL '"'delf.k'"' '>nul 2>&1'
218    END
219    CALL SysRmDir files
220 END 
221 ELSE DO
222    DEL '"'files'"' '>nul 2>&1'
223 END
224 RETURN
225
226 /* somehow make or cmd manages to convert a relative path ..\..\. to ..... */
227 fixbadprefix:
228 count = 1
229 str = ARG(1)
230 DO WHILE SUBSTR(str,count,2) = '..'
231    count = count+1
232    str = INSERT('\',str,count)
233    count = count+2
234 END
235 RETURN str
236
237 striplevel:
238 str=ARG(1)
239 n=arg(2)
240 DO count=0 TO n
241    p = POS('/',str)
242    IF p = 0 THEN LEAVE
243    str = DELSTR(str,1,p)
244 END
245 RETURN str
246
247 nlevels:
248 str = ARG(1)
249 count = 0
250 oldpos = 1
251 DO FOREVER
252    newpos = POS('/',str,oldpos)
253    IF newpos = 0 THEN LEAVE
254    oldpos = newpos + 1
255    count = count + 1
256 END
257 RETURN count
258
259 maketop:
260 str = ''
261 n = ARG(1)
262 DO k=1 TO n
263   str = str||'../'
264 END
265 RETURN str||'.'
266
267 stripsuffix:
268 str = ARG(1)
269 spos = POS('.',str)
270 IF spos = 0 THEN
271    RETURN str
272 ELSE
273    RETURN LEFT(str,spos-1)