info: move __FILE__ path shortening into default log handler
authorTim-Philipp Müller <tim@centricular.com>
Thu, 5 Mar 2015 17:54:04 +0000 (17:54 +0000)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 5 Mar 2015 17:57:58 +0000 (17:57 +0000)
Instead of always shortening the __FILE__ path, even if the
log message is not actually printed, which might happen if
the log level is activated but the category is not, only
shorten the path if we're actually going to output it and
if it looks like it needs shortening. Log handlers had no
guarantee that they would get a name instead of a path
anyway on any architecture, so it shouldn't be a problem.

https://bugzilla.gnome.org/show_bug.cgi?id=745213

gst/gstinfo.c

index f945786..a506823 100644 (file)
@@ -495,11 +495,6 @@ gst_debug_log_valist (GstDebugCategory * category, GstDebugLevel level,
   g_return_if_fail (function != NULL);
   g_return_if_fail (format != NULL);
 
-  /* The predefined macro __FILE__ is always the exact path given to the
-   * compiler with MSVC, which may or may not be the basename.  We work
-   * around it at runtime to improve the readability. */
-  file = gst_path_basename (file);
-
   message.message = NULL;
   message.format = format;
   G_VA_COPY (message.arguments, args);
@@ -991,10 +986,20 @@ gst_debug_log_default (GstDebugCategory * category, GstDebugLevel level,
   gchar *obj = NULL;
   GstDebugColorMode color_mode;
   FILE *log_file = user_data ? user_data : stderr;
+  gchar c;
 
   if (level > gst_debug_category_get_threshold (category))
     return;
 
+  /* __FILE__ might be a file name or an absolute path or a
+   * relative path, irrespective of the exact compiler used,
+   * in which case we want to shorten it to the filename for
+   * readability. */
+  c = file[0];
+  if (c == '.' || c == '/' || c == '\\' || (c != '\0' && file[1] == ':')) {
+    file = gst_path_basename (file);
+  }
+
   pid = getpid ();
   color_mode = gst_debug_get_color_mode ();