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.