function mylen(a){ l=0; for (d in a) l+=1; return l; } function info_line(name, sel, host, port, dst){ printf("[i|%s|%s|%s|%s]\r\n", name, sel, host, port) > dst; } function show_link(l, i, dst){ if(l[i,"Category"] == "") print "Uncategorised link:", l[i,"Selector"]; else{ printf("[1|%s|%s|%s|%s]\r\n", l[i,"LinkName"], l[i,"Selector"], l[i,"Host"], l[i,"Port"] ) > dst; split(l[i,"Description"], descr, "\n"); dl=mylen(descr); for (d=1;d<=dl;d++){ info_line(descr[d],"Err", HOST, PORT, dst); } info_line("", "Err", HOST, PORT, dst); } } function show_category_link(category, i, dst){ printf("[1|%s|%s|%s|%s]\r\n", category[i,"LinkName"], category[i,"Selector"], category[i,"Host"], category[i,"Port"]) > dst; } function get_parents(a){ delete pars; split(a, pars, /\ \f\n\r\t\v*,\ \f\n\r\t\v*/); for (k in pars){ gsub(/ +/, "", pars[k]); } } function category_in_parents(category, i){ get_parents(category[i,"Parent"]); for (p in pars){ if (pars[p]!="none"){### the root page does not have parents... dst=cfiles[pars[p]]; if (has_categories[pars[p]] == ""){ info_line("", "Err", HOST, PORT, dst); info_line("Sub-categories:", "Err", HOST, PORT, dst) ; } has_categories[pars[p]]=1; show_category_link(category, i, dst); } } } function category_header(category, i, dst){ info_line(category[i,"Title"], "Err", HOST, PORT, dst); info_line("", "Err", HOST, PORT, dst); delete descr split(category[i,"Description"], descr, "\n"); dl=mylen(descr); for (d=1;d<=dl;d++){ info_line(descr[d], "Err", HOST, PORT, dst); } } function get_link_categories(a){ delete cats; split(a, cats, /([\ \f\n\r\t\v*],[\ \f\n\r\t\v]*|,[\ \f\n\r\t\v]*)/); for (k in cats){ gsub(/ +/, "", cats[k]); } } ######################################## function render_init(){ } function render_categories(){ for (i=1; i<=cnum; i++){ cname=category[i,"Name"]; cfiles[cname]=BASEDIR category[i,"Selector"]; cmd="dirname " cfiles[cname]; cmd | getline bdir; cmd="ls -d " bdir " 2>/dev/null"; if (system(cmd) != 0){ cmd="mkdir -p " bdir; system(cmd); } cmd=sprintf("rm -f %s", cfiles[cname]); system(cmd); category_header(category, i, cfiles[cname]); category_in_parents(category, i); } } function render_post_categories(){ } function render_links(){ for (i=1;i<=lnum;i++){ get_link_categories(link[i,"Category"]); for (c in cats){ if (cfiles[cats[c]]!=""){ dst=cfiles[cats[c]]; if (has_links[cats[c]] == ""){ info_line("_______________", "Err", \ HOST, PORT, dst); info_line("Links:", "Err", HOST, PORT,\ dst); } has_links[cats[c]]=1; show_link(link, i, dst); } } } } function render_finalise(){ for(i=1;i<=cnum; i++){ info_line("_______________", "Err", HOST, PORT, cfiles[category[i,"Name"]]); printf("[1|%s|%s|%s|%s]\r\n", "Back to the lawn", ROOTSEL, HOST, PORT ) > cfiles[category[i,"Name"]]; } } function dump_links(){ }