Sfoglia il codice sorgente

Centralize warn counting in warningv()

Add an accessor function to be able to replace the old warn counters
in the rest of the code.
Guillem Jover 15 anni fa
parent
commit
8451065cf8

+ 5 - 14
dpkg-deb/build.c

@@ -216,7 +216,7 @@ check_file_perms(const char *dir)
 /**
 /**
  * Check if conffiles contains sane information.
  * Check if conffiles contains sane information.
  */
  */
-static int
+static void
 check_conffiles(const char *dir)
 check_conffiles(const char *dir)
 {
 {
   FILE *cf;
   FILE *cf;
@@ -224,14 +224,13 @@ check_conffiles(const char *dir)
   char conffilename[MAXCONFFILENAME + 1];
   char conffilename[MAXCONFFILENAME + 1];
   struct file_info *conffiles_head = NULL;
   struct file_info *conffiles_head = NULL;
   struct file_info *conffiles_tail = NULL;
   struct file_info *conffiles_tail = NULL;
-  int warns = 0;
 
 
   varbufprintf(&controlfile, "%s/%s/%s", dir, BUILDCONTROLDIR, CONFFILESFILE);
   varbufprintf(&controlfile, "%s/%s/%s", dir, BUILDCONTROLDIR, CONFFILESFILE);
 
 
   cf = fopen(controlfile.buf, "r");
   cf = fopen(controlfile.buf, "r");
   if (cf == NULL) {
   if (cf == NULL) {
     if (errno == ENOENT)
     if (errno == ENOENT)
-      return warns;
+      return;
 
 
     ohshite(_("error opening conffiles file"));
     ohshite(_("error opening conffiles file"));
   }
   }
@@ -249,7 +248,6 @@ check_conffiles(const char *dir)
 
 
       warning(_("conffile name '%.50s...' is too long, or missing final newline"),
       warning(_("conffile name '%.50s...' is too long, or missing final newline"),
               conffilename);
               conffilename);
-      warns++;
       while ((c = getc(cf)) != EOF && c != '\n');
       while ((c = getc(cf)) != EOF && c != '\n');
 
 
       continue;
       continue;
@@ -268,12 +266,10 @@ check_conffiles(const char *dir)
         ohshite(_("conffile `%.250s' is not stattable"), conffilename);
         ohshite(_("conffile `%.250s' is not stattable"), conffilename);
     } else if (!S_ISREG(controlstab.st_mode)) {
     } else if (!S_ISREG(controlstab.st_mode)) {
       warning(_("conffile '%s' is not a plain file"), conffilename);
       warning(_("conffile '%s' is not a plain file"), conffilename);
-      warns++;
     }
     }
 
 
     if (file_info_find_name(conffiles_head, conffilename)) {
     if (file_info_find_name(conffiles_head, conffilename)) {
       warning(_("conffile name '%s' is duplicated"), conffilename);
       warning(_("conffile name '%s' is duplicated"), conffilename);
-      warns++;
     } else {
     } else {
       struct file_info *conffile;
       struct file_info *conffile;
 
 
@@ -288,8 +284,6 @@ check_conffiles(const char *dir)
   if (ferror(cf))
   if (ferror(cf))
     ohshite(_("error reading conffiles file"));
     ohshite(_("error reading conffiles file"));
   fclose(cf);
   fclose(cf);
-
-  return warns;
 }
 }
 
 
 static const char *arbitrary_fields[] = {
 static const char *arbitrary_fields[] = {
@@ -375,17 +369,14 @@ void do_build(const char *const *argv) {
 
 
     /* Let's start by reading in the control-file so we can check its
     /* Let's start by reading in the control-file so we can check its
      * contents. */
      * contents. */
-    warns = 0;
     varbufprintf(&controlfile, "%s/%s/%s", dir, BUILDCONTROLDIR, CONTROLFILE);
     varbufprintf(&controlfile, "%s/%s/%s", dir, BUILDCONTROLDIR, CONTROLFILE);
-    parsedb(controlfile.buf, pdb_recordavailable | pdb_rejectstatus,
-            &pkg, &warns);
+    parsedb(controlfile.buf, pdb_recordavailable | pdb_rejectstatus, &pkg);
     if (strspn(pkg->name, "abcdefghijklmnopqrstuvwxyz0123456789+-.") !=
     if (strspn(pkg->name, "abcdefghijklmnopqrstuvwxyz0123456789+-.") !=
         strlen(pkg->name))
         strlen(pkg->name))
       ohshit(_("package name has characters that aren't lowercase alphanums or `-+.'"));
       ohshit(_("package name has characters that aren't lowercase alphanums or `-+.'"));
     if (pkg->priority == pri_other) {
     if (pkg->priority == pri_other) {
       warning(_("'%s' contains user-defined Priority value '%s'"),
       warning(_("'%s' contains user-defined Priority value '%s'"),
               controlfile.buf, pkg->otherpriority);
               controlfile.buf, pkg->otherpriority);
-      warns++;
     }
     }
     for (field = pkg->available.arbs; field; field = field->next) {
     for (field = pkg->available.arbs; field; field = field->next) {
       if (known_arbitrary_field(field))
       if (known_arbitrary_field(field))
@@ -393,7 +384,6 @@ void do_build(const char *const *argv) {
 
 
       warning(_("'%s' contains user-defined field '%s'"),
       warning(_("'%s' contains user-defined field '%s'"),
               controlfile.buf, field->name);
               controlfile.buf, field->name);
-      warns++;
     }
     }
 
 
     if (subdir) {
     if (subdir) {
@@ -411,8 +401,9 @@ void do_build(const char *const *argv) {
     printf(_("dpkg-deb: building package `%s' in `%s'.\n"), pkg->name, debar);
     printf(_("dpkg-deb: building package `%s' in `%s'.\n"), pkg->name, debar);
 
 
     check_file_perms(dir);
     check_file_perms(dir);
-    warns += check_conffiles(dir);
+    check_conffiles(dir);
 
 
+    warns = warning_get_count();
     if (warns)
     if (warns)
       warning(P_("ignoring %d warning about the control file(s)\n",
       warning(P_("ignoring %d warning about the control file(s)\n",
                  "ignoring %d warnings about the control file(s)\n", warns),
                  "ignoring %d warnings about the control file(s)\n", warns),

+ 1 - 1
dpkg-deb/info.c

@@ -264,7 +264,7 @@ void do_showinfo(const char* const* argv) {
   info_prepare(&argv, &debar, &dir, 1);
   info_prepare(&argv, &debar, &dir, 1);
 
 
   parsedb(CONTROLFILE, pdb_recordavailable | pdb_rejectstatus | pdb_ignorefiles,
   parsedb(CONTROLFILE, pdb_recordavailable | pdb_rejectstatus | pdb_ignorefiles,
-          &pkg, NULL);
+          &pkg);
   pkg_format_show(fmt, pkg, &pkg->available);
   pkg_format_show(fmt, pkg, &pkg->available);
 }
 }
 
 

+ 3 - 3
lib/dpkg/dbmodify.c

@@ -75,7 +75,7 @@ static void cleanupdates(void) {
   struct dirent **cdlist;
   struct dirent **cdlist;
   int cdn, i;
   int cdn, i;
 
 
-  parsedb(statusfile, pdb_lax_parser | pdb_weakclassification, NULL, NULL);
+  parsedb(statusfile, pdb_lax_parser | pdb_weakclassification, NULL);
 
 
   *updatefnrest = '\0';
   *updatefnrest = '\0';
   updateslength= -1;
   updateslength= -1;
@@ -86,7 +86,7 @@ static void cleanupdates(void) {
     for (i=0; i<cdn; i++) {
     for (i=0; i<cdn; i++) {
       strcpy(updatefnrest, cdlist[i]->d_name);
       strcpy(updatefnrest, cdlist[i]->d_name);
       parsedb(updatefnbuf, pdb_lax_parser | pdb_weakclassification,
       parsedb(updatefnbuf, pdb_lax_parser | pdb_weakclassification,
-              NULL, NULL);
+              NULL);
       if (cstatus < msdbrw_write) free(cdlist[i]);
       if (cstatus < msdbrw_write) free(cdlist[i]);
     }
     }
 
 
@@ -252,7 +252,7 @@ modstatdb_init(const char *admindir, enum modstatdb_rw readwritereq)
     if(!(cflags & msdbrw_noavail))
     if(!(cflags & msdbrw_noavail))
     parsedb(availablefile,
     parsedb(availablefile,
             pdb_recordavailable | pdb_rejectstatus | pdb_lax_parser,
             pdb_recordavailable | pdb_rejectstatus | pdb_lax_parser,
-            NULL, NULL);
+            NULL);
   }
   }
 
 
   if (cstatus >= msdbrw_write) {
   if (cstatus >= msdbrw_write) {

+ 1 - 2
lib/dpkg/dpkg-db.h

@@ -256,8 +256,7 @@ enum parsedbflags {
 };
 };
 
 
 const char *pkg_name_is_illegal(const char *p, const char **ep);
 const char *pkg_name_is_illegal(const char *p, const char **ep);
-int parsedb(const char *filename, enum parsedbflags, struct pkginfo **donep,
-            int *warncount);
+int parsedb(const char *filename, enum parsedbflags, struct pkginfo **donep);
 void copy_dependency_links(struct pkginfo *pkg,
 void copy_dependency_links(struct pkginfo *pkg,
                            struct dependency **updateme,
                            struct dependency **updateme,
                            struct dependency *newdepends,
                            struct dependency *newdepends,

+ 9 - 0
lib/dpkg/ehandle.c

@@ -373,11 +373,20 @@ void ohshite(const char *fmt, ...) {
   run_error_handler();
   run_error_handler();
 }
 }
 
 
+static int warn_count = 0;
+
+int
+warning_get_count(void)
+{
+  return warn_count;
+}
+
 void
 void
 warningv(const char *fmt, va_list args)
 warningv(const char *fmt, va_list args)
 {
 {
   char buf[1024];
   char buf[1024];
 
 
+  warn_count++;
   vsnprintf(buf, sizeof(buf), fmt, args);
   vsnprintf(buf, sizeof(buf), fmt, args);
   fprintf(stderr, _("%s: warning: %s\n"), thisname, buf);
   fprintf(stderr, _("%s: warning: %s\n"), thisname, buf);
 }
 }

+ 1 - 0
lib/dpkg/ehandle.h

@@ -60,6 +60,7 @@ void push_cleanup(void (*f1)(int argc, void **argv), int flagmask1,
 void push_checkpoint(int mask, int value);
 void push_checkpoint(int mask, int value);
 void pop_cleanup(int flagset);
 void pop_cleanup(int flagset);
 
 
+int warning_get_count(void);
 void warningv(const char *fmt, va_list args) DPKG_ATTR_VPRINTF(1);
 void warningv(const char *fmt, va_list args) DPKG_ATTR_VPRINTF(1);
 void warning(const char *fmt, ...) DPKG_ATTR_PRINTF(1);
 void warning(const char *fmt, ...) DPKG_ATTR_PRINTF(1);
 
 

+ 1 - 0
lib/dpkg/libdpkg.Versions

@@ -24,6 +24,7 @@ LIBDPKG_PRIVATE {
 	ohshit;
 	ohshit;
 	werr;			# XXX: remove
 	werr;			# XXX: remove
 	do_internerr;
 	do_internerr;
+	warning_get_count;
 	warningv;
 	warningv;
 	warning;
 	warning;
 
 

+ 1 - 5
lib/dpkg/parse.c

@@ -90,7 +90,7 @@ const struct fieldinfo fieldinfos[]= {
  * If donep is not NULL only one package's information is expected.
  * If donep is not NULL only one package's information is expected.
  */
  */
 int parsedb(const char *filename, enum parsedbflags flags,
 int parsedb(const char *filename, enum parsedbflags flags,
-            struct pkginfo **donep, int *warncount)
+            struct pkginfo **donep)
 {
 {
   static int fd;
   static int fd;
   struct pkginfo newpig, *pigp;
   struct pkginfo newpig, *pigp;
@@ -112,7 +112,6 @@ int parsedb(const char *filename, enum parsedbflags flags,
   ps.filename = filename;
   ps.filename = filename;
   ps.flags = flags;
   ps.flags = flags;
   ps.lno = 0;
   ps.lno = 0;
-  ps.warncount = 0;
 
 
   newpifp= (flags & pdb_recordavailable) ? &newpig.available : &newpig.installed;
   newpifp= (flags & pdb_recordavailable) ? &newpig.available : &newpig.installed;
   fd= open(filename, O_RDONLY);
   fd= open(filename, O_RDONLY);
@@ -404,9 +403,6 @@ int parsedb(const char *filename, enum parsedbflags flags,
   if (close(fd)) ohshite(_("failed to close after read: `%.255s'"),filename);
   if (close(fd)) ohshite(_("failed to close after read: `%.255s'"),filename);
   if (donep && !pdone) ohshit(_("no package information in `%.255s'"),filename);
   if (donep && !pdone) ohshit(_("no package information in `%.255s'"),filename);
 
 
-  if (warncount)
-    *warncount = ps.warncount;
-
   return pdone;
   return pdone;
 }
 }
 
 

+ 0 - 1
lib/dpkg/parsedump.h

@@ -28,7 +28,6 @@ struct parsedb_state {
 	enum parsedbflags flags;
 	enum parsedbflags flags;
 	const char *filename;
 	const char *filename;
 	int lno;
 	int lno;
-	int warncount;
 };
 };
 
 
 #define PKGIFPOFF(f) (offsetof(struct pkginfoperfile, f))
 #define PKGIFPOFF(f) (offsetof(struct pkginfoperfile, f))

+ 0 - 1
lib/dpkg/parsehelp.c

@@ -68,7 +68,6 @@ parse_warn(struct parsedb_state *ps,
   va_list args;
   va_list args;
 
 
   va_start(args, fmt);
   va_start(args, fmt);
-  ps->warncount++;
   warningv(parse_error_msg(ps, pigp, fmt), args);
   warningv(parse_error_msg(ps, pigp, fmt), args);
   va_end(args);
   va_end(args);
 }
 }

+ 1 - 1
src/processarc.c

@@ -240,7 +240,7 @@ void process_archive(const char *filename) {
   strcpy(cidirrest,CONTROLFILE);
   strcpy(cidirrest,CONTROLFILE);
 
 
   parsedb(cidir, pdb_recordavailable | pdb_rejectstatus | pdb_ignorefiles,
   parsedb(cidir, pdb_recordavailable | pdb_rejectstatus | pdb_ignorefiles,
-          &pkg, NULL);
+          &pkg);
   if (!pkg->files) {
   if (!pkg->files) {
     pkg->files= nfmalloc(sizeof(struct filedetails));
     pkg->files= nfmalloc(sizeof(struct filedetails));
     pkg->files->next = NULL;
     pkg->files->next = NULL;

+ 2 - 2
src/update.c

@@ -80,12 +80,12 @@ void updateavailable(const char *const *argv) {
 
 
   if (cipaction->arg == act_avmerge)
   if (cipaction->arg == act_avmerge)
     parsedb(vb.buf, pdb_recordavailable | pdb_rejectstatus | pdb_lax_parser,
     parsedb(vb.buf, pdb_recordavailable | pdb_rejectstatus | pdb_lax_parser,
-            NULL, NULL);
+            NULL);
 
 
   if (cipaction->arg != act_avclear)
   if (cipaction->arg != act_avclear)
     count += parsedb(sourcefile,
     count += parsedb(sourcefile,
 		     pdb_recordavailable | pdb_rejectstatus | pdb_ignoreolder,
 		     pdb_recordavailable | pdb_rejectstatus | pdb_ignoreolder,
-                     NULL, NULL);
+                     NULL);
 
 
   if (!f_noact) {
   if (!f_noact) {
     writedb(vb.buf,1,0);
     writedb(vb.buf,1,0);