home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume15 / perl2 / part15 / text0000.txt < prev   
Encoding:
Text File  |  1989-01-05  |  40.4 KB  |  1,760 lines

  1. #! /bin/sh
  2.  
  3. # Make a new directory for the perl sources, cd to it, and run kits 1
  4. # thru 15 through sh.  When all 15 kits have been run, read README.
  5.  
  6. echo "This is perl 2.0 kit 15 (of 15).  If kit 15 is complete, the line"
  7. echo '"'"End of kit 15 (of 15)"'" will echo at the end.'
  8. echo ""
  9. export PATH || (echo "You didn't use sh, you clunch." ; kill $$)
  10. mkdir eg eg/g eg/scan eg/van lib t x2p 2>/dev/null
  11. echo Extracting t/comp.term
  12. sed >t/comp.term <<'!STUFFY!FUNK!' -e 's/X//'
  13. X#!./perl
  14. X
  15. X# $Header: comp.term,v 2.0 88/06/05 00:12:52 root Exp $
  16. X
  17. X# tests that aren't important enough for base.term
  18. X
  19. Xprint "1..10\n";
  20. X
  21. X$x = "\\n";
  22. Xprint "#1\t:$x: eq " . ':\n:' . "\n";
  23. Xif ($x eq '\n') {print "ok 1\n";} else {print "not ok 1\n";}
  24. X
  25. X$x = "#2\t:$x: eq :\\n:\n";
  26. Xprint $x;
  27. Xunless (index($x,'\\\\')>0) {print "ok 2\n";} else {print "not ok 2\n";}
  28. X
  29. Xif (length('\\\\') == 2) {print "ok 3\n";} else {print "not ok 3\n";}
  30. X
  31. X$one = 'a';
  32. X
  33. Xif (length("\\n") == 2) {print "ok 4\n";} else {print "not ok 4\n";}
  34. Xif (length("\\\n") == 2) {print "ok 5\n";} else {print "not ok 5\n";}
  35. Xif (length("$one\\n") == 3) {print "ok 6\n";} else {print "not ok 6\n";}
  36. Xif (length("$one\\\n") == 3) {print "ok 7\n";} else {print "not ok 7\n";}
  37. Xif (length("\\n$one") == 3) {print "ok 8\n";} else {print "not ok 8\n";}
  38. Xif (length("\\\n$one") == 3) {print "ok 9\n";} else {print "not ok 9\n";}
  39. Xif (length("\\${one}") == 2) {print "ok 10\n";} else {print "not ok 10\n";}
  40. X
  41. !STUFFY!FUNK!
  42. echo Extracting t/cmd.for
  43. sed >t/cmd.for <<'!STUFFY!FUNK!' -e 's/X//'
  44. X#!./perl
  45. X
  46. X# $Header: cmd.for,v 2.0 88/06/05 00:12:19 root Exp $
  47. X
  48. Xprint "1..7\n";
  49. X
  50. Xfor ($i = 0; $i <= 10; $i++) {
  51. X    $x[$i] = $i;
  52. X}
  53. X$y = $x[10];
  54. Xprint "#1    :$y: eq :10:\n";
  55. X$y = join(' ', @x);
  56. Xprint "#1    :$y: eq :0 1 2 3 4 5 6 7 8 9 10:\n";
  57. Xif (join(' ', @x) eq '0 1 2 3 4 5 6 7 8 9 10') {
  58. X    print "ok 1\n";
  59. X} else {
  60. X    print "not ok 1\n";
  61. X}
  62. X
  63. X$i = $c = 0;
  64. Xfor (;;) {
  65. X    $c++;
  66. X    last if $i++ > 10;
  67. X}
  68. Xif ($c == 12) {print "ok 2\n";} else {print "not ok 2\n";}
  69. X
  70. X$foo = 3210;
  71. X@ary = (1,2,3,4,5);
  72. Xforeach $foo (@ary) {
  73. X    $foo *= 2;
  74. X}
  75. Xif (join('',@ary) eq '246810') {print "ok 3\n";} else {print "not ok 3\n";}
  76. X
  77. Xfor (@ary) {
  78. X    s/(.*)/ok $1\n/;
  79. X}
  80. X
  81. Xprint $ary[1];
  82. X
  83. X# test for internal scratch array generation
  84. X# this also tests that $foo was restored to 3210 after test 3
  85. Xfor (split(' ','a b c d e')) {
  86. X    $foo .= $_;
  87. X}
  88. Xif ($foo eq '3210abcde') {print "ok 5\n";} else {print "not ok 5\n";}
  89. X
  90. Xforeach $foo (("ok 6\n","ok 7\n")) {
  91. X    print $foo;
  92. X}
  93. !STUFFY!FUNK!
  94. echo Extracting t/op.repeat
  95. sed >t/op.repeat <<'!STUFFY!FUNK!' -e 's/X//'
  96. X#!./perl
  97. X
  98. X# $Header: op.repeat,v 2.0 88/06/05 00:14:31 root Exp $
  99. X
  100. Xprint "1..11\n";
  101. X
  102. X# compile time
  103. X
  104. Xif ('-' x 5 eq '-----') {print "ok 1\n";} else {print "not ok 1\n";}
  105. Xif ('-' x 1 eq '-') {print "ok 2\n";} else {print "not ok 2\n";}
  106. Xif ('-' x 0 eq '') {print "ok 3\n";} else {print "not ok 3\n";}
  107. X
  108. Xif ('ab' x 3 eq 'ababab') {print "ok 4\n";} else {print "not ok 4\n";}
  109. X
  110. X# run time
  111. X
  112. X$a = '-';
  113. Xif ($a x 5 eq '-----') {print "ok 5\n";} else {print "not ok 5\n";}
  114. Xif ($a x 1 eq '-') {print "ok 6\n";} else {print "not ok 6\n";}
  115. Xif ($a x 0 eq '') {print "ok 7\n";} else {print "not ok 7\n";}
  116. X
  117. X$a = 'ab';
  118. Xif ($a x 3 eq 'ababab') {print "ok 8\n";} else {print "not ok 8\n";}
  119. X
  120. X$a = 'xyz';
  121. X$a x= 2;
  122. Xif ($a eq 'xyzxyz') {print "ok 9\n";} else {print "not ok 9\n";}
  123. X$a x= 1;
  124. Xif ($a eq 'xyzxyz') {print "ok 10\n";} else {print "not ok 10\n";}
  125. X$a x= 0;
  126. Xif ($a eq '') {print "ok 11\n";} else {print "not ok 11\n";}
  127. X
  128. !STUFFY!FUNK!
  129. echo Extracting t/io.argv
  130. sed >t/io.argv <<'!STUFFY!FUNK!' -e 's/X//'
  131. X#!./perl
  132. X
  133. X# $Header: io.argv,v 2.0 88/06/05 00:12:55 root Exp $
  134. X
  135. Xprint "1..5\n";
  136. X
  137. Xopen(try, '>Io.argv.tmp') || (die "Can't open temp file.");
  138. Xprint try "a line\n";
  139. Xclose try;
  140. X
  141. X$x = `./perl -e 'while (<>) {print \$.,\$_;}' Io.argv.tmp Io.argv.tmp`;
  142. X
  143. Xif ($x eq "1a line\n2a line\n") {print "ok 1\n";} else {print "not ok 1\n";}
  144. X
  145. X$x = `echo foo|./perl -e 'while (<>) {print $_;}' Io.argv.tmp -`;
  146. X
  147. Xif ($x eq "a line\nfoo\n") {print "ok 2\n";} else {print "not ok 2\n";}
  148. X
  149. X$x = `echo foo|./perl -e 'while (<>) {print $_;}'`;
  150. X
  151. Xif ($x eq "foo\n") {print "ok 3\n";} else {print "not ok 3\n";}
  152. X
  153. X@ARGV = ('Io.argv.tmp', 'Io.argv.tmp', '/dev/null', 'Io.argv.tmp');
  154. Xwhile (<>) {
  155. X    $y .= $. . $_;
  156. X    if (eof()) {
  157. X    if ($. == 3) {print "ok 4\n";} else {print "not ok 4\n";}
  158. X    }
  159. X}
  160. X
  161. Xif ($y eq "1a line\n2a line\n3a line\n")
  162. X    {print "ok 5\n";}
  163. Xelse
  164. X    {print "not ok 5\n";}
  165. X
  166. X`/bin/rm -f Io.argv.tmp`;
  167. !STUFFY!FUNK!
  168. echo Extracting handy.h
  169. sed >handy.h <<'!STUFFY!FUNK!' -e 's/X//'
  170. X/* $Header: handy.h,v 2.0 88/06/05 00:09:03 root Exp $
  171. X *
  172. X * $Log:    handy.h,v $
  173. X * Revision 2.0  88/06/05  00:09:03  root
  174. X * Baseline version 2.0.
  175. X * 
  176. X */
  177. X
  178. X#ifdef NULL
  179. X#undef NULL
  180. X#endif
  181. X#define NULL 0
  182. X#define Null(type) ((type)NULL)
  183. X#define Nullch Null(char*)
  184. X#define Nullfp Null(FILE*)
  185. X
  186. X#define bool char
  187. X#define TRUE (1)
  188. X#define FALSE (0)
  189. X
  190. X#define Ctl(ch) (ch & 037)
  191. X
  192. X#define strNE(s1,s2) (strcmp(s1,s2))
  193. X#define strEQ(s1,s2) (!strcmp(s1,s2))
  194. X#define strLT(s1,s2) (strcmp(s1,s2) < 0)
  195. X#define strLE(s1,s2) (strcmp(s1,s2) <= 0)
  196. X#define strGT(s1,s2) (strcmp(s1,s2) > 0)
  197. X#define strGE(s1,s2) (strcmp(s1,s2) >= 0)
  198. X#define strnNE(s1,s2,l) (strncmp(s1,s2,l))
  199. X#define strnEQ(s1,s2,l) (!strncmp(s1,s2,l))
  200. X
  201. X#define MEM_SIZE unsigned int
  202. X
  203. X/* Line numbers are unsigned, 16 bits. */
  204. Xtypedef unsigned short line_t;
  205. X#ifdef lint
  206. X#define NOLINE ((line_t)0)
  207. X#else
  208. X#define NOLINE ((line_t) 65535)
  209. X#endif
  210. X
  211. !STUFFY!FUNK!
  212. echo Extracting eg/changes
  213. sed >eg/changes <<'!STUFFY!FUNK!' -e 's/X//'
  214. X#!/usr/bin/perl -P
  215. X
  216. X# $Header: changes,v 2.0 88/06/05 00:16:41 root Exp $
  217. X
  218. X($dir, $days) = @ARGV;
  219. X$dir = '/' if $dir eq '';
  220. X$days = '14' if $days eq '';
  221. X
  222. X# Masscomps do things differently from Suns
  223. X
  224. X#if defined(mc300) || defined(mc500) || defined(mc700)
  225. Xopen(Find, "find $dir -mtime -$days -print |") ||
  226. X    die "changes: can't run find";
  227. X#else
  228. Xopen(Find, "find $dir \\( -fstype nfs -prune \\) -o -mtime -$days -ls |") ||
  229. X    die "changes: can't run find";
  230. X#endif
  231. X
  232. Xwhile (<Find>) {
  233. X
  234. X#if defined(mc300) || defined(mc500) || defined(mc700)
  235. X    $x = `/bin/ls -ild $_`;
  236. X    $_ = $x;
  237. X    ($inode,$perm,$links,$owner,$group,$size,$month,$day,$time,$name)
  238. X      = split(' ');
  239. X#else
  240. X    ($inode,$blocks,$perm,$links,$owner,$group,$size,$month,$day,$time,$name)
  241. X      = split(' ');
  242. X#endif
  243. X
  244. X    printf("%10s%3s %-8s %-8s%9s %3s %2s %s\n",
  245. X        $perm,$links,$owner,$group,$size,$month,$day,$name);
  246. X}
  247. X
  248. !STUFFY!FUNK!
  249. echo Extracting x2p/str.h
  250. sed >x2p/str.h <<'!STUFFY!FUNK!' -e 's/X//'
  251. X/* $Header: str.h,v 2.0 88/06/05 00:16:05 root Exp $
  252. X *
  253. X * $Log:    str.h,v $
  254. X * Revision 2.0  88/06/05  00:16:05  root
  255. X * Baseline version 2.0.
  256. X * 
  257. X */
  258. X
  259. Xstruct string {
  260. X    char *    str_ptr;    /* pointer to malloced string */
  261. X    double    str_nval;    /* numeric value, if any */
  262. X    int        str_len;    /* allocated size */
  263. X    int        str_cur;    /* length of str_ptr as a C string */
  264. X    union {
  265. X    STR *str_next;        /* while free, link to next free str */
  266. X    } str_link;
  267. X    char    str_pok;    /* state of str_ptr */
  268. X    char    str_nok;    /* state of str_nval */
  269. X};
  270. X
  271. X#define Nullstr Null(STR*)
  272. X
  273. X/* the following macro updates any magic values this str is associated with */
  274. X
  275. X#define STABSET(x) (x->str_link.str_magic && stabset(x->str_link.str_magic,x))
  276. X
  277. XEXT STR **tmps_list;
  278. XEXT long tmps_max INIT(-1);
  279. X
  280. Xchar *str_2ptr();
  281. Xdouble str_2num();
  282. XSTR *str_static();
  283. XSTR *str_make();
  284. XSTR *str_nmake();
  285. Xchar *str_gets();
  286. !STUFFY!FUNK!
  287. echo Extracting eg/myrup
  288. sed >eg/myrup <<'!STUFFY!FUNK!' -e 's/X//'
  289. X#!/usr/bin/perl
  290. X
  291. X# $Header: myrup,v 2.0 88/06/05 00:16:51 root Exp $
  292. X
  293. X# This was a customization of ruptime requested by someone here who wanted
  294. X# to be able to find the least loaded machine easily.  It uses the
  295. X# /etc/ghosts file that's defined for gsh and gcp to prune down the
  296. X# number of entries to those hosts we have administrative control over.
  297. X
  298. Xprint "node    load (u)\n------- --------\n";
  299. X
  300. Xopen(ghosts,'/etc/ghosts') || die "Can't open /etc/ghosts";
  301. Xline: while (<ghosts>) {
  302. X    next line if /^#/;
  303. X    next line if /^$/;
  304. X    next line if /=/;
  305. X    ($host) = split;
  306. X    $wanted{$host} = 1;
  307. X}
  308. X
  309. Xopen(ruptime,'ruptime|') || die "Can't run ruptime";
  310. Xopen(sort,'|sort +1n');
  311. X
  312. Xwhile (<ruptime>) {
  313. X    ($host,$upness,$foo,$users,$foo,$foo,$load) = split(/[\s,]+/);
  314. X    if ($wanted{$host} && $upness eq 'up') {
  315. X    printf sort "%s\t%s (%d)\n", $host, $load, $users;
  316. X    }
  317. X}
  318. !STUFFY!FUNK!
  319. echo Extracting t/op.regexp
  320. sed >t/op.regexp <<'!STUFFY!FUNK!' -e 's/X//'
  321. X#!./perl
  322. X
  323. X# $Header: op.regexp,v 2.0 88/06/05 00:14:27 root Exp $
  324. X
  325. Xopen(TESTS,'re_tests') || open(TESTS,'t/re_tests') || die "Can't open re_tests";
  326. Xwhile (<TESTS>) { }
  327. X$numtests = $.;
  328. Xclose(TESTS);
  329. X
  330. Xprint "1..$numtests\n";
  331. Xopen(TESTS,'re_tests') || open(TESTS,'t/re_tests') || die "Can't open re_tests";
  332. Xwhile (<TESTS>) {
  333. X    ($pat, $subject, $result, $repl, $expect) = split(/[\t\n]/,$_);
  334. X    $input = join(':',$pat,$subject,$result,$repl,$expect);
  335. X    eval "\$match = (\$subject =~ \$pat); \$got = \"$repl\";";
  336. X    if ($result eq 'c') {
  337. X    if ($@ ne '') {print "ok $.\n";} else {print "not ok $.\n";}
  338. X    }
  339. X    elsif ($result eq 'n') {
  340. X    if (!$match) {print "ok $.\n";} else {print "not ok $. $input => $got\n";}
  341. X    }
  342. X    else {
  343. X    if ($match && $got eq $expect) {
  344. X        print "ok $.\n";
  345. X    }
  346. X    else {
  347. X        print "not ok $. $input => $got\n";
  348. X    }
  349. X    }
  350. X}
  351. Xclose(TESTS);
  352. !STUFFY!FUNK!
  353. echo Extracting eg/g/ghosts
  354. sed >eg/g/ghosts <<'!STUFFY!FUNK!' -e 's/X//'
  355. X# This first section gives alternate sets defined in terms of the sets given
  356. X# by the second section.  The order is important--all references must be
  357. X# forward references.
  358. X
  359. XNnd=sun-nd
  360. Xall=sun+mc+vax
  361. Xbaseline=sun+mc
  362. Xsun=sun2+sun3
  363. Xvax=750+8600
  364. Xpep=manny+moe+jack
  365. X
  366. X# This second section defines the basic sets.  Each host should have a line
  367. X# that specifies which sets it is a member of.  Extra sets should be separated
  368. X# by white space.  (The first section isn't strictly necessary, since all sets
  369. X# could be defined in the second section, but then it wouldn't be so readable.)
  370. X
  371. Xbasvax    8600    src
  372. Xcdb0    sun3        sys
  373. Xcdb1    sun3        sys
  374. Xcdb2    sun3        sys
  375. Xchief    sun3    src
  376. Xtis0    sun3
  377. Xmanny    sun3        sys
  378. Xmoe    sun3        sys
  379. Xjack    sun3        sys
  380. Xdisney    sun3        sys
  381. Xhuey    sun3        nd
  382. Xdewey    sun3        nd
  383. Xlouie    sun3        nd
  384. Xbizet    sun2    src    sys
  385. Xgif0    mc    src
  386. Xmc0    mc
  387. Xdtv0    mc
  388. !STUFFY!FUNK!
  389. echo Extracting t/base.term
  390. sed >t/base.term <<'!STUFFY!FUNK!' -e 's/X//'
  391. X#!./perl
  392. X
  393. X# $Header: base.term,v 2.0 88/06/05 00:12:13 root Exp $
  394. X
  395. Xprint "1..6\n";
  396. X
  397. X# check "" interpretation
  398. X
  399. X$x = "\n";
  400. Xif ($x lt ' ') {print "ok 1\n";} else {print "not ok 1\n";}
  401. X
  402. X# check `` processing
  403. X
  404. X$x = `echo hi there`;
  405. Xif ($x eq "hi there\n") {print "ok 2\n";} else {print "not ok 2\n";}
  406. X
  407. X# check $#array
  408. X
  409. X$x[0] = 'foo';
  410. X$x[1] = 'foo';
  411. X$tmp = $#x;
  412. Xprint "#3\t:$tmp: == :1:\n";
  413. Xif ($#x == '1') {print "ok 3\n";} else {print "not ok 3\n";}
  414. X
  415. X# check numeric literal
  416. X
  417. X$x = 1;
  418. Xif ($x == '1') {print "ok 4\n";} else {print "not ok 4\n";}
  419. X
  420. X# check <> pseudoliteral
  421. X
  422. Xopen(try, "/dev/null") || (die "Can't open /dev/null.");
  423. Xif (<try> eq '') {print "ok 5\n";} else {print "not ok 5\n";}
  424. X
  425. Xopen(try, "../Makefile") || (die "Can't open ../Makefile.");
  426. Xif (<try> ne '') {print "ok 6\n";} else {print "not ok 6\n";}
  427. !STUFFY!FUNK!
  428. echo Extracting t/comp.multiline
  429. sed >t/comp.multiline <<'!STUFFY!FUNK!' -e 's/X//'
  430. X#!./perl
  431. X
  432. X# $Header: comp.multiline,v 2.0 88/06/05 00:12:44 root Exp $
  433. X
  434. Xprint "1..5\n";
  435. X
  436. Xopen(try,'>Comp.try') || (die "Can't open temp file.");
  437. X
  438. X$x = 'now is the time
  439. Xfor all good men
  440. Xto come to.
  441. X';
  442. X
  443. X$y = 'now is the time' . "\n" .
  444. X'for all good men' . "\n" .
  445. X'to come to.' . "\n";
  446. X
  447. Xif ($x eq $y) {print "ok 1\n";} else {print "not ok 1\n";}
  448. X
  449. Xprint try $x;
  450. Xclose try;
  451. X
  452. Xopen(try,'Comp.try') || (die "Can't reopen temp file.");
  453. X$count = 0;
  454. X$z = '';
  455. Xwhile (<try>) {
  456. X    $z .= $_;
  457. X    $count = $count + 1;
  458. X}
  459. X
  460. Xif ($z eq $y) {print "ok 2\n";} else {print "not ok 2\n";}
  461. X
  462. Xif ($count == 3) {print "ok 3\n";} else {print "not ok 3\n";}
  463. X
  464. X$_ = `cat Comp.try`;
  465. X
  466. Xif (/.*\n.*\n.*\n$/) {print "ok 4\n";} else {print "not ok 4\n";}
  467. X`/bin/rm -f Comp.try`;
  468. X
  469. Xif ($_ eq $y) {print "ok 5\n";} else {print "not ok 5\n";}
  470. !STUFFY!FUNK!
  471. echo Extracting t/op.magic
  472. sed >t/op.magic <<'!STUFFY!FUNK!' -e 's/X//'
  473. X#!./perl
  474. X
  475. X# $Header: op.magic,v 2.0 88/06/05 00:14:11 root Exp $
  476. X
  477. X$| = 1;        # command buffering
  478. X
  479. Xprint "1..4\n";
  480. X
  481. Xeval '$ENV{"foo"} = "hi there";';    # check that ENV is inited inside eval
  482. Xif (`echo \$foo` eq "hi there\n") {print "ok 1\n";} else {print "not ok 1\n";}
  483. X
  484. X$! = 0;
  485. Xopen(foo,'ajslkdfpqjsjfkslkjdflksd');
  486. Xif ($! == 2) {print "ok 2\n";} else {print "not ok 2\n";}
  487. X
  488. X# the next tests are embedded inside system simply because sh spits out
  489. X# a newline onto stderr when a child process kills itself with SIGINT.
  490. X
  491. Xsystem './perl',
  492. X'-e', '$| = 1;        # command buffering',
  493. X
  494. X'-e', '$SIG{"INT"} = "ok3"; kill 2,$$;',
  495. X'-e', '$SIG{"INT"} = "IGNORE"; kill 2,$$; print "ok 4\n";',
  496. X'-e', '$SIG{"INT"} = "DEFAULT"; kill 2,$$; print "not ok\n";',
  497. X
  498. X'-e', 'sub ok3 { print "ok 3\n" if pop(@_) eq "INT"; }';
  499. !STUFFY!FUNK!
  500. echo Extracting eg/van/empty
  501. sed >eg/van/empty <<'!STUFFY!FUNK!' -e 's/X//'
  502. X#!/usr/bin/perl
  503. X
  504. X# $Header: empty,v 2.0 88/06/05 00:17:39 root Exp $
  505. X
  506. X# This script empties a trashcan.
  507. X
  508. X$recursive = shift if $ARGV[0] eq '-r';
  509. X
  510. X@ARGV = '.' if $#ARGV < 0;
  511. X
  512. Xchop($pwd = `pwd`);
  513. X
  514. Xdir: foreach $dir (@ARGV) {
  515. X    unless (chdir $dir) {
  516. X    print stderr "Can't find directory $dir\n";
  517. X    next dir;
  518. X    }
  519. X    if ($recursive) {
  520. X    do cmd('find . -name .deleted -exec /bin/rm -rf {} ;');
  521. X    }
  522. X    else {
  523. X    if (-d '.deleted') {
  524. X        do cmd('rm -rf .deleted');
  525. X    }
  526. X    else {
  527. X        if ($dir eq '.' && $pwd =~ m|/\.deleted$|) {
  528. X        chdir '..';
  529. X        do cmd('rm -rf .deleted');
  530. X        }
  531. X        else {
  532. X        print stderr "No trashcan found in directory $dir\n";
  533. X        }
  534. X    }
  535. X    }
  536. X}
  537. Xcontinue {
  538. X    chdir $pwd;
  539. X}
  540. X
  541. X# force direct execution with no shell
  542. X
  543. Xsub cmd {
  544. X    system split(' ',join(' ',@_));
  545. X}
  546. X
  547. !STUFFY!FUNK!
  548. echo Extracting t/comp.cpp
  549. sed >t/comp.cpp <<'!STUFFY!FUNK!' -e 's/X//'
  550. X#!./perl -P
  551. X
  552. X# $Header: comp.cpp,v 2.0 88/06/05 00:12:37 root Exp $
  553. X
  554. Xprint "1..3\n";
  555. X
  556. X#this is a comment
  557. X#define MESS "ok 1\n"
  558. Xprint MESS;
  559. X
  560. X#If you capitalize, it's a comment.
  561. X#ifdef MESS
  562. X    print "ok 2\n";
  563. X#else
  564. X    print "not ok 2\n";
  565. X#endif
  566. X
  567. Xopen(try,">Comp.cpp.tmp") || die "Can't open temp perl file.";
  568. Xprint try '$ok = "not ok 3\n";'; print try "\n";
  569. Xprint try "#include <Comp.cpp.inc>\n";
  570. Xprint try "#ifdef OK\n";
  571. Xprint try '$ok = OK;'; print try "\n";
  572. Xprint try "#endif\n";
  573. Xprint try 'print $ok;'; print try "\n";
  574. Xclose try;
  575. X
  576. Xopen(try,">Comp.cpp.inc") || (die "Can't open temp include file.");
  577. Xprint try '#define OK "ok 3\n"'; print try "\n";
  578. Xclose try;
  579. X
  580. X$pwd=`pwd`;
  581. X$pwd =~ s/\n//;
  582. X$x = `./perl -P -I$pwd Comp.cpp.tmp`;
  583. Xprint $x;
  584. X`/bin/rm -f Comp.cpp.tmp Comp.cpp.inc`;
  585. !STUFFY!FUNK!
  586. echo Extracting t/base.lex
  587. sed >t/base.lex <<'!STUFFY!FUNK!' -e 's/X//'
  588. X#!./perl
  589. X
  590. X# $Header: base.lex,v 2.0 88/06/05 00:12:06 root Exp $
  591. X
  592. Xprint "1..7\n";
  593. X
  594. X$ # this is the register <space>
  595. X= 'x';
  596. X
  597. Xprint "#1    :$ : eq :x:\n";
  598. Xif ($  eq 'x') {print "ok 1\n";} else {print "not ok 1\n";}
  599. X
  600. X$x = $#;    # this is the register $#
  601. X
  602. Xif ($x eq '') {print "ok 2\n";} else {print "not ok 2\n";}
  603. X
  604. X$x = $#x;
  605. X
  606. Xif ($x eq '-1') {print "ok 3\n";} else {print "not ok 3\n";}
  607. X
  608. X$x = '\\'; # ';
  609. X
  610. Xif (length($x) == 1) {print "ok 4\n";} else {print "not ok 4\n";}
  611. X
  612. Xeval 'while (0) {
  613. X    print "foo\n";
  614. X}
  615. X/^/ && (print "ok 5\n");
  616. X';
  617. X
  618. Xeval '$foo{1} / 1;';
  619. Xif (!$@) {print "ok 6\n";} else {print "not ok 6\n";}
  620. X
  621. Xeval '$foo = 123+123.4+123e4+123.4E5+123.4e+5+.12;';
  622. X
  623. X$foo = int($foo * 100 + .5);
  624. Xif ($foo eq 2591024652) {print "ok 7\n";} else {print "not ok 7\n";}
  625. !STUFFY!FUNK!
  626. echo Extracting eg/scan/scan_ps
  627. sed >eg/scan/scan_ps <<'!STUFFY!FUNK!' -e 's/X//'
  628. X#!/usr/bin/perl -P
  629. X
  630. X# $Header: scan_ps,v 2.0 88/06/05 00:17:51 root Exp $
  631. X
  632. X# This looks for looping processes.
  633. X
  634. X#if defined(mc300) || defined(mc500) || defined(mc700)
  635. Xopen(Ps, '/bin/ps -el|') || die "scan_ps: can't run ps";
  636. X
  637. Xwhile (<Ps>) {
  638. X    next if /rwhod/;
  639. X    print if index(' T', substr($_,62,1)) < 0;
  640. X}
  641. X#else
  642. Xopen(Ps, '/bin/ps auxww|') || die "scan_ps: can't run ps";
  643. X
  644. Xwhile (<Ps>) {
  645. X    next if /dataserver/;
  646. X    next if /nfsd/;
  647. X    next if /update/;
  648. X    next if /ypserv/;
  649. X    next if /rwhod/;
  650. X    next if /routed/;
  651. X    next if /pagedaemon/;
  652. X#ifdef vax
  653. X    ($user,$pid,$cpu,$mem,$sz,$rss,$tt,$stat,$start,$time) = split;
  654. X#else
  655. X    ($user,$pid,$cpu,$mem,$sz,$rss,$tt,$stat,$time) = split;
  656. X#endif
  657. X    print if length($time) > 4;
  658. X}
  659. X#endif
  660. !STUFFY!FUNK!
  661. echo Extracting t/op.delete
  662. sed >t/op.delete <<'!STUFFY!FUNK!' -e 's/X//'
  663. X#!./perl
  664. X
  665. X# $Header: op.delete,v 2.0 88/06/05 00:13:30 root Exp $
  666. X
  667. Xprint "1..6\n";
  668. X
  669. X$foo{1} = 'a';
  670. X$foo{2} = 'b';
  671. X$foo{3} = 'c';
  672. X
  673. X$foo = delete $foo{2};
  674. X
  675. Xif ($foo eq 'b') {print "ok 1\n";} else {print "not ok 1\n";}
  676. Xif ($foo{2} eq '') {print "ok 2\n";} else {print "not ok 2\n";}
  677. Xif ($foo{1} eq 'a') {print "ok 3\n";} else {print "not ok 3\n";}
  678. Xif ($foo{3} eq 'c') {print "ok 4\n";} else {print "not ok 4\n";}
  679. X
  680. X$foo = join('',values(foo));
  681. Xif ($foo eq 'ac' || $foo eq 'ca') {print "ok 5\n";} else {print "not ok 5\n";}
  682. X
  683. Xforeach $key (keys(foo)) {
  684. X    delete $foo{$key};
  685. X}
  686. X
  687. X$foo{'foo'} = 'x';
  688. X$foo{'bar'} = 'y';
  689. X
  690. X$foo = join('',values(foo));
  691. Xif ($foo eq 'xy' || $foo eq 'yx') {print "ok 6\n";} else {print "not ok 6\n";}
  692. !STUFFY!FUNK!
  693. echo Extracting eg/scan/scan_passwd
  694. sed >eg/scan/scan_passwd <<'!STUFFY!FUNK!' -e 's/X//'
  695. X#!/usr/bin/perl
  696. X
  697. X# $Header: scan_passwd,v 2.0 88/06/05 00:17:49 root Exp $
  698. X
  699. X# This scans passwd file for security holes.
  700. X
  701. Xopen(Pass,'/etc/passwd') || die "Can't open passwd file";
  702. X# $dotriv = (`date` =~ /^Mon/);
  703. X$dotriv = 1;
  704. X
  705. Xwhile (<Pass>) {
  706. X    ($login,$pass,$uid,$gid,$gcos,$home,$shell) = split(/:/);
  707. X    if ($shell eq '') {
  708. X    print "Short: $_";
  709. X    }
  710. X    next if /^[+]/;
  711. X    if ($pass eq '') {
  712. X    if (index(":sync:lpq:+:", ":$login:") < 0) {
  713. X        print "No pass: $login\t$gcos\n";
  714. X    }
  715. X    }
  716. X    elsif ($dotriv && crypt($login,substr($pass,0,2)) eq $pass) {
  717. X    print "Trivial: $login\t$gcos\n";
  718. X    }
  719. X    if ($uid == 0) {
  720. X    if ($login !~ /^.?root$/ && $pass ne '*') {
  721. X        print "Extra root: $_";
  722. X    }
  723. X    }
  724. X}
  725. !STUFFY!FUNK!
  726. echo Extracting t/op.exp
  727. sed >t/op.exp <<'!STUFFY!FUNK!' -e 's/X//'
  728. X#!./perl
  729. X
  730. X# $Header: op.exp,v 2.0 88/06/05 00:13:48 root Exp $
  731. X
  732. Xprint "1..6\n";
  733. X
  734. X# compile time evaluation
  735. X
  736. X$s = sqrt(2);
  737. Xif (substr($s,0,5) eq '1.414') {print "ok 1\n";} else {print "not ok 1\n";}
  738. X
  739. X$s = exp(1);
  740. Xif (substr($s,0,7) eq '2.71828') {print "ok 2\n";} else {print "not ok 2\n";}
  741. X
  742. Xif (exp(log(1)) == 1) {print "ok 3\n";} else {print "not ok 3\n";}
  743. X
  744. X# run time evaluation
  745. X
  746. X$x1 = 1;
  747. X$x2 = 2;
  748. X$s = sqrt($x2);
  749. Xif (substr($s,0,5) eq '1.414') {print "ok 4\n";} else {print "not ok 4\n";}
  750. X
  751. X$s = exp($x1);
  752. Xif (substr($s,0,7) eq '2.71828') {print "ok 5\n";} else {print "not ok 5\n";}
  753. X
  754. Xif (exp(log($x1)) == 1) {print "ok 6\n";} else {print "not ok 6\n";}
  755. !STUFFY!FUNK!
  756. echo Extracting x2p/handy.h
  757. sed >x2p/handy.h <<'!STUFFY!FUNK!' -e 's/X//'
  758. X/* $Header: handy.h,v 2.0 88/06/05 00:15:47 root Exp $
  759. X *
  760. X * $Log:    handy.h,v $
  761. X * Revision 2.0  88/06/05  00:15:47  root
  762. X * Baseline version 2.0.
  763. X * 
  764. X */
  765. X
  766. X#define Null(type) ((type)0)
  767. X#define Nullch Null(char*)
  768. X#define Nullfp Null(FILE*)
  769. X
  770. X#define bool char
  771. X#define TRUE (1)
  772. X#define FALSE (0)
  773. X
  774. X#define Ctl(ch) (ch & 037)
  775. X
  776. X#define strNE(s1,s2) (strcmp(s1,s2))
  777. X#define strEQ(s1,s2) (!strcmp(s1,s2))
  778. X#define strLT(s1,s2) (strcmp(s1,s2) < 0)
  779. X#define strLE(s1,s2) (strcmp(s1,s2) <= 0)
  780. X#define strGT(s1,s2) (strcmp(s1,s2) > 0)
  781. X#define strGE(s1,s2) (strcmp(s1,s2) >= 0)
  782. X#define strnNE(s1,s2,l) (strncmp(s1,s2,l))
  783. X#define strnEQ(s1,s2,l) (!strncmp(s1,s2,l))
  784. !STUFFY!FUNK!
  785. echo Extracting t/op.exec
  786. sed >t/op.exec <<'!STUFFY!FUNK!' -e 's/X//'
  787. X#!./perl
  788. X
  789. X# $Header: op.exec,v 2.0 88/06/05 00:13:46 root Exp $
  790. X
  791. X$| = 1;                # flush stdout
  792. Xprint "1..8\n";
  793. X
  794. Xprint "not ok 1\n" if system "echo ok \\1";    # shell interpreted
  795. Xprint "not ok 2\n" if system "echo ok 2";    # split and directly called
  796. Xprint "not ok 3\n" if system "echo", "ok", "3"; # directly called
  797. X
  798. Xif (system "true") {print "not ok 4\n";} else {print "ok 4\n";}
  799. X
  800. Xif ((system "/bin/sh -c 'exit 1'") != 256) { print "not "; }
  801. Xprint "ok 5\n";
  802. X
  803. Xif ((system "lskdfj") == 255 << 8) {print "ok 6\n";} else {print "not ok 6\n";}
  804. X
  805. Xunless (exec "lskdjfalksdjfdjfkls") {print "ok 7\n";} else {print "not ok 7\n";}
  806. X
  807. Xexec "echo","ok","8";
  808. !STUFFY!FUNK!
  809. echo Extracting x2p/util.h
  810. sed >x2p/util.h <<'!STUFFY!FUNK!' -e 's/X//'
  811. X/* $Header: util.h,v 2.0 88/06/05 00:16:10 root Exp $
  812. X *
  813. X * $Log:    util.h,v $
  814. X * Revision 2.0  88/06/05  00:16:10  root
  815. X * Baseline version 2.0.
  816. X * 
  817. X */
  818. X
  819. X/* is the string for makedir a directory name or a filename? */
  820. X
  821. X#define MD_DIR 0
  822. X#define MD_FILE 1
  823. X
  824. Xvoid    util_init();
  825. Xint    doshell();
  826. Xchar    *safemalloc();
  827. Xchar    *saferealloc();
  828. Xchar    *safecpy();
  829. Xchar    *safecat();
  830. Xchar    *cpytill();
  831. Xchar    *cpy2();
  832. Xchar    *instr();
  833. X#ifdef SETUIDGID
  834. X    int        eaccess();
  835. X#endif
  836. Xchar    *getwd();
  837. Xvoid    cat();
  838. Xvoid    prexit();
  839. Xchar    *get_a_line();
  840. Xchar    *savestr();
  841. Xint    makedir();
  842. Xvoid    setenv();
  843. Xint    envix();
  844. Xvoid    notincl();
  845. Xchar    *getval();
  846. Xvoid    growstr();
  847. Xvoid    setdef();
  848. !STUFFY!FUNK!
  849. echo Extracting lib/stat.pl
  850. sed >lib/stat.pl <<'!STUFFY!FUNK!' -e 's/X//'
  851. X;# $Header: stat.pl,v 2.0 88/06/05 00:16:29 root Exp $
  852. X
  853. X;# Usage:
  854. X;#    @ary = stat(foo);
  855. X;#    $st_dev = @ary[$ST_DEV];
  856. X;#
  857. X$ST_DEV =    0 + $[;
  858. X$ST_INO =    1 + $[;
  859. X$ST_MODE =    2 + $[;
  860. X$ST_NLINK =    3 + $[;
  861. X$ST_UID =    4 + $[;
  862. X$ST_GID =    5 + $[;
  863. X$ST_RDEV =    6 + $[;
  864. X$ST_SIZE =    7 + $[;
  865. X$ST_ATIME =    8 + $[;
  866. X$ST_MTIME =    9 + $[;
  867. X$ST_CTIME =    10 + $[;
  868. X$ST_BLKSIZE =    11 + $[;
  869. X$ST_BLOCKS =    12 + $[;
  870. X
  871. X;# Usage:
  872. X;#    do Stat('foo');        # sets st_* as a side effect
  873. X;#
  874. Xsub Stat {
  875. X    ($st_dev,$st_ino,$st_mode,$st_nlink,$st_uid,$st_gid,$st_rdev,$st_size,
  876. X    $st_atime,$st_mtime,$st_ctime,$st_blksize,$st_blocks) = stat(shift(@_));
  877. X}
  878. !STUFFY!FUNK!
  879. echo Extracting t/op.goto
  880. sed >t/op.goto <<'!STUFFY!FUNK!' -e 's/X//'
  881. X#!./perl
  882. X
  883. X# $Header: op.goto,v 2.0 88/06/05 00:13:58 root Exp $
  884. X
  885. Xprint "1..3\n";
  886. X
  887. Xwhile (0) {
  888. X    $foo = 1;
  889. X  label1:
  890. X    $foo = 2;
  891. X    goto label2;
  892. X} continue {
  893. X    $foo = 0;
  894. X    goto label4;
  895. X  label3:
  896. X    $foo = 4;
  897. X    goto label4;
  898. X}
  899. Xgoto label1;
  900. X
  901. X$foo = 3;
  902. X
  903. Xlabel2:
  904. Xprint "#1\t:$foo: == 2\n";
  905. Xif ($foo == 2) {print "ok 1\n";} else {print "not ok 1\n";}
  906. Xgoto label3;
  907. X
  908. Xlabel4:
  909. Xprint "#2\t:$foo: == 4\n";
  910. Xif ($foo == 4) {print "ok 2\n";} else {print "not ok 2\n";}
  911. X
  912. X$x = `./perl -e 'goto foo;' 2>&1`;
  913. Xprint "#3\t/label/ in :$x";
  914. Xif ($x =~ /label/) {print "ok 3\n";} else {print "not ok 3\n";}
  915. !STUFFY!FUNK!
  916. echo Extracting eg/shmkill
  917. sed >eg/shmkill <<'!STUFFY!FUNK!' -e 's/X//'
  918. X#!/usr/bin/perl
  919. X
  920. X# $Header: shmkill,v 2.0 88/06/05 00:16:59 root Exp $
  921. X
  922. X# A script to call from crontab periodically when people are leaving shared
  923. X# memory sitting around unattached.
  924. X
  925. Xopen(ipcs,'ipcs -m -o|') || die "Can't run ipcs";
  926. X
  927. Xwhile (<ipcs>) {
  928. X    $tmp = index($_,'NATTCH');
  929. X    $pos = $tmp if $tmp >= 0;
  930. X    if (/^m/) {
  931. X    ($m,$id,$key,$mode,$owner,$group,$attach) = split;
  932. X    if ($attach != substr($_,$pos,6)) {
  933. X        die "Different ipcs format--can't parse!";
  934. X    }
  935. X    if ($attach == 0) {
  936. X        push(@goners,'-m',$id);
  937. X    }
  938. X    }
  939. X}
  940. X
  941. Xexec 'ipcrm', @goners if $#goners >= 0;
  942. !STUFFY!FUNK!
  943. echo Extracting t/op.flip
  944. sed >t/op.flip <<'!STUFFY!FUNK!' -e 's/X//'
  945. X#!./perl
  946. X
  947. X# $Header: op.flip,v 2.0 88/06/05 00:13:51 root Exp $
  948. X
  949. Xprint "1..8\n";
  950. X
  951. X@a = (1,2,3,4,5,6,7,8,9,10,11,12);
  952. X
  953. Xwhile ($_ = shift(a)) {
  954. X    if ($x = /4/../8/) { $z = $x; print "ok ", $x + 0, "\n"; }
  955. X    $y .= /1/../2/;
  956. X}
  957. X
  958. Xif ($z eq '5E0') {print "ok 6\n";} else {print "not ok 6\n";}
  959. X
  960. Xif ($y eq '12E0123E0') {print "ok 7\n";} else {print "not ok 7\n";}
  961. X
  962. X@a = ('a','b','c','d','e','f','g');
  963. X
  964. Xopen(of,'../Makefile');
  965. Xwhile (<of>) {
  966. X    (3 .. 5) && $foo .= $_;
  967. X}
  968. X$x = ($foo =~ y/\n/\n/);
  969. X
  970. Xif ($x eq 3) {print "ok 8\n";} else {print "not ok 8 $x:$foo:\n";}
  971. !STUFFY!FUNK!
  972. echo Extracting eg/dus
  973. sed >eg/dus <<'!STUFFY!FUNK!' -e 's/X//'
  974. X#!/usr/bin/perl
  975. X
  976. X# $Header: dus,v 2.0 88/06/05 00:16:44 root Exp $
  977. X
  978. X# This script does a du -s on any directories in the current directory that
  979. X# are not mount points for another filesystem.
  980. X
  981. X($mydev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
  982. X   $blksize,$blocks) = stat('.');
  983. X
  984. Xopen(ls,'ls -F1|');
  985. X
  986. Xwhile (<ls>) {
  987. X    chop;
  988. X    next unless s|/$||;
  989. X    ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
  990. X       $blksize,$blocks) = stat($_);
  991. X    next unless $dev == $mydev;
  992. X    push(@ary,$_);
  993. X}
  994. X
  995. Xexec 'du', '-s', @ary;
  996. !STUFFY!FUNK!
  997. echo Extracting t/cmd.mod
  998. sed >t/cmd.mod <<'!STUFFY!FUNK!' -e 's/X//'
  999. X#!./perl
  1000. X
  1001. X# $Header: cmd.mod,v 2.0 88/06/05 00:12:23 root Exp $
  1002. X
  1003. Xprint "1..6\n";
  1004. X
  1005. Xprint "ok 1\n" if 1;
  1006. Xprint "not ok 1\n" unless 1;
  1007. X
  1008. Xprint "ok 2\n" unless 0;
  1009. Xprint "not ok 2\n" if 0;
  1010. X
  1011. X1 && (print "not ok 3\n") if 0;
  1012. X1 && (print "ok 3\n") if 1;
  1013. X0 || (print "not ok 4\n") if 0;
  1014. X0 || (print "ok 4\n") if 1;
  1015. X
  1016. X$x = 0;
  1017. Xdo {$x[$x] = $x;} while ($x++) < 10;
  1018. Xif (join(' ',@x) eq '0 1 2 3 4 5 6 7 8 9 10') {
  1019. X    print "ok 5\n";
  1020. X} else {
  1021. X    print "not ok 5\n";
  1022. X}
  1023. X
  1024. X$x = 15;
  1025. X$x = 10 while $x < 10;
  1026. Xif ($x == 15) {print "ok 6\n";} else {print "not ok 6\n";}
  1027. !STUFFY!FUNK!
  1028. echo Extracting t/io.dup
  1029. sed >t/io.dup <<'!STUFFY!FUNK!' -e 's/X//'
  1030. X#!./perl
  1031. X
  1032. X# $Header: io.dup,v 2.0 88/06/05 00:12:57 root Exp $
  1033. X
  1034. Xprint "1..6\n";
  1035. X
  1036. Xprint "ok 1\n";
  1037. X
  1038. Xopen(dupout,">&stdout");
  1039. Xopen(duperr,">&stderr");
  1040. X
  1041. Xopen(stdout,">Io.dup") || die "Can't open stdout";
  1042. Xopen(stderr,">&stdout") || die "Can't open stderr";
  1043. X
  1044. Xselect(stderr); $| = 1;
  1045. Xselect(stdout); $| = 1;
  1046. X
  1047. Xprint stdout "ok 2\n";
  1048. Xprint stderr "ok 3\n";
  1049. Xsystem 'echo ok 4';
  1050. Xsystem 'echo ok 5 1>&2';
  1051. X
  1052. Xclose(stdout);
  1053. Xclose(stderr);
  1054. X
  1055. Xopen(stdout,">&dupout");
  1056. Xopen(stderr,">&duperr");
  1057. X
  1058. Xsystem 'cat Io.dup';
  1059. Xunlink 'Io.dup';
  1060. X
  1061. Xprint stdout "ok 6\n";
  1062. !STUFFY!FUNK!
  1063. echo Extracting t/cmd.elsif
  1064. sed >t/cmd.elsif <<'!STUFFY!FUNK!' -e 's/X//'
  1065. X#!./perl
  1066. X
  1067. X# $Header: cmd.elsif,v 2.0 88/06/05 00:12:16 root Exp $
  1068. X
  1069. Xsub foo {
  1070. X    if ($_[0] == 1) {
  1071. X    1;
  1072. X    }
  1073. X    elsif ($_[0] == 2) {
  1074. X    2;
  1075. X    }
  1076. X    elsif ($_[0] == 3) {
  1077. X    3;
  1078. X    }
  1079. X    else {
  1080. X    4;
  1081. X    }
  1082. X}
  1083. X
  1084. Xprint "1..4\n";
  1085. X
  1086. Xif (($x = do foo(1)) == 1) {print "ok 1\n";} else {print "not ok 1\n";}
  1087. Xif (($x = do foo(2)) == 2) {print "ok 2\n";} else {print "not ok 2\n";}
  1088. Xif (($x = do foo(3)) == 3) {print "ok 3\n";} else {print "not ok 3\n";}
  1089. Xif (($x = do foo(4)) == 4) {print "ok 4\n";} else {print "not ok 4\n";}
  1090. !STUFFY!FUNK!
  1091. echo Extracting util.h
  1092. sed >util.h <<'!STUFFY!FUNK!' -e 's/X//'
  1093. X/* $Header: util.h,v 2.0 88/06/05 00:15:15 root Exp $
  1094. X *
  1095. X * $Log:    util.h,v $
  1096. X * Revision 2.0  88/06/05  00:15:15  root
  1097. X * Baseline version 2.0.
  1098. X * 
  1099. X */
  1100. X
  1101. Xint *screamfirst INIT(Null(int*));
  1102. Xint *screamnext INIT(Null(int*));
  1103. Xint *screamcount INIT(Null(int*));
  1104. X
  1105. Xchar    *safemalloc();
  1106. Xchar    *saferealloc();
  1107. Xchar    *cpytill();
  1108. Xchar    *instr();
  1109. Xchar    *bminstr();
  1110. Xchar    *fbminstr();
  1111. Xchar    *screaminstr();
  1112. Xvoid    bmcompile();
  1113. Xvoid    fbmcompile();
  1114. Xchar    *get_a_line();
  1115. Xchar    *savestr();
  1116. Xvoid    setenv();
  1117. Xint    envix();
  1118. Xvoid    growstr();
  1119. !STUFFY!FUNK!
  1120. echo Extracting eg/findtar
  1121. sed >eg/findtar <<'!STUFFY!FUNK!' -e 's/X//'
  1122. X#!/usr/bin/perl
  1123. X
  1124. X# $Header: findtar,v 2.0 88/06/05 00:16:49 root Exp $
  1125. X
  1126. X# findtar takes find-style arguments and spits out a tarfile on stdout.
  1127. X# It won't work unless your find supports -ls and your tar the I flag.
  1128. X
  1129. X$args = join(' ',@ARGV);
  1130. Xopen(find,"/usr/bin/find $args -ls |") || die "Can't run find for you.";
  1131. X
  1132. Xopen(tar,"| /bin/tar cIf - -") || die "Can't run tar for you.";
  1133. X
  1134. Xwhile (<find>) {
  1135. X    @x = split(' ');
  1136. X    if ($x[2] =~ /^d/) { print tar '-d ';}
  1137. X    print tar $x[10],"\n";
  1138. X}
  1139. !STUFFY!FUNK!
  1140. echo Extracting t/comp.decl
  1141. sed >t/comp.decl <<'!STUFFY!FUNK!' -e 's/X//'
  1142. X#!./perl
  1143. X
  1144. X# $Header: comp.decl,v 2.0 88/06/05 00:12:40 root Exp $
  1145. X
  1146. X# check to see if subroutine declarations work everwhere
  1147. X
  1148. Xsub one {
  1149. X    print "ok 1\n";
  1150. X}
  1151. Xformat one =
  1152. Xok 5
  1153. X.
  1154. X
  1155. Xprint "1..7\n";
  1156. X
  1157. Xdo one();
  1158. Xdo two();
  1159. X
  1160. Xsub two {
  1161. X    print "ok 2\n";
  1162. X}
  1163. Xformat two =
  1164. X@<<<
  1165. X$foo
  1166. X.
  1167. X
  1168. Xif ($x eq $x) {
  1169. X    sub three {
  1170. X    print "ok 3\n";
  1171. X    }
  1172. X    do three();
  1173. X}
  1174. X
  1175. Xdo four();
  1176. X$~ = 'one';
  1177. Xwrite;
  1178. X$~ = 'two';
  1179. X$foo = "ok 6";
  1180. Xwrite;
  1181. X$~ = 'three';
  1182. Xwrite;
  1183. X
  1184. Xformat three =
  1185. Xok 7
  1186. X.
  1187. X
  1188. Xsub four {
  1189. X    print "ok 4\n";
  1190. X}
  1191. !STUFFY!FUNK!
  1192. echo Extracting form.h
  1193. sed >form.h <<'!STUFFY!FUNK!' -e 's/X//'
  1194. X/* $Header: form.h,v 2.0 88/06/05 00:09:01 root Exp $
  1195. X *
  1196. X * $Log:    form.h,v $
  1197. X * Revision 2.0  88/06/05  00:09:01  root
  1198. X * Baseline version 2.0.
  1199. X * 
  1200. X */
  1201. X
  1202. X#define F_NULL 0
  1203. X#define F_LEFT 1
  1204. X#define F_RIGHT 2
  1205. X#define F_CENTER 3
  1206. X#define F_LINES 4
  1207. X
  1208. Xstruct formcmd {
  1209. X    struct formcmd *f_next;
  1210. X    ARG *f_expr;
  1211. X    char *f_pre;
  1212. X    short f_presize;
  1213. X    short f_size;
  1214. X    char f_type;
  1215. X    char f_flags;
  1216. X};
  1217. X
  1218. X#define FC_CHOP 1
  1219. X#define FC_NOBLANK 2
  1220. X#define FC_MORE 4
  1221. X
  1222. X#define Nullfcmd Null(FCMD*)
  1223. !STUFFY!FUNK!
  1224. echo Extracting t/op.append
  1225. sed >t/op.append <<'!STUFFY!FUNK!' -e 's/X//'
  1226. X#!./perl
  1227. X
  1228. X# $Header: op.append,v 2.0 88/06/05 00:13:16 root Exp $
  1229. X
  1230. Xprint "1..3\n";
  1231. X
  1232. X$a = 'ab' . 'c';    # compile time
  1233. X$b = 'def';
  1234. X
  1235. X$c = $a . $b;
  1236. Xprint "#1\t:$c: eq :abcdef:\n";
  1237. Xif ($c eq 'abcdef') {print "ok 1\n";} else {print "not ok 1\n";}
  1238. X
  1239. X$c .= 'xyz';
  1240. Xprint "#2\t:$c: eq :abcdefxyz:\n";
  1241. Xif ($c eq 'abcdefxyz') {print "ok 2\n";} else {print "not ok 2\n";}
  1242. X
  1243. X$_ = $a;
  1244. X$_ .= $b;
  1245. Xprint "#3\t:$_: eq :abcdef:\n";
  1246. Xif ($_ eq 'abcdef') {print "ok 3\n";} else {print "not ok 3\n";}
  1247. !STUFFY!FUNK!
  1248. echo Extracting t/io.print
  1249. sed >t/io.print <<'!STUFFY!FUNK!' -e 's/X//'
  1250. X#!./perl
  1251. X
  1252. X# $Header: io.print,v 2.0 88/06/05 00:13:11 root Exp $
  1253. X
  1254. Xprint "1..16\n";
  1255. X
  1256. X$foo = 'stdout';
  1257. Xprint $foo "ok 1\n";
  1258. X
  1259. Xprint "ok 2\n","ok 3\n","ok 4\n";
  1260. Xprint stdout "ok 5\n";
  1261. X
  1262. Xopen(foo,">-");
  1263. Xprint foo "ok 6\n";
  1264. X
  1265. Xprintf "ok %d\n",7;
  1266. Xprintf("ok %d\n",8);
  1267. X
  1268. X@a = ("ok %d%c",9,ord("\n"));
  1269. Xprintf @a;
  1270. X
  1271. X$a[1] = 10;
  1272. Xprintf stdout @a;
  1273. X
  1274. X$, = ' ';
  1275. X$\ = "\n";
  1276. X
  1277. Xprint "ok","11";
  1278. X
  1279. X@x = ("ok","12\nok","13\nok");
  1280. X@y = ("15\nok","16");
  1281. Xprint @x,"14\nok",@y;
  1282. !STUFFY!FUNK!
  1283. echo Extracting t/io.inplace
  1284. sed >t/io.inplace <<'!STUFFY!FUNK!' -e 's/X//'
  1285. X#!./perl -i.bak
  1286. X
  1287. X# $Header: io.inplace,v 2.0 88/06/05 00:13:02 root Exp $
  1288. X
  1289. Xprint "1..2\n";
  1290. X
  1291. X@ARGV = ('.a','.b','.c');
  1292. X`echo foo | tee .a .b .c`;
  1293. Xwhile (<>) {
  1294. X    s/foo/bar/;
  1295. X}
  1296. Xcontinue {
  1297. X    print;
  1298. X}
  1299. X
  1300. Xif (`cat .a .b .c` eq "bar\nbar\nbar\n") {print "ok 1\n";} else {print "not ok 1\n";}
  1301. Xif (`cat .a.bak .b.bak .c.bak` eq "foo\nfoo\nfoo\n") {print "ok 2\n";} else {print "not ok 2\n";}
  1302. X
  1303. Xunlink '.a', '.b', '.c', '.a.bak', '.b.bak', '.c.bak';
  1304. !STUFFY!FUNK!
  1305. echo Extracting eg/van/vanexp
  1306. sed >eg/van/vanexp <<'!STUFFY!FUNK!' -e 's/X//'
  1307. X#!/usr/bin/perl
  1308. X
  1309. X# $Header: vanexp,v 2.0 88/06/05 00:17:34 root Exp $
  1310. X
  1311. X# This is for running from a find at night to expire old .deleteds
  1312. X
  1313. X$can = $ARGV[0];
  1314. X
  1315. Xexit 1 unless $can =~ /.deleted$/;
  1316. X
  1317. X($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,
  1318. X   $blksize,$blocks) = stat($can);
  1319. X
  1320. Xexit 0 unless $size;
  1321. X
  1322. Xif (time - $mtime > 2 * 24 * 60 * 60) {
  1323. X    `/bin/rm -rf $can`;
  1324. X}
  1325. Xelse {
  1326. X    `find $can -ctime +2 -exec rm -f {} \;`;
  1327. X}
  1328. !STUFFY!FUNK!
  1329. echo Extracting array.h
  1330. sed >array.h <<'!STUFFY!FUNK!' -e 's/X//'
  1331. X/* $Header: array.h,v 2.0 88/06/05 00:08:21 root Exp $
  1332. X *
  1333. X * $Log:    array.h,v $
  1334. X * Revision 2.0  88/06/05  00:08:21  root
  1335. X * Baseline version 2.0.
  1336. X * 
  1337. X */
  1338. X
  1339. Xstruct atbl {
  1340. X    STR    **ary_array;
  1341. X    STR *ary_magic;
  1342. X    int ary_max;
  1343. X    int ary_fill;
  1344. X    int ary_index;
  1345. X};
  1346. X
  1347. XSTR *afetch();
  1348. Xbool astore();
  1349. Xbool adelete();
  1350. XSTR *apop();
  1351. XSTR *ashift();
  1352. Xvoid afree();
  1353. Xvoid aclear();
  1354. Xbool apush();
  1355. Xint alen();
  1356. XARRAY *anew();
  1357. !STUFFY!FUNK!
  1358. echo Extracting t/op.int
  1359. sed >t/op.int <<'!STUFFY!FUNK!' -e 's/X//'
  1360. X#!./perl
  1361. X
  1362. X# $Header: op.int,v 2.0 88/06/05 00:14:01 root Exp $
  1363. X
  1364. Xprint "1..4\n";
  1365. X
  1366. X# compile time evaluation
  1367. X
  1368. Xif (int(1.234) == 1) {print "ok 1\n";} else {print "not ok 1\n";}
  1369. X
  1370. Xif (int(-1.234) == -1) {print "ok 2\n";} else {print "not ok 2\n";}
  1371. X
  1372. X# run time evaluation
  1373. X
  1374. X$x = 1.234;
  1375. Xif (int($x) == 1) {print "ok 3\n";} else {print "not ok 3\n";}
  1376. Xif (int(-$x) == -1) {print "ok 4\n";} else {print "not ok 4\n";}
  1377. !STUFFY!FUNK!
  1378. echo Extracting t/base.cond
  1379. sed >t/base.cond <<'!STUFFY!FUNK!' -e 's/X//'
  1380. X#!./perl
  1381. X
  1382. X# $Header: base.cond,v 2.0 88/06/05 00:11:52 root Exp $
  1383. X
  1384. X# make sure conditional operators work
  1385. X
  1386. Xprint "1..4\n";
  1387. X
  1388. X$x = '0';
  1389. X
  1390. X$x eq $x && (print "ok 1\n");
  1391. X$x ne $x && (print "not ok 1\n");
  1392. X$x eq $x || (print "not ok 2\n");
  1393. X$x ne $x || (print "ok 2\n");
  1394. X
  1395. X$x == $x && (print "ok 3\n");
  1396. X$x != $x && (print "not ok 3\n");
  1397. X$x == $x || (print "not ok 4\n");
  1398. X$x != $x || (print "ok 4\n");
  1399. !STUFFY!FUNK!
  1400. echo Extracting perlsh
  1401. sed >perlsh <<'!STUFFY!FUNK!' -e 's/X//'
  1402. X#!/usr/bin/perl
  1403. X
  1404. X# Poor man's perl shell.
  1405. X
  1406. X# Simply type two carriage returns every time you want to evaluate.
  1407. X# Note that it must be a complete perl statement--don't type double
  1408. X#  carriage return in the middle of a loop.
  1409. X
  1410. X$/ = '';    # set paragraph mode
  1411. X$SHlinesep = "\n";
  1412. Xwhile ($SHcmd = <>) {
  1413. X    $/ = $SHlinesep;
  1414. X    eval $SHcmd; print $@ || "\n";
  1415. X    $SHlinesep = $/; $/ = '';
  1416. X}
  1417. !STUFFY!FUNK!
  1418. echo Extracting eg/nih
  1419. sed >eg/nih <<'!STUFFY!FUNK!' -e 's/X//'
  1420. Xeval "exec /usr/bin/perl -Spi.bak $0 $*"
  1421. X    if $running_under_some_shell;
  1422. X
  1423. X# $Header: nih,v 2.0 88/06/05 00:16:54 root Exp $
  1424. X
  1425. X# This script makes #! scripts directly executable on machines that don't
  1426. X# support #!.  It edits in place any scripts mentioned on the command line.
  1427. X
  1428. Xs|^#!(.*)|#!$1\neval "exec $1 -S \$0 \$*"\n\tif \$running_under_some_shell;|
  1429. X    if $. == 1;
  1430. !STUFFY!FUNK!
  1431. echo Extracting t/op.join
  1432. sed >t/op.join <<'!STUFFY!FUNK!' -e 's/X//'
  1433. X#!./perl
  1434. X
  1435. X# $Header: op.join,v 2.0 88/06/05 00:14:05 root Exp $
  1436. X
  1437. Xprint "1..3\n";
  1438. X
  1439. X@x = (1, 2, 3);
  1440. Xif (join(':',@x) eq '1:2:3') {print "ok 1\n";} else {print "not ok 1\n";}
  1441. X
  1442. Xif (join('',1,2,3) eq '123') {print "ok 2\n";} else {print "not ok 2\n";}
  1443. X
  1444. Xif (join(':',split(/ /,"1 2 3")) eq '1:2:3') {print "ok 3\n";} else {print "not ok 3\n";}
  1445. !STUFFY!FUNK!
  1446. echo Extracting lib/importenv.pl
  1447. sed >lib/importenv.pl <<'!STUFFY!FUNK!' -e 's/X//'
  1448. X;# $Header: importenv.pl,v 2.0 88/06/05 00:16:17 root Exp $
  1449. X
  1450. X;# This file, when interpreted, pulls the environment into normal variables.
  1451. X;# Usage:
  1452. X;#    do 'importenv.pl';
  1453. X;# or
  1454. X;#    #include <importenv.pl>
  1455. X
  1456. Xlocal($tmp,$key) = '';
  1457. X
  1458. Xforeach $key (keys(ENV)) {
  1459. X    $tmp .= "\$$key = \$ENV{'$key'};" if $key =~ /^[A-Za-z]\w*$/;
  1460. X}
  1461. Xeval $tmp;
  1462. !STUFFY!FUNK!
  1463. echo Extracting t/op.chop
  1464. sed >t/op.chop <<'!STUFFY!FUNK!' -e 's/X//'
  1465. X#!./perl
  1466. X
  1467. X# $Header: op.chop,v 2.0 88/06/05 00:13:22 root Exp $
  1468. X
  1469. Xprint "1..2\n";
  1470. X
  1471. X# optimized
  1472. X
  1473. X$_ = 'abc';
  1474. X$c = do foo();
  1475. Xif ($c . $_ eq 'cab') {print "ok 1\n";} else {print "not ok 1\n";}
  1476. X
  1477. X# unoptimized
  1478. X
  1479. X$_ = 'abc';
  1480. X$c = chop($_);
  1481. Xif ($c . $_ eq 'cab') {print "ok 2\n";} else {print "not ok 2\n";}
  1482. X
  1483. Xsub foo {
  1484. X    chop;
  1485. X}
  1486. !STUFFY!FUNK!
  1487. echo Extracting version.c
  1488. sed >version.c <<'!STUFFY!FUNK!' -e 's/X//'
  1489. X/* $Header: version.c,v 2.0 88/06/05 00:15:21 root Exp $
  1490. X *
  1491. X * $Log:    version.c,v $
  1492. X * Revision 2.0  88/06/05  00:15:21  root
  1493. X * Baseline version 2.0.
  1494. X * 
  1495. X */
  1496. X
  1497. X#include "patchlevel.h"
  1498. X
  1499. X/* Print out the version number. */
  1500. X
  1501. Xversion()
  1502. X{
  1503. X    extern char rcsid[];
  1504. X
  1505. X    printf("%s\r\nPatch level: %d\r\n", rcsid, PATCHLEVEL);
  1506. X}
  1507. !STUFFY!FUNK!
  1508. echo Extracting t/io.pipe
  1509. sed >t/io.pipe <<'!STUFFY!FUNK!' -e 's/X//'
  1510. X#!./perl
  1511. X
  1512. X# $Header: io.pipe,v 2.0 88/06/05 00:13:05 root Exp $
  1513. X
  1514. X$| = 1;
  1515. Xprint "1..4\n";
  1516. X
  1517. Xopen(PIPE, "|-") || (exec 'tr', '[A-Z]', '[a-z]');
  1518. Xprint PIPE "OK 1\n";
  1519. Xprint PIPE "ok 2\n";
  1520. Xclose PIPE;
  1521. X
  1522. Xif (open(PIPE, "-|")) {
  1523. X    while(<PIPE>) {
  1524. X    print;
  1525. X    }
  1526. X}
  1527. Xelse {
  1528. X    print stdout "ok 3\n";
  1529. X    exec 'echo', 'ok 4';
  1530. X}
  1531. !STUFFY!FUNK!
  1532. echo Extracting t/op.unshift
  1533. sed >t/op.unshift <<'!STUFFY!FUNK!' -e 's/X//'
  1534. X#!./perl
  1535. X
  1536. X# $Header: op.unshift,v 2.0 88/06/05 00:15:00 root Exp $
  1537. X
  1538. Xprint "1..2\n";
  1539. X
  1540. X@a = (1,2,3);
  1541. X$cnt1 = unshift(a,0);
  1542. X
  1543. Xif (join(' ',@a) eq '0 1 2 3') {print "ok 1\n";} else {print "not ok 1\n";}
  1544. X$cnt2 = unshift(a,3,2,1);
  1545. Xif (join(' ',@a) eq '3 2 1 0 1 2 3') {print "ok 2\n";} else {print "not ok 2\n";}
  1546. X
  1547. X
  1548. !STUFFY!FUNK!
  1549. echo Extracting t/op.oct
  1550. sed >t/op.oct <<'!STUFFY!FUNK!' -e 's/X//'
  1551. X#!./perl
  1552. X
  1553. X# $Header: op.oct,v 2.0 88/06/05 00:14:14 root Exp $
  1554. X
  1555. Xprint "1..3\n";
  1556. X
  1557. Xif (oct('01234') == 01234) {print "ok 1\n";} else {print "not ok 1\n";}
  1558. Xif (oct('0x1234') == 0x1234) {print "ok 2\n";} else {print "not ok 2\n";}
  1559. Xif (hex('01234') == 0x1234) {print "ok 3\n";} else {print "not ok 3\n";}
  1560. !STUFFY!FUNK!
  1561. echo Extracting t/op.push
  1562. sed >t/op.push <<'!STUFFY!FUNK!' -e 's/X//'
  1563. X#!./perl
  1564. X
  1565. X# $Header: op.push,v 2.0 88/06/05 00:14:23 root Exp $
  1566. X
  1567. Xprint "1..2\n";
  1568. X
  1569. X@x = (1,2,3);
  1570. Xpush(@x,@x);
  1571. Xif (join(x,':') eq '1:2:3:1:2:3') {print "ok 1\n";} else {print "not ok 1\n";}
  1572. Xpush(x,4);
  1573. Xif (join(x,':') eq '1:2:3:1:2:3:4') {print "ok 2\n";} else {print "not ok 2\n";}
  1574. !STUFFY!FUNK!
  1575. echo Extracting t/op.ord
  1576. sed >t/op.ord <<'!STUFFY!FUNK!' -e 's/X//'
  1577. X#!./perl
  1578. X
  1579. X# $Header: op.ord,v 2.0 88/06/05 00:14:17 root Exp $
  1580. X
  1581. Xprint "1..2\n";
  1582. X
  1583. X# compile time evaluation
  1584. X
  1585. Xif (ord('A') == 65) {print "ok 1\n";} else {print "not ok 1\n";}
  1586. X
  1587. X# run time evaluation
  1588. X
  1589. X$x = 'ABC';
  1590. Xif (ord($x) == 65) {print "ok 2\n";} else {print "not ok 2\n";}
  1591. !STUFFY!FUNK!
  1592. echo Extracting t/op.fork
  1593. sed >t/op.fork <<'!STUFFY!FUNK!' -e 's/X//'
  1594. X#!./perl
  1595. X
  1596. X# $Header: op.fork,v 2.0 88/06/05 00:13:53 root Exp $
  1597. X
  1598. X$| = 1;
  1599. Xprint "1..2\n";
  1600. X
  1601. Xif ($cid = fork) {
  1602. X    sleep 2;
  1603. X    if ($result = (kill 9, $cid)) {print "ok 2\n";} else {print "not ok 2 $result\n";}
  1604. X}
  1605. Xelse {
  1606. X    $| = 1;
  1607. X    print "ok 1\n";
  1608. X    sleep 10;
  1609. X}
  1610. !STUFFY!FUNK!
  1611. echo Extracting t/base.if
  1612. sed >t/base.if <<'!STUFFY!FUNK!' -e 's/X//'
  1613. X#!./perl
  1614. X
  1615. X# $Header: base.if,v 2.0 88/06/05 00:12:02 root Exp $
  1616. X
  1617. Xprint "1..2\n";
  1618. X
  1619. X# first test to see if we can run the tests.
  1620. X
  1621. X$x = 'test';
  1622. Xif ($x eq $x) { print "ok 1\n"; } else { print "not ok 1\n";}
  1623. Xif ($x ne $x) { print "not ok 2\n"; } else { print "ok 2\n";}
  1624. !STUFFY!FUNK!
  1625. echo Extracting t/base.pat
  1626. sed >t/base.pat <<'!STUFFY!FUNK!' -e 's/X//'
  1627. X#!./perl
  1628. X
  1629. X# $Header: base.pat,v 2.0 88/06/05 00:12:08 root Exp $
  1630. X
  1631. Xprint "1..2\n";
  1632. X
  1633. X# first test to see if we can run the tests.
  1634. X
  1635. X$_ = 'test';
  1636. Xif (/^test/) { print "ok 1\n"; } else { print "not ok 1\n";}
  1637. Xif (/^foo/) { print "not ok 2\n"; } else { print "ok 2\n";}
  1638. !STUFFY!FUNK!
  1639. echo Extracting x2p/EXTERN.h
  1640. sed >x2p/EXTERN.h <<'!STUFFY!FUNK!' -e 's/X//'
  1641. X/* $Header: EXTERN.h,v 2.0 88/06/05 00:15:24 root Exp $
  1642. X *
  1643. X * $Log:    EXTERN.h,v $
  1644. X * Revision 2.0  88/06/05  00:15:24  root
  1645. X * Baseline version 2.0.
  1646. X * 
  1647. X */
  1648. X
  1649. X#undef EXT
  1650. X#define EXT extern
  1651. X
  1652. X#undef INIT
  1653. X#define INIT(x)
  1654. X
  1655. X#undef DOINIT
  1656. !STUFFY!FUNK!
  1657. echo Extracting t/op.sprintf
  1658. sed >t/op.sprintf <<'!STUFFY!FUNK!' -e 's/X//'
  1659. X#!./perl
  1660. X
  1661. X# $Header: op.sprintf,v 2.0 88/06/05 00:14:40 root Exp $
  1662. X
  1663. Xprint "1..1\n";
  1664. X
  1665. X$x = sprintf("%3s %-4s foo %5d%c%3.1f","hi",123,456,65,3.0999);
  1666. Xif ($x eq ' hi 123  foo   456A3.1') {print "ok 1\n";} else {print "not ok 1\n";}
  1667. !STUFFY!FUNK!
  1668. echo Extracting x2p/INTERN.h
  1669. sed >x2p/INTERN.h <<'!STUFFY!FUNK!' -e 's/X//'
  1670. X/* $Header: INTERN.h,v 2.0 88/06/05 00:15:27 root Exp $
  1671. X *
  1672. X * $Log:    INTERN.h,v $
  1673. X * Revision 2.0  88/06/05  00:15:27  root
  1674. X * Baseline version 2.0.
  1675. X * 
  1676. X */
  1677. X
  1678. X#undef EXT
  1679. X#define EXT
  1680. X
  1681. X#undef INIT
  1682. X#define INIT(x) = x
  1683. X
  1684. X#define DOINIT
  1685. !STUFFY!FUNK!
  1686. echo Extracting INTERN.h
  1687. sed >INTERN.h <<'!STUFFY!FUNK!' -e 's/X//'
  1688. X/* $Header: INTERN.h,v 2.0 88/06/05 00:07:49 root Exp $
  1689. X *
  1690. X * $Log:    INTERN.h,v $
  1691. X * Revision 2.0  88/06/05  00:07:49  root
  1692. X * Baseline version 2.0.
  1693. X * 
  1694. X */
  1695. X
  1696. X#undef EXT
  1697. X#define EXT
  1698. X
  1699. X#undef INIT
  1700. X#define INIT(x) = x
  1701. X
  1702. X#define DOINIT
  1703. !STUFFY!FUNK!
  1704. echo Extracting eg/ADB
  1705. sed >eg/ADB <<'!STUFFY!FUNK!' -e 's/X//'
  1706. X#!/usr/bin/perl
  1707. X
  1708. X# $Header: ADB,v 2.0 88/06/05 00:16:39 root Exp $
  1709. X
  1710. X# This script is only useful when used in your crash directory.
  1711. X
  1712. X$num = shift;
  1713. Xexec 'adb', '-k', "vmunix.$num", "vmcore.$num";
  1714. !STUFFY!FUNK!
  1715. echo Extracting t/op.sleep
  1716. sed >t/op.sleep <<'!STUFFY!FUNK!' -e 's/X//'
  1717. X#!./perl
  1718. X
  1719. X# $Header: op.sleep,v 2.0 88/06/05 00:14:35 root Exp $
  1720. X
  1721. Xprint "1..1\n";
  1722. X
  1723. X$x = sleep 2;
  1724. Xif ($x == 2) {print "ok 1\n";} else {print "not ok 1\n";}
  1725. !STUFFY!FUNK!
  1726. echo Extracting eg/rmfrom
  1727. sed >eg/rmfrom <<'!STUFFY!FUNK!' -e 's/X//'
  1728. X#!/usr/bin/perl -n
  1729. X
  1730. X# $Header: rmfrom,v 2.0 88/06/05 00:16:57 root Exp $
  1731. X
  1732. X# A handy (but dangerous) script to put after a find ... -print.
  1733. X
  1734. Xchop; unlink;
  1735. !STUFFY!FUNK!
  1736. echo ""
  1737. echo "End of kit 15 (of 15)"
  1738. cat /dev/null >kit15isdone
  1739. run=''
  1740. config=''
  1741. for iskit in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
  1742.     if test -f kit${iskit}isdone; then
  1743.     run="$run $iskit"
  1744.     else
  1745.     todo="$todo $iskit"
  1746.     fi
  1747. done
  1748. case $todo in
  1749.     '')
  1750.     echo "You have run all your kits.  Please read README and then type Configure."
  1751.     chmod 755 Configure
  1752.     ;;
  1753.     *)  echo "You have run$run."
  1754.     echo "You still need to run$todo."
  1755.     ;;
  1756. esac
  1757. : Someone might mail this, so...
  1758. exit
  1759.  
  1760.