home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume31 / versions / part01 < prev    next >
Encoding:
Text File  |  1992-08-21  |  18.2 KB  |  599 lines

  1. Newsgroups: comp.sources.misc
  2. From: Michel.Fingerhut@ircam.fr (Michel Fingerhut)
  3. Subject:  v31i087:  versions - version number report generator v3.5, Part01/01
  4. Message-ID: <1992Aug18.204908.20640@sparky.imd.sterling.com>
  5. X-Md4-Signature: 1a49630d48c494d72cead3c82d809dda
  6. Date: Tue, 18 Aug 1992 20:49:08 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: Michel.Fingerhut@ircam.fr (Michel Fingerhut)
  10. Posting-number: Volume 31, Issue 87
  11. Archive-name: versions/part01
  12. Environment: Perl
  13.  
  14. Versions is a perl program that reports the version number of selected
  15. programs.  It has a separate configuration file (conceptually similar to
  16. the magic number file description), which tells it, for each program, how
  17. to extract its version number: some are invoked with a special flag, some
  18. are scanned for specific strings.
  19.  
  20. Reports may also include the install date.
  21.  
  22. Reports are printed as a table on stdout or in tbl format, suitable to be
  23. fed into a troff pipe.
  24.  
  25. The Makefile was generated for GNU-make with a special (perl) utility.
  26.  
  27. Please report all comments, suggestions and bugs to mf@ircam.fr.
  28.  
  29. -------------------------------- cut here -----------------------------------
  30. #! /bin/sh
  31. # This is a shell archive.  Remove anything before this line, then unpack
  32. # it by saving it into a file and typing "sh file".  To overwrite existing
  33. # files, type "sh file -c".  You can also feed this as standard input via
  34. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  35. # will see the following message at the end:
  36. #        "End of shell archive."
  37. # Contents:  Makefile versions.1 versions.pl versions.dat
  38. # Wrapped by fingerhu@nadia on Mon Aug 17 14:12:01 1992
  39. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  40. if test -f 'Makefile' -a "${1}" != "-c" ; then 
  41.   echo shar: Will not clobber existing file \"'Makefile'\"
  42. else
  43. echo shar: Extracting \"'Makefile'\" \(1585 characters\)
  44. sed "s/^X//" >'Makefile' <<'END_OF_FILE'
  45. X#
  46. X#            Copyright (c) 1992 by IRCAM
  47. X#                All rights reserved.
  48. X#
  49. X#  For any information regarding this and other IRCAM software, please
  50. X#  send email to:
  51. X#                              manager@ircam.fr
  52. X#
  53. X
  54. X#
  55. X# Makefile    1.3 IRCAM 8/17/92
  56. X#
  57. X# Makefile for mkskel
  58. X#
  59. X# Modification history
  60. X#
  61. X# 17-Aug-92 - Michel Fingerhut (fingerhu@ircam.fr)
  62. X#
  63. X
  64. XMAKEFILE    := Makefile
  65. XTARGET        := versions
  66. XROOTDIR        := /usr/local
  67. XOWNER        := root
  68. XGROUP        := wheel
  69. X
  70. X# Where executables and man pages go
  71. XBINDIR        := $(ROOTDIR)/bin
  72. XLIBDIR        := $(ROOTDIR)/lib
  73. XMANDIR        := $(ROOTDIR)/man
  74. XDESTDIR        := $(BINDIR)
  75. X
  76. XSHFILES        :=  versions.pl 
  77. XLIBFILES    :=  versions.dat
  78. XTAPE        := /dev/rmt0h
  79. XMANFILES1    :=  versions.1 
  80. XMANFILES    :=  $(MANFILES1)       
  81. XINSTMANFILES    := $(addprefix $(MANDIR)/man1/, $(MANFILES1))       
  82. XINSTLIBFILES    := $(addprefix $(LIBDIR)/, $(LIBFILES))
  83. XSOURCE        := $(MAKEFILE) $(MANFILES) $(DOCFILES) $(SHFILES) \
  84. X           $(INCLUDES) $(YACCFILES) $(LEXFILES) \
  85. X           $(CFILES) $(FFILES) $(ASFILES) $(LIBFILES)
  86. X
  87. X.PHONY: all install uninstall clean depend
  88. Xall:     $(TARGET)
  89. X
  90. Xinstall: $(DESTDIR)/$(TARGET) $(INSTMANFILES) $(INSTLIBFILES)
  91. X
  92. Xuninstall:
  93. X    rm -f $(DESTDIR)/$(TARGET) $(INSTMANFILES)
  94. X
  95. Xdepend:
  96. X
  97. X$(TARGET):      $(TARGET).pl
  98. X    cat $< > $@
  99. X    chmod a+x $@
  100. X
  101. X$(DESTDIR)/$(TARGET): $(TARGET)
  102. X    install -c -o $(OWNER) -g $(GROUP) -m 0755 $< $@
  103. X
  104. X$(LIBDIR)/%: %
  105. X    install -c -o $(OWNER) -g $(GROUP) -m 0644 $< $@
  106. X
  107. X$(MANDIR)/man1/% : %
  108. X    install -c -o $(OWNER) -g $(GROUP) -m 0644 $< $@
  109. X
  110. Xtar:
  111. X    tar rfcb $(TAPE) 20 $(SOURCE)
  112. X
  113. Xshar:   $(TARGET).shar
  114. X
  115. X$(TARGET).shar: $(SOURCE)
  116. X    shar $^ > $@
  117. X
  118. Xclean:
  119. X    -rm -f $(OBJECTS)
  120. X    sccs clean
  121. X
  122. END_OF_FILE
  123. if test 1585 -ne `wc -c <'Makefile'`; then
  124.     echo shar: \"'Makefile'\" unpacked with wrong size!
  125. fi
  126. # end of 'Makefile'
  127. fi
  128. if test -f 'versions.1' -a "${1}" != "-c" ; then 
  129.   echo shar: Will not clobber existing file \"'versions.1'\"
  130. else
  131. echo shar: Extracting \"'versions.1'\" \(3891 characters\)
  132. sed "s/^X//" >'versions.1' <<'END_OF_FILE'
  133. X.TH VERSIONS 1 "IRCAM 3.2 8/3/92"
  134. X.SH NAME
  135. Xversions - print versions of locally-installed programs
  136. X.SH SYNOPSIS
  137. X.B versions
  138. X[
  139. X.B \-v
  140. X]
  141. X[
  142. X.B \-l
  143. X]
  144. X[
  145. X.B \-t
  146. X]
  147. X[
  148. X.B \-f
  149. X.I specs-file
  150. X]
  151. X[
  152. X.I program ...
  153. X]
  154. X.SH DESCRIPTION
  155. X.PP
  156. X.B Versions
  157. Xprints the current version number (and installation date, if
  158. X.BR \-l )
  159. Xof some locally installed programs.
  160. XIf no program name is given, it lists all the programs found in the
  161. X.B /usr/local/lib/versions.dat
  162. Xmethods file (or from the
  163. X.I specs-file
  164. Xspecified with the optional
  165. X.B \-f
  166. Xflag).
  167. X
  168. XIf any program names are specified, it lists the required information
  169. Xfor them (if they appear in the methods file).
  170. X.SH OPTIONS
  171. X.TP
  172. X.B \-v
  173. Xprints its own version (equivalent to
  174. X.BR versions\ versions )
  175. Xand exit.
  176. X.TP
  177. X.B \-l
  178. X(long format) prints also installation date
  179. X.TP
  180. X.B \-t
  181. Xproduce output in
  182. X.B tbl
  183. Xformat (suitable to be piped into further processing tools).  If this
  184. Xoption is selected, long format is automatically chosen too.
  185. X.TP
  186. X.B \-f
  187. X.I specs-file
  188. Xread the methods used to extract the version from this file instead of the
  189. Xdefault
  190. X.B /usr/local/lib/versions.dat.
  191. X.TP
  192. X.I program ...
  193. Xprint only the version numbers (and installation dates)
  194. Xof the programs (if their names
  195. Xappear in the methods file).
  196. X.SH THE METHODS FILE
  197. X.I Specs-file
  198. X(or the default
  199. X.BR /usr/local/lib/versions.dat)
  200. Xcontains a list of programs with the method used to retrieve the version
  201. Xnumber in each.  Each line consists of 3
  202. X.I tab-separated
  203. Xfields: the first one
  204. Xis the path to the program, the second one a shell command used
  205. Xin order to extract a string containing the version information,
  206. Xand the last one a perl pattern used to extract the version from the string
  207. Xobtained via the shell command.
  208. X
  209. XThe path may either be absolute, in which case
  210. X.B versions
  211. Xuses it as the location of the program, or relative, in which case it
  212. Xsearches for the file in the
  213. X.B $PATH
  214. Xenvironment variable (at the expense of time).  This allows specifying
  215. Xprograms which may live in different places for different users.
  216. X
  217. XThe perl pattern must include one or two ``bracketing-construct'' ( ... )
  218. Xwhich enclose the pattern retrieving the version number, the second one
  219. Xbeing for the level number.  Hence the use of parentheses in the pattern
  220. Xmust take into account that $1 and $2 are used by the program in order
  221. Xto print the 
  222. X.I version(level)
  223. Xinformation.
  224. X
  225. XEnvironment variables can be used within any part of the line.  It can be
  226. Xused in retrieving user-dependent path as
  227. X.B $HOME/bin.
  228. X
  229. XA limited form of one-level macros is permitted so as to simplify the
  230. Xdescription.  The special
  231. X.B %%
  232. Xmacro stands for the full path (i.e., the first field
  233. Xin each line, usually used in the 2nd field).  Other macros can
  234. Xbe defined in that file: the definition is on a line of the form
  235. X.IR macro=string ,
  236. Xand any subsequent occurrence of 
  237. X.BI % macro
  238. Xor
  239. X.BI %{ macro }
  240. Xis replaced by
  241. X.I string.
  242. XMacro definition lines should not contain tabs (other than leading
  243. Xto a possible comment).
  244. X
  245. XBlank lines and comments (following a # to the end of the line) are
  246. Xpermitted and ignored.  Hence the # character cannot appear in a macro
  247. Xname or value nor anywhere else except as a comment-starter: the pattern
  248. Xfor
  249. X.B named
  250. Xused to be
  251. X.B @(#)named
  252. Xwhich broke with the introduction of comments.  This can be safely
  253. Xreplaced by
  254. X.B @(.)named
  255. Xe.g.
  256. X.SH BUGS
  257. XNot all programs are included, since some don't have an idea of their
  258. Xown version number (other than in the sources, sometimes, wherever they
  259. Xmay be).  It would be nice if people writing significant programs
  260. Xprovided a flag returning the version information, or at least
  261. Xan identifiable string in the executable from which it could be inferred.
  262. X
  263. XMacro names should preferably not be part of other macro names, unless
  264. Xthe { ... } construct is explicitely used.
  265. X.SH AUTHOR
  266. XMichel Fingerhut (fingerhu@ircam.fr) with suggestions by
  267. XPeter W Osel (pwo@sunrise.zfe.siemens.de).
  268. END_OF_FILE
  269. if test 3891 -ne `wc -c <'versions.1'`; then
  270.     echo shar: \"'versions.1'\" unpacked with wrong size!
  271. fi
  272. # end of 'versions.1'
  273. fi
  274. if test -f 'versions.pl' -a "${1}" != "-c" ; then 
  275.   echo shar: Will not clobber existing file \"'versions.pl'\"
  276. else
  277. echo shar: Extracting \"'versions.pl'\" \(5599 characters\)
  278. sed "s/^X//" >'versions.pl' <<'END_OF_FILE'
  279. X#!/usr/local/bin/perl
  280. X#            Copyright (c) 1992 by IRCAM
  281. X#                All rights reserved.
  282. X#
  283. X#  For any information regarding this and other IRCAM software, please 
  284. X#  send email to:
  285. X#                              manager@ircam.fr
  286. X
  287. X#
  288. X# versions    3.5 IRCAM 8/17/92
  289. X#
  290. X# Extract program version number
  291. X#
  292. X# Modification history
  293. X#
  294. X# 22-Jul-92 - Michel Fingerhut (fingerhu@ircam.fr)
  295. X#    added suggestions from Peter W Osel (pwo@sunrise.zfe.siemens.de)
  296. X#
  297. X# 21-Jul-92 - Michel Fingerhut (fingerhu@ircam.fr)
  298. X#    added macro capability and various sanity checks
  299. X#
  300. X# 20-Jul-92 - Michel Fingerhut (fingerhu@ircam.fr)
  301. X#    initial version
  302. X#
  303. X
  304. X$[          = 1;                 # set array base to 1
  305. X$,          = ' ';               # set output field separator
  306. X$\          = "\n";              # set output record separator
  307. X$options    = 'f:vlt';         # for getopts
  308. X
  309. X$specs_file = "/usr/local/lib/versions.dat";    # unless -f to override
  310. X$usage      = "Usage: $0 [-v] [-l] [-t] [-f specs-file] [program ...]\n";
  311. X
  312. X$today        = &asctime(time);
  313. X
  314. X#-------------------------------------------------------------------------------
  315. X# formats for short form of output
  316. X#-------------------------------------------------------------------------------
  317. X
  318. X$format_top_s= "
  319. Xprogram          version
  320. X-------          -------
  321. X.
  322. X";
  323. X
  324. X$format_s= '
  325. X@<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<
  326. X$program,     $version
  327. X.
  328. X';
  329. X
  330. X#-------------------------------------------------------------------------------
  331. X# formats for long form of output
  332. X#-------------------------------------------------------------------------------
  333. X
  334. X$format_top_l= "
  335. Xprogram          version                   date installed
  336. X-------          -------                   --------------
  337. X.
  338. X";
  339. X
  340. X$format_l= '
  341. X@<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<
  342. X$program,     $version,                 &asctimefile($path)
  343. X.
  344. X';
  345. X
  346. X#------------------------------------------------------------------------------
  347. X# tbl output
  348. X#------------------------------------------------------------------------------
  349. X
  350. X$format_top_t= "print \"
  351. X.ce
  352. XINSTALLED PROGRAMS ON $today
  353. X.sp 5
  354. X.TS H
  355. Xcenter box;
  356. Xc c c
  357. Xl l l.
  358. XProgram\tVersion\tDate installed
  359. X_
  360. X.TH\"";
  361. X
  362. X$format_t    = 'printf "%s\t%s\t%s\n", $program, $version, &asctimefile($path);';
  363. X
  364. X$format_end_t= 'print ".TE"';
  365. X
  366. X#------------------------------------------------------------------------------
  367. X# main program
  368. X#------------------------------------------------------------------------------
  369. X
  370. X# parse arguments
  371. Xrequire 'getopts.pl';
  372. X&Getopts($options) || die $usage;    # parse the arguments
  373. X$specs_file= $opt_f if defined $opt_f;    # override default specs file
  374. X
  375. X# if -v, print version and exit
  376. Xif (defined $opt_v) {
  377. X    print "3.5 IRCAM 8/17/92";
  378. X    exit;
  379. X}
  380. X
  381. X# set format according to -l (long) otherwise short
  382. Xif ($opt_t) {
  383. X    eval $format_top_t;
  384. X} elsif ($opt_l) {
  385. X    eval "format top= $format_top_l; format= $format_l" ;
  386. X} else {
  387. X    eval "format top= $format_top_s; format= $format_s" ;
  388. X}
  389. X
  390. X# determine which selected programs to list
  391. X$doit{shift @ARGV} = 1     while $#ARGV;
  392. X
  393. X# read dat file and execute program
  394. X
  395. Xopen (DAT, $specs_file) || die "Couldn't find specs file $specs_file: $!\n";
  396. X
  397. Xwhile (<DAT>) {
  398. X
  399. X    chop;
  400. X    s/\s*#.*$//;            # strip comments
  401. X    next if /^$/;            # skip empty lines
  402. X    while (/.*\$(\w+).*/) {             # find all env. variables occurrences
  403. X    $value= $ENV{eval $1};        # compute the value
  404. X    s/(\$\w+)/$value/;        # and do the replacement
  405. X    }
  406. X
  407. X    if ( ! /\t/ ) {             # macro descr section contains no tabs
  408. X
  409. X    # this is a macro definition - find name and store the definition
  410. X    @l = split(/=/, $_, 2);
  411. X    die "*** macro % cannot be defined (reserved)\n" if $l[1] eq '%';
  412. X    die "*** macro $l[1] multiply defined\n" if defined $macro{$l[1]};
  413. X    $macro{$l[1]}= $l[2];
  414. X
  415. X    } else {                # if tab, description section
  416. X
  417. X    # perform macro substitution on all the line
  418. X    foreach $key (keys %macro) { 
  419. X        s/\%$key|\%\{$key\}/$macro{$key}/g;
  420. X    }
  421. X
  422. X    # split the line into the path, shell command and perl pattern
  423. X        ($path, $command, $pattern)= split(/\t+/);
  424. X
  425. X    # check if the file exists
  426. X    if ($path !~ /^\/.*/) {
  427. X        # relative path: look for file in $PATH (we won't do aliases!)
  428. X        foreach $dir (split(/:/, $ENV{'PATH'})) {
  429. X        $path= "$dir/$path", last if -f "$dir/$path";
  430. X        }
  431. X    }
  432. X    next if ! -f $path;
  433. X
  434. X    # perform special macro subst: %% -> $path
  435. X    $command=~ s/\%\%/$path/g;
  436. X
  437. X    # identify the program name (after last / in path name)
  438. X    ($program= $path) =~ s/.*\///;    #    isolate prog name (after last / )
  439. X
  440. X    # ignore this entry if there are arguments and it is not one of them
  441. X        next if %doit && ! defined $doit{$program};
  442. X
  443. X    # find version number from pattern
  444. X        undef $version;
  445. X        $version= $1 if `$command` =~ /.*$pattern.*/;
  446. X        $version .= "($2)" if $2;
  447. X
  448. X    # print
  449. X        write          unless $opt_t;
  450. X    eval $format_t if $opt_t;
  451. X    }
  452. X}
  453. Xclose(DAT);
  454. Xeval $format_end_t if $opt_t;
  455. X
  456. X#------------------------------------------------------------------------------
  457. X# asctimefile - return creation time of a file in ascii
  458. X#------------------------------------------------------------------------------
  459. Xsub asctimefile {{
  460. X    &asctime((stat($_[1]))[10]);
  461. X}}
  462. X
  463. X#------------------------------------------------------------------------------
  464. X# asctime - convert time from 1/1/1970 to ascii
  465. X#------------------------------------------------------------------------------
  466. Xsub asctime {{
  467. X
  468. X    local(@mon)=  ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
  469. X               'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
  470. X    local(@time)= localtime($_[1]);
  471. X
  472. X    sprintf("%2d %s 19%02d %02d:%02d",
  473. X    $time[4], $mon[$time[5]+1], $time[6], $time[3], $time[2]);
  474. X}}
  475. END_OF_FILE
  476. if test 5599 -ne `wc -c <'versions.pl'`; then
  477.     echo shar: \"'versions.pl'\" unpacked with wrong size!
  478. fi
  479. # end of 'versions.pl'
  480. fi
  481. if test -f 'versions.dat' -a "${1}" != "-c" ; then 
  482.   echo shar: Will not clobber existing file \"'versions.dat'\"
  483. else
  484. echo shar: Extracting \"'versions.dat'\" \(3851 characters\)
  485. sed "s/^X//" >'versions.dat' <<'END_OF_FILE'
  486. X# Macros 3.3 IRCAM 8/17/92 for versions
  487. X#
  488. X#                       Copyright (c) 1992 by IRCAM
  489. X#                           All rights reserved.
  490. X#
  491. X#  For any information regarding this and other IRCAM software, please
  492. X#  send email to:
  493. X#                              manager@ircam.fr
  494. X
  495. XBIN=/usr/local/bin        # where most of our binaries are
  496. XETC=/usr/local/etc        # where some odd ones live
  497. XLIB=/usr/local/lib        # where most of our libraries are
  498. X
  499. Xl=level[^ ]* ([^ ,\n]+)        # retrieves the level number in $2, usually
  500. Xv=[Vv]ersion[^ ]* *([^ ,\n]+)    # retrieves the version number in $1, hopefully
  501. Xs=[^ ,\n]+            # version number string in most cases
  502. Xj=.*\n.*            # junk between version and level across lines
  503. X
  504. XTEX=tex/inputs            # to shorten the macro def. line for tex
  505. Xtv=.def.texinfoversion
  506. X
  507. X# method for emacs: create a lisp file, execute it and remove
  508. Xemacs=cd /tmp; echo \(message emacs-version\) >e.$$; %% -batch -l e.$$; rm e.$$
  509. X
  510. X# method for floppy: as above
  511. Xfloppy=cd /tmp; echo > f$$.f ; %% f$$.f ; rm f$$.*
  512. X
  513. X# Methods
  514. X
  515. X%ETC/amd        %% -v 2>&1            amd (%s)
  516. X%BIN/bison        bison --version 2>/dev/null    Bison %v
  517. X%BIN/bp            strings %%            (NeurDS version %s)
  518. X/usr/ucb/dbx        echo quit | %% %% 2>/dev/null    %v
  519. X%BIN/diff        diff +version 2>&1        GNU diff %v
  520. X%BIN/dig        %% localhost            DiG (%s)
  521. X%BIN/dirmap        strings %%            ^(.*IRCAM.*)
  522. X%BIN/doc        strings %%            Doc - %v
  523. X%BIN/elk        echo 1.5 \(from sources\)    (^.+)
  524. Xelm            %% -v                Elm (%s) PL(%s)
  525. X%BIN/emacs        %emacs                (^.+)
  526. X%BIN/enquire        %%                %v
  527. X%BIN/f2c        echo | %%            version of (.*) ..:
  528. X%BIN/find        %% /dev/null -version 2>&1    %v
  529. X%BIN/flex        %% -v < /dev/null 2>&1        %v
  530. X%BIN/floppy        %floppy                %v
  531. X%BIN/formes        %% -h                NEW:\t(%s)
  532. X%BIN/ftoch        %% -v                Version . (%s)
  533. X%BIN/ftosc        %% -V                (^.*)
  534. X%BIN/g++        gcc -v 2>&1            %v
  535. Xgawk                   %% -W version 2>&1              \(gawk\) (%s).*%l
  536. X%BIN/gcc        %% -v 2>&1            %v
  537. X%BIN/gdb        echo quit | %%            GDB (%s),
  538. X%BIN/gnuplot        echo sh ver | %% 2>&1        %v%j%l
  539. X%BIN/X11/ghostview    strings %%            Ghostview, %v
  540. X%BIN/grep        %% -V 2>&1            grep, %v
  541. X%BIN/iconx        strings %%            Icon %v\.
  542. X%BIN/info        info --version            ^(.*)
  543. X%BIN/X11/imake        strings %%            imake.c,v (%s)
  544. X%BIN/kcl        echo \(bye\) | %%        Version\((%s)\)
  545. X%BIN/kermit        echo quit | %%            C-Kermit, (%s)
  546. X%BIN/lelisp        echo \(end\) | %%        %v
  547. X%BIN/less        strings %%            %v
  548. X%BIN/make        %% -v 2>/dev/null        %v
  549. X%BIN/makemake        cat %%                \t(%s IRCAM) @
  550. X%BIN/man        %% -v 2>&1            man (%s)
  551. X%BIN/matlab        %% -v 2>/dev/null        %v
  552. X%BIN/mkskel        %% -v                ^(.*)
  553. X%BIN/mixview        strings %%            Mixview v. (%s)
  554. X%BIN/monitor        %% -v                (^.*) - Digital
  555. X%ETC/named        strings %%            @\(.\)named (%s)
  556. X%BIN/ofiles        strings %%            ofiles.c,v (%s)
  557. X%BIN/patch        %% -v 2>&1            patch.c,v (%s)%j%l
  558. X%BIN/perl        %% -v                Revision: (%s)%j%l
  559. X%BIN/rcs        strings %%            rcs.c,v (%s)
  560. X%LIB/sbp-INIT        csh %%                Using (.*) Ultrix
  561. X%BIN/scheme        echo \(exit\) | %% -v        Release (.*)
  562. X/sdmach            sysinfo                Kernel Version[^:]*: ([^:]*):
  563. X%BIN/shar        strings %%            shar.c,v (%s)
  564. X/usr/lib/sendmail    echo quit | %% -bs        Sendmail (%s)
  565. X%BIN/svp        %% 2>&1                %v
  566. X%BIN/tangle        strings %%            TANGLE, (.*)
  567. X%BIN/tar        %% +version 2>&1        %v
  568. Xtcsh            %% -c 'echo '$''version''    tcsh (%s)
  569. X%BIN/tex        cd /tmp; echo \\end | %%    %v
  570. X%LIB/%TEX/texinfo.tex    cat %%                %tv{(%s)}
  571. X%BIN/top        strings %%            Top, %v
  572. X%BIN/vgrind        strings %%            from (.*) \(
  573. X%BIN/unshar        strings %%            unshar.c,v (%s)
  574. X%BIN/unzip        %% 2>&1                Zipfile Extract v(.*) of
  575. X%BIN/versions        %% -v                ^(.*)
  576. X%BIN/weave        strings %%            WEAVE, (.*)
  577. X%BIN/X11/x11perf    strings %%            program, %v
  578. X/vmunix            head -1 /etc/motd        (^.+) Sys
  579. X%BIN/wall        %% -v                ^(.*)
  580. X%BIN/write        %% -v                ^(.*)
  581. X%BIN/X11/xftp        strings %%            xftp %v
  582. X%BIN/xlispstat        echo '(exit)' | %%        STAT %v Release (%s)
  583. X%BIN/X11/xmgr        strings %%            %v
  584. X%BIN/X11/xnetanal    strings %%            Analzser v(%s)
  585. X%BIN/X11/xnetgraph    strings %%            Monitor v(%s)
  586. X%BIN/X11/xnetsampler    strings %%            Sampler v(%s)
  587. X%BIN/xtel        %% -v 2>/dev/null        XTEL (%s)
  588. X%BIN/X11/xv        strings %%            Rev: (.*)
  589. END_OF_FILE
  590. if test 3851 -ne `wc -c <'versions.dat'`; then
  591.     echo shar: \"'versions.dat'\" unpacked with wrong size!
  592. fi
  593. # end of 'versions.dat'
  594. fi
  595. echo shar: End of shell archive.
  596. exit 0
  597.  
  598. exit 0 # Just in case...
  599.