[vlc-devel] [PATCH 1/3] objects: allow setting the output for DumpStructure

Steve Lhomme robux4 at ycbcr.xyz
Tue Mar 12 09:24:54 CET 2019


using stdout by default
---
 src/misc/objects.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/src/misc/objects.c b/src/misc/objects.c
index 1f92381c26..481536d258 100644
--- a/src/misc/objects.c
+++ b/src/misc/objects.c
@@ -85,7 +85,7 @@ static bool ObjectHasChild(vlc_object_t *obj)
     return false;
 }
 
-static void PrintObjectPrefix(vlc_object_t *obj, bool last)
+static void PrintObjectPrefix(vlc_object_t *obj, FILE *output, bool last)
 {
     vlc_object_t *parent = vlc_object_parent(obj);
     const char *str;
@@ -93,33 +93,33 @@ static void PrintObjectPrefix(vlc_object_t *obj, bool last)
     if (parent == NULL)
         return;
 
-    PrintObjectPrefix(parent, false);
+    PrintObjectPrefix(parent, output, false);
 
     if (ObjectIsLastChild(obj, parent))
         str = last ? " \xE2\x94\x94" : "  ";
     else
         str = last ? " \xE2\x94\x9C" : " \xE2\x94\x82";
 
-    fputs(str, stdout);
+    fputs(str, output);
 }
 
-static void PrintObject(vlc_object_t *obj)
+static void PrintObject(vlc_object_t *obj, FILE *output)
 {
     vlc_object_internals_t *priv = vlc_internals(obj);
 
     int canc = vlc_savecancel ();
 
-    PrintObjectPrefix(obj, true);
-    printf("\xE2\x94\x80\xE2\x94%c\xE2\x95\xB4%p %s, %u refs\n",
+    PrintObjectPrefix(obj, output, true);
+    fprintf(output, "\xE2\x94\x80\xE2\x94%c\xE2\x95\xB4%p %s, %u refs\n",
            ObjectHasChild(obj) ? 0xAC : 0x80,
            (void *)obj, vlc_object_typename(obj), atomic_load(&priv->refs));
 
     vlc_restorecancel (canc);
 }
 
-static void DumpStructure(vlc_object_t *obj, unsigned level)
+static void DumpStructure(vlc_object_t *obj, FILE *output, unsigned level)
 {
-    PrintObject(obj);
+    PrintObject(obj, output);
 
     if (unlikely(level > 100))
     {
@@ -131,7 +131,7 @@ static void DumpStructure(vlc_object_t *obj, unsigned level)
 
     vlc_mutex_assert(&tree_lock);
     vlc_children_foreach(priv, vlc_internals(obj))
-        DumpStructure(vlc_externals(priv), level + 1);
+        DumpStructure(vlc_externals(priv), output, level + 1);
 }
 
 /**
@@ -148,7 +148,7 @@ static int TreeCommand (vlc_object_t *obj, char const *cmd,
 
     flockfile(stdout);
     vlc_mutex_lock(&tree_lock);
-    DumpStructure(obj, 0);
+    DumpStructure(obj, stdout, 0);
     vlc_mutex_unlock(&tree_lock);
     funlockfile(stdout);
     return VLC_SUCCESS;
-- 
2.17.1



More information about the vlc-devel mailing list