From 0674deaed1dc59ee9c7c14ed147cd4c4c90abe09 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Mon, 2 Oct 2023 15:06:05 -0500 Subject: [PATCH] Commit xgetdelim() used by fold(). (Oops.) --- lib/lib.h | 1 + lib/xwrap.c | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/lib.h b/lib/lib.h index bae750c2..bc4ff962 100644 --- a/lib/lib.h +++ b/lib/lib.h @@ -179,6 +179,7 @@ void xsignal_flags(int signal, void *handler, int flags); void xsignal(int signal, void *handler); time_t xvali_date(struct tm *tm, char *str); void xparsedate(char *str, time_t *t, unsigned *nano, int endian); +char *xgetdelim(FILE *fp, int delim); char *xgetline(FILE *fp); time_t xmktime(struct tm *tm, int utc); diff --git a/lib/xwrap.c b/lib/xwrap.c index 5ea47d4c..c47276c4 100644 --- a/lib/xwrap.c +++ b/lib/xwrap.c @@ -481,7 +481,7 @@ int xtempfile(char *name, char **tempname) { int fd; - *tempname = xmprintf("%s%s", name, "XXXXXX"); + *tempname = xmprintf("%s%s", name, "XXXXXX"); if(-1 == (fd = mkstemp(*tempname))) error_exit("no temp file"); return fd; @@ -1107,22 +1107,29 @@ void xparsedate(char *str, time_t *t, unsigned *nano, int endian) free(oldtz); } -// Return line of text from file. Strips trailing newline (if any). -char *xgetline(FILE *fp) +// Return line of text from file. +char *xgetdelim(FILE *fp, int delim) { char *new = 0; size_t len = 0; long ll; errno = 0; - if (1>(ll = getline(&new, &len, fp))) { + if (1>(ll = getdelim(&new, &len, delim, fp))) { if (errno && errno != EINTR) perror_msg("getline"); + free(new); new = 0; - } else if (new[ll-1] == '\n') new[--ll] = 0; + } return new; } +// Return line of text from file. Strips trailing newline (if any). +char *xgetline(FILE *fp) +{ + return chomp(xgetdelim(fp, '\n')); +} + time_t xmktime(struct tm *tm, int utc) { char *old_tz = utc ? xtzset("UTC0") : 0; -- 2.39.2