1.1 --- a/razor.c Sat Sep 29 19:25:38 2007 -0400
1.2 +++ b/razor.c Sun Sep 30 00:18:20 2007 -0400
1.3 @@ -14,8 +14,6 @@
1.4
1.5 #include "razor.h"
1.6
1.7 -#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
1.8 -
1.9 struct array {
1.10 void *data;
1.11 int size, alloc;
1.12 @@ -220,7 +218,7 @@
1.13 free(set);
1.14 }
1.15
1.16 -static int
1.17 +int
1.18 razor_set_write(struct razor_set *set, const char *filename)
1.19 {
1.20 char data[4096];
1.21 @@ -836,7 +834,7 @@
1.22 razor_set_list_all_properties(set, &set->provides);
1.23 }
1.24
1.25 -void
1.26 +static void
1.27 razor_set_list_property_packages(struct razor_set *set,
1.28 struct array *properties,
1.29 const char *name,
1.30 @@ -870,6 +868,22 @@
1.31 }
1.32
1.33 void
1.34 +razor_set_list_requires_packages(struct razor_set *set,
1.35 + const char *name,
1.36 + const char *version)
1.37 +{
1.38 + razor_set_list_property_packages(set, &set->requires, name, version);
1.39 +}
1.40 +
1.41 +void
1.42 +razor_set_list_provides_packages(struct razor_set *set,
1.43 + const char *name,
1.44 + const char *version)
1.45 +{
1.46 + razor_set_list_property_packages(set, &set->provides, name, version);
1.47 +}
1.48 +
1.49 +static void
1.50 razor_set_validate(struct razor_set *set, struct array *unsatisfied)
1.51 {
1.52 struct razor_property *r, *p, *rend, *pend;
1.53 @@ -1331,7 +1345,7 @@
1.54 int count, const char **packages)
1.55 {
1.56 struct razor_set *new;
1.57 - struct razor_package *p, *upackages;
1.58 + struct razor_package *upackages;
1.59 struct array list, unsatisfied;
1.60 char *pool;
1.61 unsigned long *u, *end;
1.62 @@ -1346,16 +1360,9 @@
1.63 end = list.data + list.size;
1.64 upackages = upstream->packages.data;
1.65 pool = upstream->string_pool.data;
1.66 - for (u = list.data; u < end; u++) {
1.67 - p = upackages + *u;
1.68 - printf("package %s-%s set to be updated\n",
1.69 - &pool[p->name], &pool[p->version]);
1.70 - }
1.71 total += list.size / sizeof *u;
1.72
1.73 while (list.size > 0) {
1.74 - printf(" -- satisfying new requires\n");
1.75 -
1.76 new = razor_set_add(set, upstream, &list);
1.77 array_release(&list);
1.78 razor_set_destroy(set);
1.79 @@ -1370,164 +1377,11 @@
1.80 end = list.data + list.size;
1.81 upackages = upstream->packages.data;
1.82 pool = upstream->string_pool.data;
1.83 - for (u = list.data; u < end; u++) {
1.84 - p = upackages + *u;
1.85 - printf("package %s-%s set to be updated\n",
1.86 - &pool[p->name], &pool[p->version]);
1.87 - }
1.88 total += list.size / sizeof *u;
1.89 }
1.90
1.91 array_release(&list);
1.92
1.93 - printf("total of %d packages set to be updated\n", total);
1.94 -
1.95 return set;
1.96 }
1.97
1.98 -void
1.99 -razor_set_info(struct razor_set *set)
1.100 -{
1.101 - unsigned int offset, size;
1.102 - int i;
1.103 -
1.104 - for (i = 0; i < set->header->sections[i].type; i++) {
1.105 - offset = set->header->sections[i].offset;
1.106 - size = set->header->sections[i].size;
1.107 -
1.108 - switch (set->header->sections[i].type) {
1.109 - case RAZOR_PACKAGES:
1.110 - printf("package section:\t%dkb\n", size / 1024);
1.111 - break;
1.112 - case RAZOR_REQUIRES:
1.113 - printf("requires section:\t%dkb\n", size / 1024);
1.114 - break;
1.115 - case RAZOR_PROVIDES:
1.116 - printf("provides section:\t%dkb\n", size / 1024);
1.117 - break;
1.118 - case RAZOR_STRING_POOL:
1.119 - printf("string pool:\t\t%dkb\n", size / 1024);
1.120 - break;
1.121 - }
1.122 - }
1.123 -}
1.124 -
1.125 -static int
1.126 -usage(void)
1.127 -{
1.128 - printf("usage: razor [ import FILES | lookup <key> | "
1.129 - "list | list-requires | list-provides | eat-yum | info ]\n");
1.130 - exit(1);
1.131 -}
1.132 -
1.133 -static const char *repo_filename = "system.repo";
1.134 -static const char rawhide_repo_filename[] = "rawhide.repo";
1.135 -
1.136 -int
1.137 -main(int argc, const char *argv[])
1.138 -{
1.139 - struct razor_set *set, *upstream;
1.140 - struct stat statbuf;
1.141 - char *repo;
1.142 -
1.143 - repo = getenv("RAZOR_REPO");
1.144 - if (repo != NULL)
1.145 - repo_filename = repo;
1.146 -
1.147 - if (argc < 2) {
1.148 - usage();
1.149 - } else if (strcmp(argv[1], "import") == 0) {
1.150 - if (stat("set", &statbuf) && mkdir("set", 0777)) {
1.151 - fprintf(stderr, "could not create directory 'set'\n");
1.152 - exit(-1);
1.153 - }
1.154 -
1.155 - set = razor_import_rzr_files(argc - 2, argv + 2);
1.156 -
1.157 - printf("pool size: %d\n", set->string_pool.size);
1.158 - printf("pool allocation: %d\n", set->string_pool.alloc);
1.159 - printf("packages: %d\n",
1.160 - set->packages.size / sizeof(struct razor_package));
1.161 - printf("requires: %d\n",
1.162 - set->requires.size / sizeof(struct razor_property));
1.163 - printf("provides: %d\n",
1.164 - set->provides.size / sizeof(struct razor_property));
1.165 -
1.166 - razor_set_write(set, repo_filename);
1.167 -
1.168 - razor_set_destroy(set);
1.169 - } else if (strcmp(argv[1], "list") == 0) {
1.170 - set = razor_set_open(repo_filename);
1.171 - razor_set_list(set);
1.172 - razor_set_destroy(set);
1.173 - } else if (strcmp(argv[1], "list-requires") == 0) {
1.174 - set = razor_set_open(repo_filename);
1.175 - razor_set_list_requires(set, argv[2]);
1.176 - razor_set_destroy(set);
1.177 - } else if (strcmp(argv[1], "list-provides") == 0) {
1.178 - set = razor_set_open(repo_filename);
1.179 - razor_set_list_provides(set, argv[2]);
1.180 - razor_set_destroy(set);
1.181 - } else if (strcmp(argv[1], "what-requires") == 0) {
1.182 - set = razor_set_open(repo_filename);
1.183 - razor_set_list_property_packages(set, &set->requires,
1.184 - argv[2], argv[3]);
1.185 - razor_set_destroy(set);
1.186 - } else if (strcmp(argv[1], "what-provides") == 0) {
1.187 - set = razor_set_open(repo_filename);
1.188 - razor_set_list_property_packages(set, &set->provides,
1.189 - argv[2], argv[3]);
1.190 - razor_set_destroy(set);
1.191 - } else if (strcmp(argv[1], "info") == 0) {
1.192 - set = razor_set_open(repo_filename);
1.193 - razor_set_info(set);
1.194 - razor_set_destroy(set);
1.195 - } else if (strcmp(argv[1], "eat-yum") == 0) {
1.196 - set = razor_set_create_from_yum_filelist(STDIN_FILENO);
1.197 - if (set == NULL)
1.198 - return 1;
1.199 - razor_set_write(set, rawhide_repo_filename);
1.200 - razor_set_destroy(set);
1.201 - printf("wrote %s\n", rawhide_repo_filename);
1.202 - } else if (strcmp(argv[1], "import-rpmdb") == 0) {
1.203 - set = razor_set_create_from_rpmdb();
1.204 - if (set == NULL)
1.205 - return 1;
1.206 - razor_set_write(set, repo_filename);
1.207 - razor_set_destroy(set);
1.208 - printf("wrote %s\n", repo_filename);
1.209 - } else if (strcmp(argv[1], "validate") == 0) {
1.210 - set = razor_set_open(repo_filename);
1.211 - if (set == NULL)
1.212 - return 1;
1.213 - razor_set_list_unsatisfied(set);
1.214 - razor_set_destroy(set);
1.215 - } else if (strcmp(argv[1], "add") == 0) {
1.216 - struct array list;
1.217 -
1.218 - set = razor_set_open(repo_filename);
1.219 - upstream = razor_set_open(rawhide_repo_filename);
1.220 - if (set == NULL || upstream == NULL)
1.221 - return 1;
1.222 - array_init(&list);
1.223 - find_packages(upstream, argc - 2, argv + 2, &list);
1.224 - set = razor_set_add(set, upstream, &list);
1.225 - razor_set_write(set, "system-updated.repo");
1.226 - razor_set_destroy(set);
1.227 - printf("wrote system-updated.repo\n");
1.228 - } else if (strcmp(argv[1], "update") == 0) {
1.229 - set = razor_set_open(repo_filename);
1.230 - upstream = razor_set_open(rawhide_repo_filename);
1.231 - if (set == NULL || upstream == NULL)
1.232 - return 1;
1.233 - set = razor_set_update(set, upstream, argc - 2, argv + 2);
1.234 - razor_set_write(set, "system-updated.repo");
1.235 - razor_set_destroy(set);
1.236 - razor_set_destroy(upstream);
1.237 - printf("wrote system-updated.repo\n");
1.238 - } else {
1.239 - usage();
1.240 - }
1.241 -
1.242 - return 0;
1.243 -}