Add RPMTAG_ORIGFILENAMES tag extension
authorPanu Matilainen <pmatilai@redhat.com>
Tue, 10 Jun 2008 11:29:30 +0000 (14:29 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Tue, 10 Jun 2008 11:29:30 +0000 (14:29 +0300)
lib/rpmtag.h
lib/tagexts.c

index 114991c..d2b7f51 100644 (file)
@@ -275,6 +275,7 @@ typedef enum rpmTag_e {
     RPMTAG_FSSIZES             = 5004, /* i[] extension */
     RPMTAG_TRIGGERCONDS                = 5005, /* s[] extension */
     RPMTAG_TRIGGERTYPE         = 5006, /* s[] extension */
+    RPMTAG_ORIGFILENAMES       = 5007, /* s[] extension */
 
     RPMTAG_FIRSTFREE_TAG       /*!< internal */
 } rpmTag;
index 93cd806..328bc02 100644 (file)
@@ -308,6 +308,20 @@ static int filenamesTag(Header h, rpmtd td)
 }
 
 /**
+ * Retrieve original file paths (wrt relocation).
+ * @param h            header
+ * @retval td          tag data container
+ * @return             1 on success
+ */
+static int origfilenamesTag(Header h, rpmtd td)
+{
+    td->type = RPM_STRING_ARRAY_TYPE;
+    rpmfiBuildFNames(h, RPMTAG_ORIGBASENAMES, 
+                    (const char ***) &(td->data), &(td->count));
+    td->flags = RPMTD_ALLOCED;
+    return 1; 
+}
+/**
  * Retrieve file classes.
  * @param h            header
  * @retval td          tag data container
@@ -495,6 +509,7 @@ static const struct headerTagFunc_s rpmHeaderTagExtensions[] = {
     { RPMTAG_SUMMARY,          summaryTag },
     { RPMTAG_FILECLASS,                fileclassTag },
     { RPMTAG_FILENAMES,                filenamesTag },
+    { RPMTAG_ORIGFILENAMES,    origfilenamesTag },
     { RPMTAG_FILEPROVIDE,      fileprovideTag },
     { RPMTAG_FILEREQUIRE,      filerequireTag },
     { RPMTAG_FSNAMES,          fsnamesTag },