From 6a1082a947519458bc8b761b1e504aa4c84db13a Mon Sep 17 00:00:00 2001 From: Joachim Nilsson Date: Tue, 5 Feb 2019 10:33:00 +0100 Subject: [PATCH] New helper function: echo(), like shell echo but for C Signed-off-by: Joachim Nilsson --- src/util.c | 27 +++++++++++++++++++++++++++ src/util.h | 1 + 2 files changed, 28 insertions(+) diff --git a/src/util.c b/src/util.c index 34da1a57..e6689152 100644 --- a/src/util.c +++ b/src/util.c @@ -25,6 +25,7 @@ #include /* isprint() */ #include #include +#include #include #include #include /* sysinfo() */ @@ -46,6 +47,32 @@ char *progname(char *arg0) return prognm; } +int echo(char *file, int append, char *fmt, ...) +{ + va_list ap; + FILE *fp; + + if (!file) + fp = stdout; + else + fp = fopen(file, append ? "a" : "w"); + if (!fp) + return -1; + + if (fmt) { + va_start(ap, fmt); + vfprintf(fp, fmt, ap); + va_end(ap); + } + + /* echo(1) always adds a newline */ + fprintf(fp, "\n"); + if (file) + fclose(fp); + + return 0; +} + int strtobytes(char *arg) { int mod = 0, bytes; diff --git a/src/util.h b/src/util.h index 476afb44..d2e140ad 100644 --- a/src/util.h +++ b/src/util.h @@ -39,6 +39,7 @@ extern char *prognm; #include char *progname (char *arg0); +int echo (char *file, int append, char *fmt, ...); int strtobytes (char *arg); void do_sleep (unsigned int sec);