X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Futil.c;h=0939ea9456bde70eaf193a65002ffe8d0665774c;hb=3e24da51b9eebc950d3d0d39f87cfcf406b281dd;hp=47da11c1b8b0ce3633e352a8ce26be0ee081ec9b;hpb=97c4a07df982ee967705022feaba9be33947abf0;p=elogind.git diff --git a/src/util.c b/src/util.c index 47da11c1b..0939ea945 100644 --- a/src/util.c +++ b/src/util.c @@ -602,7 +602,7 @@ int parse_env_file( const char *fname, const char *seperator, ...) { - int r; + int r = 0; char *contents, *p; assert(fname); @@ -641,8 +641,8 @@ int parse_env_file( n = strcspn(p, seperator); if (n >= 2 && - strchr(QUOTES, v[0]) && - v[n-1] == v[0]) + strchr(QUOTES, p[0]) && + p[n-1] == p[0]) v = strndup(p+1, n-2); else v = strndup(p, n); @@ -657,6 +657,8 @@ int parse_env_file( *value = v; p += n; + + r ++; break; } va_end(ap); @@ -666,8 +668,6 @@ int parse_env_file( p += strcspn(p, seperator); } - r = 0; - fail: free(contents); return r; @@ -2009,23 +2009,29 @@ int read_one_char(FILE *f, char *ret, bool *need_nl) { } int ask(char *ret, const char *replies, const char *text, ...) { + bool on_tty; + assert(ret); assert(replies); assert(text); + on_tty = isatty(STDOUT_FILENO); + for (;;) { va_list ap; char c; int r; bool need_nl = true; - fputs("\x1B[1m", stdout); + if (on_tty) + fputs("\x1B[1m", stdout); va_start(ap, text); vprintf(text, ap); va_end(ap); - fputs("\x1B[0m", stdout); + if (on_tty) + fputs("\x1B[0m", stdout); fflush(stdout);