1.1 --- a/src/main.c Thu Jun 26 18:41:55 2008 -0400
1.2 +++ b/src/main.c Thu Jun 26 19:11:36 2008 -0400
1.3 @@ -860,6 +860,52 @@
1.4 return 0;
1.5 }
1.6
1.7 +#define SEARCH_MAX 256
1.8 +
1.9 +static int
1.10 +command_search(int argc, const char *argv[])
1.11 +{
1.12 + struct razor_set *set;
1.13 + struct razor_package_iterator *pi;
1.14 + struct razor_package *package;
1.15 + char pattern[SEARCH_MAX];
1.16 + const char *name, *version, *arch;
1.17 + const char *summary, *description, *url, *license;
1.18 +
1.19 + if (!argv[0]) {
1.20 + fprintf(stderr, "must specify a search term\n");
1.21 + return 1;
1.22 + }
1.23 +
1.24 + sprintf(pattern, "*%s*", argv[0]);
1.25 +
1.26 + set = razor_set_open(repo_filename);
1.27 + if (set == NULL)
1.28 + return 1;
1.29 + if (razor_set_open_details(set, "system-details.repo"))
1.30 + return 1;
1.31 +
1.32 + pi = razor_package_iterator_create(set);
1.33 + while (razor_package_iterator_next(pi, &package,
1.34 + &name, &version, &arch)) {
1.35 + if (!fnmatch(pattern, name, 0))
1.36 + printf("%s-%s.%s\n", name, version, arch);
1.37 + else {
1.38 + razor_package_get_details (set, package, &summary,
1.39 + &description, &url,
1.40 + &license);
1.41 + if (!fnmatch(pattern, url, 0) ||
1.42 + !fnmatch(pattern, summary, 0) ||
1.43 + !fnmatch(pattern, description, 0))
1.44 + printf("%s-%s.%s\n", name, version, arch);
1.45 + }
1.46 + }
1.47 + razor_package_iterator_destroy(pi);
1.48 + razor_set_destroy(set);
1.49 +
1.50 + return 0;
1.51 +}
1.52 +
1.53 static struct {
1.54 const char *name;
1.55 const char *description;
1.56 @@ -884,7 +930,8 @@
1.57 { "install", "install rpm", command_install },
1.58 { "init", "init razor root", command_init },
1.59 { "download", "download packages", command_download },
1.60 - { "info", "display package details", command_info }
1.61 + { "info", "display package details", command_info },
1.62 + { "search", "search package details", command_search }
1.63 };
1.64
1.65 static int