Annotation of rpm2html/rdf.c, revision 1.2

1.1       httpng      1: /*
                      2:  * rdf.c : implementation for the RDF encoding/decoding of RPM informations.
                      3:  */
                      4: 
1.2     ! httpng      5: #include "config.h"
        !             6: #ifdef HAVE_FCNTL_H
        !             7: #include <fcntl.h>
        !             8: #endif
        !             9: #include <stdio.h>
        !            10: #include <stdlib.h>
        !            11: #include <string.h>
        !            12: #ifdef HAVE_UNISTD_H
        !            13: #include <unistd.h>
        !            14: #endif
        !            15: #include <time.h>
1.1       httpng     16: #include <errno.h>
1.2     ! httpng     17: #include <ctype.h>
1.1       httpng     18: 
                     19: #include "rpm2html.h"
                     20: #include "rpmdata.h"
                     21: #include "parser.h"
                     22: #include "tree.h"
                     23: #include "rdf.h"
1.2     ! httpng     24: #include "html.h"
1.1       httpng     25: 
                     26: /*
                     27:  * Open an RDF file call the parser to create a XML tree
                     28:  * Then walk the tree and build an rpmData structure for
                     29:  * the corresponding package.
                     30:  */
                     31: rpmDataPtr rpmOpenRdf(char *nameRpm, rpmDirPtr dir, rpmSubdirPtr tree) {
1.2     ! httpng     32:     return(NULL);
1.1       httpng     33: }
                     34: 
                     35: /*
                     36:  * Create and RDF file containing the description for the
                     37:  * given RPM data.
                     38:  */
                     39: void dumpRpmRdf(rpmDataPtr rpm, rpmSubdirPtr tree) {
                     40:     struct tm * tstruct;
                     41:     rpmDirPtr dir = rpm->dir;
                     42:     FILE *rdf;
                     43:     int i;
                     44:     char buf[1000];
                     45: 
                     46:     if ((dir->subdir != NULL) && (dir->subdir[0] != '\0')) {
                     47:        if ((rpm->subdir != NULL) && (rpm->subdir[0] != '\0'))
                     48:            sprintf(buf, "%s/%s/%s/%s.rdf", dir->dir, dir->subdir,
                     49:                    rpm->subdir, rpmName(rpm));
                     50:        else
                     51:            sprintf(buf, "%s/%s/%s.rdf", dir->dir, dir->subdir, rpmName(rpm));
                     52:     } else {
                     53:        if ((rpm->subdir != NULL) && (rpm->subdir[0] != '\0'))
                     54:            sprintf(buf, "%s/%s/%s.rdf", dir->dir, rpm->subdir, rpmName(rpm));
                     55:        else
                     56:            sprintf(buf, "%s/%s.rdf", dir->dir, rpmName(rpm));
                     57:     }
                     58: 
                     59:     if (checkDate(buf, rpm->stamp)) return;
                     60:     if (verbose > 1) {
                     61:         printf("Dumping %s\n", buf);
                     62:     }
                     63:     rdf = fopen(buf, "w");
                     64:     if (rdf == NULL) {
                     65:         fprintf(stderr, "Couldn't save to file %s: %s\n",
                     66:                buf, strerror(errno));
                     67:         return;
                     68:     }
                     69:     fprintf(rdf, "<?XML version=\"1.0\">\n");
                     70:     fprintf(rdf, "<?namespace href =\"http://www.w3.org/TR/WD-rdf-syntax#/\" AS = \"RDF\"?>\n");
                     71:     fprintf(rdf, "<?namespace href =\"http://www.rpm.org/\" AS = \"RPM\"?>\n");
                     72:     fprintf(rdf, "<RDF:RDF>\n");
1.2     ! httpng     73:     fprintf(rdf, "<RDF:Description RDF:HREF=\"");
        !            74:     if ((rpm->subdir != NULL) && (rpm->subdir[0] != '\0')) {
        !            75:        if (dir->mirrors[0] != NULL)
        !            76:            fprintf(rdf, "%s/%s/%s\">\n",
        !            77:                dir->mirrors[0], rpm->subdir, rpm->filename);
        !            78:        else
        !            79:            fprintf(rdf, "%s/%s/%s\">\n",
        !            80:                dir->ftp, rpm->subdir, rpm->filename);
        !            81:     } else {
        !            82:        if (dir->mirrors[0] != NULL)
        !            83:            fprintf(rdf, "%s/%s\">\n",
        !            84:                dir->mirrors[0], rpm->filename);
        !            85:        else
        !            86:            fprintf(rdf, "%s/%s\">\n",
        !            87:                dir->ftp, rpm->filename);
        !            88:     }
1.1       httpng     89:     fprintf(rdf, "<RPM:Name>%s</RPM:Name>\n", rpm->name);
                     90:     fprintf(rdf, "<RPM:Version>%s</RPM:Version>\n", rpm->version);
                     91:     fprintf(rdf, "<RPM:Release>%s</RPM:Release>\n", rpm->release);
1.2     ! httpng     92:     if (rpm->distribution)
        !            93:        fprintf(rdf, "<RPM:Distribution>%s</RPM:Distribution>\n",
        !            94:                rpm->distribution);
        !            95:     if (rpm->vendor)
        !            96:        fprintf(rdf, "<RPM:Vendor>%s</RPM:Vendor>\n", rpm->vendor);
        !            97:     fprintf(rdf, "<RPM:Size>%d</RPM:Size>\n", rpm->size);
        !            98:     if (rpm->url)
        !            99:        fprintf(rdf, "<RPM:URL>%s</RPM:URL>\n", rpm->url);
        !           100:     tstruct = localtime(&(rpm->date));
        !           101: #ifdef HAVE_STRFTIME
        !           102:     strftime(buf, sizeof(buf) - 1, "%c", tstruct);
        !           103: #else
        !           104: #error "no strftime, please check !"
        !           105: #endif
        !           106:     fprintf(rdf, "<RPM:BuildDate>%s</RPM:BuildDate>\n", buf);
        !           107:     if (rpm->host)
        !           108:        fprintf(rdf, "<RPM:BuildHost>%s</RPM:BuildHost>\n", rpm->host);
        !           109:     if (rpm->group)
        !           110:        fprintf(rdf, "<RPM:Group>%s</RPM:Group>\n", rpm->group);
        !           111:     if (rpm->packager)
        !           112:        fprintf(rdf, "<RPM:Packager>%s</RPM:Packager>\n", rpm->packager);
        !           113:     if (dir->ftpsrc) {
        !           114:        fprintf(rdf, "<RPM:Sources>%s/%s</RPM:Sources>\n",
        !           115:                dir->ftpsrc, rpm->srcrpm);
        !           116:     } else {
        !           117:        fprintf(rdf, "<RPM:Sources>%s</RPM:Sources>\n",
        !           118:                rpm->srcrpm);
        !           119:     }
        !           120:     if (rpm->summary)
        !           121:        fprintf(rdf, "<RPM:Summary>%s</RPM:Summary>\n", rpm->summary);
        !           122:     if (rpm->description)
        !           123:        fprintf(rdf, "<RPM:Description>\n%s\n</RPM:Description>\n",
        !           124:                rpm->description);
        !           125:     if (rpm->copyright)
        !           126:        fprintf(rdf, "<RPM:Copyright>%s</RPM:Copyright>\n",
        !           127:                rpm->copyright);
        !           128:     if (rpm->nb_resources > 0) {
        !           129:        fprintf(rdf, "<RPM:Provides>\n");
        !           130:        fprintf(rdf, "<RDF:Bag>\n");
        !           131:         for (i = 0;i < rpm->nb_resources;i++) {
        !           132:            fprintf(rdf, "<RPM:Resource>%s</RPM:Resource>\n",
        !           133:                    rpm->resources[i]->name);
        !           134:         }
        !           135:        fprintf(rdf, "</RDF:Bag>\n");
        !           136:        fprintf(rdf, "</RPM:Provides>\n");
        !           137:     }
        !           138:     if (rpm->nb_requires > 0) {
        !           139:        fprintf(rdf, "<RPM:Requires>\n");
        !           140:        fprintf(rdf, "<RDF:Bag>\n");
        !           141:         for (i = 0;i < rpm->nb_requires;i++) {
        !           142:            fprintf(rdf, "<RPM:Resource>%s</RPM:Resource>\n",
        !           143:                    rpm->requires[i]->name);
        !           144:         }
        !           145:        fprintf(rdf, "</RDF:Bag>\n");
        !           146:        fprintf(rdf, "</RPM:Requires>\n");
        !           147:     }
        !           148:     if (rpm->filelist)
        !           149:        fprintf(rdf, "<RPM:Files>\n%s\n</RPM:Files>\n", rpm->filelist);
1.1       httpng    150:     fprintf(rdf, "</RDF:Description>\n");
                    151:     fprintf(rdf, "</RDF:RDF>\n");
                    152:     fclose(rdf);
                    153: 
                    154: }
                    155: 

Webmaster