Procházet zdrojové kódy

libdpkg: Add new enum parsedbtype

This will allow to track more easily what's going on in the code, when
having to distinguish between behaviour depending on the file being
parsed.
Guillem Jover před 14 roky
rodič
revize
e73bc56d58
2 změnil soubory, kde provedl 31 přidání a 0 odebrání
  1. 20 0
      lib/dpkg/parse.c
  2. 11 0
      lib/dpkg/parsedump.h

+ 20 - 0
lib/dpkg/parse.c

@@ -332,6 +332,25 @@ pkg_parse_copy(struct parsedb_state *ps,
   }
   }
 }
 }
 
 
+/**
+ * Return a descriptive parser type.
+ */
+static enum parsedbtype
+parse_get_type(struct parsedb_state *ps, enum parsedbflags flags)
+{
+  if (flags & pdb_recordavailable) {
+    if (flags & pdb_deb_control)
+      return pdb_file_control;
+    else
+      return pdb_file_available;
+  } else {
+    if (flags & pdb_deb_control)
+      return pdb_file_update;
+    else
+      return pdb_file_status;
+  }
+}
+
 /**
 /**
  * Open a file for RFC-822 parsing.
  * Open a file for RFC-822 parsing.
  */
  */
@@ -343,6 +362,7 @@ parse_open(struct parsedb_state *ps, const char *filename,
   struct stat st;
   struct stat st;
 
 
   ps->filename = filename;
   ps->filename = filename;
+  ps->type = parse_get_type(ps, flags);
   ps->flags = flags;
   ps->flags = flags;
   ps->lno = 0;
   ps->lno = 0;
   ps->pkg = NULL;
   ps->pkg = NULL;

+ 11 - 0
lib/dpkg/parsedump.h

@@ -25,7 +25,18 @@
 
 
 struct fieldinfo;
 struct fieldinfo;
 
 
+/**
+ * Parse action.
+ */
+enum parsedbtype {
+	pdb_file_update,
+	pdb_file_status,
+	pdb_file_control,
+	pdb_file_available,
+};
+
 struct parsedb_state {
 struct parsedb_state {
+	enum parsedbtype type;
 	enum parsedbflags flags;
 	enum parsedbflags flags;
 	struct pkginfo *pkg;
 	struct pkginfo *pkg;
 	struct pkgbin *pkgbin;
 	struct pkgbin *pkgbin;