home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume24 / pucc-mk / part05 < prev    next >
Text File  |  1991-03-19  |  60KB  |  1,842 lines

  1. Subject:  v24i061:  Purdue shell turbo charger and manual installer, Part05/06
  2. Newsgroups: comp.sources.unix
  3. Approved: rsalz@uunet.UU.NET
  4. X-Checksum-Snefru: 075abc1d 61c1ccea d3d9d4a0 5332e633
  5.  
  6. Submitted-by: Kevin Braunsdorf <ksb@cc.purdue.edu>
  7. Posting-number: Volume 24, Issue 61
  8. Archive-name: pucc-mk/part05
  9.  
  10. #!/bin/sh
  11. # This is part 05 of pucc-1c
  12. # ============= mkcat/strcasecmp.c ==============
  13. if test ! -d 'mkcat'; then
  14.     echo 'x - creating directory mkcat'
  15.     mkdir 'mkcat'
  16. fi
  17. if test -f 'mkcat/strcasecmp.c' -a X"$1" != X"-c"; then
  18.     echo 'x - skipping mkcat/strcasecmp.c (File already exists)'
  19. else
  20. echo 'x - extracting mkcat/strcasecmp.c (Text)'
  21. sed 's/^X//' << 'Purdue' > 'mkcat/strcasecmp.c' &&
  22. /*
  23. X * Copyright (c) 1987 Regents of the University of California.
  24. X * All rights reserved.
  25. X *
  26. X * Redistribution and use in source and binary forms are permitted
  27. X * provided that the above copyright notice and this paragraph are
  28. X * duplicated in all such forms and that any documentation,
  29. X * advertising materials, and other materials related to such
  30. X * distribution and use acknowledge that the software was developed
  31. X * by the University of California, Berkeley.  The name of the
  32. X * University may not be used to endorse or promote products derived
  33. X * from this software without specific prior written permission.
  34. X * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  35. X * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  36. X * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  37. X */
  38. X
  39. #if defined(LIBC_SCCS) && !defined(lint)
  40. static char sccsid[] = "@(#)strcasecmp.c    5.7 (Berkeley) 2/7/89";
  41. #endif /* LIBC_SCCS and not lint */
  42. X
  43. #include <sys/types.h>
  44. X
  45. /*
  46. X * This array is designed for mapping upper and lower case letter
  47. X * together for a case independent comparison.  The mappings are
  48. X * based upon ascii character sequences.
  49. X */
  50. static u_char charmap[] = {
  51. X    '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
  52. X    '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
  53. X    '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
  54. X    '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
  55. X    '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',
  56. X    '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',
  57. X    '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',
  58. X    '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',
  59. X    '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
  60. X    '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
  61. X    '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
  62. X    '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',
  63. X    '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
  64. X    '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
  65. X    '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
  66. X    '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',
  67. X    '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
  68. X    '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
  69. X    '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',
  70. X    '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',
  71. X    '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',
  72. X    '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
  73. X    '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
  74. X    '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
  75. X    '\300', '\301', '\302', '\303', '\304', '\305', '\306', '\307',
  76. X    '\310', '\311', '\312', '\313', '\314', '\315', '\316', '\317',
  77. X    '\320', '\321', '\322', '\323', '\324', '\325', '\326', '\327',
  78. X    '\330', '\331', '\332', '\333', '\334', '\335', '\336', '\337',
  79. X    '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
  80. X    '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
  81. X    '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
  82. X    '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377',
  83. };
  84. X
  85. strcasecmp(s1, s2)
  86. X    char *s1, *s2;
  87. {
  88. X    register u_char    *cm = charmap,
  89. X            *us1 = (u_char *)s1,
  90. X            *us2 = (u_char *)s2;
  91. X
  92. X    while (cm[*us1] == cm[*us2++])
  93. X        if (*us1++ == '\0')
  94. X            return(0);
  95. X    return(cm[*us1] - cm[*--us2]);
  96. }
  97. X
  98. strncasecmp(s1, s2, n)
  99. X    char *s1, *s2;
  100. X    register int n;
  101. {
  102. X    register u_char    *cm = charmap,
  103. X            *us1 = (u_char *)s1,
  104. X            *us2 = (u_char *)s2;
  105. X
  106. X    while (--n >= 0 && cm[*us1] == cm[*us2++])
  107. X        if (*us1++ == '\0')
  108. X            return(0);
  109. X    return(n < 0 ? 0 : cm[*us1] - cm[*--us2]);
  110. }
  111. Purdue
  112. chmod 0444 mkcat/strcasecmp.c ||
  113. echo 'restore of mkcat/strcasecmp.c failed'
  114. Wc_c="`wc -c < 'mkcat/strcasecmp.c'`"
  115. test 3766 -eq "$Wc_c" ||
  116.     echo 'mkcat/strcasecmp.c: original size 3766, current size' "$Wc_c"
  117. fi
  118. # ============= mkcat/Makefile ==============
  119. if test -f 'mkcat/Makefile' -a X"$1" != X"-c"; then
  120.     echo 'x - skipping mkcat/Makefile (File already exists)'
  121. else
  122. echo 'x - extracting mkcat/Makefile (Text)'
  123. sed 's/^X//' << 'Purdue' > 'mkcat/Makefile' &&
  124. # Copyright 1990 Purdue Research Foundation, West Lafayette, Indiana
  125. # 47907.  All rights reserved.
  126. #
  127. # Written by Kevin S Braunsdorf, ksb@cc.purdue.edu, purdue!ksb
  128. #
  129. # This software is not subject to any license of the American Telephone
  130. # and Telegraph Company or the Regents of the University of California.
  131. #
  132. # Permission is granted to anyone to use this software for any purpose on
  133. # any computer system, and to alter it and redistribute it freely, subject
  134. # to the following restrictions:
  135. #
  136. # 1. Neither the authors nor Purdue University are responsible for any
  137. #    consequences of the use of this software.
  138. #
  139. # 2. The origin of this software must not be misrepresented, either by
  140. #    explicit claim or by omission.  Credit to the authors and Purdue
  141. #    University must appear in documentation and sources.
  142. #
  143. # 3. Altered versions must be plainly marked as such, and must not be
  144. #    misrepresented as being the original software.
  145. #
  146. # 4. This notice may not be removed or altered.
  147. #
  148. # Makefile for mkcat
  149. #
  150. # $Id: Makefile.plain,v 3.8 90/07/11 16:17:42 ksb Exp $
  151. #
  152. X
  153. BIN=    ${DESTDIR}/usr/local/etc
  154. PROG=    mkcat
  155. X
  156. L=../libsrtunq
  157. O=../libopt
  158. #L=/usr/include/local
  159. I=/usr/include
  160. S=/usr/include/sys
  161. P=
  162. X
  163. INCLUDE= -I$L -I$O
  164. #INCLUDE= -I$L
  165. DEBUG=    -O
  166. CDEFS= 
  167. CFLAGS= ${DEBUG} ${CDEFS} ${INCLUDE}
  168. X
  169. HDR=    main.h genwhatis.h format.h readman.h scan.h mkcat.h pt.h machine.h
  170. SRC=    main.c genwhatis.c format.c readman.c scan.c mkcat.c pt.c \
  171. X    sym2hard.c strcasecmp.c
  172. GENC=
  173. GENH=
  174. GEN=    ${GENC} ${GENH}
  175. DEP=    ${SRC} ${GENC}
  176. OBJ=    main.o genwhatis.o format.o readman.o scan.o mkcat.o pt.o \
  177. X    sym2hard.o strcasecmp.o
  178. MAN=    mkcat.8l
  179. OTHER=    README mkcat.m
  180. SOURCE=    Makefile ${MAN} ${HDR} ${SRC} ${OTHER}
  181. X
  182. all: ${PROG}.x
  183. X
  184. ${PROG}.x:$P ${OBJ}
  185. #    ${CC} ${DEBUG} -o $@ ${OBJ} -lopt -lsrtunq
  186. X    ${CC} ${DEBUG} -o $@ ${OBJ} ../libopt/libopt.a ../libsrtunq/libsrtunq.a
  187. #    ${CC} ${DEBUG} -o $@ ${OBJ} -lopt -lsrtunq -lbsd
  188. X
  189. self-test: ${PROG}.x ${MAN} FRC
  190. X    ./${PROG}.x -v -r. ${MAN} ; echo $$?
  191. X    echo 'The cat8 should have formatted pages, whatis should be here.'
  192. X    ls -FC cat8 whatis
  193. X
  194. self-clean: FRC
  195. X    rm -rf cat? OLD whatis
  196. X
  197. swap: main.h main.c mkcat.m
  198. X    mv Makefile Makefile.plain
  199. X    mv Makefile.mkcmd Makefile
  200. X    mkcmd std_help.m mkcat.m
  201. X    -cmp -s prog.c main.c || echo prog.c changed
  202. X    -cmp -s prog.h main.h || echo prog.h changed
  203. X    rm -f prog.[ch]
  204. X    make depend
  205. X
  206. clean: self-clean FRC
  207. X    rm -f Makefile.bak ${PROG}.x ${GEN} *.o a.out core errs tags
  208. X
  209. depend: ${HDR} ${SRC} ${GEN} FRC
  210. X    maketd ${CDEFS} ${INCLUDE} ${DEP}
  211. X
  212. install: all FRC
  213. X    install -cs ${PROG}.x ${BIN}/${PROG}
  214. X
  215. lint: ${HDR} ${SRC} ${GEN} FRC
  216. X    lint -h ${CDEFS} ${INCLUDE} ${DEP}
  217. X
  218. # a little chicken and egg stuff here... we hope we can use us to make mkcat
  219. mkcat: ${MAN} ${PROG}.x FRC
  220. X    if [ -f ${PROG}.x ]; then \
  221. X        PATH=$$PATH:. ${PROG}.x ${MAN} ;\
  222. X    else \
  223. X        PATH=$$PATH:. ${PROG} ${MAN} ;\
  224. X    fi
  225. X
  226. print: source FRC
  227. X    lpr -J'${PROG} source' ${SOURCE}
  228. X
  229. shar: source
  230. X    shar -p K ${SOURCE} >../mkcat.shar
  231. X
  232. source: ${SOURCE}
  233. X
  234. spotless: clean self-clean
  235. X    rcsclean ${SOURCE}
  236. X
  237. tags: ${HDR} ${SRC} ${GEN}
  238. X    ctags -t ${HDR} ${SRC} ${GEN}
  239. X
  240. ${SOURCE}:
  241. X    co -q $@
  242. X
  243. FRC:
  244. X
  245. # DO NOT DELETE THIS LINE - maketd DEPENDS ON IT
  246. X
  247. main.o: $O/getopt.h machine.h main.c mkcat.h
  248. X
  249. genwhatis.o: genwhatis.c genwhatis.h machine.h main.h mkcat.h pt.h
  250. X
  251. format.o: format.c genwhatis.h machine.h main.h mkcat.h pt.h readman.h scan.h
  252. X
  253. readman.o: machine.h main.h mkcat.h readman.c readman.h
  254. X
  255. scan.o: format.h genwhatis.h machine.h main.h mkcat.h pt.h readman.h scan.c
  256. X
  257. mkcat.o: $L/srtunq.h genwhatis.h machine.h main.h mkcat.c mkcat.h pt.h
  258. X
  259. pt.o: machine.h pt.c pt.h
  260. X
  261. sym2hard.o: machine.h main.h sym2hard.c
  262. X
  263. strcasecmp.o: strcasecmp.c
  264. X
  265. # *** Do not add anything here - It will go away. ***
  266. Purdue
  267. chmod 0644 mkcat/Makefile ||
  268. echo 'restore of mkcat/Makefile failed'
  269. Wc_c="`wc -c < 'mkcat/Makefile'`"
  270. test 3675 -eq "$Wc_c" ||
  271.     echo 'mkcat/Makefile: original size 3675, current size' "$Wc_c"
  272. fi
  273. # ============= mkcat/Makefile.mkcmd ==============
  274. if test -f 'mkcat/Makefile.mkcmd' -a X"$1" != X"-c"; then
  275.     echo 'x - skipping mkcat/Makefile.mkcmd (File already exists)'
  276. else
  277. echo 'x - extracting mkcat/Makefile.mkcmd (Text)'
  278. sed 's/^X//' << 'Purdue' > 'mkcat/Makefile.mkcmd' &&
  279. # Copyright 1990 Purdue Research Foundation, West Lafayette, Indiana
  280. # 47907.  All rights reserved.
  281. #
  282. # Written by Kevin S Braunsdorf, ksb@cc.purdue.edu, purdue!ksb
  283. #
  284. # This software is not subject to any license of the American Telephone
  285. # and Telegraph Company or the Regents of the University of California.
  286. #
  287. # Permission is granted to anyone to use this software for any purpose on
  288. # any computer system, and to alter it and redistribute it freely, subject
  289. # to the following restrictions:
  290. #
  291. # 1. Neither the authors nor Purdue University are responsible for any
  292. #    consequences of the use of this software.
  293. #
  294. # 2. The origin of this software must not be misrepresented, either by
  295. #    explicit claim or by omission.  Credit to the authors and Purdue
  296. #    University must appear in documentation and sources.
  297. #
  298. # 3. Altered versions must be plainly marked as such, and must not be
  299. #    misrepresented as being the original software.
  300. #
  301. # 4. This notice may not be removed or altered.
  302. #
  303. # Makefile for mkcat
  304. #
  305. # $Id: Makefile,v 3.8 90/07/11 15:20:21 ksb Exp $
  306. #
  307. X
  308. BIN=    ${DESTDIR}/usr/local/etc
  309. PROG=    mkcat
  310. X
  311. L=../libsrtunq
  312. O=../libopt
  313. #L=/usr/include/local
  314. I=/usr/include
  315. S=/usr/include/sys
  316. P=
  317. X
  318. INCLUDE= -I$L -I$O
  319. #INCLUDE= -I$L
  320. DEBUG=    -O
  321. CDEFS= 
  322. CFLAGS= ${DEBUG} ${CDEFS} ${INCLUDE}
  323. X
  324. HDR=    genwhatis.h format.h readman.h scan.h mkcat.h pt.h machine.h
  325. SRC=    genwhatis.c format.c readman.c scan.c mkcat.c pt.c \
  326. X    sym2hard.c strcasecmp.c
  327. GENC=    main.c
  328. GENH=    main.h
  329. GEN=    ${GENC} ${GENH}
  330. DEP=    ${SRC} ${GENC}
  331. OBJ=    main.o genwhatis.o format.o readman.o scan.o mkcat.o pt.o \
  332. X    sym2hard.o strcasecmp.o
  333. MAN=    mkcat.8l
  334. OTHER=    README mkcat.m
  335. SOURCE=    Makefile ${MAN} ${HDR} ${SRC} ${OTHER}
  336. X
  337. all: ${PROG}.x
  338. X
  339. ${PROG}.x:$P ${OBJ}
  340. #    ${CC} ${DEBUG} -o $@ ${OBJ} -lopt -lsrtunq
  341. X    ${CC} ${DEBUG} -o $@ ${OBJ} ../libopt/libopt.a ../libsrtunq/libsrtunq.a
  342. #    ${CC} ${DEBUG} -o $@ ${OBJ} -lopt -lsrtunq -lbsd
  343. X
  344. main.h: main.c
  345. X
  346. main.c: mkcat.m
  347. X    mkcmd std_help.m mkcat.m
  348. X    -(cmp -s prog.c main.c || (mv prog.c main.c && echo main.c updated))
  349. X    -(cmp -s prog.h main.h || (mv prog.h main.h && echo main.h updated))
  350. X    rm -f prog.[ch]
  351. X
  352. self-test: ${PROG}.x ${MAN} FRC
  353. X    ./${PROG}.x -v -r. ${MAN} ; echo $$?
  354. X    echo 'The cat8 should have formatted pages, whatis should be here.'
  355. X    ls -FC cat8 whatis
  356. X
  357. self-clean: FRC
  358. X    rm -rf cat? OLD whatis
  359. X
  360. swap: main.h main.c
  361. X    mv Makefile Makefile.mkcmd
  362. X    mv Makefile.plain Makefile
  363. X    make depend
  364. X
  365. clean: self-clean FRC
  366. X    rm -f Makefile.bak ${PROG}.x ${GEN} *.o a.out core errs tags
  367. X
  368. depend: ${HDR} ${SRC} ${GEN} FRC
  369. X    maketd ${CDEFS} ${INCLUDE} ${DEP}
  370. X
  371. install: all FRC
  372. X    install -cs ${PROG}.x ${BIN}/${PROG}
  373. X
  374. lint: ${HDR} ${SRC} ${GEN} FRC
  375. X    lint -h ${CDEFS} ${INCLUDE} ${DEP}
  376. X
  377. # a little chicken and egg stuff here... we hope we can use us to make mkcat
  378. mkcat: ${MAN} ${PROG}.x FRC
  379. X    if [ -f ${PROG}.x ]; then \
  380. X        PATH=$$PATH:. ${PROG}.x ${MAN} ;\
  381. X    else \
  382. X        PATH=$$PATH:. ${PROG} ${MAN} ;\
  383. X    fi
  384. X
  385. print: source FRC
  386. X    lpr -J'${PROG} source' ${SOURCE}
  387. X
  388. shar: source
  389. X    shar -p K ${SOURCE} >../mkcat.shar
  390. X
  391. source: ${SOURCE}
  392. X
  393. spotless: clean self-clean
  394. X    rcsclean ${SOURCE}
  395. X
  396. tags: ${HDR} ${SRC} ${GEN}
  397. X    ctags -t ${HDR} ${SRC} ${GEN}
  398. X
  399. ${SOURCE}:
  400. X    co -q $@
  401. X
  402. FRC:
  403. X
  404. # DO NOT DELETE THIS LINE - maketd DEPENDS ON IT
  405. X
  406. genwhatis.o: genwhatis.c genwhatis.h machine.h main.h mkcat.h pt.h
  407. X
  408. format.o: format.c genwhatis.h machine.h main.h mkcat.h pt.h readman.h scan.h
  409. X
  410. readman.o: machine.h main.h mkcat.h readman.c readman.h
  411. X
  412. scan.o: format.h genwhatis.h machine.h main.h mkcat.h pt.h readman.h scan.c
  413. X
  414. mkcat.o: genwhatis.h machine.h main.h mkcat.c mkcat.h pt.h
  415. X
  416. pt.o: machine.h pt.c pt.h
  417. X
  418. sym2hard.o: machine.h main.h sym2hard.c
  419. X
  420. strcasecmp.o: strcasecmp.c
  421. X
  422. main.o: machine.h main.c mkcat.h
  423. X
  424. # *** Do not add anything here - It will go away. ***
  425. Purdue
  426. chmod 0644 mkcat/Makefile.mkcmd ||
  427. echo 'restore of mkcat/Makefile.mkcmd failed'
  428. Wc_c="`wc -c < 'mkcat/Makefile.mkcmd'`"
  429. test 3718 -eq "$Wc_c" ||
  430.     echo 'mkcat/Makefile.mkcmd: original size 3718, current size' "$Wc_c"
  431. fi
  432. # ============= mk/mk.m ==============
  433. if test ! -d 'mk'; then
  434.     echo 'x - creating directory mk'
  435.     mkdir 'mk'
  436. fi
  437. if test -f 'mk/mk.m' -a X"$1" != X"-c"; then
  438.     echo 'x - skipping mk/mk.m (File already exists)'
  439. else
  440. echo 'x - extracting mk/mk.m (Text)'
  441. sed 's/^X//' << 'Purdue' > 'mk/mk.m' &&
  442. # mkcmd driver for mk                        (ksb)
  443. from '"machine.h"';
  444. mix
  445. getenv "MK";
  446. terse "uline"
  447. vector "help"
  448. usage "usage"
  449. X
  450. integer variable "retval" { local initializer "0" }
  451. char* variable "pathname" { help "global for full path to mk" }
  452. X
  453. before {
  454. X    update "pathname = argv[0];"
  455. }
  456. X
  457. boolean 'A' {
  458. X    named "fFirst"
  459. X    help "find the first matched command that succeeds"
  460. }
  461. function "D" {
  462. X    named "define"
  463. X    parameter "defn"
  464. X    update "%n(%a);"
  465. X    help "give a definition of an environment variable"
  466. }
  467. function "U" {
  468. X    named "undefine"
  469. X    parameter "undef"
  470. X    update "%n(%a);"
  471. X    help "remove a definition for an envoronment variable"
  472. }
  473. boolean "V" {
  474. X    hidden named "debug"
  475. X    help "output debug information on stderr"
  476. }
  477. boolean "a" {
  478. X    named "fAll"
  479. X    help "find all matched commands"
  480. }
  481. boolean "c" {
  482. X    named "fConfirm"
  483. X    help "confirm the action before running it"
  484. }
  485. char* "d" {
  486. X    named "submark"
  487. X    parameter "submarker"
  488. X    help 'look for the string \\"$marker(submarker):\\" in file'
  489. }
  490. boolean "i" {
  491. X    named "fCase"
  492. X    help "ignore case for markers and submarkers"
  493. }
  494. integer "l" {
  495. X    parameter "lines"
  496. X    named "lines"
  497. X    initializer "99"
  498. X    help "specify the max number of lines to search"
  499. }
  500. char* "m" {
  501. X    named "markstr"
  502. X    parameter "marker"
  503. X    help 'look for the string \\"$marker:\\" in file'
  504. }
  505. boolean "n" {
  506. X    named "fExec"
  507. X    initializer "1"
  508. X    help "do not really do it"
  509. }
  510. from '"optaccum.h"'
  511. char* "e" {
  512. X    named "pchExamine"
  513. X    parameter "templates"
  514. X    update '%n = OptAccum(%n, %a, ":");'
  515. X    help "scan templates before given files"
  516. }
  517. char* "t" {
  518. X    named "pchTemplates"
  519. X    parameter "templates"
  520. X    update '%n = OptAccum(%n, %a, ":");'
  521. X    help "look for marker in template file"
  522. }
  523. boolean "v" {
  524. X    named "fVerbose"
  525. X    initializer "1"
  526. X    update "%n = 1;"
  527. X    help "be verbose"
  528. }
  529. action "s" {
  530. X    update "%rvn = 0;"
  531. X    help "silent operation"
  532. }
  533. X
  534. every {
  535. X    named "process"
  536. X    param "files"
  537. X    update 'retval += process(%a);'
  538. X    help "search for commands in these files"
  539. }
  540. exit {
  541. X    update "/* we just exit now */"
  542. X    aborts "exit(retval);"
  543. }
  544. X
  545. zero {
  546. X    from '"mk.h"'
  547. X    update 'if (%rVn) {Version();}'
  548. }
  549. Purdue
  550. chmod 0444 mk/mk.m ||
  551. echo 'restore of mk/mk.m failed'
  552. Wc_c="`wc -c < 'mk/mk.m'`"
  553. test 2007 -eq "$Wc_c" ||
  554.     echo 'mk/mk.m: original size 2007, current size' "$Wc_c"
  555. fi
  556. # ============= mkcat/mkcat.h ==============
  557. if test -f 'mkcat/mkcat.h' -a X"$1" != X"-c"; then
  558.     echo 'x - skipping mkcat/mkcat.h (File already exists)'
  559. else
  560. echo 'x - extracting mkcat/mkcat.h (Text)'
  561. sed 's/^X//' << 'Purdue' > 'mkcat/mkcat.h' &&
  562. /*
  563. X * Some macros to keep me sane in the code                (ksb)
  564. X * $Id: mkcat.h,v 3.3 90/11/28 09:43:57 ksb Exp $
  565. X *
  566. X * Copyright 1990 Purdue Research Foundation, West Lafayette, Indiana
  567. X * 47907.  All rights reserved.
  568. X *
  569. X * Written by Kevin S Braunsdorf, ksb@cc.purdue.edu, purdue!ksb
  570. X *
  571. X * This software is not subject to any license of the American Telephone
  572. X * and Telegraph Company or the Regents of the University of California.
  573. X *
  574. X * Permission is granted to anyone to use this software for any purpose on
  575. X * any computer system, and to alter it and redistribute it freely, subject
  576. X * to the following restrictions:
  577. X *
  578. X * 1. Neither the authors nor Purdue University are responsible for any
  579. X *    consequences of the use of this software.
  580. X *
  581. X * 2. The origin of this software must not be misrepresented, either by
  582. X *    explicit claim or by omission.  Credit to the authors and Purdue
  583. X *    University must appear in documentation and sources.
  584. X *
  585. X * 3. Altered versions must be plainly marked as such, and must not be
  586. X *    misrepresented as being the original software.
  587. X *
  588. X * 4. This notice may not be removed or altered.
  589. X */
  590. X
  591. /* debug bits for real problems {most of this was removed in 1989} */
  592. #define DEBUG_NONE    0x0000
  593. #define DEBUG_TRACE    0x0001
  594. #define DEBUG_ASSERT    0x0002
  595. #define DEBUG         DEBUG_NONE
  596. X
  597. extern char acNoMem[], acCat[], acRoot[], acWhatis[];
  598. X
  599. #define DIROWNER    (0)
  600. #define DIRGROUP    (1)
  601. #define DIRMODE        (2)
  602. #define PAGEOWNER    (DIROWNER+3)
  603. #define PAGEGROUP    (DIRGROUP+3)
  604. #define PAGEMODE    (DIRMODE+3)
  605. #define WHATISOWNER    (DIROWNER+6)
  606. #define WHATISGROUP    (DIRGROUP+6)
  607. #define WHATISMODE    (DIRMODE+6)
  608. #define MANOWNER    (DIROWNER+9)
  609. #define MANGROUP    (DIRGROUP+9)
  610. #define MANMODE        (DIRMODE+9)
  611. X
  612. #define MAXMODE        (MANMODE)
  613. #define MINMODE        (DIRMODE)
  614. X
  615. extern char *apcModes[MAXMODE+1];
  616. extern char *pcMkToken;
  617. X
  618. #define fpOut    stdout
  619. extern int fCompress, fUseHards;
  620. extern void PrepInfo();
  621. extern int IsOKBase(), ExtConflict();
  622. extern void MakeDir();
  623. Purdue
  624. chmod 0444 mkcat/mkcat.h ||
  625. echo 'restore of mkcat/mkcat.h failed'
  626. Wc_c="`wc -c < 'mkcat/mkcat.h'`"
  627. test 1954 -eq "$Wc_c" ||
  628.     echo 'mkcat/mkcat.h: original size 1954, current size' "$Wc_c"
  629. fi
  630. # ============= mkcat/pt.h ==============
  631. if test -f 'mkcat/pt.h' -a X"$1" != X"-c"; then
  632.     echo 'x - skipping mkcat/pt.h (File already exists)'
  633. else
  634. echo 'x - extracting mkcat/pt.h (Text)'
  635. sed 's/^X//' << 'Purdue' > 'mkcat/pt.h' &&
  636. /*
  637. X * a simple abstraction for a UNIX pathname
  638. X * $Id: pt.h,v 3.1 90/11/28 09:44:03 ksb Exp $
  639. X *
  640. X * Copyright 1990 Purdue Research Foundation, West Lafayette, Indiana
  641. X * 47907.  All rights reserved.
  642. X *
  643. X * Written by Kevin S Braunsdorf, ksb@cc.purdue.edu, purdue!ksb
  644. X *
  645. X * This software is not subject to any license of the American Telephone
  646. X * and Telegraph Company or the Regents of the University of California.
  647. X *
  648. X * Permission is granted to anyone to use this software for any purpose on
  649. X * any computer system, and to alter it and redistribute it freely, subject
  650. X * to the following restrictions:
  651. X *
  652. X * 1. Neither the authors nor Purdue University are responsible for any
  653. X *    consequences of the use of this software.
  654. X *
  655. X * 2. The origin of this software must not be misrepresented, either by
  656. X *    explicit claim or by omission.  Credit to the authors and Purdue
  657. X *    University must appear in documentation and sources.
  658. X *
  659. X * 3. Altered versions must be plainly marked as such, and must not be
  660. X *    misrepresented as being the original software.
  661. X *
  662. X * 4. This notice may not be removed or altered.
  663. X */
  664. X
  665. typedef struct PTnode {
  666. X    char acname[MAXPATHLEN+1];    /* name                */
  667. X    short istate;            /* how is name munged        */
  668. X    char *pcdir;            /* last slash before base    */
  669. X    char *pcbase;            /* first char in base        */
  670. X    char *pcext;            /* '.' in ext, or first char    */
  671. X    char *pccomp;            /* '.' in ".Z" or '\000'    */
  672. } PATH;
  673. #define PS_COMP        0x08
  674. #define PS_EXT        0x04
  675. #define PS_DIR        0x01
  676. #define PS_NONE        0x00
  677. X
  678. #define PTHasExt(MpPT) ((char *)0 != (MpPT)->pcext)
  679. #define PTIsComp(MpPT) ((char *)0 != (MpPT)->pccomp)
  680. X
  681. #if HAVE_PROTO
  682. extern void PTInit(char *, PATH *);
  683. extern char *PTLocal(PATH *);
  684. extern char *PTFull(PATH *);
  685. extern char *PTDir(PATH *);
  686. extern char *PTBase(PATH *);
  687. extern char *PTExt(PATH *);
  688. extern int PTComp(PATH *);
  689. extern int PTUnComp(PATH *);
  690. #else
  691. extern void PTInit();
  692. extern char *PTLocal();
  693. extern char *PTFull();
  694. extern char *PTDir();
  695. extern char *PTBase();
  696. extern char *PTExt();
  697. extern int PTComp();
  698. extern int PTUnComp();
  699. #endif
  700. Purdue
  701. chmod 0444 mkcat/pt.h ||
  702. echo 'restore of mkcat/pt.h failed'
  703. Wc_c="`wc -c < 'mkcat/pt.h'`"
  704. test 2050 -eq "$Wc_c" ||
  705.     echo 'mkcat/pt.h: original size 2050, current size' "$Wc_c"
  706. fi
  707. # ============= mkcat/genwhatis.h ==============
  708. if test -f 'mkcat/genwhatis.h' -a X"$1" != X"-c"; then
  709.     echo 'x - skipping mkcat/genwhatis.h (File already exists)'
  710. else
  711. echo 'x - extracting mkcat/genwhatis.h (Text)'
  712. sed 's/^X//' << 'Purdue' > 'mkcat/genwhatis.h' &&
  713. /*
  714. X * Keep track of whatis links
  715. X * $Id: genwhatis.h,v 3.2 90/11/28 09:43:53 ksb Exp $
  716. X *
  717. X * Copyright 1990 Purdue Research Foundation, West Lafayette, Indiana
  718. X * 47907.  All rights reserved.
  719. X *
  720. X * Written by Kevin S Braunsdorf, ksb@cc.purdue.edu, purdue!ksb
  721. X *
  722. X * This software is not subject to any license of the American Telephone
  723. X * and Telegraph Company or the Regents of the University of California.
  724. X *
  725. X * Permission is granted to anyone to use this software for any purpose on
  726. X * any computer system, and to alter it and redistribute it freely, subject
  727. X * to the following restrictions:
  728. X *
  729. X * 1. Neither the authors nor Purdue University are responsible for any
  730. X *    consequences of the use of this software.
  731. X *
  732. X * 2. The origin of this software must not be misrepresented, either by
  733. X *    explicit claim or by omission.  Credit to the authors and Purdue
  734. X *    University must appear in documentation and sources.
  735. X *
  736. X * 3. Altered versions must be plainly marked as such, and must not be
  737. X *    misrepresented as being the original software.
  738. X *
  739. X * 4. This notice may not be removed or altered.
  740. X */
  741. X
  742. /*
  743. X * each of these is a link to (another name for) a manual page
  744. X */
  745. typedef struct LKnode {
  746. X    char *pclname;        /* the basename of this link        */
  747. X    char chwok;        /* whatis entry is OK            */
  748. X    char chreal;        /* this is the `real' name of this page    */
  749. X    char chdelins;        /* this link should be deleted        */
  750. } LINK;
  751. X
  752. #define LINK_DEL    'd'
  753. #define LINK_INS    'i'
  754. #define LINK_REAL    'R'
  755. #define LINK_SYMBOLIC    '@'
  756. #define LINK_OK        'y'
  757. #define LINK_BAD    'n'
  758. X
  759. /*
  760. X * at the end of formatting and linking all the pages we want to make
  761. X * one pass through the whatis database to update it.
  762. X */
  763. typedef struct WUnode {
  764. X    int isection;
  765. X    int ilen;
  766. X    char **ppclist;
  767. X    char *pcsummary;
  768. X    char *pcext;
  769. X    char *pcbase;
  770. X    char *pcalso;
  771. } WHATIS;
  772. Purdue
  773. chmod 0444 mkcat/genwhatis.h ||
  774. echo 'restore of mkcat/genwhatis.h failed'
  775. Wc_c="`wc -c < 'mkcat/genwhatis.h'`"
  776. test 1815 -eq "$Wc_c" ||
  777.     echo 'mkcat/genwhatis.h: original size 1815, current size' "$Wc_c"
  778. fi
  779. # ============= mkcat/mkcat.m ==============
  780. if test -f 'mkcat/mkcat.m' -a X"$1" != X"-c"; then
  781.     echo 'x - skipping mkcat/mkcat.m (File already exists)'
  782. else
  783. echo 'x - extracting mkcat/mkcat.m (Text)'
  784. sed 's/^X//' << 'Purdue' > 'mkcat/mkcat.m' &&
  785. # mkcat parser in mkcmd
  786. # $Id: mkcat.m,v 3.5 90/11/28 09:43:59 ksb Exp $
  787. # this tool is generated standalone because it goes to the world
  788. X
  789. getenv  "MKCAT"
  790. X
  791. string variable "copyright" {
  792. X    init '"@(#) Copyright 1990 Purdue Research Foundation.\\nAll rights reserved.\\n"'
  793. }
  794. X
  795. from '"machine.h"'
  796. X
  797. boolean 'A' {
  798. X    named "fCkAlso"
  799. X    excludes "IR"
  800. X    init '0'
  801. X    help "scan the formatted pages for SEE ALSO errors"
  802. }
  803. X
  804. boolean 'R' {
  805. X    named "fInitNew"
  806. X    excludes "WIZL"
  807. X    init '0'
  808. X    help "install a new manual root"
  809. }
  810. X
  811. boolean 'V' {
  812. X    named "fVersion"
  813. X    excludes "WIZLD"
  814. X    init '0'
  815. X    help "show the version and configuration of this program"
  816. }
  817. X
  818. boolean 'D' {
  819. X    named "fDelete"
  820. X    excludes "WIZLVR"
  821. X    init '0'
  822. X    help "delete the given pages from the cat directories"
  823. }
  824. X
  825. boolean 'W' {
  826. X    named "fMkWhatis"
  827. X    excludes "DIZVR"
  828. X    init "0"
  829. X    help "rebuild the whatis database from the cat pages"
  830. }
  831. X
  832. boolean "L" {
  833. X    named "fMkLinks"
  834. X    excludes "DIZVR"
  835. X    init "0"
  836. X    help "rebuild auxiliary links to cat pages"
  837. }
  838. X
  839. boolean "Z" {
  840. X    named "fJustComp"
  841. X    excludes "DILWVR"
  842. X    init "0"
  843. X    help "check file compression and update"
  844. }
  845. X
  846. boolean "I" {
  847. X    named "fInstall"
  848. X    excludes "DLWZVR"
  849. X    init "0"
  850. X    help "install the given pages (default action)"
  851. }
  852. X
  853. boolean "G" {
  854. X    hidden named "fGenInstck"
  855. X    init "0"
  856. X    help "generate an instck checklist for the manual system"
  857. }
  858. X
  859. integer variable 'iExit' {
  860. X    init '0'
  861. }
  862. X
  863. boolean 'f' {
  864. X    named "fFormat"
  865. X    init '1'
  866. X    help "the given pages are already formatted, just use them"
  867. }
  868. X
  869. boolean 'v' {
  870. X    named 'fVerbose'
  871. X    init '0'
  872. X    update "%n = 1;"
  873. X    help "be verbose by displaying shell commands as they are run"
  874. }
  875. X
  876. action 's' {
  877. X    update "%rvn = 0;"
  878. X    help "be silent"
  879. }
  880. X
  881. X
  882. boolean 'n' {
  883. X    named 'fExec'
  884. X    init '1'
  885. X    update "%n = 0;%rvn = 1;"
  886. X    help "do not really change the manual system"
  887. }
  888. X
  889. from '"mkcat.h"'
  890. pointer 'r' {
  891. X    named 'pcRoot'
  892. X    parameter "root"
  893. X    init "acRoot"
  894. X    help "specify a user defined root for the manual system"
  895. }
  896. X
  897. pointer 'm' {
  898. X    named 'pcMan'
  899. X    param "man"
  900. X    init '(char *)0'
  901. X    help "save the manual page source in parallel with the cat page"
  902. }
  903. X
  904. pointer 'c' {
  905. X    named 'pcCat'
  906. X    parameter 'cat'
  907. X    init  'acCat'
  908. X    help "specify the prefix for cat directories (cat1 cat2 cat3...)"
  909. }
  910. X
  911. pointer 'w' {
  912. X    named "pcWhatis"
  913. X    init "acWhatis"
  914. X    param "whatis"
  915. X    help "specify a whatis database to update"
  916. }
  917. X
  918. X
  919. list {
  920. X    named "doMkCat"
  921. X    param "pages"
  922. X    update "iExit = %n(argc-optind, %a);"
  923. X    help "the manual pages to be updated"
  924. }
  925. X
  926. exit {
  927. X    update ""
  928. X    aborts "return iExit;"
  929. }
  930. Purdue
  931. chmod 0444 mkcat/mkcat.m ||
  932. echo 'restore of mkcat/mkcat.m failed'
  933. Wc_c="`wc -c < 'mkcat/mkcat.m'`"
  934. test 2423 -eq "$Wc_c" ||
  935.     echo 'mkcat/mkcat.m: original size 2423, current size' "$Wc_c"
  936. fi
  937. # ============= mk/Tests/options ==============
  938. if test ! -d 'mk/Tests'; then
  939.     echo 'x - creating directory mk/Tests'
  940.     mkdir 'mk/Tests'
  941. fi
  942. if test -f 'mk/Tests/options' -a X"$1" != X"-c"; then
  943.     echo 'x - skipping mk/Tests/options (File already exists)'
  944. else
  945. echo 'x - extracting mk/Tests/options (Text)'
  946. sed 's/^X//' << 'Purdue' > 'mk/Tests/options' &&
  947. $Compile: MK=-t/dev/null; export MK; for marker in All Verbose Case Interactive NotReally\n\tdo\n\t\t%b -m $marker %f && echo "$marker test OK"\n\tdone
  948. X
  949. $All: %b -m%m -d1 %f && %b -a -m%m -d2 %f && %b -A -m%m -d3 %f
  950. $All(1): [ "%A" = "" ] && [ _"%a" = _"" ] && [ _"%o" = _"-v" ] && [ _"%O" = _"v" ]
  951. $All(2): [ "%A" = "a" ] && [ _"%a" = _"-a" ] && [ _"%o" = _"-av" ] && [ _"%O" = _"av" ]
  952. $All(3): [ "%A" = "A" ] && [ _"%a" = _"-A" ] && [ _"%o" = _"-Av" ] && [ _"%O" = _"Av" ]
  953. X
  954. $Verbose: %b -m%m -d1 %f && %b -v -m%m -d2 %f && %b -s -m%m -d3 %f
  955. $Verbose(1): [ "%V" = "v" ] && [ _"%v" = _"-v" ] && [ _"%o" = _"-v" ] && [ _"%O" = _"v" ]
  956. $Verbose(2): [ "%V" = "v" ] && [ _"%v" = _"-v" ] && [ _"%o" = _"-v" ] && [ _"%O" = _"v" ]
  957. $Verbose(3): [ "%V" = "s" ] && [ _"%v" = _"-s" ] && [ _"%o" = _"-s" ] && [ _"%O" = _"s" ]
  958. X
  959. $Case: %b -m%m -d1 %f && %b -i -m%m -d2 %f && %b -i -m%m -d3 %f
  960. $Case(1): [ "%I" = "" ] && [ _"%i" = _"" ] && [ _"%o" = _"-v" ] && [ _"%O" = _"v" ]
  961. $Case(2): [ "%I" = "i" ] && [ _"%i" = _"-i" ] && [ _"%o" = _"-iv" ] && [ _"%O" = _"iv" ]
  962. $caSe(3): [ "%I" = "i" ] && [ _"%i" = _"-i" ] && [ _"%o" = _"-iv" ] && [ _"%O" = _"iv" ]
  963. X
  964. $Interactive: %b -m%m -d1 %f && echo "y" | %b -c -m%m -d2 %f
  965. $Interactive(1): [ "%C" = "" ] && [ _"%c" = _"" ] && [ _"%o" = _"-v" ] && [ _"%O" = _"v" ]
  966. $Interactive(2): [ "%C" = "c" ] && [ _"%c" = _"-c" ] && [ _"%o" = _"-cv" ] && [ _"%O" = _"cv" ]
  967. X
  968. $NotReally: %b -m%m -d1 %f && ( %b -n -m%m -d2 %f | sh )
  969. $NotReally(1): [ "%N" = "" ] && [ _"%n" = _"" ] && [ _"%o" = _"-v" ] && [ _"%O" = _"v" ]
  970. $NotReally(2): [ "%N" = "n" ] && [ _"%n" = _"-n" ] && [ _"%o" = _"-nv" ] && [ _"%O" = _"nv" ]
  971. Purdue
  972. chmod 0644 mk/Tests/options ||
  973. echo 'restore of mk/Tests/options failed'
  974. Wc_c="`wc -c < 'mk/Tests/options'`"
  975. test 1630 -eq "$Wc_c" ||
  976.     echo 'mk/Tests/options: original size 1630, current size' "$Wc_c"
  977. fi
  978. # ============= mk/README ==============
  979. if test -f 'mk/README' -a X"$1" != X"-c"; then
  980.     echo 'x - skipping mk/README (File already exists)'
  981. else
  982. echo 'x - extracting mk/README (Text)'
  983. sed 's/^X//' << 'Purdue' > 'mk/README' &&
  984. Sometimes you want to hide a bit of shell code in a file, then later extract
  985. and run that code on that file to produce an output.  A good example of this
  986. is the manual system: it would be terrible to have to name a Makefile for
  987. each manual page in /usr/man/man*, or keep said file(s) in sync with the
  988. pages.
  989. X
  990. What we do instead is hide the formatting command in the comments of the
  991. manual page, then extract it when we need to format the page.  Thus the
  992. command moves with the page and cannot get lost.  If a page has no command
  993. hidden in it we will fall back to a set formula, much as make(1) does.
  994. X
  995. The template formulas are written to give max flexibility by using the shell
  996. to expand some hooks.  More about that in mk.5l.
  997. X
  998. We can also set resource limits and exit codes, as well as passing the
  999. environment around more fully.
  1000. X
  1001. Anyway, that is the plan.  We also use this same program in a regression
  1002. test driver (valid(1L)) which you can email me about if you care.
  1003. X
  1004. X
  1005. kayessbee
  1006. --
  1007. "This may be a new sense of the word `robust' for you."
  1008. Kevin Braunsdorf, ksb@cc.purdue.edu, pur-ee!ksb, purdue!ksb
  1009. Purdue
  1010. chmod 0444 mk/README ||
  1011. echo 'restore of mk/README failed'
  1012. Wc_c="`wc -c < 'mk/README'`"
  1013. test 1101 -eq "$Wc_c" ||
  1014.     echo 'mk/README: original size 1101, current size' "$Wc_c"
  1015. fi
  1016. # ============= mk-lib/file-valid ==============
  1017. if test ! -d 'mk-lib'; then
  1018.     echo 'x - creating directory mk-lib'
  1019.     mkdir 'mk-lib'
  1020. fi
  1021. if test -f 'mk-lib/file-valid' -a X"$1" != X"-c"; then
  1022.     echo 'x - skipping mk-lib/file-valid (File already exists)'
  1023. else
  1024. echo 'x - extracting mk-lib/file-valid (Text)'
  1025. sed 's/^X//' << 'Purdue' > 'mk-lib/file-valid' &&
  1026. # a valid(1L) input file                        (ksb)
  1027. X
  1028. $Compile(*): ${valid-valid} -mCompile,Run,Diff,Clean -aClean -o%s -C %f >%f.out 2>%f.log\nFAILED-$?\ncase $FALIED in\n\t0) echo "Validation completed successfully" ;;\n\t1) echo "One Test Failed" ;;\n\t*) echo $FAILED "Tests Failed" ;;\nesac
  1029. $Compile(*): ${valid-valid} -mCompile,Run,Diff,Clean -aClean -C %f >%f.out 2>%f.log\nFAILED-$?\ncase $FALIED in\n\t0) echo "Validation completed successfully" ;;\n\t1) echo "One Test Failed" ;;\n\t*) echo $FAILED "Tests Failed" ;;\nesac
  1030. X
  1031. $Valid(*): ${valid-valid} -mCompile,Run,Diff,Clean -aClean -o%s -C %f >%f.out 2>%f.log\nFAILED-$?\ncase $FALIED in\n\t0) echo "Validation completed successfully" ;;\n\t1) echo "One Test Failed" ;;\n\t*) echo $FAILED "Tests Failed" ;;\nesac
  1032. $Valid(*): ${valid-valid} -mCompile,Run,Diff,Clean -aClean -C %f >%f.out 2>%f.log\nFAILED-$?\ncase $FALIED in\n\t0) echo "Validation completed successfully" ;;\n\t1) echo "One Test Failed" ;;\n\t*) echo $FAILED "Tests Failed" ;;\nesac
  1033. X
  1034. $Clean(*):    ${rcsclean-rcsclean} %s *
  1035. $Clean(*):    ${rcsclean-rcsclean} *
  1036. X
  1037. $Info(*):    ${echo-echo} "test suite description for valid"
  1038. Purdue
  1039. chmod 0444 mk-lib/file-valid ||
  1040. echo 'restore of mk-lib/file-valid failed'
  1041. Wc_c="`wc -c < 'mk-lib/file-valid'`"
  1042. test 1123 -eq "$Wc_c" ||
  1043.     echo 'mk-lib/file-valid: original size 1123, current size' "$Wc_c"
  1044. fi
  1045. # ============= mk-lib/pre-uu ==============
  1046. if test -f 'mk-lib/pre-uu' -a X"$1" != X"-c"; then
  1047.     echo 'x - skipping mk-lib/pre-uu (File already exists)'
  1048. else
  1049. echo 'x - extracting mk-lib/pre-uu (Text)'
  1050. sed 's/^X//' << 'Purdue' > 'mk-lib/pre-uu' &&
  1051. # uuencoded files, we hope
  1052. X
  1053. $Display(*):    ${uudecode-uudecode} %f |${PAGER-${more-more}} %s
  1054. $Display(*):    ${uudecode-uudecode} %f |${PAGER-${more-more}}
  1055. X
  1056. $Clean(*):    ${rm-rm} -f %P
  1057. $Clean(*):    ${rm-rm} -rf %P
  1058. X
  1059. $Info(*):    ${echo-echo} "uuencoded data"
  1060. $Info(*):    ${echo-echo} "uuencoded `${uudecode-uudecode) %f >%P && %b %o -m%m -d%s %P && rm -f %P`"
  1061. $Info(*):    ${echo-echo} "uuencoded `${uudecode-uudecode) %f >%P && %b %o -m%m %P && rm -f %P`"
  1062. $Info(*):    ${echo-echo} "uuencoded `${uudecode-uudecode) %f >%F && %b %o -m%m %F && rm -f %F`"
  1063. $Info(*):    ${echo-echo} "uuencoded `${uudecode-uudecode} %f >/tmp/u$\$%F && %b %o -m%m -d%s /tmp/u$\$%F && rm -f /tmp/u$\$%F`"
  1064. $*(*):        ${echo-echo} "uuencoded `${uudecode-uudecode} %f >/tmp/u$\$%F && %b %o -m%m /tmp/u$\$%F && rm -f /tmp/u$\$%F`"
  1065. X
  1066. $*(*):        ${uudecode-uudecode) %f >%P && %b %o -m%m -d%s %P && rm -f %P
  1067. $*(*):        ${uudecode-uudecode} %f >%P && %b %o -m%m %P && rm -f %P
  1068. $*(*):        ${uudecode-uudecode) %f >%F && %b %o -m%m %F && rm -f %F
  1069. $*(*):        ${uudecode-uudecode} %f >/tmp/u$\$%F && %b %o -m%m -d%s /tmp/u$\$%F && rm -f /tmp/u$\$%F
  1070. $*(*):        ${uudecode-uudecode} %f >/tmp/u$\$%F && %b %o -m%m /tmp/u$\$%F && rm -f /tmp/u$\$%F
  1071. Purdue
  1072. chmod 0444 mk-lib/pre-uu ||
  1073. echo 'restore of mk-lib/pre-uu failed'
  1074. Wc_c="`wc -c < 'mk-lib/pre-uu'`"
  1075. test 1168 -eq "$Wc_c" ||
  1076.     echo 'mk-lib/pre-uu: original size 1168, current size' "$Wc_c"
  1077. fi
  1078. # ============= mk-lib/dot-m ==============
  1079. if test -f 'mk-lib/dot-m' -a X"$1" != X"-c"; then
  1080.     echo 'x - skipping mk-lib/dot-m (File already exists)'
  1081. else
  1082. echo 'x - extracting mk-lib/dot-m (Text)'
  1083. sed 's/^X//' << 'Purdue' > 'mk-lib/dot-m' &&
  1084. # a modula 2 source file?                        (ksb)
  1085. X
  1086. $Compile(*):    ${m2-m2} ${m2_debug--O} -D%s -o %F %f
  1087. $Compile(*):    ${m2-m2} ${m2_debug--O} -o %F %f
  1088. $M2(*):        ${m2-m2} ${m2_debug--O} -c -D%s %f
  1089. $M2(*):        ${m2-m2} ${m2_debug--O} -c %f
  1090. $Clean(*):    ${rm-rm} -f %F.o %F
  1091. $Clean(*):    ${rm-rm} -f %F.o
  1092. $Depend(*):    ${maketd-maketd} -da -I/usr/include/local -D%s %f
  1093. $Depend(*):    ${maketd-maketd} -da -I/usr/include/local %f
  1094. X
  1095. # am mkcmd source file?
  1096. $Compile(*):    %b %o -mMkcmd %f && %b %o -m%m -s%s %F.c
  1097. $Compile(*):    %b %o -mMkcmd %f && %b %o -m%m %F.c
  1098. X
  1099. $Mkcmd(*):    ${mkcmd-mkcmd} -n$\$ %f\n\t(${cmp-cmp} -s $\$.c %s.c || (${cp-cp} $\$.c %s.c && echo %s.c updated))\n\t(${cmp-cmp} -s $\$.h %s.h || (${cp-cp} $\$.h %s.h && echo %s.h updated))\n\t${rm-rm} -f $\$.[ch]
  1100. $Mkcmd(*):    ${mkcmd-mkcmd} -n$\$ %s %f\n\t(${cmp-cmp} -s $\$.c %F.c || (${cp-cp} $\$.c %F.c && echo %F.c updated))\n\t(${cmp-cmp} -s $\$.h %F.h || (${cp-cp} $\$.h %F.h && echo %F.h updated))\n\t${rm-rm} -f $\$.[ch]
  1101. $Mkcmd(*):    ${mkcmd-mkcmd} -n$\$ %f\n\t(${cmp-cmp} -s $\$.c %F.c || (${cp-cp} $\$.c %F.c && echo %F.c updated))\n\t(${cmp-cmp} -s $\$.h %F.h || (${cp-cp} $\$.h %F.h && echo %F.h updated))\n\t${rm-rm} -f $\$.[ch]
  1102. $Mkcmd(*):    ${mkcmd-mkcmd} %s %f -n%F
  1103. $Mkcmd(*):    ${mkcmd-mkcmd} %f -n%F
  1104. X
  1105. $Clean(*):    ${rm-rm} -f prog.[cho] %F.o %F
  1106. $Clean(*):    ${rm-rm} -f prog.[cho] %F.o
  1107. X
  1108. $Info(*):    ${echo-echo} "Modula 2 source or mkcmd input"
  1109. Purdue
  1110. chmod 0444 mk-lib/dot-m ||
  1111. echo 'restore of mk-lib/dot-m failed'
  1112. Wc_c="`wc -c < 'mk-lib/dot-m'`"
  1113. test 1371 -eq "$Wc_c" ||
  1114.     echo 'mk-lib/dot-m: original size 1371, current size' "$Wc_c"
  1115. fi
  1116. # ============= mk-lib/README ==============
  1117. if test -f 'mk-lib/README' -a X"$1" != X"-c"; then
  1118.     echo 'x - skipping mk-lib/README (File already exists)'
  1119. else
  1120. echo 'x - extracting mk-lib/README (Text)'
  1121. sed 's/^X//' << 'Purdue' > 'mk-lib/README' &&
  1122. # $Id: README,v 3.0 90/11/29 08:50:18 ksb Exp $
  1123. X
  1124. These templates take the place of any hard coded rules.  Your users may
  1125. pick and choose these, or rules of their own.  Some site specific
  1126. configuration *may* be done.
  1127. X
  1128. X    1/  references to default compilers in dot-{c,f,p,l,y} may be changed
  1129. X       to reflect local compiler/processor names:
  1130. X        s/cc-cc/cc-gcc/  
  1131. X        s/-f77/-fortran/
  1132. X        s/-kcl/-lisp/
  1133. X        s/-pc/-pascal/
  1134. X        s/-lex/-flex/
  1135. X        s/-yacc/-bison/        or    s/-yacc/-byacc/
  1136. X
  1137. X       (but do not change the `hook' variable, unless you *have* to).
  1138. X
  1139. X    2/  references to options (-v, -quiet) might be added if local users
  1140. X       like more/less info by default (on xloadimage for example).
  1141. X
  1142. X    3/  submarkers might be added to some rule in place of (*).
  1143. X
  1144. X    4/  more templates for local file extenders might be created.  If you
  1145. X       need help mail me, I might even put them in the next patch!
  1146. X
  1147. X    5/  you'll have to replace calls to `ltroff' because it is a local
  1148. X       PUCC program (soon to be released, maybe?).
  1149. X
  1150. X    6/  you might have to install (any of) xloadimage, patch, perl, etc.
  1151. X       to get their rules to work.
  1152. X
  1153. --
  1154. "And in time I could only believe in one thing,
  1155. X the sky was just phosphorous stars hung on strings."
  1156. kayessbee, Kevin Braunsdorf, ksb@cc.purdue.edu, pur-ee!ksb, purdue!ksb
  1157. Purdue
  1158. chmod 0444 mk-lib/README ||
  1159. echo 'restore of mk-lib/README failed'
  1160. Wc_c="`wc -c < 'mk-lib/README'`"
  1161. test 1259 -eq "$Wc_c" ||
  1162.     echo 'mk-lib/README: original size 1259, current size' "$Wc_c"
  1163. fi
  1164. # ============= mkcat/readman.h ==============
  1165. if test -f 'mkcat/readman.h' -a X"$1" != X"-c"; then
  1166.     echo 'x - skipping mkcat/readman.h (File already exists)'
  1167. else
  1168. echo 'x - extracting mkcat/readman.h (Text)'
  1169. sed 's/^X//' << 'Purdue' > 'mkcat/readman.h' &&
  1170. /*
  1171. X * $Id: readman.h,v 3.1 90/11/28 09:44:07 ksb Exp $
  1172. X *
  1173. X * Copyright 1990 Purdue Research Foundation, West Lafayette, Indiana
  1174. X * 47907.  All rights reserved.
  1175. X *
  1176. X * Written by Kevin S Braunsdorf, ksb@cc.purdue.edu, purdue!ksb
  1177. X *
  1178. X * This software is not subject to any license of the American Telephone
  1179. X * and Telegraph Company or the Regents of the University of California.
  1180. X *
  1181. X * Permission is granted to anyone to use this software for any purpose on
  1182. X * any computer system, and to alter it and redistribute it freely, subject
  1183. X * to the following restrictions:
  1184. X *
  1185. X * 1. Neither the authors nor Purdue University are responsible for any
  1186. X *    consequences of the use of this software.
  1187. X *
  1188. X * 2. The origin of this software must not be misrepresented, either by
  1189. X *    explicit claim or by omission.  Credit to the authors and Purdue
  1190. X *    University must appear in documentation and sources.
  1191. X *
  1192. X * 3. Altered versions must be plainly marked as such, and must not be
  1193. X *    misrepresented as being the original software.
  1194. X *
  1195. X * 4. This notice may not be removed or altered.
  1196. X */
  1197. X
  1198. #define FMT_NORMAL    0    /* bits to record format of text    */
  1199. #define FMT_BOLD    1    /* FMT_NORMAL can be compared against    */
  1200. #define FMT_UNDERLINE    2    /* else, use these bits            */
  1201. #define FMT_OVERSTRIKE    4    /* to read format            */
  1202. #define LN_PAD    2    /* the caller may append this many other links    */
  1203. X
  1204. extern char acMark[];        /* the begining of the NAME section    */
  1205. extern char *strsave();
  1206. extern int StripFmt();
  1207. extern int rdlinks();
  1208. Purdue
  1209. chmod 0444 mkcat/readman.h ||
  1210. echo 'restore of mkcat/readman.h failed'
  1211. Wc_c="`wc -c < 'mkcat/readman.h'`"
  1212. test 1493 -eq "$Wc_c" ||
  1213.     echo 'mkcat/readman.h: original size 1493, current size' "$Wc_c"
  1214. fi
  1215. # ============= mkcat/scan.h ==============
  1216. if test -f 'mkcat/scan.h' -a X"$1" != X"-c"; then
  1217.     echo 'x - skipping mkcat/scan.h (File already exists)'
  1218. else
  1219. echo 'x - extracting mkcat/scan.h (Text)'
  1220. sed 's/^X//' << 'Purdue' > 'mkcat/scan.h' &&
  1221. /*
  1222. X * $Id: scan.h,v 3.1 90/11/28 09:44:09 ksb Exp $
  1223. X *
  1224. X * Copyright 1990 Purdue Research Foundation, West Lafayette, Indiana
  1225. X * 47907.  All rights reserved.
  1226. X *
  1227. X * Written by Kevin S Braunsdorf, ksb@cc.purdue.edu, purdue!ksb
  1228. X *
  1229. X * This software is not subject to any license of the American Telephone
  1230. X * and Telegraph Company or the Regents of the University of California.
  1231. X *
  1232. X * Permission is granted to anyone to use this software for any purpose on
  1233. X * any computer system, and to alter it and redistribute it freely, subject
  1234. X * to the following restrictions:
  1235. X *
  1236. X * 1. Neither the authors nor Purdue University are responsible for any
  1237. X *    consequences of the use of this software.
  1238. X *
  1239. X * 2. The origin of this software must not be misrepresented, either by
  1240. X *    explicit claim or by omission.  Credit to the authors and Purdue
  1241. X *    University must appear in documentation and sources.
  1242. X *
  1243. X * 3. Altered versions must be plainly marked as such, and must not be
  1244. X *    misrepresented as being the original software.
  1245. X *
  1246. X * 4. This notice may not be removed or altered.
  1247. X */
  1248. X
  1249. extern int cmpfile();
  1250. extern void ScanDups();
  1251. extern int AllDir();
  1252. extern void ModLinks();
  1253. Purdue
  1254. chmod 0444 mkcat/scan.h ||
  1255. echo 'restore of mkcat/scan.h failed'
  1256. Wc_c="`wc -c < 'mkcat/scan.h'`"
  1257. test 1164 -eq "$Wc_c" ||
  1258.     echo 'mkcat/scan.h: original size 1164, current size' "$Wc_c"
  1259. fi
  1260. # ============= mkcat/machine.h ==============
  1261. if test -f 'mkcat/machine.h' -a X"$1" != X"-c"; then
  1262.     echo 'x - skipping mkcat/machine.h (File already exists)'
  1263. else
  1264. echo 'x - extracting mkcat/machine.h (Text)'
  1265. sed 's/^X//' << 'Purdue' > 'mkcat/machine.h' &&
  1266. /*
  1267. X * configure for a given machine, not as nice as installs, younger    (ksb)
  1268. X * $Id: machine.h,v 3.3 90/11/28 09:43:55 ksb Exp $
  1269. X *
  1270. X * Copyright 1990 Purdue Research Foundation, West Lafayette, Indiana
  1271. X * 47907.  All rights reserved.
  1272. X *
  1273. X * Written by Kevin S Braunsdorf, ksb@cc.purdue.edu, purdue!ksb
  1274. X *
  1275. X * This software is not subject to any license of the American Telephone
  1276. X * and Telegraph Company or the Regents of the University of California.
  1277. X *
  1278. X * Permission is granted to anyone to use this software for any purpose on
  1279. X * any computer system, and to alter it and redistribute it freely, subject
  1280. X * to the following restrictions:
  1281. X *
  1282. X * 1. Neither the authors nor Purdue University are responsible for any
  1283. X *    consequences of the use of this software.
  1284. X *
  1285. X * 2. The origin of this software must not be misrepresented, either by
  1286. X *    explicit claim or by omission.  Credit to the authors and Purdue
  1287. X *    University must appear in documentation and sources.
  1288. X *
  1289. X * 3. Altered versions must be plainly marked as such, and must not be
  1290. X *    misrepresented as being the original software.
  1291. X *
  1292. X * 4. This notice may not be removed or altered.
  1293. X */
  1294. X
  1295. /*
  1296. X * define this macros to control machine dependent features        (ksb)
  1297. X */
  1298. X
  1299. /* OS type
  1300. X */
  1301. /* #define SYSV        1        /**/
  1302. #define bsd        1        /**/
  1303. X
  1304. /* we do(1) or do not(0) have "ln -s", symlink, and lstat (bsd)
  1305. X */
  1306. #define HAVE_SLINKS    defined(bsd)
  1307. X
  1308. #if HAVE_SLINKS
  1309. #define    LSTAT    lstat
  1310. #else
  1311. #define LSTAT    stat
  1312. #endif
  1313. X
  1314. #if defined(bsd)
  1315. #define strchr index
  1316. #define strrchr rindex
  1317. #endif
  1318. Purdue
  1319. chmod 0644 mkcat/machine.h ||
  1320. echo 'restore of mkcat/machine.h failed'
  1321. Wc_c="`wc -c < 'mkcat/machine.h'`"
  1322. test 1525 -eq "$Wc_c" ||
  1323.     echo 'mkcat/machine.h: original size 1525, current size' "$Wc_c"
  1324. fi
  1325. # ============= mkcat/format.h ==============
  1326. if test -f 'mkcat/format.h' -a X"$1" != X"-c"; then
  1327.     echo 'x - skipping mkcat/format.h (File already exists)'
  1328. else
  1329. echo 'x - extracting mkcat/format.h (Text)'
  1330. sed 's/^X//' << 'Purdue' > 'mkcat/format.h' &&
  1331. /*
  1332. X * These routines format a manual page, we hope                (ksb)
  1333. X * $Id: format.h,v 3.1 90/11/28 09:43:52 ksb Exp $
  1334. X *
  1335. X * Copyright 1990 Purdue Research Foundation, West Lafayette, Indiana
  1336. X * 47907.  All rights reserved.
  1337. X *
  1338. X * Written by Kevin S Braunsdorf, ksb@cc.purdue.edu, purdue!ksb
  1339. X *
  1340. X * This software is not subject to any license of the American Telephone
  1341. X * and Telegraph Company or the Regents of the University of California.
  1342. X *
  1343. X * Permission is granted to anyone to use this software for any purpose on
  1344. X * any computer system, and to alter it and redistribute it freely, subject
  1345. X * to the following restrictions:
  1346. X *
  1347. X * 1. Neither the authors nor Purdue University are responsible for any
  1348. X *    consequences of the use of this software.
  1349. X *
  1350. X * 2. The origin of this software must not be misrepresented, either by
  1351. X *    explicit claim or by omission.  Credit to the authors and Purdue
  1352. X *    University must appear in documentation and sources.
  1353. X *
  1354. X * 3. Altered versions must be plainly marked as such, and must not be
  1355. X *    misrepresented as being the original software.
  1356. X *
  1357. X * 4. This notice may not be removed or altered.
  1358. X */
  1359. X
  1360. extern char acDotZ[];
  1361. extern int mysort(), uniq();
  1362. extern int ModFmt();
  1363. Purdue
  1364. chmod 0444 mkcat/format.h ||
  1365. echo 'restore of mkcat/format.h failed'
  1366. Wc_c="`wc -c < 'mkcat/format.h'`"
  1367. test 1204 -eq "$Wc_c" ||
  1368.     echo 'mkcat/format.h: original size 1204, current size' "$Wc_c"
  1369. fi
  1370. # ============= mk/mk.h ==============
  1371. if test -f 'mk/mk.h' -a X"$1" != X"-c"; then
  1372.     echo 'x - skipping mk/mk.h (File already exists)'
  1373. else
  1374. echo 'x - extracting mk/mk.h (Text)'
  1375. sed 's/^X//' << 'Purdue' > 'mk/mk.h' &&
  1376. #define PATCH_LEVEL    0
  1377. X
  1378. /*
  1379. X * this define controls the auxilary look up of compilation
  1380. X * directives in a standard template directory.    (%~)
  1381. X */
  1382. #if !defined(AUXDIR)
  1383. #define AUXDIR    "/usr/local/lib/mk"
  1384. #endif
  1385. X
  1386. /* undefined implies no aux. lookup
  1387. X * defined implies look it up in aux. templates
  1388. X */
  1389. #if !defined(TEMPL)
  1390. #define TEMPL    "%~/file-%F:%~/dot-%x:%~/m-%M"
  1391. #endif
  1392. X
  1393. /* this is the template to scan the file given on the command line
  1394. X * (The user cannot change it (-F?), which is a `bug'.)
  1395. X */
  1396. #if !defined(FSCAN)
  1397. #define FSCAN    "%Yf%f"
  1398. #endif
  1399. X
  1400. /* this defines a pre-scan template to trap bad file types/names
  1401. X * (This is what keeps us from opening a .Z file and scanning it.)
  1402. X */
  1403. #if !defined(BEFORE)
  1404. #define BEFORE    "%~/type-%y:%~/pre-%x:%~/comma-%U,"
  1405. #endif
  1406. X
  1407. extern void Version();
  1408. extern int process();
  1409. Purdue
  1410. chmod 0644 mk/mk.h ||
  1411. echo 'restore of mk/mk.h failed'
  1412. Wc_c="`wc -c < 'mk/mk.h'`"
  1413. test 806 -eq "$Wc_c" ||
  1414.     echo 'mk/mk.h: original size 806, current size' "$Wc_c"
  1415. fi
  1416. # ============= mk/rcsname.c ==============
  1417. if test -f 'mk/rcsname.c' -a X"$1" != X"-c"; then
  1418.     echo 'x - skipping mk/rcsname.c (File already exists)'
  1419. else
  1420. echo 'x - extracting mk/rcsname.c (Text)'
  1421. sed 's/^X//' << 'Purdue' > 'mk/rcsname.c' &&
  1422. #include <stdio.h>
  1423. #include <sys/types.h>
  1424. #include <sys/file.h>
  1425. X
  1426. #include "machine.h"
  1427. X
  1428. extern char *strcpy(), *strrchr(), *strcat();
  1429. X
  1430. char *
  1431. rcsname(pchFile)
  1432. char *pchFile;
  1433. {
  1434. X    static char path[1024];
  1435. X    register char *p, *q;
  1436. X    register int fComma;
  1437. X
  1438. X    q = pchFile;
  1439. X    strcpy(path, "RCS/");
  1440. X    strcpy(path+4, q);
  1441. X
  1442. X    fComma =NULL == (p = strrchr(q, ',')) || 'v' != p[1] || '\000' != p[2];
  1443. X
  1444. X    if (fComma) {
  1445. X        strcat(path, ",v");
  1446. X    }
  1447. #if !defined(F_OK)
  1448. #define F_OK    0
  1449. #endif
  1450. X    if (0 == access(path+4, F_OK)) {
  1451. X        return path+4;
  1452. X    }
  1453. X
  1454. X    if (0 == access(path, F_OK)) {
  1455. X        return path;
  1456. X    }
  1457. X
  1458. X    if ((char *)0 != (p = strrchr(q, '/'))) {
  1459. X        p[0] = '\000';
  1460. X        strcpy(path, q);
  1461. X        strcat(path, "/RCS/");
  1462. X        strcat(path, p+1);
  1463. X        p[0] = '/';
  1464. X
  1465. X        if (fComma) {
  1466. X            strcat(path, ",v");
  1467. X        }
  1468. X        if (0 == access(path, F_OK)) {
  1469. X            return path;
  1470. X        }
  1471. X    }
  1472. X    return (char *)0;
  1473. }
  1474. Purdue
  1475. chmod 0444 mk/rcsname.c ||
  1476. echo 'restore of mk/rcsname.c failed'
  1477. Wc_c="`wc -c < 'mk/rcsname.c'`"
  1478. test 825 -eq "$Wc_c" ||
  1479.     echo 'mk/rcsname.c: original size 825, current size' "$Wc_c"
  1480. fi
  1481. # ============= mk/optaccum.c ==============
  1482. if test -f 'mk/optaccum.c' -a X"$1" != X"-c"; then
  1483.     echo 'x - skipping mk/optaccum.c (File already exists)'
  1484. else
  1485. echo 'x - extracting mk/optaccum.c (Text)'
  1486. sed 's/^X//' << 'Purdue' > 'mk/optaccum.c' &&
  1487. /*
  1488. X * accumulate option strings into a large buffer
  1489. X */
  1490. #include <stdio.h>
  1491. X
  1492. #include "machine.h"
  1493. X
  1494. extern char *progname;
  1495. extern char acOutMem[];
  1496. X
  1497. /*
  1498. X * Accumulate a string, for string options that "append with a sep"
  1499. X * note: arg must start out as either "(char *)0" or a malloc'd string
  1500. X */
  1501. char *
  1502. OptAccum(pchOld, pchArg, pchSep)
  1503. char *pchOld, *pchArg, *pchSep;
  1504. {
  1505. X    extern int strlen();
  1506. X    extern char *realloc(), *malloc(), *strcat();
  1507. X    register int len;
  1508. X    register char *pchNew;
  1509. X
  1510. X    /* Do not add null strings
  1511. X     */
  1512. X    len = strlen(pchArg);
  1513. X    if (0 == len) {
  1514. X        return pchOld;
  1515. X    }
  1516. X
  1517. X    if ((char *)0 == pchOld) {
  1518. X        pchNew = malloc(len+1);
  1519. X        if ((char *)0 == pchNew) {
  1520. X            fprintf(stderr, acOutMem, progname);
  1521. X            exit(1);
  1522. X        }
  1523. X        pchNew[0] = '\000';
  1524. X    } else {
  1525. X        len += strlen(pchOld)+strlen(pchSep)+1;
  1526. X        if ((char *)0 == (pchNew = realloc(pchOld, len))) {
  1527. X            fprintf(stderr, acOutMem, progname);
  1528. X            exit(1);
  1529. X        }
  1530. X        strcat(pchNew, pchSep);
  1531. X    }
  1532. X    pchOld = strcat(pchNew, pchArg);
  1533. X    return pchOld;
  1534. }
  1535. Purdue
  1536. chmod 0444 mk/optaccum.c ||
  1537. echo 'restore of mk/optaccum.c failed'
  1538. Wc_c="`wc -c < 'mk/optaccum.c'`"
  1539. test 977 -eq "$Wc_c" ||
  1540.     echo 'mk/optaccum.c: original size 977, current size' "$Wc_c"
  1541. fi
  1542. # ============= mk-lib/pre-dir ==============
  1543. if test -f 'mk-lib/pre-dir' -a X"$1" != X"-c"; then
  1544.     echo 'x - skipping mk-lib/pre-dir (File already exists)'
  1545. else
  1546. echo 'x - extracting mk-lib/pre-dir (Text)'
  1547. sed 's/^X//' << 'Purdue' > 'mk-lib/pre-dir' &&
  1548. # a dbm dir file (if it were a directory we would trap with type-d)    (ksb)
  1549. X
  1550. $Display(*):    ${perl-perl} \\\n\t-e 'dbmopen(Junk, "%P", 0644);' \\\n\t-e 'while (($dir,$pag) = each %%Junk) { print $%x, "\\n"; %s; }' \\\n\t-e 'dbmclose(Junk);' |${PAGER-${more-more}}
  1551. $Display(*):    ${perl-perl} \\\n\t-e 'dbmopen(Junk, "%P", 0644);' \\\n\t-e 'while (($dir,$pag) = each %%Junk) { print $%x, "\\n"; }' \\\n\t-e 'dbmclose(Junk);' |${PAGER-${more-more}}
  1552. X
  1553. $Display(*):    ${perl-perl} \\\n\t-e 'dbmopen(Junk, "%P", 0644);' \\\n\t-e 'while (($dir,$pag) = each %%Junk) { print $dir, "=", $pag, "\\n"; %s; }' \\\n\t-e 'dbmclose(Junk);' |${PAGER-${more-more}}
  1554. $Display(*):    ${perl-perl} \\\n\t-e 'dbmopen(Junk, "%P", 0644);' \\\n\t-e 'while (($dir,$pag) = each %%Junk) { print $dir, "=", $pag, "\\n"; }' \\\n\t-e 'dbmclose(Junk);' |${PAGER-${more-more}}
  1555. X
  1556. $Info(*):    ${echo-echo} "dbm directory or data"
  1557. X
  1558. $*(*):    : '%P is a nbdm file, will not %m(%s) it' && ${false-false}
  1559. $*(*):    : '%P is a nbdm file, will not %m it' && ${false-false}
  1560. Purdue
  1561. chmod 0444 mk-lib/pre-dir ||
  1562. echo 'restore of mk-lib/pre-dir failed'
  1563. Wc_c="`wc -c < 'mk-lib/pre-dir'`"
  1564. test 1011 -eq "$Wc_c" ||
  1565.     echo 'mk-lib/pre-dir: original size 1011, current size' "$Wc_c"
  1566. fi
  1567. # ============= mk-lib/pre-Z ==============
  1568. if test -f 'mk-lib/pre-Z' -a X"$1" != X"-c"; then
  1569.     echo 'x - skipping mk-lib/pre-Z (File already exists)'
  1570. else
  1571. echo 'x - extracting mk-lib/pre-Z (Text)'
  1572. sed 's/^X//' << 'Purdue' > 'mk-lib/pre-Z' &&
  1573. # chain to uncompressed file                        (ksb)
  1574. X
  1575. $Display(*):    ${zcat-zcat} %f | ${PAGER-${more-more}} %s
  1576. $Display(*):    ${zcat-zcat} %f | ${PAGER-${more-more}}
  1577. X
  1578. $Info(*):    ${echo-echo} "compressed data"
  1579. $Info(*):    ${echo-echo} "compressed `${zcat-zcat} %f >%P && %b %o -m%m -d%s %P && rm -f %P`"
  1580. $Info(*):    ${echo-echo} "compressed `${zcat-zcat} %f >/tmp/Z$\$%F && %b %o -m%m -d%s /tmp/Z$\$%F && rm -f /tmp/Z$\$%F`"
  1581. $Info(*):    ${echo-echo} "compressed `${zcat-zcat} %f >%P && %b %o -m%m %P && rm -f %P`"
  1582. $Info(*):    ${echo-echo} "compressed `${zcat-zcat} %f >/tmp/Z$\$%F && %b %o -m%m /tmp/Z$\$%F && rm -f /tmp/Z$\$%F`"
  1583. X
  1584. $*(*):        ${zcat-zcat} %f >%P && %b %o -m%m -d%s %P && rm -f %P
  1585. $*(*):        ${zcat-zcat} %f >/tmp/Z$\$%F && %b %o -m%m -d%s /tmp/Z$\$%F && rm -f /tmp/Z$\$%F
  1586. $*(*):        ${zcat-zcat} %f >%P && %b %o -m%m %P && rm -f %P
  1587. $*(*):        ${zcat-zcat} %f >/tmp/Z$\$%F && %b %o -m%m /tmp/Z$\$%F && rm -f /tmp/Z$\$%F
  1588. Purdue
  1589. chmod 0444 mk-lib/pre-Z ||
  1590. echo 'restore of mk-lib/pre-Z failed'
  1591. Wc_c="`wc -c < 'mk-lib/pre-Z'`"
  1592. test 897 -eq "$Wc_c" ||
  1593.     echo 'mk-lib/pre-Z: original size 897, current size' "$Wc_c"
  1594. fi
  1595. # ============= mk-lib/pre-z ==============
  1596. if test -f 'mk-lib/pre-z' -a X"$1" != X"-c"; then
  1597.     echo 'x - skipping mk-lib/pre-z (File already exists)'
  1598. else
  1599. echo 'x - extracting mk-lib/pre-z (Text)'
  1600. sed 's/^X//' << 'Purdue' > 'mk-lib/pre-z' &&
  1601. # compacted file, outdated compression program                (ksb)
  1602. X
  1603. $Display(*):    ${pcat-pcat} %f |${PAGER-${more-more}} %s
  1604. $Display(*):    ${pcat-pcat} %f |${PAGER-${more-more}}
  1605. X
  1606. $Info(*):    ${echo-echo} "compacted data"
  1607. $Info(*):    ${echo-echo} "compacted `${pcat-pcat) %f >%P && %b %o -m%m -d%s %P && rm -f %P`"
  1608. $Info(*):    ${echo-echo} "compacted `${pcat-pcat} %f >%P && %b %o -m%m %P && rm -f %P`"
  1609. $Info(*):    ${echo-echo} "compacted `${pcat-pcat) %f >%F && %b %o -m%m %F && rm -f %F`"
  1610. $Info(*):    ${echo-echo} "compacted `${pcat-pcat} %f >/tmp/z$\$%F && %b %o -m%m -d%s /tmp/z$\$%F && rm -f /tmp/z$\$%F`"
  1611. $Info(*):    ${echo-echo} "compacted `${pcat-pcat} %f >/tmp/z$\$%F && %b %o -m%m /tmp/z$\$%F && rm -f /tmp/z$\$%F`"
  1612. X
  1613. $*(*):        ${pcat-pcat) %f >%P && %b %o -m%m -d%s %P && rm -f %P
  1614. $*(*):        ${pcat-pcat} %f >%P && %b %o -m%m %P && rm -f %P
  1615. $*(*):        ${pcat-pcat) %f >%F && %b %o -m%m %F && rm -f %F
  1616. $*(*):        ${pcat-pcat} %f >/tmp/z$\$%F && %b %o -m%m -d%s /tmp/z$\$%F && rm -f /tmp/z$\$%F
  1617. $*(*):        ${pcat-pcat} %f >/tmp/z$\$%F && %b %o -m%m /tmp/z$\$%F && rm -f /tmp/z$\$%F
  1618. Purdue
  1619. chmod 0444 mk-lib/pre-z ||
  1620. echo 'restore of mk-lib/pre-z failed'
  1621. Wc_c="`wc -c < 'mk-lib/pre-z'`"
  1622. test 1049 -eq "$Wc_c" ||
  1623.     echo 'mk-lib/pre-z: original size 1049, current size' "$Wc_c"
  1624. fi
  1625. # ============= mk-lib/pre-zoo ==============
  1626. if test -f 'mk-lib/pre-zoo' -a X"$1" != X"-c"; then
  1627.     echo 'x - skipping mk-lib/pre-zoo (File already exists)'
  1628. else
  1629. echo 'x - extracting mk-lib/pre-zoo (Text)'
  1630. sed 's/^X//' << 'Purdue' > 'mk-lib/pre-zoo' &&
  1631. # this is a zoo archive                            (ksb)
  1632. X
  1633. $Display(*):    ${zoo-zoo} %s %f |${PAGER-${more-more}}
  1634. $Display(*):    ${zoo-zoo} lmv %f |${PAGER-${more-more}}
  1635. $Display(*):    ${zoo-zoo} -list %f |${PAGER-${more-more}}
  1636. X
  1637. $Zoo(*):    : '%B(%s): %f: do what to a zoo archive' && ${false-false}
  1638. $Zoo(*):    : '%B: %f: do what to a zoo archive' && ${false-false}
  1639. X
  1640. $Compile(*):    ${zoo-zoo} %s %f && %b %o %P && ${rm-rm} -rf %P
  1641. $Compile(*):    ${zoo-zoo} %f && %b %o -d%s %P && ${rm-rm} -rf %P
  1642. $Compile(*):    ${zoo-zoo} %f && %b %o %P && ${rm-rm} -rf %P
  1643. $Compile(*):    ${zoo-zoo} x//+%s %f && %b %o %P && ${rm-rm} -rf %P
  1644. $Compile(*):    ${zoo-zoo} x//+ %f && %b %o -d%s %P && ${rm-rm} -rf %P
  1645. $Compile(*):    ${zoo-zoo} x//+ %f && %b %o %P && ${rm-rm} -rf %P
  1646. X
  1647. $Clean(*):    ${rm-rm} -f%s %P
  1648. $Clean(*):    ${rm-rm} -f%s %F
  1649. $Clean(*):    ${rm-rm} -f %P
  1650. $Clean(*):    ${rm-rm} -f %F
  1651. X
  1652. $Info(*):    ${echo-echo} "zoo archive"
  1653. Purdue
  1654. chmod 0444 mk-lib/pre-zoo ||
  1655. echo 'restore of mk-lib/pre-zoo failed'
  1656. Wc_c="`wc -c < 'mk-lib/pre-zoo'`"
  1657. test 859 -eq "$Wc_c" ||
  1658.     echo 'mk-lib/pre-zoo: original size 859, current size' "$Wc_c"
  1659. fi
  1660. # ============= mk-lib/dot-y ==============
  1661. if test -f 'mk-lib/dot-y' -a X"$1" != X"-c"; then
  1662.     echo 'x - skipping mk-lib/dot-y (File already exists)'
  1663. else
  1664. echo 'x - extracting mk-lib/dot-y (Text)'
  1665. sed 's/^X//' << 'Purdue' > 'mk-lib/dot-y' &&
  1666. # a yacc input file                            (ksb)
  1667. X
  1668. $Compile(*):    %b %o -mYacc %f && %b %o -m%m -s%s %F.c
  1669. $Compile(*):    %b %o -mYacc %f && %b %o -m%m -s%s y.tab.c
  1670. $Compile(*):    %b %o -mYacc %f && %b %o -m%m %F.c
  1671. $Compile(*):    %b %o -mYacc %f && %b %o -m%m y.tab.c
  1672. X
  1673. $Yacc(*):    ${yacc-yacc} -d ${yacc_debug} %f\n\t(${cmp-cmp} -s y.tab.c %F.c || (${cp-cp} y.tab.c %F.c && echo %F.c updated))\n\t(${cmp-cmp} -s y.tab.h %F.h || (${cp-cp} y.tab.h %F.h && echo %F.h updated))\n\t${rm-rm} -f y.tab.[ch]
  1674. $Yacc(*):    ${yacc-yacc} -d ${yacc_debug} %f
  1675. $Yacc(*):    ${yacc-yacc} ${yacc_debug} %f\n\t(${cmp-cmp} -s y.tab.c %F.c || (${cp-cp} y.tab.c %F.c && echo %F.c updated))\n\t${rm-rm} -f y.tab.c
  1676. $Yacc(*):    ${yacc-yacc} ${yacc_debug} %f
  1677. X
  1678. $Clean(*):    ${rm-rm} -f y.output y.tab.[ch] %F.[coh]
  1679. $Clean(*):    ${rm-rm} -f y.output y.tab.[ch]
  1680. X
  1681. $Info(*):    ${echo-echo} "yacc input"
  1682. Purdue
  1683. chmod 0444 mk-lib/dot-y ||
  1684. echo 'restore of mk-lib/dot-y failed'
  1685. Wc_c="`wc -c < 'mk-lib/dot-y'`"
  1686. test 830 -eq "$Wc_c" ||
  1687.     echo 'mk-lib/dot-y: original size 830, current size' "$Wc_c"
  1688. fi
  1689. # ============= mk-lib/pre-MW ==============
  1690. if test -f 'mk-lib/pre-MW' -a X"$1" != X"-c"; then
  1691.     echo 'x - skipping mk-lib/pre-MW (File already exists)'
  1692. else
  1693. echo 'x - extracting mk-lib/pre-MW (Text)'
  1694. sed 's/^X//' << 'Purdue' > 'mk-lib/pre-MW' &&
  1695. # chain to unsqueeze file (.MW) for akb                    (ksb)
  1696. X
  1697. $Display(*):    ${unsqueeze-unsqueeze} <%f | ${PAGER-${more-more}} %s
  1698. $Display(*):    ${unsqueeze-unsqueeze} <%f | ${PAGER-${more-more}}
  1699. X
  1700. $Info(*):    ${echo-echo} "squeezed data"
  1701. $Info(*):    ${echo-echo} "squeezed `${unsqueeze-unsqueeze} <%f >%P && %b %o -m%m -d%s %P && rm -f %P`"
  1702. $Info(*):    ${echo-echo} "squeezed `${unsqueeze-unsqueeze} <%f >/tmp/MW$\$%F && %b %o -m%m -d%s /tmp/MW$\$%F && rm -f /tmp/MW$\$%F`"
  1703. $Info(*):    ${echo-echo} "squeezed `${unsqueeze-unsqueeze} <%f >%P && %b %o -m%m %P && rm -f %P`"
  1704. $Info(*):    ${echo-echo} "squeezed `${unsqueeze-unsqueeze} <%f >/tmp/MW$\$%F && %b %o -m%m /tmp/MW$\$%F && rm -f /tmp/MW$\$%F`"
  1705. X
  1706. $*(*):        ${unsqueeze-unsqueeze} <%f >%P && %b %o -m%m -d%s %P && rm -f %P
  1707. $*(*):        ${unsqueeze-unsqueeze} <%f >/tmp/MW$\$%F && %b %o -m%m -d%s /tmp/MW$\$%F && rm -f /tmp/MW$\$%F
  1708. $*(*):        ${unsqueeze-unsqueeze} <%f >%P && %b %o -m%m %P && rm -f %P
  1709. $*(*):        ${unsqueeze-unsqueeze} <%f >/tmp/MW$\$%F && %b %o -m%m /tmp/MW$\$%F && rm -f /tmp/MW$\$%F
  1710. Purdue
  1711. chmod 0444 mk-lib/pre-MW ||
  1712. echo 'restore of mk-lib/pre-MW failed'
  1713. Wc_c="`wc -c < 'mk-lib/pre-MW'`"
  1714. test 1019 -eq "$Wc_c" ||
  1715.     echo 'mk-lib/pre-MW: original size 1019, current size' "$Wc_c"
  1716. fi
  1717. # ============= mkcat/README ==============
  1718. if test -f 'mkcat/README' -a X"$1" != X"-c"; then
  1719.     echo 'x - skipping mkcat/README (File already exists)'
  1720. else
  1721. echo 'x - extracting mkcat/README (Text)'
  1722. sed 's/^X//' << 'Purdue' > 'mkcat/README' &&
  1723. # $Id: README,v 3.3 90/11/28 09:43:49 ksb Exp $
  1724. X
  1725. This is mkcat(8l).  It is my friend.  Please try it.
  1726. X
  1727. A good test might be:
  1728. X    $ make
  1729. X    $ make self-test
  1730. X    $ zcat cat8/mkcat.8l.Z | more
  1731. X    $ cat whatis
  1732. X    $ mkdir cat3
  1733. X    $ ./mkcat.x -r. /usr/man/man3/bstring.3 /usr/man/man3/ctype.3
  1734. X    $ cat whatis
  1735. X    $ ls cat3
  1736. X
  1737. (We keep our manual pages compressed here, do you guys?)
  1738. Drop me a line with complaints.  Note that this *replaces* catman(8),
  1739. and makewhatis(8l).
  1740. X
  1741. To install a new manual root in all its glory use:
  1742. X
  1743. X    $ mkcat -v -r /usr/man -R
  1744. X
  1745. Which will ask you about how you want the pages kept.
  1746. X
  1747. Usage in Makefile:
  1748. X    MAN=    mkcat.8l
  1749. X
  1750. X    install: ... FRC
  1751. X        install ...
  1752. X
  1753. X    mkcat: ${MAN} FRC
  1754. X        mkcat ${MAN}
  1755. X
  1756. Thanks for your time.  (Note `mkcat -D foo.1l' will delete old pages too.)
  1757. --
  1758. "The RCMP is to spaceflight as the Canadian government is to freedom." - ADO
  1759. kayessbee, Kevin Braunsdorf, ksb@cc.purdue.edu, pur-ee!ksb, purdue!ksb
  1760. Purdue
  1761. chmod 0444 mkcat/README ||
  1762. echo 'restore of mkcat/README failed'
  1763. Wc_c="`wc -c < 'mkcat/README'`"
  1764. test 911 -eq "$Wc_c" ||
  1765.     echo 'mkcat/README: original size 911, current size' "$Wc_c"
  1766. fi
  1767. # ============= mk/optaccum.h ==============
  1768. if test -f 'mk/optaccum.h' -a X"$1" != X"-c"; then
  1769.     echo 'x - skipping mk/optaccum.h (File already exists)'
  1770. else
  1771. echo 'x - extracting mk/optaccum.h (Text)'
  1772. sed 's/^X//' << 'Purdue' > 'mk/optaccum.h' &&
  1773. /*
  1774. X * OptAccum sums command line switchs into a single string
  1775. X * (which is originally (char *)0, or an malloced string).
  1776. X * It updates the pchOld by adding pchAdd on the end with a copy
  1777. X * of pchSep (if pchAdd is not empty).
  1778. X *
  1779. X * We need stdio.h.
  1780. X *
  1781. X * We need to have access to "char *progname;" and "char acOutMem[];"
  1782. X * for an out of memory error.
  1783. X */
  1784. X
  1785. extern char *OptAccum();    /* pchNew = OptAccm(pchOld, pchAdd, pchSep); */
  1786. Purdue
  1787. chmod 0444 mk/optaccum.h ||
  1788. echo 'restore of mk/optaccum.h failed'
  1789. Wc_c="`wc -c < 'mk/optaccum.h'`"
  1790. test 430 -eq "$Wc_c" ||
  1791.     echo 'mk/optaccum.h: original size 430, current size' "$Wc_c"
  1792. fi
  1793. # ============= mk/INSTALL ==============
  1794. if test -f 'mk/INSTALL' -a X"$1" != X"-c"; then
  1795.     echo 'x - skipping mk/INSTALL (File already exists)'
  1796. else
  1797. echo 'x - extracting mk/INSTALL (Text)'
  1798. sed 's/^X//' << 'Purdue' > 'mk/INSTALL' &&
  1799. You will need the libout library that is avliable on j.cc.purdue.edu.
  1800. X
  1801. X
  1802. 1/ Change the default template path in mk.h
  1803. X    vi mk.h
  1804. X
  1805. 2/ Edit the Makefile to define (or not) the -DRESOURCE flag
  1806. X   (sysv must be -URESOURCE, I think)
  1807. X
  1808. X   Also set BIN at the top to where mk is to be installed.
  1809. X    vi Makefile
  1810. X
  1811. 3/ make the mk binary
  1812. X    make mk
  1813. X
  1814. 4/ install the templates (set the destination directory in that Makefile)
  1815. X    (cd ../mk-lib && vi Makefile && make install clean)
  1816. X
  1817. 5/ test it if you like
  1818. X    mk -Vc mk.c Makefile
  1819. X    (cd Tests && ../mk *)
  1820. X
  1821. 6/ install mk
  1822. X    make install
  1823. X
  1824. 7/ clean up the source
  1825. X    make clean
  1826. X
  1827. 8/ Send bugs to ksb@cc.purdue.edu (Kevin Braunsdorf)
  1828. X
  1829. 9/ Thanks!
  1830. Purdue
  1831. chmod 0444 mk/INSTALL ||
  1832. echo 'restore of mk/INSTALL failed'
  1833. Wc_c="`wc -c < 'mk/INSTALL'`"
  1834. test 657 -eq "$Wc_c" ||
  1835.     echo 'mk/INSTALL: original size 657, current size' "$Wc_c"
  1836. fi
  1837. true || echo 'restore of mk/machine.h failed'
  1838. echo End of part 5, continue with part 6
  1839. exit 0
  1840.  
  1841. exit 0 # Just in case...
  1842.