razor.c
changeset 43 d37d57c99cac
parent 41 7eea400e19db
child 44 3d1a1517fa1d
     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 -}