[comp.sources.amiga] v90i131: ls 3.1 - UNIX-like ls utility, Part01/03

Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator) (04/11/90)

Submitted-by: kim@uts.amdahl.com (Kim E. DeVaughn)
Posting-number: Volume 90, Issue 131
Archive-name: unix/ls-3.1/part01

[ uuencoded executable enclosed.  ...tad ]

Here is v3.1 of Justin McCormick's "ls" utility.  Many options, and tho
not quite the exact clone of UN*X ls that I'd like to see, it does come
close if the right flags are used.

At least *this* distribution includes the source, so it can be further
tailored to match one's tastes and requirements.

Please note that the .o files for the assembly routines are included in
the src directory since Justin uses the CAPE assembler.

/kim

#!/bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 3)."
# Contents:  ls.doc ls.uu src src/Makefile src/README src/linkfile
#   src/ls.h src/lssup.o.uu src/mycres.a src/mycres.o.uu
# Wrapped by tadguy@xanth on Tue Apr 10 17:22:46 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'ls.doc' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'ls.doc'\"
else
echo shar: Extracting \"'ls.doc'\" \(8349 characters\)
sed "s/^X//" >'ls.doc' <<'END_OF_FILE'
X                   LS 3.0 USER DOCUMENTATION
X
X-----------------------------------------------------------------------
X
X     LS 3.0 - A versatile Amiga directory listing utility.
X
XRevision History:
X
X  V1.0    August 1986 Written from scratch by Justin V. McCormick.
X  V2.0  November 1988 Revised for Lattice 5.0 and made 1.3 compatible.
X  V2.1  December 1988 Minor size reduction, fixed a few bugs from 2.0.
X  V2.2  December 1988 Fixed status return and multiple wildcard pathnames.
X  V3.0  July 25, 1989 Instant sorting, best-fit output, new features.
X  V3.1  July 29, 1989 Bug fixes, new output width and height options.
X
XNotices:
X
X  This program is placed in the public domain with the
Xunderstanding that the author makes no claims or guarantees with
Xregard to its suitability for any given application, and that
Xthe author assumes no responsibility for damages incurred by its
Xusage.  Any resemblance of this program to any other program,
Xeither living or dead, is purely coincidental.
X
X  Feel free to borrow this code and make millions of dollars
Xfrom its sale or commercial use, but please give credit where
Xcredit is due.
X
X  Please do not send me money or stolen software!  I enjoy mail,
Xphone calls, and legitimate software contributions of all kinds.
X
X           Thanks for your encouragement and support,
X                      Justin V. McCormick
X
XI can be reached via:
X
X  BIX: jmccormick
XPLINK: JVM
X
XPHONE: 303-290-8429
X
XUSMAIL: 8330 E. Quincy Ave.
X        Bldg. C, #312
X        Denver CO, 80237
X
X
X
XSynopsis:
X---------
X
X  Features intelligent columnar listing, versatile sort options,
XUNIX-style pattern matching, recursive subdirectory listing,
Xcustomized output formatting and much more!
X
XUsage:
X        LS [options] [pattern1] [pattern2] ...
X
X
XInstallation:
X-------------
XLS can be put in your C: directory where LIST and DIR are
Xnormally found.  LS can be made resident in your
Xstartup-sequence, but you must set the pure bit on LS after
Xdearchiving to prevent spurious warnings:
X
X    PROTECT C:LS +P
X
XOr you can ignore the pure bit warning in the startup-sequence:
X
X    RESIDENT >NIL: C:LS PURE
X
X
XThe Command Line:
X-----------------
X
X  All arguments are optional.  The default action is to give a
Xshort columnar listing, sorted alphabetically, using the current
Xdirectory.  Alphabetizing is always case insensitive.
X
XYou can group your options together in any order, like this:
X
X    LS -tlr df0:
X
XOr you can have options specified independently:
X
X    LS -t -l -r df0:
X
XHowever, if you specify several file or path names, the options
Xwill return to their default settings between paths.  Thus, you
Xhave a command like this:
X
X    LS -l df0: -r df0:
X
XThis would give you a two listings of df0:, the first one a long
Xlisting, and the second one a reverse sorted short listing.
X
X
XOptions:
X--------
X
X  There are many command options for LS.  You can get a quick
Xreference list of options by typing:
X
X    LS -?
X
XHere is the complete list and description of the options:
X
Xc   Show filenotes, implies long listing.
Xd   Show directory entries only.
Xf   Show file entries only.
Xh   Same as ?, help!
Xk   Do not use ANSI escape codes in output (for colored text).
Xl   Give long listing.
Xn   Do not sort entries before displaying.
Xp   Permit system requests ("Please insert disk xxx in any drive...").
Xr   Reverse sort direction.
Xs   Sort entries by size.
Xt   Sort entries by date.
Xv <pattern> 
X  Do not show entries that match the given pattern.
X
XD   Show directory entries last.
XH   Do not print directory headings or subtotals.
XI   Non-interactive short listings, no "MORE" prompt between pages.
XM   Mix directory and file entries together in final output list.
XP   Print full pathnames for all entries, implies long listing.
XR   Recursive listing, descend into subdirectories that matches pattern.
XT   Print grand total of all entries.
X
X  If LS cannot read the current CLI window size, LS assumes the
Xoutput is 77 columns by 23 rows.  The following two options let
Xyou control the output page width and length of the short
Xcolumnar listing:
X
XX <wide>
X  Set short listing page width to the given number of columns.
XY <high>
X  Set short listing page length to the given number of rows.
X
X  There are two special options that expect a valid directory or
Xfilename after the option:
X
XN <name>
X  Show entries that are newer (more recent than) the given entry name.
XO <name>
X  Show entries that are older (less recent than) the given entry name.
X
X  By using these two options, you can generate a list of files
Xnewer or older than a given file or directory.  For instance,
Xsuppose you had a directory containing C source files for a
Xproject.  Typing "LS -t df0:" produces the following list of
Xfiles sorted by time:
X
X    joe.c  fred.c  pete.c  ted.c  sam.c
X
XNow, if we give the following command:
X
X    LS -N df0:pete.c df0:
X
XThe following files newer than pete.c would be listed:
X
X    ted.c  sam.s
X
XAlso, -N and -O can be used together.  This command:
X
X    LS -N df0:fred.c -O df0:ted.c df0:
X
Xwould produce the only file newer than fred.c and older than ted.c:
X
X    pete.c
X
XTip:  If you need to list files older or newer than a certain
Xdate, rather than a certain file, you can do this:
X
X  echo >RAM:datemark "Marker"    ; Create a temp file in RAM:
X  setdate RAM:datemark 07-Jul-89 ; Set the datestamp for the temp file
X  LS -N ram:datemark df0:        ; List files newer than "datemark"
X  delete ram:datemark            ; Remove the temp file
X
X
XFormatted Output:
X-----------------
X
X  For customized output, there is a special option that expects
Xa format rule as the next "option":
X
XF <format>
X  Format output with <format), with the following special symbols:
X
X    %p   Print the protection bits
X    %d   Print the date, YY-MM-DD
X    %t   Print the time, hh-mm-ss
X    %b   Print the number of filesystem blocks used by this entry.
X    %s   Print the number of bytes used by this entry.
X    %n   Print the name of the entry.
X    %%   Print a percent symbol.
X    \n   Print a linefeed.
X    \t   Print a tab.
X    \\   Print a backslash symbol.
X
XThe default format rule that LS uses for long listings looks like this:
X
X    -F "%p %d %t %4b %8s %n\n"
X
X  Any of the format options that begin with the '%' symbol can
Xhave an optional pad count that lets you specify how many
Xcolumns to use.  For example:
X
X    -F "%40n\n"
X
Xwould print each entry name right justified in a field of 40 columns.
X
X  You can use this feature of LS to help create simple batch
Xcommand files.  For example, look at this command:
X
X    LS -PF "copy %n RAM:\n" df0:*.h
X
X  This tells LS to perform a listing using full pathnames with a
Xspecial format, matching only filenames that end with ".h" in
Xdirectory df0:.  Suppose df0:  has the following files in it:
X
X    joe.h  fred.h  pete.h  ted.h
X
XOur example LS command would result in the following list of commands:
X
X    copy df0:fred.h RAM:
X    copy df0:joe.h RAM:
X    copy df0:pete.h RAM:
X    copy df0:ted.h RAM:
X
XWe could create a script file from this by redirecting the
Xoutput of LS to a temporary file:
X
X    LS >ram:templist -PF "copy %n RAM:\n" df0:*.h
X    EXECUTE ram:templist    ;Do the script
X    DELETE ram:templist     ;Delete it
X
X
XWildcards:
X----------
X
X  Wildcards may be used in file names and in the last level of a
Xdirectory path name.  The UNIX-style '*' character is used to
Xmatch any number of characters, and a '?' matchs any single
Xcharacter.  If you need to specify a pathname with spaces in it
Xlike "Wombat Soup", you need to put quotes around it.  LS can
Xprocess up to 30 separate pathname patterns in per command line.
X
XHere are some simple examples:
X
X    LS df0:*.info      ; List all .info files in df0:
X    LS df0:*/*.info    ; List all dirs and .info files in df0:
X    LS df0:L*/*.info   ; List dirs that start with 'L' and .info files
X
X  Also, wildcards are helpful when you are trying to avoid showing
Xcertain files with the "-v <pattern>" option.  For instance:
X
X    LS -v *.info        ; List current dir, do not show .info files.
X    LS -v *.info df0:   ; Same as above but lists df0: instead.
X    LS -v *.info df0:C* ; List entries that start with the letter "c"
X                        ; in df0:, but do not list .info files.
X
X---------------------------------------------------------------------
X        May all your directory listings be more readable,
X                      Justin V. McCormick
END_OF_FILE
if test 8349 -ne `wc -c <'ls.doc'`; then
    echo shar: \"'ls.doc'\" unpacked with wrong size!
fi
# end of 'ls.doc'
fi
if test -f 'ls.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'ls.uu'\"
else
echo shar: Extracting \"'ls.uu'\" \(13618 characters\)
sed "s/^X//" >'ls.uu' <<'END_OF_FILE'
Xbegin 644 ls
XM```#\P`````````"``````````$```?.```!B0```^D```?.)$@D`$GY````K
XM`$CGP."9_``````@/```#2@B/``!``$L>``$3J[_.DJ`9@``"$S?!P-.=2!`"
XM)$`B0"`\```!=2#<4X!F^B`<9PX@2='<U=`@BB1)4X!@\"A)V?P`````3-\'E
XM`RQX``0I3@78*4\%W"9N`11P`"(\```P`$ZN_LY*JP"L9B1!ZP!<3J[^@$'K@
XM`%Q.KOZ,)`!G``":3J[_?")"3J[^AF```(Q#^@"H<`!.KOW8*4`-)&8$<&1@L
XM7B9K`*S7R]?+)FL`$-?+U\L@`G(`$AO0@5*`3KD``!502H!G1BE`!=0B2R!`:
XM<``0*___3KD``!O2#$(``F4.$/P`("`"(DI.N0``&](@;`743KD``!*X<`!@4
XM!"`O``0O`"!L!=1.N0``%7(B;`TD+'@`!$ZN_F(@/```#2@B3)/\`````"X?7
XM+FP%W"QX``1.KO\N(`=.=61O<RYL:6)R87)Y`"\+(#P```$03KH3YB9`2H!G>
XM#"`+<@S0@2=```A@!@CL`````R`+)E].=4CG,!(F2"!+3KH;R$J`;Q`B+`7X.
XM+&P-)"0+)@!.KO_03-](#$YU3E7__$CG,`(K2/_\("P%^"QL#20B`"0M__QV.
XM`4ZN_]!,WT`,3EU.=2\.+'@`!'``(CP``!``3J[^S@@```QG#$'L!-IAE`CLW
XM`````RQ?3G5.5?_\2.<Q`BX`*T'__"`L"]BPK`8L;U)P`;Z`;TP(+``'``)FQ
XM1$'L!.IA`/]>#*P````;"]AM"$'L!/IA`/],0>P%"F$`_T0@+`7\+&P-)"(`W
XM0>P*'"0(=@%.KO_60>P%$F$`_R9A`/]P(#P``$`!P*P``&8^""P``0`#9PA!V
XM[`4<80#_!B\M__PO!TAL!2A(;`H<3KH2\$'L"AQA`/[L0>P#KF$``#9![`/8@
XM80#^W$_O`!!,WT",3EU.=4CG`Q`F2"X`?`!@!"934H:\AVP$2I-F]"`+3-\(%
XMP$YU3E7__"M(__P(+``!``-G""!M__QA`/Z83EU.=4Y5_[Q(YR\P*TC_P$'LN
XM`[)ATD'M_^1#[?_@3KH2GDJL"]AF!BEM_^0+V$JL"]1F!BEM_^`+U'P`?@`@0
XM;?_`)E!@,B!K``@@*``$2H!O%@@L``$``V8.0^@`""!)0^P#ITZZ&A(@:P`(*
XM4(A.NAGXWH!2AB932I-FRBM&_]P@!R]``!P@!R(&3KH:C"X`("\`'"(&3KH:+
XM@$J!9P)2AR`L"]BPK`8L;@1X`6`:>``K0/_D8`H@!U2`D:W_Y%*$("W_Y+"'X
XM;.YP8W(`0>P&-!#!4<C__"PM_]P@!B($3KH:."H`(`8B!$ZZ&BY*@6<"4H5^4
XM`"!M_\`D4&!L0JW_Y"9*8#0@:P`(4(A.NAE<(&W_Y'(`0^P&-"0($C$H`+"!=
XM;PA#[`8T$X`H`%*M_^0@!2!+80#^E"9`("W_Y+"$;`1*DV;`2H=F'"@M_^0@H
XM!B($3KH9QBH`(`8B!$ZZ&;Q*@6<"4H52AR12OH5L!$J29HPK1?_4?`!"K?_D2
XM8`QP`!`35(#<@"M'_^1![`8T("W_Y-'`)D@N`%*'OH1MX'``$!,N!MZ`<`&X^
XM@&\,OJP+V&\&4X1@`/\4("P+U%>`2.T``?_0;@9R`2M!_]!P`2PM_]0K0/_,#
XM(`8B+?_03KH9/"H`(`8B+?_03KH9,$J!9P)2A2M%_]A^`"MM_]#_X"!M_\`FH
XM4&```4)P`;J`;S0@+?_@L*W_T&8J<``K0/_@""P``0`#9Q0@+?_,(@5A`/S@2
XM""P````#9@`!*BHM_]A2K?_,0JW_Y"1M_\1@``#.(&H`""`H``1*@&H80^@`I
XM"$'L"AQ.NA@F0>P*'$ZZ%_XJ`&!.0BP*'"!J``A0B$ZZ%^PJ``@L``$``V<,'
XM0>P*'$/L`[M.NA?F(&H`"%"(+T@`'$'L"APB;P`<3KH7T`@L``$``V<,0>P*3
XM'$/L`ZY.NA>\(`8@2F$`_00D0"`M_^0B`%*!LH1L-$J29S!R`$'L!C02,`@`^
XM+@%2AT'L"AQ.NA=\+`!@"!:\`"!3AU*&0>P*'-'&)DB^A6SL0A-![`H<80#[E
XMB%*M_^0J+?_8+"W_U"`M_^2PA&P&2I)F`/\D0>P#V&$`^XQA`/NP+BW_R%*'V
XM4JW_X"!M_\0F4"M+_\0K1__(""P````#9@J^AFP&2I-F`/ZH0>P#MV$`_(),N
XMWPST3EU.=4Y5__Q(YP`P)D@D24*28!QP`!`;+T``""`2<@I.NA=J(B\`"-"!H
XM<C"0@22`$!-R,+`!909R.;`!8]8@"TS?#`!.74YU3E7_W$CG(3(K2/_H(&P+.
XMW$ZZ%J(N`"!L"]PB2-/')DDB2R])`!AP`;Z`;QAP.K`K__]G$!:\`"\@;`O<1
XM+$C=QT(N``$@;`O<3KH6:B!L"]S1P"9()&W_Z"](`!0@*@`$2H!O%`@L``$`)
XM`V<,($M#[`.[3KH68"9`0>H`""](`!P@2R)O`!Q.NA9,)D`@*@`$2H!O$@@LM
XM``$``V<*($M#[`.N3KH6,$7L"APF;`368``!&!`3<B6P`6<,=%RP`F<&%,!@+
XM``$"4HNP`68``-(@2T/M_^QA`/[F)D`K2__P#*T```!C_^QO!G!C*T#_['``T
XM$!,$0``E9W`$0``]9RI50&<:!$``"F<L54!G"E=`9QY30&<.8%Y'[`NH8%Q']
XM[`N<8%9'[`O(8%!'[`N(8$I'[`NT8$0@;?_H("@`!$J`;Q0(+``!``-G#"`M*
XM_^Q*@&\$7JW_[`@L``,``F<&)FP+W&`6)F\`%&`0($H0O``E5(I"*``!1^P#F
XMV2!+3KH5."X`8`84_``@4H>^K?_L;?0@2B)+3KH50"1`)FW_\&`H<``0$P1`F
XM`%QG&`1``!)G!EU`9PA@$!3\``I@"A3\``E@!!3\`%Q"$E*+2A-F`/[F0>P*6
XM'&$`^0X(+``'``-G."9M_^A**P"09RY![`.[80#Z1D'K`)`O"$AL!3I(;`H<!
XM3KH,WD'L"AQA`/C:0>P#KF$`^B1/[P`,(&\`&$(03-],A$Y=3G5(YR,0)DA^/
XM`$8'SJL`=$'L"ZA#[`5$3KH4F'P#8"YP`2(`[:'"AV<*0>P+L)'&<BT0@2(&%
XM6($D`..B(@?"@F8*0>P+K)'&$+P`+5.&2H9JSDHK`)!F!AE\`"T+J$'K`(1(2
XM;`O(0^P+G$ZZ#RI83R`K``1*@&\:0>P+B$/L!4Y.NA0P0>P+M$/L!5!.NA0D=
XM8"0O*P"`2&P#9TAL"XA.N@P<+JL`?$AL`V=(;`NT3KH,#$_O`!0@2V$`_21,$
XMWPC$3G4O"R9(0>P#LF$`^49P`"E`!B@I0`8D)E-@,F$`^#`(+`````-F9B!K4
XM``AA`/\4(&L`""`H``1*@&H0("@`@-&L!B0@*`!\T:P&*"932I-FRB`\``!`?
XM`<"L``!F*"\L!B@O+`8D+RP&("\L!AQ(;`-K2&P*'$ZZ"X1![`H<80#W@$_O#
XM`!A![`.W80#XQB9?3G4O"R9(""P``P`!9Q)![`7L(DM.NA"B2H!K!'``8!P(Q
XM+``"``%G$B!+0^P%X$ZZ$(A*@&L$<`!@`G`!)E].=4CG`!(F2"`+9QY@$"QX^
XM``0@2TZN_O@@0$ZZ"OX@4TJ09NH@2TZZ"O),WT@`3G5.5?_@2.<G,B9)*TC_^
XM['``*4`&("E`!APN`"E`!BQP#$ZZ"J8O0``D2H!F!G``8``!>"!O`"1.NA1H\
XM<`Q.N@J*+T``($J`9P`!3B!`3KH44F$`]OX(+`````-F``$L("W_["QL#20BW
XM`"0+3J[_E"P`2H9G``#"4H=!ZP"$80#_%DJ`9P``LB`K``1*@&\&1>P'Q&`$S
XM1>P(\$'K``@O2``<(DI.N@XT*@`(+``$``)G%DJ%9Q(@;P`<(FP+X$ZZ#AHJ-
XM``I%``%*A6=L("L`!$J`;R(@;P`@(DM.N@_*2H!G``"V""P``@`#9TQ2K`8<,
XM4JP&#&`@""P``P`#9SI2K`8@4JP&$"`K`(#1K`84("L`?-&L!A@@;P`<3KH1K
XMNBH`NJP&+&\$*44&+"!O`"0B2TZZ#W1*@&=@2H9F`/\6("P&'-"L!B!F(`@L@
XM``8``F8Z2H=F"D'L!&=A`/6J8"Q![`2&80#UH&`B<`S`K```9QH(+``%``-F'
XM"B!O`"1A`/;T8`@@;P`D80#]?B!O`"1A`/Y$("\`(&`2(&\`)&$`_C8@;P`@M
XM80#^+G``3-],Y$Y=3G5.5?_L2.<@,B9(*TG_^"`++&P-)"(`)"P&!$ZN_YI*]
XM@&8>3J[_?"\`2&P$!4AL"AQ.N@D<0>P*'&$`]1A@``&0)&W_^$H29T8(+``$I
XM``-G/@@L``8``F8V""P``0`#9Q0O"DAL!51(;`H<3KH(XD_O``Q@$B\*2&P%S
XM9$AL"AQ.N@C.3^\`#$'L"AQA`/3&(&P&!"`H``1*@&H@""P``P`#9P`!+$'L%
XM!I@B2$ZZ#H0@;`8$80#[X&```18@2R)L!@1A`/V.+T``%$J`9P`!`@@L``0`)
XM`V<``/`@0"908```XF$`]+X(+`````-F``#:(&L`""`H``1*@&\``,0@;?_X<
XM3KH0(B!K``A0B"]``!!.NA`4(B\`$-*`<"32@"`!3KH'^"1`2H!G``"6(&W_(
XM^$H09S(@2B)M__A.NA`*(&W_^$ZZ#^)3@"!M__@2,`@`=#JR`F<0="^R`F<*\
XM($I#[`.G3KH/TB!K``A0B"](`!@@2B)O`!A.N@^^+&P-)"(*=/Y.KO^L+T``+
XM$$J`9RP(+``&``)F"$'L`]AA`//>*4H+W"!O`!`B2F$`_E@@+P`0+&P-)"(`W
XM3J[_IB!*3KH'?B932I-F`/\<(&\`%&$`_%9,[4P$_]Q.74YU3E7_[$CG`#!(,
XM[0,`__`F;?_P(&W_]$*08```A%*+$!-R(+`!9_9R";`!9_!R"K`!9^I*$V=VR
XM(&W_]"`0(@#E@2!M``C1P21((&W_]%*0<"*P$V8F($M2BR2++T@`"&`"4HM*-
XM$V<&<"*P$V;T2A-F!B2O``A@-D(;8"0DBV`"4HM*$V<4$!-R(+`!9PQR";`!5
XM9P9R"K`!9N9*$V<00AL@;?_T#)`````@;0#_=$S?#`!.74YU3E7_]$CG(3(F6
XM2"M)__1^`"`\```!!$ZZ!G0D0$J`9T(L;`TD(@MT_DZN_ZPF0"`+9RH@"R(`E
XM)`I.KO^:2H!G$$/J`(0L;?_T+-DLV2S9?@$@"RQL#20B`$ZN_Z8@2DZZ!DX@L
XM!TS?3(1.74YU3E7^T$CG`1(F2"X!*T#^T$JL!@!G%`@L`````F<,(BP&`"QL%
XM#21.KO^F(&P&!$ZZ!A)*$V<<+P<O"TAL`_%(;?[43KH&$D'M_M1A`/(.3^\`&
XM$"QX``23R4ZN_MH@0"%L!@@`N"%'`)0@+?[03KH-^DS?2(!.74YU+PM'[`22E
XM8`@@4V$`\=98BTJ39O1P%')X0>P#V6$`_VHF7TYU3E7_X$CG#Q(N`29(+``JK
XM!E*%>`$B!N6!*T#_["]!`"`@<Q@`3KH-:B]``!Q@``*L(&\`("`((G,(`-/$8
XM<``0$01``#]G``"66T!G``"854!G``"<54!G``"X4T!G``"\64!G``#`4T!GG
XM``#$4T!G``#^4T!G``$X54!G``$^54!G``%"64!G``%&4T!G``%F!$``"F<`&
XM`8130&<``8I50&<``8Y50&<T5T!G``&.4T!G``&254!G``&654!G``&:54!G%
XM``&H4T!G``&J4T!G``&L54!G``&N8``!RF$`_OY@``'V".P````!8``!["P%R
XM4H:^AFP$80#^Y"`%Y8`I<P@`!-8J!@CL``4``V```<H([``&``)@``'`".P`_
XM!P`"8``!M@CL``$``6```:PL!5*&OH9L"&$`_J1@``&<(`7E@"]``!@@<P@`0
XM0^P%[&$`_:A*@&8,("\`&"!S"`!.N@OB*@8([``#``%@``%L+`52AKZ&;`AAP
XM`/YD8``!7"`%Y8`O0``8(',(`$/L!>!A`/UH2H!F#"`O`!@@<P@`3KH+HBH&(
XM".P``@`!8``!+`"L```((```8``!(`CL``0``V```18([``%``)@``$,+`52V
XMAKZ&;`AA`/X$8```_"`%Y8`@<P@`0^P+V&$`]*PJ!F```.8L!5*&OH9L"&$`-
XM_=Y@``#6(`7E@"!S"`!#[`O480#TABH&8```P'!0T("!K```8```M`BL``,`W
XM`V```*H(K``"``-@``"@"*P``0`#8```E@CL``4``V```(P([``&``-@``""[
XM+'@`!)/)3J[^VB!`(6P&"`"X8&P([``!``)@9'`!*4`&,&!<<`(I0`8P8%0L/
XM!5*&OH9L!&$`_4X@!>6`*7,(``O@*@8([``$``)@-"!O`"`@"")S"`#3Q!M1+
XM__!"+?_Q2&W_\$AL`]Q(;`H<3KH"]$'L"AQA`.[P80#]"D_O``Q2A+BO`!QMG
XM`/U0(`5,WTCP3EU.=4Y5_VQ(YR$R*TC_<"QX``23R4ZN_MHF0"EK`+@&"'#_\
XM)T``N$AM_W@@;?]P0^W_=&$`^R983RQL#21.KO_**4`%_$ZN_\0I0`7X(@!.@
XMKO\H2H!G%"`L!?PB`$ZN_RA*@&<&".P``0`#(#P```$$3KH"*"E`!@1F!$ZZ3
XM"<Q^`7``*4`&$"E`!@PI0`88*4`&%+ZM_W1L4"`'Y8!![?]XT<`B4'`ML!%F:
XM/G`"P*P```!```PI0```0>P#/RE(!-8@!R(M_W1![?]X80#\2BX`OJW_=&P2*
XM(`?E@$'M_WC1P")0<"VP$6?8OJW_=&P``+@([`````)P`!E`"/`90`?$(`?EZ
XM@$'M_WC1P"](`!1![`:8)&\`%")23KH)K%*'0>P&F$ZZ!7!*@&=$0>P(\$/L.
XM!IA.N@>\0>P'Q$/L"/!.N@F&0>P&F")(3KH':$'L!IA.N@5"2H!G%D'L!\1#G
XM[`:83KH'CD'L!I@B2$ZZ!T9![`:83KH%($J`9PQP%')X0>P$26$`^O8L;`TDH
XM0>P&F"((=/Y.KO^L*4`&`&800>P&F$ZZ"+9@!BEK`)@&`'`Z0>P&F$ZZ!XY*X
XM@&8,(&P&`$/L!IA.N@>00>P&F"E("]P0+`?$2@!F#'`J&4`'Q'(`&4$'Q1`LH
XM"/!*`&8*&7P`*@CP0BP(\2!L!@!#[`:880#WA$JL!@!G%@@L`````F<.("P&!
XM`"QL#20B`$ZN_Z9"K`8`80#M``@L``4``F=(0>P#P&$`[?1![`.<80#LFD'L*
XM`\IA`.WD+RP&&"\L!A0O+`80+RP&#$AL`VM(;`H<3KH`<D'L"AQA`.QN0>P#_
XMKF$`[;A/[P`8OJW_=&P*""P````#9P#^$'``(@!![`/980#Y[$S?3(1.74YU4
XM``!(YR`"6(`D`'(`+'@`!$ZN_SI*@&<&+$`LPB`.3-]`!$YU+PY#Z/_\(!$L-
XM>``$3J[_+BQ?3G5.50``2.?@\B!M``Q#[0`01?H`%B9M``@L>``$3J[]]DS?B
XM3P=.74YU%L!.=4Y5_]1(YS@B*TC_^"M)__PL;`TD3J[_RB(`3J[_*$J`9R9.M
XMKO_$(@!.KO\H2H!G&)/)+'@`!$ZN_MH@0"MH`*3_]$JM__1F"'(7=$U@``$X<
XM>`!P`"!`3KH!EBM`_^QG``$R<$1.NO\X*T#_\&<``'XD;?_L(D`@;?_T<`%.F
XMN@$<+&P-)$ZN_\0B`'8$0>P#U"0(+&P-)$ZN_]`,@`````1F```L)#P``"<0X
XM3J[_RB(`3J[_-$J`9P``%DZN_\HB`'800>W_V"0(3J[_UB@`)&W_[")M__`@.
XM;?_T<`!.N@"\("W_\&<&($!.NO[6("W_[&<``*!.N@%^#(0````);P``DD7M+
XM_]@,*@`[``1F``"$##(`<D#_9@``>EI*<@`2&@1!`#`,$@`[9QK"_``*TAH$.
XM`0`P#!(`.V<*POP`"M(:!`$`,%)*=``4&@P"`"!G``!"#`(`.V<``#H,`@!RC
XM9P``,@0"`#`,$@`@9QK$_``*U!H$`@`P#!(`(&<*Q/P`"M02!`(`,"!M__P@Y
XM@2!M__@@@DS?1!Q.74YU2.<`-B9(*DE![0`4*T@`"B!-*T@`%"M*`!@K?```-
XM`^(`'$I`9P``#"M\_____P`H8`1"K0`H($LB32QX``1.KOZ2($I.KOZ`($I.N
XMKOZ,3-]L`$YU2.<%)BI(*@!P_RQX``1.KOZV#(#_____9@9P`&```&(N`'`BU
XM3KK]BDJ`9@P@!TZN_K!P`&```$HD0"5-``H510`)%7P`!``(%7P````.%4<`1
XM#Y/)3J[^VB5``!"[_`````!G"B)*3J[^GB`*8!)!Z@`4((A8D$*H``0A2``(J
XM(`I,WV2@3G5(YP`&*D`L>``$2JT`"F<&(D!.KOZ8&WP`_P`(*WS_____`!1P*
XM`!`M``].KOZP($U.NOT:3-]@`$YU3E4``$CG'S(F22)(?DXJ$6T``+R*_`6U\
XM(`5(Q>6-WH5(0#H`2D5G&#P\`6TP!P)```-F`E)&ND9M!II&4H=@Y'@`?`!2O
XM14'L`S,<,$``#$0``68*,`<"0``#9@)21KI&;PJ:1E)$#$0`#&W>#(<```!C]
XM;P@$AP```&1@\"`I``B`_``R2,`O`"`I``0B`(#\`#QV`#8`P/P`/))`+P$OH
XM`TAL`R$O+0`(3KK\?$_O`!0O!5)$+P0O!TAL`P\O"TZZ_&9/[P`43-],^$Y=:
XM3G5#[`,&(&T`"$ZY```=?$/L`OT@2TZY```=?&#<<``0&&<.#```*F<&#```A
XM/V;P<`%.=4Y5_\!(YQ`P)$@F24'M_\!#[?_$=@!*$F8&2A-G``"8#!,`*F9"@
XM#$,`0&<``(XABS``(XHP`%!#4DM@VE%#(`A*0VT,('$X`$H09@110V#P2D-M4
XM9B!`)G`P`%)+4K$P`"1Q.`!00V"N#!,`/V8*2A)F-$I#9T1@Q!`2#```0&,*%
XM#```6F($!@``(!(3#`$`0&,*#`$`6F($!@$`(+(`9P9*0V<68)9*$F<"4DI*/
XM$V<&4DM@`/]B<`%@`G``3-\,"$Y=3G5(YS`@)``F+```"`,`$68B("@`!+"I,
XM``1M!F<6<`!@`G`!"`,`$&<``(`(0```8```>`@#``9F``!D2D)F-E"(4(E*7
XM$&<H$AD,`0!`8PH,`0!:8@0&`0`@$!@,``!`8PH,``!:8@0&```@L@!GU)`!)
XM;B9@*%-"9@X@*`!\L*D`?&X6;1A@N$'H`(1#Z0"$3KH`'DJ`9ZAM!'`!8`)PO
XM``@#``EG!`A```!,WP0,3G4@$)"19A0@*``$D*D`!,'\"[C0J``(D*D`"$YU=
XM2.<@-B0L!C`F2"1)*E-*E6<6(FH`""!M``@@`DZZ_QA*0&8$*E5@YB!+(DHD=
XM;0`$+'@`!$ZN_Q9,WVP$3G5(YP`V)$@F24ZY```!8$J`9R`J0"`\```!!")M;
XM``@@2RQX``1.KOV0(DT@2DZZ_Y1P`4S?;`!.=7``3G4O"G``)$E*&6;\$B$,P
XM`0`Z9QP,`0`O9A"SRF<2#"D`+___9PI326`&L\IBWF`*L\IE!A#:4D!@]D(0N
XM)%].=2\*<``D24H99OP2(0P!`#IG#`P!`"]G!K/*8NY@`E))$-EG!%)`8/@DC
XM7TYU4X!M!!#99OA"$"`(3G6SR&4,T,#2P!,@4T!N^F`&$MA30&[Z3G6P$&<*E
XM2AAG`F#V<`!.=2`(3G5(YSTR)@@D24(2>@`@/````01.NODR+@!G``"*+&P->
XM)$J#9T@B`R0'3J[_FDJ`9W0B1PPI`"``"&482A)G"D/L`Z<@2DZZ`'@B1U")_
XM($I.N@!N*`,B`TZN_RXF`$I%9@1Z`6"\(@1.KO^F8+0B1PPI`"``"&0,0^P#2
XMJ2!*3KH`0&`H<"\@2DZZ_V9*@&<(($`0O``Z8!1#[`.E($I.N0``'6Q@!D(2W
XM=@!@`G8!2H=G!B!'3KKXM"`#3-],O$YU2.<!,"9))$@@2TZY```=7"X`($I.-
XMN0``'5Q20")*TL<@2DZZ_O0P!R)*($M.NO[J3-\,@$YU<F=P%$'L!$).N0``\
XM#S!.=4CG.`(D""QL#21.KO]\)@`@/````2Q.NO@J*`!F!DZZ_]!@(B\"2&P$&
XM,R\$3KKX2D_O``PB`W`4($1.N0``#S`@1$ZZ^"!,WT`<3G4``"`(2AAF_%-(B
XMD<`@"$YU```@"$H89OQ3B!#99OQ.=0``2.<`,"9()$D0&A:`2@!G!%*+8/0@1
XM"TS?#`!.=4CG`Q`N`$?L!6P@"V<P""L``@`;9B0(*P`!`!MG'"`K``20JP`0A
XM+`!*AF<.("L`'"(&(&L`$$ZZ_90F4V#,(`=.N@#V3-\(P$YU``````````!PD
XM84CG,``D`"8!2$)(0\3!QL#`P=1#2$)"0M""3-\`#$YU2H!J```>1(!*@6H`H
XM``Q$@6$``"!$@4YU80``&$2`1(%.=4J!:@``#$2!80``!D2`3G4O`DA!-`%FH
XM```B2$!(04A"-`!G```&A,$P`DA`-`"$P3`"2$(R`B0?3G4O`W80#$$`@&0`U
XM``;AF5%##$$(`&0```;IF5E##$$@`&0```;EF55#2D%K```&XYE30S0`YJA(V
XM0D)"YJI(0X#!-@`P`C0#2$'$P9""9```"%-#T(%D_G(`,@-(0^>X2$#!028?V
XM)!].=4CG!P`N`"`L!6A3@"P`2D9K+B`&2,#G@$'L"^0J,`@`2@5G&`@%``)FA
XM$B`&2,#G@$'L"^0@,`@$3KK\6E-&8,X@!TZZX@A,WP#@3G4`````````````K
XM```@B%B00J@`!"%(``A.=0`````#[`````T````````;-@``'0@``!U*```9D
XM.```&40``!S4```<W@``'*@```#:```!$````/(```$&```!)`````$````!.
XM````!@````````/R```#Z@```8D````,FS,S;4Q3(#,N,9LP;2!01"!&<F5E+
XM=V%R92!B>2!*=7-T:6X@5BX@36-#;W)M:6-K(#@Y+3`W+3(Y``H@(%5S86=E_
XM.B!,4R!;+6]P=&EO;G,@/&%R9W,^72!;<&%T:#%=(%MP871H,ET@+BXN"@`)[
XM8R`@4VAO=R!F:6QE;F]T97,@("`@("`@("`@($0@(%-H;W<@9&ER<R!L87-T8
XM"@`)9"`@1&ER<R!O;FQY("`@("`@("`@("`@("`@($@@($YO(&AE861I;F=S3
XM(&%N9"!S=6)T;W1A;',*``EF("!&:6QE<R!O;FQY("`@("`@("`@("`@("`@"
XM22`@3F\@<&%G92!P<F]M<'1S"@`):R`@3F\@04Y322!D:7-P;&%Y(&-O9&5S"
XM("`@($T@($UI>&5D(&]U='!U="!F:6QE<R!A;F0@9&ER<PH`"6P@($QO;F<@<
XM;&ES=&EN9R`@("`@("`@("`@("!.(#QN86UE/B!3:&]W(&YE=V5R('1H86X@0
XM96YT<GD*``EN("!.;R!S;W)T("`@("`@("`@("`@("`@("`@3R`\;F%M93X@"
XM4VAO=R!O;&1E<B!T:&%N(&5N=')Y"@`)<"`@4&5R;6ET('-Y<W1E;2!R97%U*
XM97-T<R`@(%`@(%-H;W<@9G5L;"!P871H;F%M97,*``ER("!2979E<G-E('-OG
XM<G0@("`@("`@("`@("`@4B`@4F5C=7)S:79E(&QI<W1I;F<*``ES("!3;W)T8
XM(&)Y('-I>F4@("`@("`@("`@("`@5"`@5&]T86P@86QL('-U8G1O=&%L<PH`R
XM"70@(%-O<G0@8GD@9&%T92`@("`@("`@("`@("!8(#QW:61E/B!3970@;W5T=
XM<'5T(&-O;'5M;G,*``EV(#QP871T97)N/B!!=F]I9"!P871T97)N("`@62`\A
XM:&EG:#X@4V5T(&]U='!U="!R;W=S"@`)1B`\9F]R;6%T/B!&;W)M870@;W5TC
XM<'5T("AD969A=6QT.B`B`"(I"@`P,"TP,"TP,``P,#HP,#HP,``E,#)L9"TE.
XM,#)L9"TE,#)L9``E,#)L9#HE,#)L9#HE,#)L9``?'!\>'QX?'QX?'A\E<"`EV
XM9"`E="`E-&(@)3AS("5N7&X`````````````````````````)6QD`$1I<G,ZF
XM)2TT;&0@1FEL97,Z)2TT;&0@0FQO8VMS.B4M-6QD($)Y=&5S.B4M.&QD"@!4A
XM;W1A;',Z"@`Z`"\`4D%-.@";,&T`FS`@<`";('``FS,S;0";,3LS,SLT,&T`/
XMFS$[,S$[-#!M`)LP('$*````56YK;F]W;B!O<'1I;VXZ("TE<PH`3%,Z("5S`
XM+"!%<G)O<B`C)6QD"@!#86YN;W0@97AA;6EN92!F:6QE(&]R(&1I<F5C=&]R_
XM>2P@17)R;W(@(R5L9`H`)R5S)R!N;W0@9F]U;F0`3F\@4D%-`%5N86)L92!T,
XM;R!P871T97)N(&UA=&-H('!A=&AS`%9O;'5M92!O<B!D:7)E8W1O<GD@:7,@$
XM96UP='DN"@!.;R!M871C:"X*```````$````/@```'(```"B````W0```0X`+
XM``%+```!B````<4```'Z```"+0```F(```*<```"TP```S\```+Y````````9
XM`S^;,&V;('`J*D)214%+"@``FS=M("TM($U/4D4@+2T@`%!R97-S(%)E='5R-
XM;CH@``";,&V;('```)LP('";1IM+``";,"!PFS0[,S-M``!086=E("5L9"!OF
XM9B`E;&0Z```O*B`E<R`J+PH`8VAS<&%R=V5D`#``1&ER`)LS,#LT,6T@)7,@\
XMFS!M"@`E<PH`````*```!8X`````````````````````````````````````?
XM``````6P````````````````````````````````````````````````````U
XM````````````````````````````````````````$P``!-8```3.```$R@``-
XM!,8```3"```$O@``!+H```2V```$L@``!*X```2J```$I@``!*(```2>```$6
X=F@``!)8```22```%C@``!6P```/L`````````_*J<
X``
Xend
Xsize 9704
END_OF_FILE
if test 13618 -ne `wc -c <'ls.uu'`; then
    echo shar: \"'ls.uu'\" unpacked with wrong size!
fi
# end of 'ls.uu'
fi
if test ! -d 'src' ; then
    echo shar: Creating directory \"'src'\"
    mkdir 'src'
fi
if test -f 'src/Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/Makefile'\"
else
echo shar: Extracting \"'src/Makefile'\" \(321 characters\)
sed "s/^X//" >'src/Makefile' <<'END_OF_FILE'
X# -------------------------------------------------
X# LS 2.3 makefile by Justin V. McCormick 89-07-05
X# -------------------------------------------------
XCFLAGS = -cfmtu -d1 -m0 -rr -v -O
XAFLAGS = -iainc: -cvy
X
XOBJS = mycres.o ls.o lssup.o
XDEST = lcs
X 
X$(DEST): $(OBJS)
X	BLINK WITH linkfile
X	@beep 300 2
X
Xls.c: WORK:ls.h
END_OF_FILE
if test 321 -ne `wc -c <'src/Makefile'`; then
    echo shar: \"'src/Makefile'\" unpacked with wrong size!
fi
# end of 'src/Makefile'
fi
if test -f 'src/README' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/README'\"
else
echo shar: Extracting \"'src/README'\" \(677 characters\)
sed "s/^X//" >'src/README' <<'END_OF_FILE'
X  I have included the object files "lssup.o" and "mycres.o" preassembled
Xusing CAPE 2.5.  You can assemble these files using ASM, but the final
Xexecutable will grow by about 200 bytes!
X
X  The makefile is designed to work with either LMK or PDMake,
Xand assumes that you are using CAPE as your assembler.  You
Xshould change the AFLAGS line in order to use a different
Xassembler.  Also, my assembly header file directory is
Xreferenced by the assignment "AINC:"; you should either make
Xthis assignment on your system or modify the makefile to specify
Xa different directory.  The module "mycres.a" will need the
Xstandard assembly headers to assemble.
X
X     Good Luck,
X       Justin
END_OF_FILE
if test 677 -ne `wc -c <'src/README'`; then
    echo shar: \"'src/README'\" unpacked with wrong size!
fi
# end of 'src/README'
fi
if test -f 'src/linkfile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/linkfile'\"
else
echo shar: Extracting \"'src/linkfile'\" \(405 characters\)
sed "s/^X//" >'src/linkfile' <<'END_OF_FILE'
X;Link with file for LS by Justin V. McCormick 89-07-25
X;Stubs out lots of unused things that Lattice 5.0 dragged in
XDEFINE @write=@nullstub
XDEFINE @_dwrite=@nullstub
XDEFINE @_dseek=@nullstub
XDEFINE @_dclose=@nullstub
XDEFINE @CXBRK=@nullstub
XFROM
X;lat:lib/cres.o
Xmycres.o
Xls.o
Xlssup.o
XTO LCS
XLIB lib:lcr.lib lib:amiga.lib
XSC SD
XND
X;ADDSYM
X;VERBOSE
X;MAP link.map F H L S X PLAIN WIDTH 84 HEIGHT 0 SWIDTH 20
END_OF_FILE
if test 405 -ne `wc -c <'src/linkfile'`; then
    echo shar: \"'src/linkfile'\" unpacked with wrong size!
fi
# end of 'src/linkfile'
fi
if test -f 'src/ls.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/ls.h'\"
else
echo shar: Extracting \"'src/ls.h'\" \(1391 characters\)
sed "s/^X//" >'src/ls.h' <<'END_OF_FILE'
X/* Prevent Lint from complaining about ANSI prototype extensions */
X#ifdef _lint
X
X#define __asm
X#define __stdargs
X#define __regargs
X#define R_D0
X#define R_D1
X#define R_A0
X
X#else
X
X#define R_D0	register __d0
X#define R_D1	register __d1
X#define R_A0	register __a0
X
X#endif
X
X#include <dos.h>
X#include <libraries/dosextens.h>
X
X/*lint -save	*/
X/*lint -library */
X#include <stdio.h>
X#include <string.h>
X#include <stdlib.h>
X#include <signal.h>
X#include <proto/exec.h>
X#include <proto/dos.h>
X/*lint -restore	*/
X
Xextern int tolower (char);
X
X#define MEMF_PUBLIC (1L<<0)
X#define MEMF_CHIP   (1L<<1)
X#define MEMF_FAST   (1L<<2)
X#define MEMF_CLEAR  (1L<<16)
X
X/* Structure used to hold file info in a linked list */
Xstruct FibEntry
X{
X  struct MinNode fe_Node;
X  struct FileInfoBlock *fe_Fib;
X};
X
X/* Flag bits for LSFLAGS */
X#define BREAKFLAG	(1L << 0)
X#define CONSOLE		(1L << 1)
X#define SHOWDIRS	(1L << 2)
X#define SHOWFILES	(1L << 3)
X#define LISTALL		(1L << 4)
X#define LONGLIST	(1L << 5)
X#define NOSORTFLAG	(1L << 6)
X#define NOTEFLAG	(1L << 7)
X#define PATHNAMED	(1L << 8)
X#define REVFLAG		(1L << 9)
X#define LSUNUSEDFLAG	(1L << 10)
X#define FULLPATHNAMES	(1L << 11)
X#define ANTIMATCH	(1L << 12)
X#define TOTALIZE	(1L << 13)
X#define NOHEADERS	(1L << 14)
X#define NOINTERACT	(1L << 15)
X#define FILESFIRST	(1L << 16)
X#define MIXFILESDIRS	(1L << 17)
X#define SHOWOLDERTHAN	(1L << 18)
X#define SHOWNEWERTHAN	(1L << 19)
END_OF_FILE
if test 1391 -ne `wc -c <'src/ls.h'`; then
    echo shar: \"'src/ls.h'\" unpacked with wrong size!
fi
# end of 'src/ls.h'
fi
if test -f 'src/lssup.o.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/lssup.o.uu'\"
else
echo shar: Extracting \"'src/lssup.o.uu'\" \(7291 characters\)
sed "s/^X//" >'src/lssup.o.uu' <<'END_OF_FILE'
Xbegin 644 lssup.o
XM```#YP````)?;'-S=7`N80```^@````"7T-/1$4```````/I```"`TCG(`)82
XM@"0`<@`L>``$3JX``$J`9P8L0"S"(`Y,WT`$3G4O#D/H__P@$2QX``1.K@``C
XM+%].=4Y5``!(Y^#R(&T`#$/M`!!%^@`6)FT`""QX``1.K@``3-]/!TY=3G46D
XMP$YU3E7_U$CG."(K2/_X*TG__"QL``!.K@``(@!.K@``2H!G)DZN```B`$ZN^
XM``!*@&<8D\DL>``$3JX``"!`*V@`I/_T2JW_]&8(<A=T36```3AX`'``($!.D
XMN@&6*T#_[&<``3)P1$ZZ_S@K0/_P9P``?B1M_^PB0"!M__1P`4ZZ`1PL;```_
XM3JX``"(`=@1![```)`@L;```3JX```R`````!&8``"PD/```)Q!.K@``(@!.J
XMK@``2H!G```63JX``"(`=A!![?_8)`A.K@``*``D;?_L(FW_\"!M__1P`$ZZ@
XM`+P@+?_P9P8@0$ZZ_M8@+?_L9P``H$ZZ`7X,A`````EO``"21>W_V`PJ`#L`[
XM!&8``(0,,@!R0/]F``!Z6DIR`!(:!$$`,`P2`#MG&L+\``K2&@0!`#`,$@`[0
XM9PK"_``*TAH$`0`P4DIT`!0:#`(`(&<``$(,`@`[9P``.@P"`')G```R!`(`X
XM,`P2`"!G&L3\``K4&@0"`#`,$@`@9PK$_``*U!($`@`P(&W__""!(&W_^"""!
XM3-]$'$Y=3G5(YP`V)D@J24'M`!0K2``*($TK2``4*TH`&"M\```#X@`<2D!G8
XM```,*WS_____`"A@!$*M`"@@2R)-+'@`!$ZN```@2DZN```@2DZN``!,WVP`S
XM3G5(YP4F*D@J`'#_+'@`!$ZN```,@/____]F!G``8```8BX`<").NOV*2H!FQ
XM#"`'3JX``'``8```2B1`)4T`"A5%``D5?``$``@5?`````X51P`/D\E.K@``+
XM)4``$+O\`````&<*(DI.K@``(`I@$D'J`!0@B%B00J@`!"%(``@@"DS?9*!.V
XM=4CG``8J0"QX``1*K0`*9P8B0$ZN```;?`#_``@K?/____\`%'``$"T`#TZN5
XM```@34ZZ_1I,WV``3G5.50``2.<?,B9)(DA^3BH1;0``O(K\!;4@!4C%Y8W>(
XMA4A`.@!*16<8/#P!;3`'`D```V8"4D:Z1FT&FD92AV#D>`!\`%)%0>P``!PPK
XM0``,1``!9@HP!P)```-F`E)&ND9O"II&4D0,1``,;=X,AP```&-O"`2'````+
XM9&#P("D`"(#\`#)(P"\`("D`!"(`@/P`/'8`-@#`_``\DD`O`2\#2&P``"\MY
XM``A.NOQ\3^\`%"\%4D0O!"\'2&P``"\+3KK\9D_O`!1,WTSX3EU.=4/L```@C
XM;0`(3KD`````0^P``"!+3KD`````8-QP`!`89PX,```J9P8,```_9O!P`4YU>
XM3E7_P$CG$#`D2"9)0>W_P$/M_\1V`$H29@9*$V<``)@,$P`J9D(,0P!`9P``-
XMCB&+,``CBC``4$-22V#:44,@"$I#;0P@<3@`2A!F!%%#8/!*0VUF($`F<#``J
XM4DM2L3``)'$X`%!#8*X,$P`_9@I*$F8T2D-G1&#$$!(,``!`8PH,``!:8@0&+
XM```@$A,,`0!`8PH,`0!:8@0&`0`@L@!G!DI#9Q9@EDH29P)22DH39P922V``Z
XM_V)P`6`"<`!,WPP(3EU.=4CG,"`D`"8L```(`P`19B(@*``$L*D`!&T&9Q9PS
XM`&`"<`$(`P`09P``@`A```!@``!X"`,`!F8``&1*0F8V4(A0B4H09R@2&0P!*
XM`$!C"@P!`%IB!`8!`"`0&`P``$!C"@P``%IB!`8``""R`&?4D`%N)F`H4T)F)
XM#B`H`'RPJ0!\;A9M&&"X0>@`A$/I`(1.N@`>2H!GJ&T$<`%@`G``"`,`"6<$7
XM"$```$S?!`Q.=2`0D)%F%"`H``20J0`$P?P+N-"H``B0J0`(3G5(YR`V)"P`S
XM`"9()$DJ4TJ59Q8B:@`((&T`""`"3KK_&$I`9@0J56#F($LB2B1M``0L>``$K
XM3JX``$S?;`1.=4CG`#8D2"9)3KD`````2H!G("I`(#P```$$(FT`""!++'@`C
XM!$ZN```B32!*3KK_E'`!3-]L`$YU<`!.=2\*<``D24H99OP2(0P!`#IG'`P!7
XM`"]F$+/*9Q(,*0`O__]G"E-)8`:SRF+>8`JSRF4&$-I20&#V0A`D7TYU+PIP2
XM`"1)2AEF_!(A#`$`.F<,#`$`+V<&L\IB[F`"4DD0V6<$4D!@^"1?3G53@&T$:
XM$-EF^$(0(`A.=;/(90S0P-+`$R!30&[Z8`82V%-`;OI.=;`09PI*&&<"8/9P0
XM`$YU(`A.=4CG/3(F""1)0A)Z`"`\```!!$ZZ^3(N`&<``(HL;```2H-G2"(#A
XM)`=.K@``2H!G=")'#"D`(``(91A*$F<*0^P``"!*3KH`>")'4(D@2DZZ`&XH_
XM`R(#3JX``"8`2D5F!'H!8+PB!$ZN``!@M")'#"D`(``(9`Q#[```($I.N@!`G
XM8"AP+R!*3KK_9DJ`9P@@0!"\`#I@%$/L```@2DZY`````&`&0A)V`&`"=@%*$
XMAV<&($=.NOBT(`-,WTR\3G5(YP$P)DDD2"!+3KD`````+@`@2DZY`````%)`&
XM(DK2QR!*3KK^]#`'(DH@2TZZ_NI,WPR`3G5R9W`40>P``$ZY`````$YU2.<X<
XM`B0(+&P``$ZN```F`"`\```!+$ZZ^"HH`&8&3KK_T&`B+P)(;```+P1.NOA*J
XM3^\`#"(#<!0@1$ZY`````"!$3KKX($S?0!Q.=0`````#[X$```)`<W1R8V%TR
XM``````$```=8@0```D!S=')L96X``````@``!X0```>.@0```D!S='!C<'D`#
XM`````@```^@```/T@0```D!#;&5A;E5P`````@``![@```?Z@0```T!!;&QO=
XM8T9I8@````````$```7F@P```U],5D]);G!U=`````````,```!X```!#@``0
XM`1Z#```#7TQ63T-O<'E-96T``````0``!@*#```"7TQ63U)E860````!```!+
XM+(,```1?3%9/06QL;V-3:6=N86P``````0```F"#```$7TQ63U!A<F5N=$1I=
XM<@````````$```<2@P```U],5D]296U0;W)T``````$```+J@P``!%],5D]7&
XM86ET1F]R0VAA<@`````!```!%(,```-?3%9/1V5T37-G```````!```"2(,`D
XM``-?3%9/06QL;V--96T````!````$(,```-?3%9/56Y,;V-K```````!```'8
XM(H,```-?3%9/1FEN9%1A<VL````"````F@```J:#```#7TQ63TEN<V5R=```;
XM`````0``!=2#```%7TQ63TES26YT97)A8W1I=F4````````"````?@```(R#[
XM```$7TQ63T9R9653:6=N86P```````(```*````#`H,```-?3%9/4'5T37-GS
XM```````!```"/(,```-?3%9/4F%W1&]&;70````!````5(,```-?3%9/3W5T\
XM<'5T```````"````A@```.B#```#7TQ63U=A:710;W)T`````0```D*#```#D
XM7TQ63T9R965-96T``````0```#"#```#7TQ63TEO17)R`````````0``!\J#N
XM```#7TQ63T5X86UI;F4``````0``!N2#```#7TQ63U=R:71E`````````0``G
XM`/J#```#7TQ63T%D9%!O<G0``````0```KB&```"7T1/4T)A<V4````%````&
XM=````.0```#V```&V```!\:&```"7V1A=&5P870````!```#RH8```)?3%-&=
XM;&%G<P````$```3<A@```E]T:6UE<&%T`````0```[*&```$7V1A>7-P97)MG
XM;VYT:`````````$```-8A@``!%].;T9I;F1&;713='(````````!```'YH8`0
XM``)?9W=B<G-T<@````$```#PA@```E]S;W)T:V5Y`````0``!:2&```#7V)AJ
XM9&1A=&5S='(``````0```^Z&```#7TYO4D%-37-G`````````0``![2&```#^
XM7V)A9'1I;65S='(``````0```^"&```#7T-O;&]N4W1R`````````0``!U*&N
XM```#7U-L87-H4W1R`````````0``!OJ&```#7U)A;4YA;653='(``````0``:
XM!S(!```"0&UY9G)E90`````B`0```D!I<W=I;&0````#^@$```1`26YS97)TL
XM1FEB3F]D90`````%G@$```)?86UO=FUE;0``!I`!```#0$-O;7!&:6)S````[
XM```$U`$```1`1V5T1FEL95-T<FEN9P`````&5@$```5`26YS97)T4&%T:%-T?
XM<FEN9P``````!W@!```$0$=E=%!A=&A3=')I;F<`````!A@!```#0&%S=')NB
XM8W!Y```````&@@$```-`3F]&:6QE17AI=`````>^`0```T!N=6QL<W1U8@``Q
XM````!A0!```%0$-O;7!A<F5$871E4W1A;7!S``````6"`0``!%]3971#;VYS'
XM;VQE5'EP90````'\`0``!$!&:6QL1FEB16YT<GD```````7<`0```T!&:6)&*
XM:6QE1&%T90```Q`!```"0&UY86QL;V,``````0```E]K<'5T,0``````7@$`U
XM``1`1V5T5VEN0F]U;F1S````````8@$```-`=VEL9&UA=&-H``````00`0``U
XM!$!-86ME4&%T:%-T<FEN9P````:Z`0```U]A<W!R:6YT9@```````#8!```#*
XM0$YO365M17AI=``````'K@$```-?1&5L971E4&]R=`````+6`0```U]#<F5A\
XM=&50;W)T`````E`!```"0&%I;F1E>`````:H`````````_`````"7VES8VAK@
XM,0````/\`````E]G=V)D;VYE```!]`````)?86EF;W5N9```!K8````"0&UY7
XM9G)E90`````B`````U]W;6EN8W!O:6YT````!+8````"0&ES=VEL9`````/ZS
XM````!$!);G-E<G1&:6).;V1E``````6>`````U]F9F1G971D87D``````U``6
XM```"7V=P<V1O;F4```90`````U]W;6YO='%M87)K````!(@````"7V-F;G-I:
XM>F4```5:`````E]A;6]V;65M```&D`````-`0V]M<$9I8G,```````34````5
XM`U]A:6YO;6%T8V@`````!K(````#7VUP<V9A:6QE9``````'7@````)?;7!S[
XM9&]N90``!V0````$0$=E=$9I;&53=')I;F<`````!E8````"7VES=V1O;F4`B
XM``0,````!4!);G-E<G10871H4W1R:6YG```````'>`````-?=VUM871C:&5DI
XM``````3&`````U]G=V)F<F5E<&%C:P```4(````#7V=W8G5P9&%T90`````!6
XMZ`````1`1V5T4&%T:%-T<FEN9P`````&&`````)?;7!S;VMA>0``!R8````##
XM7V=W8F=O=&-O;@``````L@````-?=VUN;VUA=&-H``````3*`````T!A<W1R6
XM;F-P>0``````!H(````"7V%M9&]N90````:F`````U]F9F1B861D871E````:
XM`]X````#0$YO1FEL945X:70````'O@````)?8W!D;VYE`````M`````#0&YU2
XM;&QS='5B```````&%`````-?8V9N86QP:&$```````5(````!4!#;VUP87)EH
XM1&%T95-T86UP<P`````%@@````-?=VUB86-K960```````1@````!%]3971#3
XM;VYS;VQE5'EP90````'\`````U]C<&=O='!O<G0``````H@````"7V-F97AIM
XM=`````5R`````E]I=V1O;F4````$#@````)?=VUB86-K,0``!%`````#7V=W_
XM8F9R965P;W)T```!3@````)?8V9T<G5E````!6P````"7W=M9&]N90````3,N
XM````!$!&:6QL1FEB16YT<GD```````7<`````U]W;6=O8F%C:P``````!$P`,
XM```#7V9F9&=E=&UO```````#,`````-?8V9T<W1S;W)T``````4&`````E]G"
XM9G-C<'D````&=@````-`1FEB1FEL941A=&4```,0`````U]W;6YO='-T87(`7
XM````!'@````"0&UY86QL;V,``````````U]C<&YO;F%M90```````KX````#E
XM7V1P;F]N86UE```````"[`````-?;7!S9&5A;&P```````=F`````E]C9F5X'
XM:70P```%?`````)?:W!U=#$``````%X````"7V=P<V-P>0````9&`````U]W>
XM;6YA;65N9```````!+P````$0$=E=%=I;D)O=6YD<P```````&(````#7V9FM
XM9'!R:6YT```````#?`````-`=VEL9&UA=&-H``````00`````U]L8V-E;W-TS
XM<@``````!4(````#7V-P9V]T<VEG```````"<`````-?;&-C<W1A<G0`````O
XM``46````!$!-86ME4&%T:%-T<FEN9P````:Z`````U]A<W!R:6YT9@``````J
XM`#8````#7VUP<V9I;FES```````'<`````)?=VUL;V]P,0``!"8````"7V-F\
XM86QP:&$```42`````E]C9F9A;'-E```%<`````)?9F9D9&]N90```]8````#:
XM0$YO365M17AI=``````'K@````-?=VUN;W1E;VX```````0P`````U]G=V)S-
XM971C;V]K`````3`````#7T1E;&5T95!O<G0````"U@````-?0W)E871E4&]R/
XM=`````)0`````D!A:6YD97@````&J`````-?9W=B;F]W8G)E<`````"J````X
X%`````_)0%
X``
Xend
Xsize 5180
END_OF_FILE
if test 7291 -ne `wc -c <'src/lssup.o.uu'`; then
    echo shar: \"'src/lssup.o.uu'\" unpacked with wrong size!
fi
# end of 'src/lssup.o.uu'
fi
if test -f 'src/mycres.a' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/mycres.a'\"
else
echo shar: Extracting \"'src/mycres.a'\" \(5160 characters\)
sed "s/^X//" >'src/mycres.a' <<'END_OF_FILE'
X* mycres.a - Specialized C initial startup procedure under AmigaDOS
X* Adapted for LS use from c.a by Justin V. McCormick 89-05-12
X* Converted to CAPE 89-06-03
X*
X	IFD	CAPE			; Special OP flags for CAPE
X
X	CSYMFMT
X	BASEREG	B
X	SMALLOBJ
X	OPTIMON
X	ADDSYM
X	include "work:ipre.i"		; A precompiled collection of the below...
X
X	ELSE
X
X	INCLUDE	"exec/types.i"
X	INCLUDE	"exec/alerts.i"
X	INCLUDE	"exec/nodes.i"
X	INCLUDE	"exec/lists.i"
X	INCLUDE	"exec/ports.i"
X	INCLUDE	"exec/libraries.i"
X	INCLUDE	"exec/tasks.i"
X	INCLUDE	"exec/memory.i"
X	INCLUDE	"exec/execbase.i"
X	INCLUDE	"libraries/dos.i"
X	INCLUDE	"libraries/dosextens.i"
X	INCLUDE	"workbench/startup.i"
X	INCLUDE	"exec/funcdef.i"
X	INCLUDE	"exec/exec_lib.i"
X	INCLUDE	"libraries/dos_lib.i"
X
X	ENDC
X
X	
XMEMFLAGS	EQU	MEMF_CLEAR+MEMF_PUBLIC
X
X; some usefull macros:
X
XSYS	MACRO	*
X	IFGT	NARG-2
X	FAIL	!!!
X	ENDC
X	IFEQ	NARG-2
X	MOVE.L	\2,a6
X	ENDC
X	JSR	_LVO\1(a6)
X	ENDM
X	
X	XDEF	XCEXIT			; exit(code) is standard way to leave C.
X	XDEF	@XCEXIT
X
X	XREF	@myalloc
X	XREF	@myfree
X	XREF	@astrncpy		; String copy routine
X	XREF	DOSBase
X	XREF	LinkerDB		; linker defined base value
X	XREF	NEWDATAL
X	XREF	RESBASE
X	XREF	RESLEN
X	XREF	_BSSBAS			; linker defined base of BSS
X	XREF	_BSSLEN			; linker defined length of BSS
X	XREF	@_main			; Name of C program to start with.
X;	XREF	@MemCleanup		; Free all allocated memory
X
X	SECTION	CODE
X* --------------------------------------------------------------------- *
Xstart:
X	move.l	a0,a2			; save command pointer
X	move.l	d0,d2			; and command length
X	lea	LinkerDB,a4		; load base register
X
X	movem.l	d0-d1/a0-a2,-(sp)
X	sub.l	#RESBASE,a4
X	move.l	#RESLEN,d0
X	move.l	#MEMFLAGS,d1
X	SYS	AllocMem,4
X	tst.l	d0
X	 bne	1$
X	movem.l	(sp)+,d0-d1/a0-a2
X	rts
X	
X1$
X	move.l	d0,a0
X	move.l	d0,a2
X
X; a2 now has difference
X	move.l	d0,a1
X	move.l	#NEWDATAL,d0
X; copy data over
Xcpy:
X	move.l	(a4)+,(a0)+
X	subq.l	#1,d0
X	bne	cpy
X; a4 now points at number of relocs
X	move.l	(a4)+,d0
Xreloc:
X	 beq.s	nreloc
X	move.l	a1,a0
X	add.l	(a4)+,a0		; a0 now has add of reloc
X	add.l	(a0),a2
X	move.l	a2,(a0) 
X	move.l	a1,a2			; restore offset
X	subq.l	#1,d0
X	bra	reloc
X
Xnreloc:
X 	move.l	a1,A4			; set up new base register
X	add.l	#RESBASE,A4
X	movem.l	(sp)+,d0-d1/a0-a2
X
X	movea.l	4,a6
X	move.l	a6,SysBase(A4)
X	move.l	sp,_StackPtr(A4)	; Save stack ptr
X
X; get the address of our task
X	move.l	ThisTask(a6),a3
X
X; clear any pending signals
X	moveq	#0,d0
X	move.l	#$00003000,d1
X	SYS	SetSignal
X	
X; are we running as a son of Workbench?
X	tst.l	pr_CLI(a3)
X	 bne.s	fromCLI
X
X* --------------------------------------------------------------------- *
X* Workbench Startup Code
XfromWorkbench:
X; wait for a message from our starter
X	lea	pr_MsgPort(a3),a0	; our process base
X	SYS	WaitPort
X	lea	pr_MsgPort(a3),a0	; our process base
X	SYS	GetMsg
X	move.l	d0,d2
X	 beq.w	exitToDOS
X
X; return the startup message to our parent
X; we forbid so workbench can't UnLoadSeg() us
X; before we are done:
X	SYS	Forbid
X	movea.l	d2,a1
X	SYS	ReplyMsg
X	bra.w	exitToDOS
X
X* --------------------------------------------------------------------- *
X* CLI Startup Code
X; Entry: d2 = command length
X;	 a2 = Command pointer
XfromCLI:
X; attempt to open DOS library:
X	lea	DOSName(PC),a1
X	moveq	#0,d0
X	SYS	OpenLibrary
X	move.l	d0,DOSBase(A4)
X	 bne.s	1$
X	moveq	#100,d0
X	bra.s	exit2
X1$
X; find command name:
X	move.l	pr_CLI(a3),a3
X	add.l	a3,a3			; bcpl pointer conversion
X	add.l	a3,a3
X	move.l	cli_CommandName(a3),a3
X	add.l	a3,a3			; bcpl pointer conversion
X	add.l	a3,a3
X
X; collect parameters:
X	move.l	d2,d0			; get command line length
X	moveq.l #0,d1
X	move.b	(a3)+,d1
X	add.l	d1,d0			; add length of command name
X	addq.l	#1,d0			; allow for space after command 
X	jsr	@myalloc		; allocate enough space for whole cmd line
X	tst.l	d0
X	 beq.s	closeDOS		; Oops, allocate failed
X	move.l	d0,_CmdLine(A4)
X
X; copy command name into allocated space
X	movea.l	a3,a1
X	movea.l	d0,a0
X	moveq	#0,d0
X	move.b	-1(a3),d0
X	jsr	@astrncpy
X
X; insert a space unless command itself is the only argument
X	cmpi.w	#2,d2
X	 bcs.s	2$
X	move.b	#' ',(a0)+
X	
X; Append/copy command line into allocated space
X	move.l	d2,d0
X	movea.l	a2,a1
X	jsr	@astrncpy
X2$
X	movea.l	_CmdLine(A4),a0		; push command line address
X
X* --------------------------------------------------------------------- *
X* Call @_main
Xmain:
X	jsr	@_main			; call C entrypoint
X	moveq.l #0,d0			; set successful status
X	bra.s	exit2
XXCEXIT:
X	move.l	4(sp),d0		; extract exit return code
X@XCEXIT:
Xexit2:
X	move.l	d0,-(sp)		; Save exit return status
X
X	movea.l	_CmdLine(A4),a0
X	jsr	@myfree			; Free command line
X
X;	jsr	@MemCleanup		; Free malloced resources
X
XcloseDOS:
X; Close the DOS library
X	move.l	DOSBase(A4),a1
X	SYS	CloseLibrary,4		; close Dos library
X
X; this rts sends us back to DOS:
XexitToDOS:
X	move.l	#RESLEN,d0
X	movea.l	A4,a1
X	suba.l	#RESBASE,a1
X	move.l	(sp)+,d7		; Grab exit return code
X	movea.l _StackPtr(A4),sp	; restore stack ptr
X	SYS	FreeMem,4
X	move.l	d7,d0			; Put exit return code in d0
X	rts
X
X*-----------------------------------------------------------------------
XDOSName	dc.b	'dos.library',0
X
X
X	SECTION _MERGED,BSS
X* --------------------------------------------------------------------- *
X	XDEF	_CmdLine
X	XDEF	SysBase
X	XDEF	_StackPtr
X_CmdLine:
X	ds.b	4
XSysBase:
X	ds.b	4
X_StackPtr
X	ds.b	4
X	END
END_OF_FILE
if test 5160 -ne `wc -c <'src/mycres.a'`; then
    echo shar: \"'src/mycres.a'\" unpacked with wrong size!
fi
# end of 'src/mycres.a'
fi
if test -f 'src/mycres.o.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'src/mycres.o.uu'\"
else
echo shar: Extracting \"'src/mycres.o.uu'\" \(1583 characters\)
sed "s/^X//" >'src/mycres.o.uu' <<'END_OF_FILE'
Xbegin 644 mycres.o
XM```#YP````````/H`````E]#3T1%```````#Z0```%@D2"0`2?D`````2.?`6
XMX)G\`````"`\`````"(\``$``2QX``1.KO\Z2H!F```(3-\'`TYU($`D0")`D
XM(#P`````(-Q3@&;Z(!QG#B!)T=S5T""*)$E3@&#P*$G9_`````!,WP<#+'@`0
XM!"E.```I3P``)FX!%'``(CP``#``3J[^SDJK`*QF)$'K`%Q.KOZ`0>L`7$ZN3
XM_HPD`&<``)I.KO]\(D).KOZ&8```C$/Z`*AP`$ZN_=@I0```9@1P9&!>)FL`2
XMK-?+U\LF:P`0U\O7RR`"<@`2&]"!4H!.N0````!*@&=&*4```")+($!P`!`K8
XM__].N0`````,0@`"90X0_``@(`(B2DZY`````"!L``!.N0````!P`&`$("\`_
XM!"\`(&P``$ZY`````")L```L>``$3J[^8B`\`````"),D_P`````+A\N;```8
XM+'@`!$ZN_RX@!TYU9&]S+FQI8G)A<GD````#[X$```)?4D530D%310````,``
XM```0````7````3Z!```"0&UY9G)E90`````!```!)($```-`87-T<FYC<'D`4
XM```````"````\@```0:!```"0%]M86EN```````!```!$($```)?4D533$5._
XM``````(````6```!-H$```-?3&EN:V5R1$(````````!````!H$```-?3D57Q
XM1$%404P````````!````/($```)`;7EA;&QO8P````$```#:A@```E]$3U-"!
XM87-E`````@```+8```$JA@```E]3>7-"87-E`````0```&J&```#7U]3=&%CZ
XM:U!T<@```````@```&X```%&A@```U]?0VUD3&EN90````````,```#D```!C
XM#````2`!```"0%A#15A)5`````$<`0```E]80T58250````!&`````````/PE
XM`````E]$3U-.86UE```!5`````)?9G)O;4-,20```*H````"7W-T87)T````#
XM`````````D!80T58250````!'`````)?;6%I;@```````0X````"7VYR96QO*
XM8P````!8`````U]E>&ET5&]$3U,``````30````"7V5X:70R``````$<````?
XM`E]80T58250````!&`````1?9G)O;5=O<FMB96YC:```````A@````-?8VQOO
XM<V5$3U,```````$H`````5]C<'D```!``````E]R96QO8P``````2```````1
XM``/R```#Z`````)?7TU%4D=%1````^L````#```#[P$```)?4WES0F%S90``3
XM``0!```#7U]3=&%C:U!T<@``````"`$```-?7T-M9$QI;F4`````````````8
XM`````_`````"7U-Y<T)A<V4````$`````U]?4W1A8VM0='(```````@````#*
X87U]#;61,:6YE``````````````````/R/
X``
Xend
Xsize 1104
END_OF_FILE
if test 1583 -ne `wc -c <'src/mycres.o.uu'`; then
    echo shar: \"'src/mycres.o.uu'\" unpacked with wrong size!
fi
# end of 'src/mycres.o.uu'
fi
echo shar: End of archive 1 \(of 3\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 3 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Mail submissions (sources or binaries) to <amiga@cs.odu.edu>.
Mail comments to the moderator at <amiga-request@cs.odu.edu>.
Post requests for sources, and general discussion to comp.sys.amiga.