"return 0 on success, -1 on error (pm_errno is set accordingly)"

Signed-off-by: Andrew Gregory <[email protected]>
---
 lib/libalpm/log.c | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/lib/libalpm/log.c b/lib/libalpm/log.c
index 602dd37..4383735 100644
--- a/lib/libalpm/log.c
+++ b/lib/libalpm/log.c
@@ -34,6 +34,17 @@
  * @{
  */
 
+static int _alpm_log_leader(FILE *f, const char *prefix)
+{
+       time_t t = time(NULL);
+       struct tm *tm = localtime(&t);
+
+       /* Use ISO-8601 date format */
+       return fprintf(f, "[%04d-%02d-%02d %02d:%02d] [%s] ",
+                       tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
+                       tm->tm_hour, tm->tm_min, prefix);
+}
+
 /** A printf-like function for logging.
  * @param handle the context handle
  * @param prefix caller-specific prefix for the log
@@ -84,14 +95,11 @@ int SYMEXPORT alpm_logaction(alpm_handle_t *handle, const 
char *prefix,
        }
 
        if(handle->logstream) {
-               time_t t = time(NULL);
-               struct tm *tm = localtime(&t);
-
-               /* Use ISO-8601 date format */
-               fprintf(handle->logstream, "[%04d-%02d-%02d %02d:%02d] [%s] ",
-                                               tm->tm_year + 1900, tm->tm_mon 
+ 1, tm->tm_mday,
-                                               tm->tm_hour, tm->tm_min, 
prefix);
-               ret = vfprintf(handle->logstream, fmt, args);
+               if(_alpm_log_leader(handle->logstream, prefix) < 0
+                               || vfprintf(handle->logstream, fmt, args) < 0) {
+                       ret = -1;
+                       handle->pm_errno = ALPM_ERR_SYSTEM;
+               }
                fflush(handle->logstream);
        }
 
-- 
2.3.5

Reply via email to