iAdd number support to umnlisting.dcgi. - geomyidae - A small C-based gopherd. Err bitreich.org 70 hgit clone git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ URL:git://bitreich.org/geomyidae/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/geomyidae/ bitreich.org 70 1Log /scm/geomyidae/log.gph bitreich.org 70 1Files /scm/geomyidae/files.gph bitreich.org 70 1Refs /scm/geomyidae/refs.gph bitreich.org 70 1Tags /scm/geomyidae/tag bitreich.org 70 1README /scm/geomyidae/file/README.gph bitreich.org 70 1LICENSE /scm/geomyidae/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 5f8346a44327a384b989b92ec9936389ea0ff58b /scm/geomyidae/commit/5f8346a44327a384b989b92ec9936389ea0ff58b.gph bitreich.org 70 1parent a541c4f4710d4e11847d082a623e11ab8fca6c31 /scm/geomyidae/commit/a541c4f4710d4e11847d082a623e11ab8fca6c31.gph bitreich.org 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net bitreich.org 70 iDate: Sun, 3 Apr 2022 23:59:22 +0200 Err bitreich.org 70 i Err bitreich.org 70 iAdd number support to umnlisting.dcgi. Err bitreich.org 70 i Err bitreich.org 70 iNoone has done this before for all cases! Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M cgi-examples/umnlisting.dcgi | 52 ++++++++++++++++++++++++++----- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 45 insertions(+), 7 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/cgi-examples/umnlisting.dcgi b/cgi-examples/umnlisting.dcgi /scm/geomyidae/file/cgi-examples/umnlisting.dcgi.gph bitreich.org 70 i@@ -96,12 +96,15 @@ def main(args): Err bitreich.org 70 i fd.close() Err bitreich.org 70 i Err bitreich.org 70 i outputlinks = {} Err bitreich.org 70 i+ numblinks = {} Err bitreich.org 70 i Err bitreich.org 70 i linkspath = "%s/.Links" % (basedir) Err bitreich.org 70 i if os.path.exists(linkspath): Err bitreich.org 70 i linkslinks = parselinksfile(linkspath) Err bitreich.org 70 i for linkkey in linkslinks.keys(): Err bitreich.org 70 i outputlinks[linkkey] = linkslinks[linkkey] Err bitreich.org 70 i+ if "number" in linkslinks[linkkey]: Err bitreich.org 70 i+ numblinks[linkkey] = linkslinks[linkkey] Err bitreich.org 70 i Err bitreich.org 70 i entries = os.listdir(basedir) Err bitreich.org 70 i for entry in entries: Err bitreich.org 70 i@@ -116,6 +119,8 @@ def main(args): Err bitreich.org 70 i if os.path.exists(capspath): Err bitreich.org 70 i caplink = parselinksfile(capspath, entrylink) Err bitreich.org 70 i outputlinks[entrylink["path"]] = entrylink Err bitreich.org 70 i+ if "number" in entrylink: Err bitreich.org 70 i+ numblinks[entrylink["path"]] = entrylink Err bitreich.org 70 i Err bitreich.org 70 i namespath = "%s/.names" % (basedir) Err bitreich.org 70 i if os.path.exists(namespath): Err bitreich.org 70 i@@ -128,6 +133,9 @@ def main(args): Err bitreich.org 70 i namelink[key] Err bitreich.org 70 i else: Err bitreich.org 70 i outputlinks[namekey] = nameslinks[namekey] Err bitreich.org 70 i+ if "number" in outputlinks[namekey]: Err bitreich.org 70 i+ numblinks[namekey] = outputlinks[namekey] Err bitreich.org 70 i+ Err bitreich.org 70 i displaylinks = {} Err bitreich.org 70 i for link in outputlinks.keys(): Err bitreich.org 70 i if "name" in outputlinks[link]: Err bitreich.org 70 i@@ -143,13 +151,41 @@ def main(args): Err bitreich.org 70 i displaylinks[link] = link Err bitreich.org 70 i Err bitreich.org 70 i displaykeys = sorted(displaylinks) Err bitreich.org 70 i- for key in displaykeys: Err bitreich.org 70 i- path = displaylinks[key] Err bitreich.org 70 i- if path == "./.Links" or \ Err bitreich.org 70 i- path == "./.cap" or \ Err bitreich.org 70 i- path == "./.names" or \ Err bitreich.org 70 i- path == "./.abstract": Err bitreich.org 70 i- continue Err bitreich.org 70 i+ for dotfile in [".Links", ".names", ".cap", ".abstract"]: Err bitreich.org 70 i+ try: Err bitreich.org 70 i+ displaykeys.remove(dotfile) Err bitreich.org 70 i+ except ValueError: Err bitreich.org 70 i+ pass Err bitreich.org 70 i+ Err bitreich.org 70 i+ # This is why the UMN format really sucks. Err bitreich.org 70 i+ numbers = {} Err bitreich.org 70 i+ for numb in numblinks.keys(): Err bitreich.org 70 i+ link = outputlinks[numb] Err bitreich.org 70 i+ numbers[link["number"]] = outputlinks[numb] Err bitreich.org 70 i+ if "name" in link: Err bitreich.org 70 i+ displaykeys.remove(link["name"]) Err bitreich.org 70 i+ elif "path" in link: Err bitreich.org 70 i+ if link["path"].startswith("./"): Err bitreich.org 70 i+ displaykeys.remove(link["path"][2:]) Err bitreich.org 70 i+ else: Err bitreich.org 70 i+ displaykeys.remove(link["path"]) Err bitreich.org 70 i+ Err bitreich.org 70 i+ curnumber = 1 Err bitreich.org 70 i+ while 1: Err bitreich.org 70 i+ if curnumber in numbers.keys(): Err bitreich.org 70 i+ path = numbers[curnumber]["path"] Err bitreich.org 70 i+ numbers.pop(curnumber) Err bitreich.org 70 i+ else: Err bitreich.org 70 i+ key = displaykeys.pop() Err bitreich.org 70 i+ path = displaylinks[key] Err bitreich.org 70 i+ Err bitreich.org 70 i+ # Work on the rest of the numbered links, when no display Err bitreich.org 70 i+ # entries are left. Err bitreich.org 70 i+ if len(displaykeys) == 0: Err bitreich.org 70 i+ if len(numbers) == 0: Err bitreich.org 70 i+ break Err bitreich.org 70 i+ randnumb = numbers.pop() Err bitreich.org 70 i+ path = randnumb["path"] Err bitreich.org 70 i Err bitreich.org 70 i link = outputlinks[path] Err bitreich.org 70 i if "port" not in link: Err bitreich.org 70 i@@ -174,6 +210,8 @@ def main(args): Err bitreich.org 70 i if "abstract" in link: Err bitreich.org 70 i dcgifilterprint(link["abstract"].split("\n")) Err bitreich.org 70 i Err bitreich.org 70 i+ curnumber += 1 Err bitreich.org 70 i+ Err bitreich.org 70 i return 0 Err bitreich.org 70 i Err bitreich.org 70 i if __name__ == "__main__": Err bitreich.org 70 .