]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
debuginfod-client thinko: non-default progressfn extra output
authorFrank Ch. Eigler <fche@redhat.com>
Wed, 25 Mar 2020 01:30:02 +0000 (21:30 -0400)
committerFrank Ch. Eigler <fche@redhat.com>
Wed, 25 Mar 2020 01:34:37 +0000 (21:34 -0400)
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.

debuginfod/ChangeLog
debuginfod/debuginfod-client.c

index 00e7ec63232eb6073d665ba720106693d532a7b3..b34b4d2938ddddc68b9e700e26df9cc72de7ea55 100644 (file)
@@ -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
index 58a04b9a734b7d50f3bfefc3fe8d06e90d29d3db..ea2d16249a31758a8ca11f6a0b8f1c7f6b5e51f3 100644 (file)
@@ -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  *