diff --git a/tutorial/manpages b/tutorial/manpages index 9686d0fcccfeb8e5126cf734b00f405401c07b7e..0ddde8964fcb2245da66a9d015475f3cc18b823a 100644 --- a/tutorial/manpages +++ b/tutorial/manpages @@ -3,6 +3,7 @@ inherit Stdio.File : out; string globalbase; object windex; +object whatis; // Conversion table: // @@ -26,7 +27,7 @@ void mkdirhier(string what) string make_manpage(string base, SGML data, string ind, string fbase) { string res=""; - int stripws=1; + int stripws=0; if (stringp(data)) { @@ -106,63 +107,66 @@ void make_page(string base, TAG tag, string ind, string fbase) mixed err = catch { - string *outfiles,*names,*s_outfiles; - string obase=base; - string q; - - outfiles=Array.map(names=tag->params->name/",", - lambda(string s,string t,string u,string base) - { - s=replace(s,"->","."); - sscanf(s,t+".%s",s); - return u+"/"+s+"."+base; - },fbase,globalbase+base,base); - - sscanf(outfiles[0],"%*s/man%*s/%s",q); - if (q) { - array(string) a = q/"."; - if (sizeof(a) > 1) { - q = a[..sizeof(a)-2]*"."; + string *outfiles,*names,*s_outfiles; + string obase=base; + string q; + + outfiles=Array.map(names=tag->params->name/",", + lambda(string s,string t,string u,string base) + { + s=replace(s,"->","."); + sscanf(s,t+".%s",s); + return u+"/"+s+"."+base; + },fbase,globalbase+base,base); + + sscanf(outfiles[0],"%*s/man%*s/%s",q); + if (q) { + array(string) a = q/"."; + if (sizeof(a) > 1) { + q = a[..sizeof(a)-2]*"."; + } } - } // werror("files: "+outfiles*", "+"\n"); - if (tag->params->mansuffix) - { - base+=tag->params->mansuffix; - fbase=(tag->params->name/",")[0]; - mkdirhier(globalbase+base); - } + if (tag->params->mansuffix) + { + base+=tag->params->mansuffix; + fbase=(tag->params->name/",")[0]; + mkdirhier(globalbase+base); + } - string page=make_manpage(base,tag->data,ind+" ",fbase); + string page=make_manpage(base,tag->data,ind+" ",fbase); // werror("creating "+outfiles[0]+"...\n"); - object f=Stdio.File(outfiles[0],"wtc"); - string t=ctime(time()); - f->write(strip_eightbit(".\\\" t\n" - ".\\\" automatic generated from wmml\n" - ".TH "+names*","+" "+obase+" \""+ - t[8..9]+t[3..7]+t[20..23]+"\" Pike \"Pike Manual\"\n" - +page+"\n")); - f->close(); - - foreach (outfiles[1..],string s) - { - string name; - sscanf(outfiles[0],"man/%s",name); -// werror("creating "+s+" -> "+name+"...\n"); - object f=Stdio.File(s ,"wtc"); - f->write(".so "+name+"\n"); - f->close(); - } - - foreach (({q})+names,string s) - windex->write(sprintf("%-15s %-15s - %s\n", - s,q+" ("+obase+")", - tag->params->title || (names*", "))); + object f=Stdio.File(outfiles[0],"wtc"); + string t=ctime(time()); + f->write(strip_eightbit(".\\\" t\n" + ".\\\" automatically generated from wmml\n" + ".TH "+names*","+" "+upper_case(obase)+" \""+ + t[8..9]+t[3..7]+t[20..23]+"\" Pike \"Pike Manual\"\n" + +page+"\n")); + f->close(); + + foreach (outfiles[1..], string s) + { + string name; + sscanf(outfiles[0], "man/%s", name); +// werror("creating "+s+" -> "+name+"...\n"); + object f=Stdio.File(s, "wtc"); + f->write(".so "+name+"\n"); + f->close(); + } + foreach (({q})+names, string s) { + windex->write(sprintf("%-15s %-15s - %s\n", + s,q+" ("+obase+")", + tag->params->title || (names*", "))); + whatis->write(sprintf("%-23s - %s\n", s, + tag->params->title || (names*", "))); + } + }; if (err) werror("Error while making manpage for "+tag->name+" ("+base+"):\n" @@ -184,6 +188,8 @@ void output(string base, WMML data) { globalbase="man/man"; mkdirhier("man/man3p"); - windex=Stdio.File("man/windex","wtc"); - make_pages("3p",data->data,"",""); + windex=Stdio.File("man/windex", "wtc"); + whatis=Stdio.File("man/whatis", "wtc"); + make_pages("3p", data->data, "", ""); + werror("\n"); }