Просмотр исходного кода

libdpkg: Refactor parsedb flags for standard operations into new aliases

The three common operations are: parsing the status file, parsing the
available file and parsing the control file from a binary package.

This makes the code more obvious and will allow to change their values
centrally.
Guillem Jover лет назад: 14
Родитель
Сommit
fdc613b3d8
6 измененных файлов с 14 добавлено и 16 удалено
  1. 1 1
      dpkg-deb/build.c
  2. 1 2
      dpkg-deb/info.c
  3. 3 6
      lib/dpkg/dbmodify.c
  4. 5 0
      lib/dpkg/dpkg-db.h
  5. 2 2
      src/processarc.c
  6. 2 5
      src/update.c

+ 1 - 1
dpkg-deb/build.c

@@ -332,7 +332,7 @@ check_new_pkg(const char *dir)
 
   /* Start by reading in the control file so we can check its contents. */
   m_asprintf(&controlfile, "%s/%s/%s", dir, BUILDCONTROLDIR, CONTROLFILE);
-  parsedb(controlfile, pdb_recordavailable | pdb_rejectstatus, &pkg);
+  parsedb(controlfile, pdb_parse_binary, &pkg);
 
   if (strspn(pkg->set->name, "abcdefghijklmnopqrstuvwxyz0123456789+-.") !=
       strlen(pkg->set->name))

+ 1 - 2
dpkg-deb/info.c

@@ -280,8 +280,7 @@ do_showinfo(const char *const *argv)
   info_prepare(&argv, &debar, &dir, 1);
 
   m_asprintf(&controlfile, "%s/%s", dir, CONTROLFILE);
-  parsedb(controlfile,
-          pdb_recordavailable | pdb_rejectstatus | pdb_ignorefiles, &pkg);
+  parsedb(controlfile, pdb_parse_binary | pdb_ignorefiles, &pkg);
   pkg_format_show(fmt, pkg, &pkg->available);
   pkg_format_free(fmt);
   free(controlfile);

+ 3 - 6
lib/dpkg/dbmodify.c

@@ -78,7 +78,7 @@ static void cleanupdates(void) {
   struct dirent **cdlist;
   int cdn, i;
 
-  parsedb(statusfile, pdb_lax_parser | pdb_weakclassification, NULL);
+  parsedb(statusfile, pdb_parse_status, NULL);
 
   *updatefnrest = '\0';
   updateslength= -1;
@@ -88,8 +88,7 @@ static void cleanupdates(void) {
   if (cdn) {
     for (i=0; i<cdn; i++) {
       strcpy(updatefnrest, cdlist[i]->d_name);
-      parsedb(updatefnbuf, pdb_lax_parser | pdb_weakclassification,
-              NULL);
+      parsedb(updatefnbuf, pdb_parse_status, NULL);
       if (cstatus < msdbrw_write) free(cdlist[i]);
     }
 
@@ -281,9 +280,7 @@ modstatdb_open(enum modstatdb_rw readwritereq)
   if (cstatus != msdbrw_needsuperuserlockonly) {
     cleanupdates();
     if (cflags >= msdbrw_available_readonly)
-      parsedb(availablefile,
-              pdb_recordavailable | pdb_rejectstatus | pdb_lax_parser,
-              NULL);
+      parsedb(availablefile, pdb_parse_available, NULL);
   }
 
   if (cstatus >= msdbrw_write) {

+ 5 - 0
lib/dpkg/dpkg-db.h

@@ -302,6 +302,11 @@ enum parsedbflags {
   pdb_lax_version_parser = 040,
   /* Perform laxer parsing, used to transition to stricter parsing. */
   pdb_lax_parser = pdb_lax_version_parser,
+
+  /* Standard operations. */
+  pdb_parse_status = pdb_lax_parser | pdb_weakclassification,
+  pdb_parse_available = pdb_recordavailable | pdb_rejectstatus | pdb_lax_parser,
+  pdb_parse_binary = pdb_recordavailable | pdb_rejectstatus,
 };
 
 const char *pkg_name_is_illegal(const char *p);

+ 2 - 2
src/processarc.c

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

+ 2 - 5
src/update.c

@@ -82,13 +82,10 @@ updateavailable(const char *const *argv)
   availfile = dpkg_db_get_path(AVAILFILE);
 
   if (cipaction->arg_int == act_avmerge)
-    parsedb(availfile, pdb_recordavailable | pdb_rejectstatus | pdb_lax_parser,
-            NULL);
+    parsedb(availfile, pdb_parse_available, NULL);
 
   if (cipaction->arg_int != act_avclear)
-    count += parsedb(sourcefile,
-                     pdb_recordavailable | pdb_rejectstatus | pdb_lax_parser |
-                     pdb_ignoreolder, NULL);
+    count += parsedb(sourcefile, pdb_parse_available | pdb_ignoreolder, NULL);
 
   if (!f_noact) {
     writedb(availfile, wdb_dump_available);