common/ChangeLog:
authorMoritz Schulte <mo@g10code.com>
Wed, 26 Oct 2005 20:57:14 +0000 (20:57 +0000)
committerMoritz Schulte <mo@g10code.com>
Wed, 26 Oct 2005 20:57:14 +0000 (20:57 +0000)
2005-10-26  Moritz Schulte  <moritz@g10code.com>

* support.c (usersdb_remove_entry): New argument: NENTRIES; new local variable
NENTRIES_REMOVED; count number of removed entries in
NENTRIES_REMOVED, store number in NENTRIES on success.
* support.h (usersdb_remove_entry): Adjust declaration.

src/common/ChangeLog
src/common/support.c
src/common/support.h

index 6bbd85b..a16f465 100644 (file)
@@ -2,6 +2,10 @@
 
        * support.c (usersdb_remove_entry): Use assert to make verify to
        enforce calling convention.
+       (usersdb_remove_entry): New argument: NENTRIES; new local variable
+       NENTRIES_REMOVED; count number of removed entries in
+       NENTRIES_REMOVED, store number in NENTRIES on success.
+       * support.h (usersdb_remove_entry): Adjust declaration.
 
 2005-10-23  Moritz Schulte  <moritz@g10code.com>
 
index 7c79ad8..575ea1e 100644 (file)
@@ -269,10 +269,12 @@ usersdb_add_entry (const char *username, const char *serialno)
 }
 
 gpg_error_t
-usersdb_remove_entry (const char *username, const char *serialno)
+usersdb_remove_entry (const char *username, const char *serialno,
+                     unsigned int *nentries)
 {
   char users_file_old[] = POLDI_USERS_DB_FILE;
   char users_file_new[] = POLDI_USERS_DB_FILE ".new";
+  unsigned int nentries_removed;
   char delimiters[] = "\t\n ";
   FILE *users_file_old_fp;
   FILE *users_file_new_fp;
@@ -303,7 +305,9 @@ usersdb_remove_entry (const char *username, const char *serialno)
       goto out;
     }
 
+  nentries_removed = 0;
   err = 0;
+
   while (1)
     {
       ret = getline (&line, &line_n, users_file_old_fp);
@@ -331,6 +335,8 @@ usersdb_remove_entry (const char *username, const char *serialno)
       if ((username && strcmp (username, line_username))
          || (serialno && strcmp (serialno, line_serialno)))
        fprintf (users_file_new_fp, "%s\t%s\n", line_serialno, line_username);
+      else
+       nentries_removed++;
 
       free (line);
       line = NULL;
@@ -351,7 +357,12 @@ usersdb_remove_entry (const char *username, const char *serialno)
 
   ret = rename (users_file_new, users_file_old);
   if (ret == -1)
-    err = gpg_error_from_errno (errno);
+    {
+      err = gpg_error_from_errno (errno);
+      goto out;
+    }
+
+  *nentries = nentries_removed;
 
  out:
 
index f639d0e..ebffeca 100644 (file)
@@ -29,7 +29,8 @@ gpg_error_t challenge_verify (gcry_sexp_t key,
                              unsigned char *respone, size_t response_n);
 gpg_error_t usersdb_lookup_by_serialno (const char *serialno, char **username);
 gpg_error_t usersdb_lookup_by_username (const char *username, char **serialno);
-gpg_error_t usersdb_remove_entry (const char *username, const char *serialno);
+gpg_error_t usersdb_remove_entry (const char *username, const char *serialno,
+                                 unsigned int *nentries);
 gpg_error_t usersdb_add_entry (const char *username, const char *serialno);
 gpg_error_t sexp_to_string (gcry_sexp_t sexp, char **sexp_string);
 gpg_error_t file_to_string (const char *filename, char **string);