bug fixes
[gnupg.git] / g10 / status.c
index 2098d67..b0d0cd7 100644 (file)
@@ -45,15 +45,17 @@ static FILE *statusfp;
 
 
 static void
-progress_cb ( void *ctx, int c )
+progress_cb (void *ctx, const char *what, int printchar,
+             int current, int total)
 {
-    char buf[50];
-
-    if ( c == '\n' )
-       sprintf ( buf, "%.20s X 100 100", (char*)ctx );
-    else
-       sprintf ( buf, "%.20s %c 0 0", (char*)ctx, c );
-    write_status_text ( STATUS_PROGRESS, buf );
+  char buf[50];
+
+  if ( printchar == '\n' && !strcmp (what, "primegen") )
+    snprintf (buf, sizeof buf -1, "%.20s X 100 100", what );
+  else
+    snprintf (buf, sizeof buf -1, "%.20s %c %d %d",
+              what, printchar=='\n'?'X':printchar, current, total );
+  write_status_text (STATUS_PROGRESS, buf);
 }
 
 static const char *
@@ -209,10 +211,8 @@ set_status_fd ( int fd )
                   fd, strerror(errno));
     }
     last_fd = fd;
-#warning Use libgrypt calls for progress indicators
-/*     register_primegen_progress ( progress_cb, "primegen" ); */
-/*     register_pk_dsa_progress ( progress_cb, "pk_dsa" ); */
-/*     register_pk_elg_progress ( progress_cb, "pk_elg" ); */
+
+    gcry_set_progress_handler ( progress_cb, NULL );
 }
 
 int