iadd function to check server/hostname - gopher-validator - Simple gopher menu validator. Err bitreich.org 70
hgit clone git://bitreich.org/gopher-validator git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/gopher-validator URL:git://bitreich.org/gopher-validator git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/gopher-validator bitreich.org 70
1Log /scm/gopher-validator/log.gph bitreich.org 70
1Files /scm/gopher-validator/files.gph bitreich.org 70
1Refs /scm/gopher-validator/refs.gph bitreich.org 70
1Tags /scm/gopher-validator/tag bitreich.org 70
1README /scm/gopher-validator/file/README.gph bitreich.org 70
1LICENSE /scm/gopher-validator/file/LICENSE.gph bitreich.org 70
i--- Err bitreich.org 70
1commit e4a622665300d0c8c5ce1a4fa6608f6733f3c191 /scm/gopher-validator/commit/e4a622665300d0c8c5ce1a4fa6608f6733f3c191.gph bitreich.org 70
1parent 5ca656215b1e77b7fef4dcf37cd6e429146b9426 /scm/gopher-validator/commit/5ca656215b1e77b7fef4dcf37cd6e429146b9426.gph bitreich.org 70
hAuthor: Hiltjo Posthuma <hiltjo@codemadness.org> URL:mailto:hiltjo@codemadness.org bitreich.org 70
iDate: Sat, 10 Aug 2019 20:27:37 +0200 Err bitreich.org 70
i Err bitreich.org 70
iadd function to check server/hostname Err bitreich.org 70
i Err bitreich.org 70
ithis check is incomplete, but should cover some cases Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M gopher-validator.c | 38 +++++++++++++++++++++++++++++++ Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 38 insertions(+), 0 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/gopher-validator.c b/gopher-validator.c /scm/gopher-validator/file/gopher-validator.c.gph bitreich.org 70
i@@ -130,6 +130,41 @@ warning(const char *fmt, ...) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i int Err bitreich.org 70
i+isvalidserver(const char *s) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ int colons; Err bitreich.org 70
i+ Err bitreich.org 70
i+ /* IPv6 */ Err bitreich.org 70
i+ if (*s == '[') { Err bitreich.org 70
i+ colons = 0; Err bitreich.org 70
i+ s++; Err bitreich.org 70
i+ for (; *s; s++) { Err bitreich.org 70
i+ if (*s == ':') Err bitreich.org 70
i+ colons++; Err bitreich.org 70
i+ else if (*s == ']') Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ else if (isxdigit((unsigned char)*s)) Err bitreich.org 70
i+ ; Err bitreich.org 70
i+ else Err bitreich.org 70
i+ return 0; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ if (colons < 2 || *s != ']') Err bitreich.org 70
i+ return 0; Err bitreich.org 70
i+ } else { Err bitreich.org 70
i+ if (!*s) Err bitreich.org 70
i+ return 0; Err bitreich.org 70
i+ for (; *s; s++) { Err bitreich.org 70
i+ if (!isalpha((unsigned char)*s) && Err bitreich.org 70
i+ !isdigit((unsigned char)*s) && Err bitreich.org 70
i+ *s != '-' && *s != '.') Err bitreich.org 70
i+ return 0; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ } Err bitreich.org 70
i+ Err bitreich.org 70
i+ return 1; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+int Err bitreich.org 70
i edial(const char *host, const char *port) Err bitreich.org 70
i { Err bitreich.org 70
i struct addrinfo hints, *res, *res0; Err bitreich.org 70
i@@ -312,6 +347,9 @@ checkdir(FILE *fp) Err bitreich.org 70
i } Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i+ if (!isvalidserver(v.server)) Err bitreich.org 70
i+ error("%zu: invalid server: %s\n", linenr, v.server); Err bitreich.org 70
i+ Err bitreich.org 70
i /* check port, must be numeric and in range, port 0 is allowed: Err bitreich.org 70
i "Appendix: Err bitreich.org 70
i Note: Port corresponds the the TCP Port Number, its value should Err bitreich.org 70
.
Response:
text/plain