Skip to content
Snippets Groups Projects
Commit c2642fc2 authored by Henrik (Grubba) Grubbström's avatar Henrik (Grubba) Grubbström
Browse files

Added creation of whatis.

Rev: tutorial/manpages:1.10
parent ce74049e
No related branches found
No related tags found
No related merge requests found
...@@ -3,6 +3,7 @@ inherit Stdio.File : out; ...@@ -3,6 +3,7 @@ inherit Stdio.File : out;
string globalbase; string globalbase;
object windex; object windex;
object whatis;
// Conversion table: // Conversion table:
// //
...@@ -26,7 +27,7 @@ void mkdirhier(string what) ...@@ -26,7 +27,7 @@ void mkdirhier(string what)
string make_manpage(string base, SGML data, string ind, string fbase) string make_manpage(string base, SGML data, string ind, string fbase)
{ {
string res=""; string res="";
int stripws=1; int stripws=0;
if (stringp(data)) if (stringp(data))
{ {
...@@ -106,63 +107,66 @@ void make_page(string base, TAG tag, string ind, string fbase) ...@@ -106,63 +107,66 @@ void make_page(string base, TAG tag, string ind, string fbase)
mixed err = catch { mixed err = catch {
string *outfiles,*names,*s_outfiles; string *outfiles,*names,*s_outfiles;
string obase=base; string obase=base;
string q; string q;
outfiles=Array.map(names=tag->params->name/",", outfiles=Array.map(names=tag->params->name/",",
lambda(string s,string t,string u,string base) lambda(string s,string t,string u,string base)
{ {
s=replace(s,"->","."); s=replace(s,"->",".");
sscanf(s,t+".%s",s); sscanf(s,t+".%s",s);
return u+"/"+s+"."+base; return u+"/"+s+"."+base;
},fbase,globalbase+base,base); },fbase,globalbase+base,base);
sscanf(outfiles[0],"%*s/man%*s/%s",q); sscanf(outfiles[0],"%*s/man%*s/%s",q);
if (q) { if (q) {
array(string) a = q/"."; array(string) a = q/".";
if (sizeof(a) > 1) { if (sizeof(a) > 1) {
q = a[..sizeof(a)-2]*"."; q = a[..sizeof(a)-2]*".";
}
} }
}
// werror("files: "+outfiles*", "+"\n"); // werror("files: "+outfiles*", "+"\n");
if (tag->params->mansuffix) if (tag->params->mansuffix)
{ {
base+=tag->params->mansuffix; base+=tag->params->mansuffix;
fbase=(tag->params->name/",")[0]; fbase=(tag->params->name/",")[0];
mkdirhier(globalbase+base); 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"); // werror("creating "+outfiles[0]+"...\n");
object f=Stdio.File(outfiles[0],"wtc"); object f=Stdio.File(outfiles[0],"wtc");
string t=ctime(time()); string t=ctime(time());
f->write(strip_eightbit(".\\\" t\n" f->write(strip_eightbit(".\\\" t\n"
".\\\" automatic generated from wmml\n" ".\\\" automatically generated from wmml\n"
".TH "+names*","+" "+obase+" \""+ ".TH "+names*","+" "+upper_case(obase)+" \""+
t[8..9]+t[3..7]+t[20..23]+"\" Pike \"Pike Manual\"\n" t[8..9]+t[3..7]+t[20..23]+"\" Pike \"Pike Manual\"\n"
+page+"\n")); +page+"\n"));
f->close(); f->close();
foreach (outfiles[1..],string s) foreach (outfiles[1..], string s)
{ {
string name; string name;
sscanf(outfiles[0],"man/%s",name); sscanf(outfiles[0], "man/%s", name);
// werror("creating "+s+" -> "+name+"...\n"); // werror("creating "+s+" -> "+name+"...\n");
object f=Stdio.File(s ,"wtc"); object f=Stdio.File(s, "wtc");
f->write(".so "+name+"\n"); f->write(".so "+name+"\n");
f->close(); f->close();
} }
foreach (({q})+names,string s)
windex->write(sprintf("%-15s %-15s - %s\n",
s,q+" ("+obase+")",
tag->params->title || (names*", ")));
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) if (err)
werror("Error while making manpage for "+tag->name+" ("+base+"):\n" werror("Error while making manpage for "+tag->name+" ("+base+"):\n"
...@@ -184,6 +188,8 @@ void output(string base, WMML data) ...@@ -184,6 +188,8 @@ void output(string base, WMML data)
{ {
globalbase="man/man"; globalbase="man/man";
mkdirhier("man/man3p"); mkdirhier("man/man3p");
windex=Stdio.File("man/windex","wtc"); windex=Stdio.File("man/windex", "wtc");
make_pages("3p",data->data,"",""); whatis=Stdio.File("man/whatis", "wtc");
make_pages("3p", data->data, "", "");
werror("\n");
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment