X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=misc.c;h=474bf0249dd3d235a730a0a56c4a70ecdf6b5b86;hb=ba470dec5e37ffbde05425f48e7e9a64219aec2e;hp=50c38d57b7a1cc4673285c22a89214ad5fc1cb23;hpb=e8b2b6a5dcb04239bc431decb4adfc2bc4a10f25;p=PuTTY.git diff --git a/misc.c b/misc.c index 50c38d57..474bf024 100644 --- a/misc.c +++ b/misc.c @@ -141,6 +141,29 @@ char *dupvprintf(const char *fmt, va_list ap) } } +/* + * Read an entire line of text from a file. Return a buffer + * malloced to be as big as necessary (caller must free). + */ +char *fgetline(FILE *fp) +{ + char *ret = snewn(512, char); + int size = 512, len = 0; + while (fgets(ret + len, size - len, fp)) { + len += strlen(ret + len); + if (ret[len-1] == '\n') + break; /* got a newline, we're done */ + size = len + 512; + ret = sresize(ret, size, char); + } + if (len == 0) { /* first fgets returned NULL */ + sfree(ret); + return NULL; + } + ret[len] = '\0'; + return ret; +} + /* ---------------------------------------------------------------------- * Base64 encoding routine. This is required in public-key writing * but also in HTTP proxy handling, so it's centralised here.