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"] > /dev/stderr; 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"); for (d in descr){ 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, /[:blank:]*,[:blank:]*/); 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); split(category[i,"Description"], descr, "\n"); for (d in descr){ info_line(descr[d], "Err", HOST, PORT, dst); } } function get_link_categories(a){ delete cats; split(a, cats, /[:blank:]*,[:blank:]*/); for (k in cats){ gsub(/ +/, "", cats[k]); } } ######################################## function render_init(){ } function render_categories(category, cnum, link, lnum){ for (i=1; i<=cnum; i++){ cname=category[i,"Name"]; cfiles[cname]=BASEDIR category[i,"Selector"]; "dirname " cfiles[cname] | getline bdir; if (system("ls -d " bdir " >/dev/null") >0){ system("mkdir " bdir); } cmd=sprintf("rm -f %s", cfiles[cname]); system(cmd); category_header(category, i, cfiles[cname]); category_in_parents(category, i); } } function render_post_categories(category, cnum){ } function render_links(category, cnum, link, lnum){ 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(category, cnum, link, lnum){ 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"]]; } }