1.1 --- a/import.c Sun Nov 04 01:11:53 2007 -0400
1.2 +++ b/import.c Thu Nov 08 22:45:27 2007 -0500
1.3 @@ -15,144 +15,6 @@
1.4 #include "sha1.h"
1.5 #include "razor.h"
1.6
1.7 -static void
1.8 -parse_package(struct razor_importer *importer, const char **atts, void *data)
1.9 -{
1.10 - const char *name = NULL, *version = NULL;
1.11 - int i;
1.12 -
1.13 - for (i = 0; atts[i]; i += 2) {
1.14 - if (strcmp(atts[i], "name") == 0)
1.15 - name = atts[i + 1];
1.16 - else if (strcmp(atts[i], "version") == 0)
1.17 - version = atts[i + 1];
1.18 - }
1.19 -
1.20 - if (name == NULL || version == NULL) {
1.21 - fprintf(stderr, "invalid package tag, "
1.22 - "missing name or version attributes\n");
1.23 - return;
1.24 - }
1.25 -
1.26 - razor_importer_begin_package(importer, name, version);
1.27 -}
1.28 -
1.29 -enum {
1.30 - RZR_REQUIRES, RZR_PROVIDES
1.31 -};
1.32 -
1.33 -static void
1.34 -parse_property(struct razor_importer *importer, const char **atts, void *data)
1.35 -{
1.36 - const char *name = NULL, *version = NULL;
1.37 - int i;
1.38 -
1.39 - for (i = 0; atts[i]; i += 2) {
1.40 - if (strcmp(atts[i], "name") == 0)
1.41 - name = atts[i + 1];
1.42 - if (strcmp(atts[i], "version") == 0)
1.43 - version = atts[i + 1];
1.44 - }
1.45 -
1.46 - if (name == NULL) {
1.47 - fprintf(stderr, "invalid tag, missing name attribute\n");
1.48 - return;
1.49 - }
1.50 -
1.51 - switch ((int) data) {
1.52 - case RZR_REQUIRES:
1.53 - razor_importer_add_property(importer, name, version,
1.54 - RAZOR_PROPERTY_REQUIRES);
1.55 - break;
1.56 - case RZR_PROVIDES:
1.57 - razor_importer_add_property(importer, name, version,
1.58 - RAZOR_PROPERTY_PROVIDES);
1.59 - break;
1.60 - }
1.61 -}
1.62 -
1.63 -static void
1.64 -start_element(void *data, const char *name, const char **atts)
1.65 -{
1.66 - struct razor_importer *importer = data;
1.67 -
1.68 - if (strcmp(name, "package") == 0)
1.69 - parse_package(importer, atts, NULL);
1.70 - else if (strcmp(name, "requires") == 0)
1.71 - parse_property(importer, atts, (void *) RZR_REQUIRES);
1.72 - else if (strcmp(name, "provides") == 0)
1.73 - parse_property(importer, atts, (void*) RZR_PROVIDES);
1.74 -}
1.75 -
1.76 -static void
1.77 -end_element (void *data, const char *name)
1.78 -{
1.79 - struct razor_importer *importer = data;
1.80 -
1.81 - if (strcmp(name, "package") == 0)
1.82 - razor_importer_finish_package(importer);
1.83 -}
1.84 -
1.85 -static int
1.86 -import_rzr_file(struct razor_importer *importer, const char *filename)
1.87 -{
1.88 - SHA_CTX sha1;
1.89 - XML_Parser parser;
1.90 - int fd;
1.91 - void *p;
1.92 - struct stat stat;
1.93 - unsigned char hash[20];
1.94 -
1.95 - fd = open(filename, O_RDONLY);
1.96 - if (fstat(fd, &stat) < 0)
1.97 - return -1;
1.98 - p = mmap(NULL, stat.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
1.99 - if (p == MAP_FAILED)
1.100 - return -1;
1.101 -
1.102 - parser = XML_ParserCreate(NULL);
1.103 - XML_SetUserData(parser, importer);
1.104 - XML_SetElementHandler(parser, start_element, end_element);
1.105 - if (XML_Parse(parser, p, stat.st_size, 1) == XML_STATUS_ERROR) {
1.106 - fprintf(stderr,
1.107 - "%s at line %ld, %s\n",
1.108 - XML_ErrorString(XML_GetErrorCode(parser)),
1.109 - XML_GetCurrentLineNumber(parser),
1.110 - filename);
1.111 - return 1;
1.112 - }
1.113 -
1.114 - XML_ParserFree(parser);
1.115 -
1.116 - SHA1_Init(&sha1);
1.117 - SHA1_Update(&sha1, p, stat.st_size);
1.118 - SHA1_Final(hash, &sha1);
1.119 -
1.120 - close(fd);
1.121 -
1.122 - munmap(p, stat.st_size);
1.123 -
1.124 - return 0;
1.125 -}
1.126 -
1.127 -struct razor_set *
1.128 -razor_import_rzr_files(int count, const char *files[])
1.129 -{
1.130 - struct razor_importer *importer;
1.131 - int i;
1.132 -
1.133 - importer = razor_importer_new();
1.134 -
1.135 - for (i = 0; i < count; i++) {
1.136 - if (import_rzr_file(importer, files[i]) < 0) {
1.137 - fprintf(stderr, "failed to import %s\n", files[i]);
1.138 - exit(-1);
1.139 - }
1.140 - }
1.141 -
1.142 - return razor_importer_finish(importer);
1.143 -}
1.144 -
1.145 /* Import a yum filelist as a razor package set. */
1.146
1.147 enum {