page@swan.ulowell.edu (Bob Page) (03/09/89)
Submitted-by: barrett@cs.jhu.edu (Dan Barrett) Posting-number: Volume 89, Issue 38 Archive-name: unix/man20.1 Here is my simple, yet extremely useful, "port" of the UNIX "man" command. Version 1.0 has been in the Public Domain for a long time, and here is the most recent (and probably final) version. [uuencoded executable included. ..Bob] # This is a shell archive. # Remove everything above and including the cut line. # Then run the rest of the file through sh. #----cut here-----cut here-----cut here-----cut here----# #!/bin/sh # shar: Shell Archiver # Run the following text with /bin/sh to create: # Man.c # Man.uu # README # man.doc # This archive created: Wed Mar 8 15:10:33 1989 cat << \SHAR_EOF > Man.c /*************************************************************************** * MAN.C: Find documentation on a particular subject. * * Author: Daniel Barrett, barrett@cs.jhu.edu (ARPANET). * PUBLIC DOMAIN. * * Usage: MAN [-d directory] subject_1 subject_2 ... * * The subdirectories of MAN: listed in *subDirs[], below, * are checked for the files subject_1, subject_2, .... * When a file is found, it is displayed using a text * display program "MORE" (#defined below). * * Use the "-d directory" to confine the search to only ONE * subdirectory of MAN:. * * Note: You must assign MAN: to an existing volume or directory. * You must also have the "MORE" program in your search path. * * Compiling: cc man.c (MANX) * ln man.o -lc * **************************************************************************/ #include <stdio.h> #define VERSION "2.0" #define MANDIR "MAN:" /* Your Manual directory. */ #define MORE "more" /* Your file viewing program. */ #define MISSING(f) (access(f,0)) #define EXISTS(f) (!access(f,0)) #define EQUAL !strcmp #define DIRFLAG "-d" #define HELPFLAG "?" #define TRUE 1 #define FALSE 0 static char *subDirs[] = { "Tools", "Utilities", "ARP", "Graphics", "Sound", "UNIX", "Games", "WB", "Misc", NULL }; main(argc,argv) int argc; char *argv[]; { char subject[BUFSIZ]; char *CheckAllSubdirs(), *MakeManPageName(); int i; if (BadArgs(argc, argv)) Usage("MAN", subDirs); else if (EQUAL(argv[1], DIRFLAG)) for (i=3; i<argc; i++) { strcpy(subject, MakeManPageName(MANDIR, argv[2], argv[i])); Man(subject, subject); } else for (i=1; i<argc; i++) { strcpy(subject, CheckAllSubdirs(MANDIR, subDirs, argv[i])); Man(subject, argv[i]); } } BadArgs(argc, argv) int argc; char *argv[]; { if ((argc < 2) || (EQUAL(argv[1], HELPFLAG)) || (EQUAL(argv[1], DIRFLAG) && (argc < 4))) return(TRUE); else return(FALSE); } Usage(progName, subdirs) char *progName, *subdirs[]; { printf("%s V%s by Daniel Barrett. 100%% PUBLIC DOMAIN.\n", progName, VERSION); printf("Find documentation on a particular subject.\n\n"); printf("Usage: %s [-d directory] subject_1 subject_2 ...\n", progName); printf("%s searches these subdirectories of %s, in order:\n\t", progName, MANDIR); while (*subdirs) printf("%s ", *(subdirs++)); printf("\n"); exit(5); } char *CheckAllSubdirs(prefix, subdir, filename) /* Return the subdir name containing the filename; NULL otherwise. */ char *prefix, *subdir[], *filename; { char winner[BUFSIZ], *MakeManPageName(); while (*subdir) { strcpy(winner, MakeManPageName(prefix, *subdir, filename)); if EXISTS(winner) return(winner); else subdir++; } if (!(*subdir)) /* We found nothing. */ return(NULL); else return(winner); /* Should never happen... * but just to be sure. */ } char *MakeManPageName(prefix, subdir, filename) char *prefix, *subdir, *filename; { char buf[BUFSIZ]; strcpy(buf, prefix); if (!EndsWith(prefix, ':') && !EndsWith(prefix, '/')) strcat(buf, "/"); if (!EQUAL(subdir, NULL)) { strcat(buf, subdir); strcat(buf, "/"); } strcat(buf, filename); return(buf); } Man(pathname, subject) char *pathname, *subject; { if ((pathname == NULL) || EQUAL(pathname, "") || MISSING(pathname)) printf("Cannot find manual entry for %s.\n", subject); else fexecl(MORE, MORE, pathname, 0L); } EndsWith(str, c) /* Does string "str" end with character "c"? */ char *str, c; { return( (str[strlen(str)-1] == c) ? TRUE : FALSE); } SHAR_EOF cat << \SHAR_EOF > Man.uu begin 644 Man M```#\P`````````#``````````(```:2````M0````$```/I```&DD[Z"8I4\ M;V]L<P!5=&EL:71I97,`05)0`$=R87!H:6-S`%-O=6YD`%5.25@`1V%M97,`' M5T(`36ES8P!.5?O^+RT`"C\M``A.N@#X7$]*0&<22&R``DAZ`-A.N@$V4$]@7 M``#*2'H`SB!M``HO*``$3KH(PE!/2D!F5CM\``/[_F!","W[_DC`Y8`@;0`*R M+S`(`"!M``HO*``(2'H`FTZZ`JI/[P`,+P!(;?P`3KH#U%!/2&W\`$AM_`!.& MN@,:4$]2;?O^,"W[_K!M``AMM&!<.WP``?O^8$HP+?O^2,#E@"!M``HO,`@`B M2&R``DAZ`$Y.N@'X3^\`#"\`2&W\`$ZZ`X)03S`M^_Y(P.6`(&T`"B\P"`!(F M;?P`3KH"O%!/4FW[_C`M^_ZP;0`(;:Q.74YU34%.`"UD`$U!3CH`34%..@``A M3E4```QM``(`"&TT2'H`/"!M``HO*``$3KH'V%!/2D!G'DAZ`"@@;0`*+R@`D M!$ZZ!\)03TI`9@X,;0`$``AL!G`!3EU.=7``8/@_`"UD``!.50``2'H`KB\M/ M``A(>@!L3KH,9$_O``Q(>@">3KH,6%A/+RT`"$AZ`+Y.N@Q*4$](>@$;+RT`& M"$AZ`-].N@PX3^\`#"!M``Q*D&<6(&T`#%BM``PO$$AZ`/I.N@P:4$]@XDAZE M`/).N@P.6$\_/``%3KH54%1/3EU.=1M;,S-M)7,@5B5S&ULP;2!B>2!$86YI2 M96P@0F%R<F5T="X@(#$P,"4E(%!50DQ)0R!$3TU!24XN"@`R+C``1FEN9"!D2 M;V-U;65N=&%T:6]N(&]N(&$@<&%R=&EC=6QA<B!S=6)J96-T+@H*`%5S86=ER M.B`@)7,@6RUD(&1I<F5C=&]R>5T@<W5B:F5C=%\Q('-U8FIE8W1?,B`N+BX*E M`"5S('-E87)C:&5S('1H97-E('-U8F1I<F5C=&]R:65S(&]F("5S+"!I;B!OE M<F1E<CH*"0!-04XZ`"5S(``*`$Y5_``@;0`,2I!G0"\M`!`@;0`,+Q`O+0`(S M841/[P`,+P!(;?P`3KH!<%!/0F=(;?P`3KH!AEQ/2D!F"D'M_``@"$Y=3G58- MK0`,8+@@;0`,2I!F!'``8.I![?P`(`A@XDY5_``O+0`(2&W\`$ZZ`2I03S\\] M`#HO+0`(3KH`]%Q/2D!F(#\\`"\O+0`(3KH`XEQ/2D!F#DAZ`%!(;?P`3KH)* M?E!/0J<O+0`,3KH%GE!/2D!G'"\M``Q(;?P`3KH)8%!/2'H`)DAM_`!.N@E2J M4$\O+0`02&W\`$ZZ"4103T'M_``@"$Y=3G4O`"\`3E4``$JM``AG(DAZ`$HOT M+0`(3KH%2E!/2D!G$$)G+RT`"$ZZ`*I<3TI`9Q`O+0`,2'H`)4ZZ"?Q03V`6( M0J<O+0`(2'H`.DAZ`#%.N@$:3^\`$$Y=3G4`0V%N;F]T(&9I;F0@;6%N=6%L= M(&5N=')Y(&9O<B`E<RX*`&UO<F4`;6]R90``3E4``"\M``A.N@`N6$]30"!M3 M``@2,```LBT`#68$<`%@`G``3EU.=2!O``0@"")O``@0V6;\3G4@;P`$(`A*X M&&;\D<`@"%.`3G5.5?_Z.WS____Z2'C__B\M``A.NA1R*T#__%!/9@PY?``!O M@HIP_TY=3G4P+0`,2,!@."\M__Q.NA2"2'C__R\M``A.NA1"*T#__$_O``QF] M"CE\``B"BG#_8,Q";?_Z8!S_X/_@_[@``O_@L+P````%9`KC@#`[`.I.^P``( M+RW__$ZZ%#@P+?_Z6$]@FDY5```@+(*"3EU.=4Y5``!(;0`,+RT`"&$&4$].? M74YU3E7_IDCG##!"ITZZ%%8K0/_\(&W__"`H`*SE@"1`2H!83V8*</],WPPP0 M3EU.=4AX`"%(>@-(3KH48BM`_^903V8P(&R"C")H``@@:0`$(FC_]"!I__31B M_````:PK2/^V(&W_MB`J`#RPD&<$</]@MF`.+RW_YDZZ$\A"K?^V6$\O+0`(* M3KH32"M`_^I83V9^*VH`"/^R2JW_LF="("W_LN6`*T#_LB!M_[(O*``$3KH23 MYBM`_^8O+0`(3KH3$BM`_^HO+?_F3KH2SDJM_^I/[P`,9CH@;?^R*U#_LF"X0 M0>W_ND/Z`J00V6;\+RT`"$AM_[I.N@;$2&W_NDZZ$M(K0/_J3^\`#&8&</]@L M`/\:("H`-.6`*T#_XD*G("W_XE"`+P!.NA,L*T#_KE!/9A`O+?_J3KH2RG#_J M6$]@`/[J*WP````!_^XF;0`,6(M@&"!3(`A*&&;\D<!3B#`(4D!(P-&M_^Y8> MBTJ39N1"IR\M_^Y.NA+>*@`H`%!/9B(O+?_J3KH2?"`M_^)0@"\`+RW_KDZZN M$NAP_T_O``Q@`/Z*(&W_KB`M_^)0@""`("W_XM&M_ZX@;?^N(*W_XB!L@HPBP M;?^N(V@`"``$(&W__"MH`+#_]"!M__PA;?^N`+`K:@`\_^8E;?_J`#Q*K?^V[ M9P@@;?^V(*W_ZB9M``Q8BV`H($0B4Q#99OQ(>@&#+P1.N@6J($0@"$H89OR1F MP%.(,`A(P-B`4$]8BTJ39M0@1='M_^X1?``*__\@*@`0Y8`H`#\\`"A(;?^ZI M+P1.N@'*($12B")M``@0V6;\(&T`""`(2AAF_)'`4X@P""!$$(`@;?_\("@`/ MG.6`*T#_^`RM````R/_N;`8@+?_N8`8@/````,<_`"\%(&W_^"`H``SE@"\`E M3KH%0"!M__A"J``0#*T```#(_^Y/[P`4;`8@+?_N8`8@/````,<@;?_X(4``E M%"!M__PK:`"<_ZH@;?_\*V@`H/^F+RW_KB`M_^I2@.6`+P`O!2\M_^X@+?_BD M4(`O`"\M_^(O+?_N3KH`ABE`@H(@;?_\(6W_J@"<(&W__"%M_Z8`H"!M__@B< M;?_X(V@`%``0+RH`/$ZZ$,@@;?_\(6W_]`"P)6W_Y@`\2JW_MD_O`"!G""!MZ M_[8@K?_F+RW_[B\%3KH1&#\\`"@O!$AM_[I.N@"D<`!/[P`28`#\K&1O<RYLM M:6)R87)Y`&,Z`"```$Y5``!(YQ\\0?H`2""/3.V1'0`()F\`!$SK9@``!"-`Q M``PB".2)(T$`""((3I1,WP`,(D\N>@`<3-\\^"\`D\)1B2`1+'@`!$ZN_RX@F M'TY=3G4`````,#Q__V`$,"\`#%-`:Q0@;P`$(F\`"+$)9@Q32$H85\C_]G``Q M3G5C!'`!3G5P_TYU3.\#```$<``P+P`,L\AF`DYU8Q#0P-+`8`(3(%'(__Q.? M=1+84<C__$YU87!#[(*"1>R"@K7)9@XR/``4:PAT`"+"4<G__"E/@HPL>``$Q M*4Z"D$CG@(`(+@`$`2EG$$OZ``A.KO_B8`9"I_-?3G-#^@`@3J[^:"E`@I1F# M#"X\``.`!TZN_Y1@!$ZZ`!I03TYU9&]S+FQI8G)A<GD`2?D``'_^3G5.50``% M+PI(>0`!```P+()VP?P`!B\`3KH/A"E`@IA03V840J=(>0`!``!.N@]$4$\N+ M;(*,3G4@;(*80F@`!"!L@I@Q?``!`!`@;(*8,7P``0`*(&R"C"`L@HR0J``$# M4(`I0(*<(&R"G""\34%.6$*G3KH//"1`2JH`K%A/9RXO+0`,+RT`""\*3KH`: MKCE\``&"H"!L@I@`:(````0@;(*8`&B````*3^\`#&!"2&H`7$ZZ#UY(:@!<M M3KH/'"E`@J(@;(*B2J@`)%!/9Q`@;(*B(F@`)"\13KH."EA/+RR"HB\*3KH"# M:"EL@J*"IE!/3KH."B!L@I@@@$ZZ#D0@;(*8(4``!F<62'@#[4AZ`"I.N@X@$ M(&R"F"%```Q03R\L@J8_+(*J3KKU#D)G3KH,(%!/)%].74YU*@!.50``2.<,, M,"1M`!`@;0`(2J@`K&<8(&T`""`H`*SE@"@`($0@*``0Y8`F0&`$)FR">!`3S M2(!(P-"M``Q4@#E`@JQ"IS`L@JQ(P"\`3KH.%BE`@JY03V8(3-\,,$Y=3G40U M$TB`.@`_!2!+4H@O""\L@JY.N@%^,`5(P"!`T>R"KD/Z`400V6;\/RT`#B\*Q M+RR"KDZZ`3H@;(*N0C!0`#E\``&"JC`%2,#0K(*N)D!2BR1+3^\`%!`32(`Z` M`+!\`"!G&+I\``EG$KI\``QG#+I\``UG!KI\``IF!%*+8-@,$P`@;7H,$P`B. M9BY2BR!+4HL0$$B`.@!G'B!*4HH0A;I\`")F$`P3`")F!%*+8`9"*O__8`)@C MUF`X($M2BQ`02(`Z`&<FNGP`(&<@NGP`"6<:NGP`#&<4NGP`#6<.NGP`"F<(F M($I2BA"%8,X@2E**0A!*168"4XM2;(*J8`#_6D(20J<P+(*J4D!(P.6`+P!.: MN@ST*4""IE!/9@A";(*J8`#^V'H`)FR"KF`D,`5(P.6`(&R"IB&+"``@2R`(% M2AAF_)'`4X@P"%)`2,#7P%)%NFR"JFW6,`5(P.6`(&R"ID*P"`!@`/Z4(``P7 M/'__8`0P+P`,(&\`!$H89OQ32")O``A30!#95\C__&<"0A`@+P`$3G5,[P,`Y M``0@"#(O``Q@`A#95\G__&<&4D%@`D(84<G__$YU3E4``$CG#C`D;0`(0J=(M M>@".3KH,ABE`@K)03V8(3-\,<$Y=3G4@;0`,(F@`)"\I``1.N@RV*`!83V=26 M2'H`;2!$+R@`-DZZ#(@F0$J`4$]G-$AX`^TO"TZZ"XHL`%!/9R0@!N6`*@`@8 M125H``@`I"5&`)Q(>`/M2'H`.$ZZ"V8E0`"@4$\O!$ZZ#%183R\L@K).N@NH8 M0JR"LEA/8(!I8V]N+FQI8G)A<GD`5TE.1$]7`"H`3E4``$AM``PO+0`(2'H$% M8$ZZ`)A/[P`,3EU.=4Y5``!(YP@@)&T`#@QM``0`$F8((&T`""@08!Q*;0`,: M;PP@;0`(<``P$"@`8`H@;0`(,!!(P"@`0FT`$DIM``QL$$1M``Q*A&P(1(0[9 M?``!`!(R+0`,2,$@!$ZZ`Y!![(`J4XH4L```,BT`#$C!(`1.N@.&*`!FVDIM" M`!)G!E.*%+P`+2`*3-\$$$Y=3G5.5?\B2.<(,"1M``@F;0`,0FW_^BMM`!#_B M_"!+4HL0$$B`.`!G``+NN'P`)68``LQ"+?\P.WP``?_X.WP`(/_V.WPG$/_T" M($M2BQ`02(`X`+!\`"UF#D)M__@@2U*+$!!(@#@`N'P`,&80.WP`,/_V($M2V MBQ`02(`X`+A\`"IF&"!M__Q4K?_\.U#_\B!+4HL0$$B`.`!@,D)M__)@'#`MZ M__+!_``*T$20?``P.T#_\B!+4HL0$$B`.``P!%)`0>R`/`@P``(``&;4N'P`S M+F9:($M2BQ`02(`X`+!\`"IF&"!M__Q4K?_\.U#_]"!+4HL0$$B`.`!@,D)M5 M__1@'#`M__3!_``*T$20?``P.T#_]"!+4HL0$$B`.``P!%)`0>R`/`@P``(`5 M`&;4.WP``O_PN'P`;&82($M2BQ`02(`X`#M\``3_\&`0N'P`:&8*($M2BQ`0P M2(`X`#`$2,!@>CM\``C_[F`6.WP`"O_N8`X[?``0_^Y@!CM\__;_[C\M__!(J M;?\P/RW_[B\M__Q.NOWD*T#_ZC`M__!(P-&M__Q/[P`,8%P@;?_\6*W__")06 M*TG_ZB`)2AEF_)/`4XD[2?_P8$H@;?_\5*W__#@00>W_+RM(_^H0A&`HD+P`# M``!C9^)3@&>2D+P````+9P#_<EF`9[)5@&<`_W!7@&<`_W)@S$'M_S"1[?_JC M.TC_\#`M__"P;?_T;P8[;?_T__!*;?_X9V@@;?_J#!``+6<*(&W_Z@P0`"MF= M+@QM`##_]F8F4VW_\B!M_^I2K?_J$!!(@#\`3I*P?/__5$]F"G#_3-\,$$Y=, M3G5@%C\M__9.DK!\__]43V8$</]@Y%)M__HP+?_R4VW_\K!M__!NW$)M_^Y@M M("!M_^I2K?_J$!!(@#\`3I*P?/__5$]F!'#_8+!2;?_N(&W_ZDH09PHP+?_NR ML&W_]&W.,"W_[M%M__I*;?_X9BA@&#\\`"!.DK!\__]43V8&</]@`/]X4FW_X M^C`M__)3;?_RL&W_\&[:8!8_!$Z2L'S__U1/9@9P_V``_U)2;?_Z8`#]"#`MY M__I@`/]"2.=(`$*$2H!J!$2`4D1*@6H&1($*1``!83Y*1&<"1(!,WP`22H!.G M=4CG2`!"A$J`:@1$@%)$2H%J`D2!81H@`6#8+P%A$B`!(A]*@$YU+P%A!B(?^ M2H!.=4CG,`!(04I!9B!(038!-`!"0$A`@,,B`$A`,@*"PS`!0D%(04S?``Q.L M=4A!)@$B`$)!2$%(0$)`=`_0@-.!MH%B!)*#4D!1RO_R3-\`#$YU3E4``$ALE M@-0_+0`(3KH`"%Q/3EU.=4Y5```O!#@M``@O+0`*/P1.N@`PN'P`"EQ/9B0@H M;0`*$"@`#$B`"```!V<4/SS__R\M``I.N@#T7$\H'TY=3G5@^$Y5```O"B1M- M``H@4K'J``1E&#`M``C`?`#_/P`O"DZZ`,A<3R1?3EU.=2!24I(0+0`)$(!(0 M@,!\`/]@Z$Y5```O"D'L@+XD2"!*U?P````6+PAA$%A/0>R"=K7(9>HD7TY=U M3G5.50``2.<(("1M``AX`"`*9@IP_TS?!!!.74YU2BH`#&=0""H``@`,9PP_M M//__+PIA4C@`7$\0*@`-2(`_`$ZZ!1R(0`@J``$`#%1/9PHO*@`(3KH"+EA/; M""H`!0`,9Q(O*@`23KH"P"\J`!).N@(44$]"DD*J``1"J@`(0BH`##`$8)!.[ M5?_^2.<(("1M``A!^O]&*4B"M@@J``0`#&<*</],WP003EU.=0@J``(`#&<P1 M(%*1Z@`(.`@_!"\J``@0*@`-2(`_`$ZZ`H"P1%!/9Q`(Z@`$``Q"DD*J``1PQ M_V#`#&W__P`,9A`(J@`"``Q"DD*J``1P`&"H2JH`"&8(+PI.N@":6$\,:@`!W M`!!F*AMM``W__S\\``%(;?__$"H`#4B`/P!.N@(BL'P``5!/9J`P+0`,8`#_V M:B2J``@P*@`02,#0J@`()4``!`CJ``(`#"!24I(0+0`-$(!(@,!\`/]@`/\^M M3E4``"\*0>R`OB1(2BH`#&<8U?P````60>R"=K7(90AP`"1?3EU.=6#B0I)"A MJ@`$0JH`""`*8.I.5?_\+PHD;0`(/SP$`$ZZ`,`K0/_\5$]F\``$`$"!*` MT?P````.)4@`""1?3EU.=35\!```$`CJ``$`#"5M__P`"!`J``U(@#\`3KH`P MXDI`5$]G!@`J`(``#&#.3E4``$CG`#`D;(*&8!0F4B`J``10@"\`+PI.N@2$\ M4$\D2R`*9NA"K(*&3-\,`$Y=3G5.50``+PI!^O_&*4B"ND*G("T`"%"`+P!.U MN@0J)$!*@%!/9@AP`"1?3EU.=22L@H8E;0`(``0I2H*&(`I0@&#F3E4``'``( M,"T`""\`8;)83TY=3G5.50``2.<`,)?+)&R"AF`.(&T`"%&(L<IG$B9*)%(@. M"F;N</],WPP`3EU.=2`+9P0FDF`$*5*"AB`J``10@"\`+PI.N@/6<`!03V#85 M3E4``"\*,"T`",'\``8D0-7L@IA*;0`(;0XP+0`(L&R"=FP$2I)F#CE\``*"O MBG#_)%].74YU,"T`",'\``8@;(*8+S`(`$ZZ`LI*@%A/9P1P`6`"<`!@V$Y5M M```O+0`(3KH"E$J`6$]F#DZZ`IXY0(**</].74YU<`!@^$Y5``!(YPP@."T`< M"$ZZ`'`P!,'\``8D0-7L@IA*1&T*N&R"=FP$2I)F$#E\``*"BG#_3-\$,$Y=5 M3G4P*@`$P'P``V8*.7P`!8**</]@Y'``,"T`#B\`+RT`"B\23KH"D"H`L+S_I M____3^\`#&8,3KH"'CE`@HIP_V"X(`5@M$Y5__Q(>!``0J=.N@,$*T#__`@`Z M``Q03V<22FR"H&8(("W__$Y=3G5.N@`&<`!@]$Y5``!(>``$2'H`'$ZZ`@XO^ M`$ZZ`BP_/``!3KH`#D_O``Y.74YU7D,*`$Y5``!*K(*V9P8@;(*V3I`_+0`(! M3KH`"%1/3EU.=4Y5__PO!#`M``A(P"M`__Q*K(*89RAX`&`*/P1.N@#^5$]2$ M1+AL@G9M\#`L@G;!_``&+P`O+(*83KH"(E!/2JR"NF<&(&R"NDZ02JR"?&<*M M+RR"?$ZZ`9)83TJL@KYG""!L@KX@K(+"2JR"QF<*+RR"QDZZ`:Y83TJL@LIGU M"B\L@LI.N@&>6$]*K(+.9PHO+(+.3KH!CEA/2JR"TF<*+RR"TDZZ`7Y83RQX; M``0(+@`$`2EG%"\-2_H`"DZN_^(J7V`&0J?S7TYS2JR"HF8P2JR"KF<H,"R"Y MK$C`+P`O+(*N3KH!>C`L@JI20$C`Y8`O`"\L@J9.N@%F3^\`$&`.3KH!4"\L) M@J).N@&$6$\@+?_\+FR"C$YU*!].74YU3E4``$CG#B`X+0`(,`3!_``&)$#5= M[(*82D1M"KAL@G9L!$J29A`Y?``"@HIP_TS?!'!.74YU""H`!P`$9@@O$DZZ< M``I83T*2<`!@XB(O``0L;(*43N[_W$[Z``(B+P`$+&R"E$[N_X(B+P`$+&R"* ME$[N_[@L;(*43N[_RBQL@I1.[O]\(B\`!"QL@I1.[O\H(B\`!"QL@I1.[O]JM M3.\`!@`$+&R"E$[N_ZQ,[P`&``0L;(*43N[_XBQL@I1.[O_$(B\`!"QL@I1.H M[O]D3OH``B(O``0L;(*43N[_IDSO``X`!"QL@I1.[O_02.<!!$SO((``#"QLX M@I!.KO^43-\@@$YU3OH``B)O``0L;(*03N[^8D[Z``),[P`#``0L;(*03N[_% M.D[Z``(B;P`$+&R"D$[N_MHL;(*03N[_?$[Z``(B;P`$("\`""QL@I!.[O\N! M(&\`!"QL@I!.[OZ,3OH``BQL@I`B;P`$("\`"$[N_=@B;P`$+&R"D$[N_H9,_ M[P`#``0L;(*03N[^SB!O``0L;(*03N[^@$SO`P``!"QL@K).[O^@(&\`!"QLS M@K).[O^F(&\`!"QL@K).[O^R```#[`````$````!```*``````````/R```#4 MZ@```*`````$````"@```!0````8````(0```"<````L````,@```#4`````? M,#$R,S0U-C<X.6%B8V1E9@```"`@("`@("`@(#`P,#`P("`@("`@("`@("`@R M("`@("`@D$!`0$!`0$!`0$!`0$!`0`P,#`P,#`P,#`Q`0$!`0$!`"0D)"0D)^ M`0$!`0$!`0$!`0$!`0$!`0$!`0%`0$!`0$`*"@H*"@H"`@("`@("`@("`@("J M`@("`@("`D!`0$`@``````````````````$``````0``````````````````P M```!`0````$``````````````````````0(````!````````````````````' M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M````````````````````````````````````````````````````````````` M`````!0````````````````#[`````D```````````````0````(````#```D F`!`````4````&````!P````@`````````_(```/K`````0```_((9 `` end size 7508 SHAR_EOF cat << \SHAR_EOF > README ************************************************************************* * MAN.C: A simple UNIX-like "man" command. * 100% PUBLIC DOMAIN. 1-16-89 * Daniel Barrett, barrett@cs.jhu.edu ************************************************************************* Here is a VERY simple and short program inspired by the UNIX "man" command. I got sick of continually hunting for documentation on programs, so I put all the documentation files in a nicely-organized directory hierarchy. This program makes it easy to find and read that documentation at any time. I think this program will be most useful to people with hard drives, since they can keep all your documentation on-line all the time. However, it is certainly useable from floppies. Try it out and see! You might just name one floppy "MAN:" and keep all your documentation on it. "Man" allows you to look up documentation for a command by saying: Man command-name See the file "Man.doc" for more specific information. See also the source code. Have fun, and feel free to make this program more sophisticated if you want. Dan SHAR_EOF cat << \SHAR_EOF > man.doc MAN(0) Dan's Programmer's Manual MAN(0) NAME man - look up documentation on a command SYNOPSIS man [-d directory] command_1 command_2 ... command_N man ? DESCRIPTION "Man" looks in the volume or directory "MAN:" for information about the given commands, and then displays it on the screen. This is version 2.0. Unlike the original version, "Man" now checks a defined set of subdirectories in MAN:, and not MAN: itself. This makes organizing your documentation easier, and there is no noticeable decrease in search speed. (Particularly on a hard drive with Fast Filesystem!) If you specify the "-d directory" option, only the named subdirectory (in MAN:) is searched; any others are ignored. [Note: if you want to search MAN: itself, not its subdirectories, you can type: Man -d "" command ] When the requested documentation is found, it is displayed using the program "More", found on the Amiga "Extras" disk. (Make sure that "More" is in your search path.) You can use a different text display program by changing the value of "MORE" in the source code. If no documentation is found, you are told. Typing "Man" or "Man ?" prints usage information, as well as the list of subdirectories (in MAN:) that it searches in order. These directory names are easily changed in the source code. BEFORE USING MAN First, assign MAN: to some directory someplace. Second, type "Man" alone to see what subdirectories it searches. Create these subdirectories in MAN:. Third, put your documentation files in these subdirectories. THE NAME OF EACH DOCUMENTATION FILE MUST BE THE SAME AS THE NAME OF THE PROGRAM IT DOCUMENTS. EXAMPLES Man list cd dir info Searches the subdirectories of MAN: for documentation files called "list", "cd", "dir", and "info", displaying them as it finds them. Man -d Graphics DPaint Animator Searches only the directory MAN:Graphics for documentation files called "DPaint" and "Animator", displaying them as it finds them. FILES MAN: Manual directory. More File viewing program, must be in your search path. c:Assign For "Assign MAN: some-directory-of-your-choice". COMPILING I used MANX C, with 16-bit integers: cc man.c ln man.o -lc BUGS None that I know of. It's a very simple program. AUTHOR Daniel Barrett: barrett@cs.jhu.edu, ins_adjb@jhunix.UUCP. Finished 1-16-89. MAN Executable program and source code are 100% PUBLIC DOMAIN. SHAR_EOF # End of shell archive exit 0 -- Bob Page, U of Lowell CS Dept. page@swan.ulowell.edu ulowell!page Have five nice days.