00001
00005 #include "system.h"
00006
00007 #include <rpmlib.h>
00008 #include "debug.h"
00009
00010 const char *const tagName(int tag)
00011 {
00012 int i;
00013 static char nameBuf[128];
00014 char *s;
00015
00016 switch (tag) {
00017 case RPMDBI_PACKAGES:
00018 strcpy(nameBuf, "Packages");
00019 return nameBuf;
00020 break;
00021 case RPMDBI_DEPENDS:
00022 strcpy(nameBuf, "Depends");
00023 return nameBuf;
00024 break;
00025 case RPMDBI_ADDED:
00026 strcpy(nameBuf, "Added");
00027 return nameBuf;
00028 break;
00029 case RPMDBI_REMOVED:
00030 strcpy(nameBuf, "Removed");
00031 return nameBuf;
00032 break;
00033 case RPMDBI_AVAILABLE:
00034 strcpy(nameBuf, "Available");
00035 return nameBuf;
00036 break;
00037 }
00038
00039 strcpy(nameBuf, "(unknown)");
00040 for (i = 0; i < rpmTagTableSize; i++) {
00041 if (tag != rpmTagTable[i].val)
00042 continue;
00043 strcpy(nameBuf, rpmTagTable[i].name + 7);
00044 for (s = nameBuf+1; *s; s++)
00045 *s = tolower(*s);
00046 break;
00047 }
00048 return nameBuf;
00049 }
00050
00051 int tagValue(const char * tagstr)
00052 {
00053 const struct headerTagTableEntry *t;
00054
00055 if (!strcmp(tagstr, "Packages"))
00056 return RPMDBI_PACKAGES;
00057 if (!strcmp(tagstr, "Depends"))
00058 return RPMDBI_DEPENDS;
00059 if (!strcmp(tagstr, "Added"))
00060 return RPMDBI_ADDED;
00061 if (!strcmp(tagstr, "Removed"))
00062 return RPMDBI_REMOVED;
00063 if (!strcmp(tagstr, "Available"))
00064 return RPMDBI_AVAILABLE;
00065
00066 for (t = rpmTagTable; t->name != NULL; t++) {
00067 if (!strcasecmp(t->name + 7, tagstr))
00068 return t->val;
00069 }
00070 return -1;
00071 }