X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Futil.c;h=ceea68488555858055f92169294aad7c563f33ef;hb=93d652d345ffa01376110a6e41340537efe87d4b;hp=241cade38939338b7a9cd541cc1e52add7130f24;hpb=2f4fb7c15c5017546238241ea318b16b9a032c52;p=oftp diff --git a/src/util.c b/src/util.c index 241cade..ceea684 100644 --- a/src/util.c +++ b/src/util.c @@ -54,6 +54,26 @@ int match_prefix(const char *str, const char *prefix) return *prefix ? 0 : 1; } +static FILE *logfile; + +static void closelog(void) +{ + fclose(logfile); +} + +static void logmsg(const char *tag, const char *fmt, va_list ap) +{ + if(!logfile) { + if(!(logfile = fopen("visftp.log", "w"))) { + return; + } + setvbuf(logfile, 0, _IOLBF, 0); + atexit(closelog); + } + fprintf(logfile, "%s: ", tag); + vfprintf(logfile, fmt, ap); +} + void errmsg(const char *fmt, ...) { va_list ap; @@ -61,6 +81,10 @@ void errmsg(const char *fmt, ...) va_start(ap, fmt); tui_vmsgbox(TUI_ERROR, "error", fmt, ap); va_end(ap); + + va_start(ap, fmt); + logmsg("error", fmt, ap); + va_end(ap); } void warnmsg(const char *fmt, ...) @@ -70,6 +94,10 @@ void warnmsg(const char *fmt, ...) va_start(ap, fmt); tui_status(TUI_WARN, fmt, ap); va_end(ap); + + va_start(ap, fmt); + logmsg("warning", fmt, ap); + va_end(ap); } void infomsg(const char *fmt, ...) @@ -79,4 +107,8 @@ void infomsg(const char *fmt, ...) va_start(ap, fmt); tui_status(TUI_INFO, fmt, ap); va_end(ap); + + va_start(ap, fmt); + logmsg("info", fmt, ap); + va_end(ap); }