SMOLNET PORTAL home about changes
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
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/geomyidae/commit/5f8346a44327...
Content-Typetext/plain; charset=utf-8