iscanfile(): reuse line-buffer - 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 925572f3afedf7a80e13edd1233cc04c1a4a60f0 /scm/geomyidae/commit/925572f3afedf7a80e13edd1233cc04c1a4a60f0.gph bitreich.org 70
1parent 2361134beb5458adbff043ea611884a090d56d42 /scm/geomyidae/commit/2361134beb5458adbff043ea611884a090d56d42.gph bitreich.org 70
hAuthor: Hiltjo Posthuma <hiltjo@codemadness.org> URL:mailto:hiltjo@codemadness.org bitreich.org 70
iDate: Sun, 11 Jun 2017 20:00:21 +0200 Err bitreich.org 70
i Err bitreich.org 70
iscanfile(): reuse line-buffer Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M ind.c | 20 ++++++++++++-------- Err bitreich.org 70
i Err bitreich.org 70
i1 file changed, 12 insertions(+), 8 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/ind.c b/ind.c /scm/geomyidae/file/ind.c.gph bitreich.org 70
i@@ -229,27 +229,31 @@ addindexs(Indexs *idx, Elems *el) Err bitreich.org 70
i Indexs * Err bitreich.org 70
i scanfile(char *fname) Err bitreich.org 70
i { Err bitreich.org 70
i- char *ln; Err bitreich.org 70
i- int fd; Err bitreich.org 70
i+ char *ln = NULL; Err bitreich.org 70
i+ size_t linesiz = 0; Err bitreich.org 70
i+ ssize_t n; Err bitreich.org 70
i+ FILE *fp; Err bitreich.org 70
i Indexs *ret; Err bitreich.org 70
i Elems *el; Err bitreich.org 70
i Err bitreich.org 70
i- fd = open(fname, O_RDONLY); Err bitreich.org 70
i- if(fd < 0) Err bitreich.org 70
i+ if (!(fp = fopen(fname, "r"))) Err bitreich.org 70
i return nil; Err bitreich.org 70
i Err bitreich.org 70
i ret = xcalloc(1, sizeof(Indexs)); Err bitreich.org 70
i Err bitreich.org 70
i- while((ln = readln(fd)) != nil) { Err bitreich.org 70
i+ while ((n = getline(&ln, &linesiz, fp)) > 0) { Err bitreich.org 70
i+ if (ln[n - 1] == '\n') Err bitreich.org 70
i+ ln[--n] = '\0'; Err bitreich.org 70
i el = getadv(ln); Err bitreich.org 70
i- free(ln); Err bitreich.org 70
i if(el == nil) Err bitreich.org 70
i continue; Err bitreich.org 70
i Err bitreich.org 70
i addindexs(ret, el); Err bitreich.org 70
i- el = nil; Err bitreich.org 70
i } Err bitreich.org 70
i- close(fd); Err bitreich.org 70
i+ if (ferror(fp)) Err bitreich.org 70
i+ perror("getline"); Err bitreich.org 70
i+ free(ln); Err bitreich.org 70
i+ fclose(fp); Err bitreich.org 70
i Err bitreich.org 70
i if(ret->n == nil) { Err bitreich.org 70
i free(ret); Err bitreich.org 70
.
Response:
text/plain