summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Kost <ensonic@users.sf.net>2010-10-07 15:49:05 +0300
committerStefan Kost <ensonic@users.sf.net>2010-10-07 15:49:05 +0300
commitd07c4b3c17fb54ec151d7b0808880b881a68999a (patch)
treeb2d12daaedc6a2704aa79dd0c0df9a4f1c22762d
parentaaf1f5b852e6f2caf4d07af83a0539c7fcb456b9 (diff)
tracelib: allow "-" as a logfile-name for stdout
-rw-r--r--README1
-rw-r--r--src/gsttracelib.c26
2 files changed, 18 insertions, 9 deletions
diff --git a/README b/README
index a345675..9622923 100644
--- a/README
+++ b/README
@@ -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);
}