Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages  

rpmdb/tagname.c

Go to the documentation of this file.
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];   /* XXX yuk */
00014     char *s;
00015 
00016     switch (tag) {
00017     case RPMDBI_PACKAGES:
00018         strcpy(nameBuf, "Packages");
00019         return nameBuf;
00020         /*@notreached@*/ break;
00021     case RPMDBI_DEPENDS:
00022         strcpy(nameBuf, "Depends");
00023         return nameBuf;
00024         /*@notreached@*/ break;
00025     case RPMDBI_ADDED:
00026         strcpy(nameBuf, "Added");
00027         return nameBuf;
00028         /*@notreached@*/ break;
00029     case RPMDBI_REMOVED:
00030         strcpy(nameBuf, "Removed");
00031         return nameBuf;
00032         /*@notreached@*/ break;
00033     case RPMDBI_AVAILABLE:
00034         strcpy(nameBuf, "Available");
00035         return nameBuf;
00036         /*@notreached@*/ break;
00037     }
00038 
00039     strcpy(nameBuf, "(unknown)");
00040 /*@-boundswrite@*/
00041     for (i = 0; i < rpmTagTableSize; i++) {
00042         if (tag != rpmTagTable[i].val)
00043             continue;
00044         nameBuf[0] = nameBuf[1] = '\0';
00045         if (rpmTagTable[i].name != NULL)        /* XXX programmer error. */
00046             strcpy(nameBuf, rpmTagTable[i].name + 7);
00047         for (s = nameBuf+1; *s != '\0'; s++)
00048             *s = xtolower(*s);
00049         break;
00050     }
00051 /*@=boundswrite@*/
00052     return nameBuf;
00053 }
00054 
00055 int tagValue(const char * tagstr)
00056 {
00057     const struct headerTagTableEntry_s *t;
00058 
00059     if (!strcmp(tagstr, "Packages"))
00060         return RPMDBI_PACKAGES;
00061     if (!strcmp(tagstr, "Depends"))
00062         return RPMDBI_DEPENDS;
00063     if (!strcmp(tagstr, "Added"))
00064         return RPMDBI_ADDED;
00065     if (!strcmp(tagstr, "Removed"))
00066         return RPMDBI_REMOVED;
00067     if (!strcmp(tagstr, "Available"))
00068         return RPMDBI_AVAILABLE;
00069 
00070     for (t = rpmTagTable; t->name != NULL; t++) {
00071         if (!xstrcasecmp(t->name + 7, tagstr))
00072             return t->val;
00073     }
00074     return -1;
00075 }

Generated on Sun Oct 26 13:02:03 2003 for rpm by doxygen1.2.18