diff options
author | Stefan Kost <ensonic@users.sf.net> | 2010-10-07 15:49:05 +0300 |
---|---|---|
committer | Stefan Kost <ensonic@users.sf.net> | 2010-10-07 15:49:05 +0300 |
commit | d07c4b3c17fb54ec151d7b0808880b881a68999a (patch) | |
tree | b2d12daaedc6a2704aa79dd0c0df9a4f1c22762d | |
parent | aaf1f5b852e6f2caf4d07af83a0539c7fcb456b9 (diff) |
tracelib: allow "-" as a logfile-name for stdout
-rw-r--r-- | README | 1 | ||||
-rw-r--r-- | src/gsttracelib.c | 26 |
2 files changed, 18 insertions, 9 deletions
@@ -38,6 +38,7 @@ If it is installed, one can use the 'gsttl' wrapper script to ldpreload the lib. There are some additional env vars to influence the behaviour: GSTTL_LOG_NAME - full path to log file "/tmp/gsttl.log" if empty + "-" for stdout GSTTL_LOG_SIZE - size of preallocated logbuffer if not given or 0 gsttracelib uses linebuffered file logging, if a size is given a memory buffer of that many bytes is preallocated and all diff --git a/src/gsttracelib.c b/src/gsttracelib.c index 5710ecd..91ce59f 100644 --- a/src/gsttracelib.c +++ b/src/gsttracelib.c @@ -197,11 +197,15 @@ _log_entry_file (const gchar *fmt, ...) va_list ap; if (G_UNLIKELY(!log_file)) { - if (!(log_file = fopen (gsttl_log_name, "w"))) { - fprintf (stderr, "Can't open log file %s : %s\n", gsttl_log_name, strerror (errno)); - return; + if(strcmp(gsttl_log_name,"-")) { + if (!(log_file = fopen (gsttl_log_name, "w"))) { + fprintf (stderr, "Can't open log file %s : %s\n", gsttl_log_name, strerror (errno)); + return; + } + setlinebuf(log_file); + } else { + log_file=stdout; } - setlinebuf(log_file); } va_start(ap, fmt); @@ -1966,7 +1970,7 @@ gst_preload_done (void) done: /* free ressources */ if(!gsttl_log_size) { - if (log_file) fclose (log_file); + if (log_file && log_file!=stdout) fclose (log_file); if (log_sock) close(log_sock); g_free (gsttl_log_host); } else { @@ -1974,11 +1978,15 @@ done: fprintf (stderr, "Log buffer was too small; %lu given, but %lu needed\n", gsttl_log_size, log_ptr); log_ptr = log_end; } - if (!(log_file = fopen (gsttl_log_name, "w"))) { - fprintf (stderr, "Can't open log file %s : %s\n", gsttl_log_name, strerror (errno)); + if(strcmp(gsttl_log_name,"-")) { + if (!(log_file = fopen (gsttl_log_name, "w"))) { + fprintf (stderr, "Can't open log file %s : %s\n", gsttl_log_name, strerror (errno)); + } else { + fwrite (log_buf, log_ptr, 1, log_file); + fclose (log_file); + } } else { - fwrite (log_buf, log_ptr, 1, log_file); - fclose (log_file); + fwrite (stdout, log_ptr, 1, log_file); } g_free (log_buf); } |