idetect name and description - stagit-gopher - A git gopher frontend. (mirror) Err bitreich.org 70 hgit clone git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/ URL:git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/ bitreich.org 70 1Log /scm/stagit-gopher/log.gph bitreich.org 70 1Files /scm/stagit-gopher/files.gph bitreich.org 70 1Refs /scm/stagit-gopher/refs.gph bitreich.org 70 1Tags /scm/stagit-gopher/tag bitreich.org 70 1README /scm/stagit-gopher/file/README.gph bitreich.org 70 1LICENSE /scm/stagit-gopher/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 3872d9e902722b0c85c7f5c6ef8975389167e7d9 /scm/stagit-gopher/commit/3872d9e902722b0c85c7f5c6ef8975389167e7d9.gph bitreich.org 70 1parent 7294b10b65ff8a91bd330108af98441ec4a05307 /scm/stagit-gopher/commit/7294b10b65ff8a91bd330108af98441ec4a05307.gph bitreich.org 70 hAuthor: Hiltjo Posthuma URL:mailto:hiltjo@codemadness.org bitreich.org 70 iDate: Sat, 5 Dec 2015 20:59:14 +0100 Err bitreich.org 70 i Err bitreich.org 70 idetect name and description Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M urmoms.c | 82 +++++++++++++++++++++++-------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 62 insertions(+), 20 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/urmoms.c b/urmoms.c /scm/stagit-gopher/file/urmoms.c.gph bitreich.org 70 i@@ -1,4 +1,5 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i+#include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i@@ -8,12 +9,11 @@ Err bitreich.org 70 i Err bitreich.org 70 i static git_repository *repo; Err bitreich.org 70 i Err bitreich.org 70 i-static const char *relpath = ""; Err bitreich.org 70 i-static const char *name = ""; Err bitreich.org 70 i-static const char *description = ""; Err bitreich.org 70 i- Err bitreich.org 70 i+static const char *relpath; Err bitreich.org 70 i static const char *repodir = "."; Err bitreich.org 70 i Err bitreich.org 70 i+static char name[255]; Err bitreich.org 70 i+static char description[255]; Err bitreich.org 70 i static int hasreadme, haslicense; Err bitreich.org 70 i Err bitreich.org 70 i FILE * Err bitreich.org 70 i@@ -28,6 +28,41 @@ efopen(const char *name, const char *flags) Err bitreich.org 70 i return fp; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+void Err bitreich.org 70 i+concat(FILE *fp1, FILE *fp2) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ char buf[BUFSIZ]; Err bitreich.org 70 i+ size_t n; Err bitreich.org 70 i+ Err bitreich.org 70 i+ while ((n = fread(buf, 1, sizeof(buf), fp1))) { Err bitreich.org 70 i+ fwrite(buf, 1, n, fp2); Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (feof(fp1) || ferror(fp1) || ferror(fp2)) Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ } Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+/* Some implementations of basename(3) return a pointer to a static Err bitreich.org 70 i+ * internal buffer (OpenBSD). Others modify the contents of `path` (POSIX). Err bitreich.org 70 i+ * This is a wrapper function that is compatible with both versions. Err bitreich.org 70 i+ * The program will error out if basename(3) failed, this can only happen Err bitreich.org 70 i+ * with the OpenBSD version. */ Err bitreich.org 70 i+char * Err bitreich.org 70 i+xbasename(const char *path) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ char *p, *b; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (!(p = strdup(path))) Err bitreich.org 70 i+ err(1, "strdup"); Err bitreich.org 70 i+ if (!(b = basename(p))) Err bitreich.org 70 i+ err(1, "basename"); Err bitreich.org 70 i+ if (!(b = strdup(b))) Err bitreich.org 70 i+ err(1, "strdup"); Err bitreich.org 70 i+ free(p); Err bitreich.org 70 i+ Err bitreich.org 70 i+ return b; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i static void Err bitreich.org 70 i printtime(FILE *fp, const git_time * intime, const char *prefix) Err bitreich.org 70 i { Err bitreich.org 70 i@@ -98,7 +133,7 @@ writeheader(FILE *fp) Err bitreich.org 70 i "" Err bitreich.org 70 i "" Err bitreich.org 70 i ""); Err bitreich.org 70 i- fprintf(fp, "%s - %s", name, description); Err bitreich.org 70 i+ fprintf(fp, "%s%s%s", name, description[0] ? " - " : "", description); Err bitreich.org 70 i fprintf(fp, "" Err bitreich.org 70 i "
"); Err bitreich.org 70 i fprintf(fp, "

\"\" %s

", relpath, name); Err bitreich.org 70 i@@ -187,26 +222,12 @@ writebranches(FILE *fp) Err bitreich.org 70 i } Err bitreich.org 70 i #endif Err bitreich.org 70 i Err bitreich.org 70 i-void Err bitreich.org 70 i-concat(FILE *fp1, FILE *fp2) Err bitreich.org 70 i-{ Err bitreich.org 70 i- char buf[BUFSIZ]; Err bitreich.org 70 i- size_t n; Err bitreich.org 70 i- Err bitreich.org 70 i- while ((n = fread(buf, 1, sizeof(buf), fp1))) { Err bitreich.org 70 i- fwrite(buf, 1, n, fp2); Err bitreich.org 70 i- Err bitreich.org 70 i- if (feof(fp1) || ferror(fp1) || ferror(fp2)) Err bitreich.org 70 i- break; Err bitreich.org 70 i- } Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i int Err bitreich.org 70 i main(int argc, char *argv[]) Err bitreich.org 70 i { Err bitreich.org 70 i const git_error *e = NULL; Err bitreich.org 70 i FILE *fp, *fpread; Err bitreich.org 70 i- char path[PATH_MAX]; Err bitreich.org 70 i+ char path[PATH_MAX], *p; Err bitreich.org 70 i int status; Err bitreich.org 70 i Err bitreich.org 70 i if (argc != 2) { Err bitreich.org 70 i@@ -223,6 +244,26 @@ main(int argc, char *argv[]) Err bitreich.org 70 i exit(status); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+ /* use directory name as name */ Err bitreich.org 70 i+ p = xbasename(repodir); Err bitreich.org 70 i+ snprintf(name, sizeof(name), "%s", p); Err bitreich.org 70 i+ free(p); Err bitreich.org 70 i+ Err bitreich.org 70 i+ /* read description or .git/description */ Err bitreich.org 70 i+ snprintf(path, sizeof(path), "%s%s%s", Err bitreich.org 70 i+ repodir, repodir[strlen(repodir)] == '/' ? "" : "/", "description"); Err bitreich.org 70 i+ if (!(fpread = fopen(path, "r+b"))) { Err bitreich.org 70 i+ snprintf(path, sizeof(path), "%s%s%s", Err bitreich.org 70 i+ repodir, repodir[strlen(repodir)] == '/' ? "" : "/", ".git/description"); Err bitreich.org 70 i+ fpread = fopen(path, "r+b"); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ if (fpread) { Err bitreich.org 70 i+ if (!fgets(description, sizeof(description), fpread)) Err bitreich.org 70 i+ description[0] = '\0'; Err bitreich.org 70 i+ fclose(fpread); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ /* read LICENSE */ Err bitreich.org 70 i snprintf(path, sizeof(path), "%s%s%s", Err bitreich.org 70 i repodir, repodir[strlen(repodir)] == '/' ? "" : "/", "LICENSE"); Err bitreich.org 70 i if ((fpread = fopen(path, "r+b"))) { Err bitreich.org 70 i@@ -239,6 +280,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i haslicense = 1; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+ /* read README */ Err bitreich.org 70 i snprintf(path, sizeof(path), "%s%s%s", Err bitreich.org 70 i repodir, repodir[strlen(repodir)] == '/' ? "" : "/", "README"); Err bitreich.org 70 i if ((fpread = fopen(path, "r+b"))) { Err bitreich.org 70 .