[comp.sys.ibm.pc] Directory list source code

nts0699@dsacg1.UUCP (Gene McManus) (01/05/89)

Since several folks asked for it:

The following is a uuencoded file for C source code that will follow
down the directory structure, producing a graphical display of the
directory structure to stdout. 

It is written in MSC 5.1, and uses some of the
DOS file functions available to this compiler. Since the source code
contains PC line graphics characters, I have uuencoded the file.

This was originally written to investigate techniques to chase down
nested directory chains and utilizes a recursive function call to do 
so.

I place this code in the public domain for whatever use it may be
put to, and assume no responsibility whatsoever for it.

I have a compiled .EXE file from this code. I haven't submitted it
because it doesn't have a lot of general purpose utility. If you
would like a copy, email me, and I'll send it to you.

Gene

Gene McManus @ Defense Logistics Agency Systems Automation Center,
	       Columbus, OH 43215 (614) 238-9403,    Autovon 850-
UUCP:		{uunet!gould,cbosgd!osu-cis}!dsacg1!gmcmanus
The views expressed are my own, not those of The Agency, or Dept. of Defense

------------------------Cut here--------------------------------------
section 1 of uuencode 2.13 of file testdir.c    by R.E.M.

begin 644 testdir.c
M+RH-"@E497-T9&ER+F,-"@T*"41I<W!L87D@82`G=')E92<@;V8@=&AE(&1IE
M<F5C=&]R>2!S=')U8W1U<F4@9F]R(&$@9VEV96X@9')I=F4N#0H)26YC;'5DH
M92!D<FEV92!N86UE(&%S(&$@8V]M;6%N9"!L:6YE(&%R9W5M96YT('1O('-P'
M96-I9GD@9')I=F4N($EF#0H);F]T('-P96-I9FEE9"P@=&AE(&-U<G)E;G0@.
M;&]G9V5D(&1R:79E(&ES(&UA<'!E9"X@5&AI<R!W87,@=W)I='1E;@T*"71O+
M(&1E=F5L;W`@86YD('1E<W0@=&AE('1E8VAN:7%U97,@=&\@9&ES<&QA>2!A;
M(&=R87!H:6,@=')E90T*"7-T<G5C='5R92!F;W(@82!C;VUM97)C:6%L('!R6
M;V1U8W0L('1H92!+65-3(2AT;2D@4WES=&5M($]R9V%N:7IE<BX-"@E!(&YU7
M;6)E<B!W:&EC:"!I;F1I8V%T97,@=&AE(&YE<W1I;F<@;&5V96P@:7,@<')I=
M;G1E9"!O;B!E86-H(&QI;F4N#0H-"@E7<FET=&5N(&9O<B!-:6-R;W-O9G0@J
M0R!6-2XQ#0H-"@E#;VUP:6QE(&%S(&9O;&QO=W,Z#0H-"@D)8VP@=&5S=&1IC
M<BYC("]L:6YK("]35$%#2SHT,#DV#0H-"@E5<V4@82!L87)G97(@=F%L=64@Y
M9F]R('-T86-K(&EF('EO=2!R=6X@:6YT;R`G4W1A8VL@;W9E<F9L;W<G(&5RV
M<F]R<RX-"@T*"51H92!$:7-P;&%Y1&ER96-T;W)I97,H*2!F=6YC=&EO;B!IG
M<R!R96-U<G-I=F4N($$@;6%X:6UU;2!O9B`S,B!L979E;',-"@EO9B!S=6(M$
M9&ER96-T;W)Y(&YE<W1I;F<@8V%N(&)E(&1I<W!L87EE9"P@87-S=6UI;F<@6
M=&AA="!R96-U<G-I;VX-"@ED;V5S(&YO="!E870@86QL('1H92!M96UO<GDNI
M+BY))W9E('1E<W1E9"!T;R`W(&QE=F5L<R!D965P+@T*#0H)5&AI<R!C;V1EI
M(&ES('!L86-E9"!I;G1O('1H92!P=6)L:6,@9&]M86EN(&)Y('1H92!A=71H-
M;W(Z#0H)1V5N92!-8TUA;G5S#0H)5&AE($EN9F]R;6%T:6]N(%!E;W!L90T*7
M"3,U."!'<F%N9'9I97<@4F0N#0H)3F5W87)K+"!/2"`T,S`U-0T*"2@V,30I+
M(#,T.2TX-C0T#0H-"@E)="!M87D@8F4@=7-E9"!F;W(@86YY('!U<G!O<V4@5
M=VAA='-O979E<BP@=VET:"!N;R!C;&%I;7,@;W(-"@EW87)R86YT:65S(&UA,
M9&4N#0HJ+PT*#0HC:6YC;'5D92`\<W1D:6\N:#X-"B-I;F-L=61E(#QD;W,N8
M:#X-"@T*(V1E9FEN92!44E5%"3$-"B-D969I;F4@1D%,4T4),`T*#0IT>7!E\
M9&5F('-T<G5C="!F:6YD7W0@1DE,14E.1D\[#0H-"FUA:6XH:6YT(&%R9V,L?
M(&-H87(@*F%R9W9;72D-"@E[#0H):6YT(&EN9&5N="`](#`[#0H)8VAA<B!D>
M<FEV95LR,%T[#0H)=F]I9"!$:7-P;&%Y1&ER96-T;W)I97,H*3L-"@T*"6EFB
M*&%R9V,@/B`Q*0T*"0ES=')C<'DH9')I=F4L(&%R9W9;,5TI.PT*"65L<V4-)
M"@D)9')I=F5;,%T@/2`G7#`G.PT*#0H)1&ES<&QA>41I<F5C=&]R:65S*&ENX
M9&5N="P@9')I=F4L(#`I.PT*"7T-"@T*+RH-"@E$:7-P;&%Y1&ER96-T;W)I\
M97,H*2`M($1I<W!L87D@86QL('-U8F1I<F5C=&]R:65S(&EN('1H92!C=7)RE
M96YT#0H)9&ER96-T;W)Y+B!)9B!A('-U8BUD:7)E8W1O<GD@:&%S('-U8BUD#
M:7)E8W1O<FEE<RP@9&ES<&QA>2!T:&5M+@T*"51H:7,@9G5N8W1I;VX@:7,@R
M<F5C=7)S:79E+@T**B\-"@T*<W1A=&EC('5N<VEG;F5D(&-H87(@;6%P6S,RX
M73L-"@T*=F]I9"`-"D1I<W!L87E$:7)E8W1O<FEE<RAI;G0@:6YD96YT+"!CJ
M:&%R("IP871H+"!I;G0@<W<I#0H)>PT*("`@<W1A=&EC(&-H87(@:6YD96YT0
M7V-H87);75LT72`]('L@(B"S("(L("(@P\0B+"`B(,#$(B!].PT*"7-T871I`
M8R!F:7)S="`](#$[#0H):6YT(&1O;F4L(&5M<'1Y7V1I<BP@:2P@;75S=%]C^
M;&]S92P@<VAI9G0[#0H)8VAA<B!D:7-P;&%Y6S@P73L-"@EC:&%R('1H:7-?9
M9&ER6S8U73L-"@EC:&%R(&9U;&Q?<&%T:%LV-5T[#0H)8VAA<B`J<#L-"@E&+
M24Q%24Y&3R!&:6QE26YF;S$L($9I;&5);F9O,CL-"@EC:&%R("IP<FEN=%!A3
M=&AS*"D[#0H-"@EI9BAF:7)S="D-"@D)>PT*"0EF:7)S="`](#`[#0H)"7!RP
M:6YT9B@B,"`E<UQ<("A2;V]T*5QN(BP@<&%T:"D[#0H)"7-T<F-P>2AT:&ES2
M7V1I<BP@<&%T:"D[#0H)"7-T<F-A="AT:&ES7V1I<BP@(EQ<(BD[#0H)"7-T;
M<F-P>2AF=6QL7W!A=&@L('1H:7-?9&ER*3L-"@D)<W1R8V%T*&9U;&Q?<&%TL
M:"P@(BHN*B(I.PT*"0EF;W(H:2`](#`[(&D@/"`S,CL@:2LK*0T*"0D);6%PD
M6VE=(#T@)UPP)SL-"@D)?0T*"65L<V4-"@D)>PT*"0ES=')C<'DH=&AI<U]DK
M:7(L('!A=&@I.PT*"0ES=')C<'DH9G5L;%]P871H+'!A=&@I.PT*"0EI9BAF;
M=6QL7W!A=&A;<W1R;&5N*&9U;&Q?<&%T:"D@+2`Q72`A/2`G7%PG*0T*"0D)-
M<W1R8V%T*&9U;&Q?<&%T:"PB7%PJ+BHB*3L-"@D)96QS90T*"0D)<W1R8V%T=
M*&9U;&Q?<&%T:"PB*BXJ(BD[#0H)"7T-"@T*"7-H:69T(#T@:6YD96YT.PT*\
M"6UU<W1?8VQO<V4@/2!&04Q313L-"@EE;7!T>5]D:7(@/2!44E5%.PT*#0H)O
M9&]N92`](%]D;W-?9FEN9&9I<G-T*&9U;&Q?<&%T:"P@7T%?4U5"1$E2+"`FY
M1FEL94EN9F\R*3L-"@DK*W-H:69T.PT*"61I<W!L87E;,%T@/2`G7#`G.PT*6
M#0H)=VAI;&4H(61O;F4I#0H)"7L-"@D):68H*$9I;&5);F9O,BYA='1R:6(@.
M)B!?05]354)$25(I("8F#0H)"0D@1FEL94EN9F\R+FYA;65;,%T@(3T@)RXG_
M*0T*"0DO*B!D;R!T:&ES(&]N;'D@9F]R('-U8BUD:7)E8W1O<FEE<R`J+PT*D
M"0D)>PT*"0D)96UP='E?9&ER(#T@1D%,4T4[#0H)"0EM=7-T7V-L;W-E(#T@^
M5%)513L@#0H)"0ED:7-P;&%Y6S!=(#T@)UPP)SL-"@T*"0D):68H<W<I"0DOY
M*B!P<F5V:6]U<R!L979E;"!E;F1E9"!B<F%N8V@@*B\-"@D)"0EM87!;<VAI_
M9G0M,5T@/2`P>&9F.PT*#0H)"0EF;W(H:2`](#$[(&D@/"!S:&EF=#L@:2LKI
M*0T*"0D)"6EF*&UA<%MI72`A/2`P>&9F*0T*"0D)"0ES=')C870H9&ES<&QAX
M>2P@:6YD96YT7V-H87);,%TI.PT*"0D)"65L<V4-"@D)"0D)<W1R8V%T*&1IH
M<W!L87DL("(@("`B*3L-"@T*#0H)"0EM96UC<'DH*&-H87(@*BDF1FEL94EN+
M9F\Q+"`H8VAA<B`J*29&:6QE26YF;S(L('-I>F5O9BA&24Q%24Y&3RDI.PT*A
M"0D)9&]N92`](%]D;W-?9FEN9&YE>'0H)D9I;&5);F9O,BD[#0H)"0EI9B@AM
M9&]N92D)"2\J(&%N;W1H97(@9FEL92!F;W5N9"!I;B!T:&ES(&1I<F5C=&]RZ
M>2`J+PT*"0D)"7L-"@D)"0EW:&EL92@A9&]N92D-"@D)"0D)>PT*"0D)"0EI=
M9BA&:6QE26YF;S(N871T<FEB("8@7T%?4U5"1$E2*0T*"0D)"0D)>PT*"0D)N
M"0D);75S=%]C;&]S92`]($9!3%-%.PT*"0D)"0D)8G)E86L[#0H)"0D)"0E]W
M#0H)"0D)"61O;F4@/2!?9&]S7V9I;F1N97AT*"9&:6QE26YF;S(I.PT*"0D)F
M"0E]("\J('=H:6QE*"%D;VYE("8F+BX@*B\-"@T*"0D)"6EF*&UU<W1?8VQO1
M<V4I#0H)"0D)+RH@=&AE<F4@87)E(&YO(&UO<F4@<W5B+61I<F5C=&]R:65S:
M("HO#0H)"0D)"7`@/2!I;F1E;G1?8VAA<ELR73L-"@D)"0EE;'-E#0H)"0D)E
M+RH@=&AE<F4@:7,@870@;&5A<W0@;VYE(&UO<F4@<W5B+61I<F5C=&]R>2`J<
M+PT*"0D)"0EP(#T@:6YD96YT7V-H87);,5T[#0H-"@D)"0ES=')C<'DH9G5L-
M;%]P871H+`T*"0D)"0D)('!R:6YT4&%T:',H9&ES<&QA>2P@<"P@1FEL94END
M9F\Q+FYA;64L('1H:7-?9&ER+"!S:&EF="DI.PT*"0D)"41I<W!L87E$:7)E=
M8W1O<FEE<RAS:&EF="P@9G5L;%]P871H+"!M=7-T7V-L;W-E*3L@#0H)"0D)S
M?0T*"0D)96QS90T*"0D)"7L-"@D)"0ES=')C<'DH9G5L;%]P871H+`T*"0D)M
M"0D)('!R:6YT4&%T:',H9&ES<&QA>2P@:6YD96YT7V-H87);,ETL($9I;&5)-
M;F9O,2YN86UE+"!T:&ES7V1I<BP@<VAI9G0I*3L-"@D)"0E$:7-P;&%Y1&ER5
M96-T;W)I97,H<VAI9G0L(&9U;&Q?<&%T:"P@;75S=%]C;&]S92D[(`T*"0D)@
M"7)E='5R;CL-"@D)"0E]#0H)"0E]#0H)"65L<V4-"@D)"7L-"@D)"6EF*&UU!
M<W1?8VQO<V4I#0H)"0D)>PT*"0D)"7-T<F-P>2AF=6QL7W!A=&@L#0H)"0D)0
M"7!R:6YT4&%T:',H9&ES<&QA>2P@:6YD96YT7V-H87);,ETL($9I;&5);F9OA
M,2YN86UE+"!T:&ES7V1I<BP@<VAI9G0I*3L-"@D)"0E$:7-P;&%Y1&ER96-T\
M;W)I97,H<VAI9G0L(&9U;&Q?<&%T:"P@;75S=%]C;&]S92D[(`T*"0D)"7)EW
M='5R;CL-"@D)"0E]#0H-"@D)"61O;F4@/2!?9&]S7V9I;F1N97AT*"9&:6QE>
M26YF;S(I.PT*"0D)?0T*"0E]"2\J('=H:6QE("AD;VYE(#T](#`I("HO#0H))
M;6%P6W-H:69T72`]("=<,"<[#0H)?0T*#0IC:&%R#0HJ<')I;G10871H<RACQ
M:&%R("ID:7-P;&%Y+"!C:&%R("II;F1E;G1?8VAA<BP@8VAA<B`J;F%M92P@,
M8VAA<B`J<&%T:"P@:6YT('-H:69T*0T*"7L-"@EC:&%R(&9U;&Q?<&%T:%LVQ
M-5T[#0H-"@ES=')C870H9&ES<&QA>2P@:6YD96YT7V-H87(I.PT*"7-T<F-A&
M="AD:7-P;&%Y+"!N86UE*3L-"@ES=')C<'DH9G5L;%]P871H+"!P871H*3L-V
M"@EI9BAF=6QL7W!A=&A;<W1R;&5N*&9U;&Q?<&%T:"D@+2`Q72`A/2`G7%PGH
M*0T*"0ES=')C870H9G5L;%]P871H+"`B7%PB*3L-"@ES=')C870H9G5L;%]PA
M871H+"!N86UE*3L-"@EP<FEN=&8H(B5D("5S(%QN(BP@<VAI9G0L(&1I<W!LL
@87DI.PT*"7)E='5R;BAF=6QL7W!A=&@I.PT*"7T-"AH-(
``
end
size    4487