patch obv: debuginfod-client default_progressfn message

Frank Ch. Eigler fche@redhat.com
Wed Mar 25 01:36:30 GMT 2020


Hi -

Correcting a thinko from earlier, which became evident with
(forthcoming) server-side diagnostic improvements.  Merging as
obvious.  The patch is more than one line long only because a
function body was moved upward, to avoid having to do a forward
declaration.

Author: Frank Ch. Eigler <fche@redhat.com>
Date:   Tue Mar 24 21:30:02 2020 -0400

    debuginfod-client thinko: non-default progressfn extra output
    
    A previous commit changed the default_progressfn output format
    to \rFOOBAR, to be terminated by an \n when the download finished.
    The \n terminator was conditional on the wrong thing (env var
    setting, rather than actual progressfn setting), so the \n could
    be printed even if an app overrode the default.

diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog
index 00e7ec63232e..b34b4d2938dd 100644
--- a/debuginfod/ChangeLog
+++ b/debuginfod/ChangeLog
@@ -1,3 +1,9 @@
+2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
+
+	* debuginfod-client.c (debuginfod_query_server): Print the
+	default_progressfn terminating \n message only if that progressfn
+	is actually set.
+
 2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
 
 	* debuginfod-find.c (main): Correct /source full-pathness check for
diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c
index 58a04b9a734b..ea2d16249a31 100644
--- a/debuginfod/debuginfod-client.c
+++ b/debuginfod/debuginfod-client.c
@@ -401,6 +401,41 @@ add_extra_headers(CURL *handle)
         }                                  \
     } while (0)
 
+
+/* Offer a basic form of progress tracing */
+static int
+default_progressfn (debuginfod_client *c, long a, long b)
+{
+  const char* url = debuginfod_get_url (c);
+  int len = 0;
+
+  /* We prefer to print the host part of the URL to keep the
+     message short. */
+  if (url != NULL)
+    {
+      const char* buildid = strstr(url, "buildid/");
+      if (buildid != NULL)
+        len = (buildid - url);
+      else
+        len = strlen(url);
+    }
+
+  if (b == 0 || url==NULL) /* early stage */
+    dprintf(STDERR_FILENO,
+            "\rDownloading %c", "-/|\\"[a % 4]);
+  else if (b < 0) /* download in progress but unknown total length */
+    dprintf(STDERR_FILENO,
+            "\rDownloading from %.*s %ld",
+            len, url, a);
+  else /* download in progress, and known total length */
+    dprintf(STDERR_FILENO,
+            "\rDownloading from %.*s %ld/%ld",
+            len, url, a, b);
+
+  return 0;
+}
+
+
 /* Query each of the server URLs found in $DEBUGINFOD_URLS for the file
    with the specified build-id, type (debuginfo, executable or source)
    and filename. filename may be NULL. If found, return a file
@@ -885,7 +920,7 @@ debuginfod_query_server (debuginfod_client *c,
 /* general purpose exit */
  out:
   /* Conclude the last \r status line */
-  if (getenv(DEBUGINFOD_PROGRESS_ENV_VAR))
+  if (c->progressfn == & default_progressfn)
     dprintf(STDERR_FILENO, "\n");
 
   free (cache_path);
@@ -898,39 +933,6 @@ debuginfod_query_server (debuginfod_client *c,
 }
 
 
-/* Activate a basic form of progress tracing */
-static int
-default_progressfn (debuginfod_client *c, long a, long b)
-{
-  const char* url = debuginfod_get_url (c);
-  int len = 0;
-
-  /* We prefer to print the host part of the URL to keep the
-     message short. */
-  if (url != NULL)
-    {
-      const char* buildid = strstr(url, "buildid/");
-      if (buildid != NULL)
-        len = (buildid - url);
-      else
-        len = strlen(url);
-    }
-
-  if (b == 0 || url==NULL) /* early stage */
-    dprintf(STDERR_FILENO,
-            "\rDownloading %c", "-/|\\"[a % 4]);
-  else if (b < 0) /* download in progress but unknown total length */
-    dprintf(STDERR_FILENO,
-            "\rDownloading from %.*s %ld",
-            len, url, a);
-  else /* download in progress, and known total length */
-    dprintf(STDERR_FILENO,
-            "\rDownloading from %.*s %ld/%ld",
-            len, url, a, b);
-
-  return 0;
-}
-
 
 /* See debuginfod.h  */
 debuginfod_client  *




More information about the Elfutils-devel mailing list