int exec_update(int argc, char **argv) { int ret; int ch; const char *reponame = NULL; struct option longopts[] = { { "force", no_argument, NULL, 'f' }, { "quiet", no_argument, NULL, 'q' }, { "repository", required_argument, NULL, 'r' }, { NULL, 0, NULL, 0 }, }; while ((ch = getopt_long(argc, argv, "+fqr:", longopts, NULL)) != -1) { switch (ch) { case 'f': force = true; break; case 'q': quiet = true; break; case 'r': reponame = optarg; break; default: usage_update(); return (EX_USAGE); } } argc -= optind; argv += optind; if (argc != 0) { usage_update(); return (EX_USAGE); } ret = pkgdb_access(PKGDB_MODE_WRITE|PKGDB_MODE_CREATE, PKGDB_DB_REPO); if (ret == EPKG_ENOACCESS) { warnx("Insufficient privileges to update the repository " "catalogue."); return (EX_NOPERM); } else if (ret != EPKG_OK) return (EX_IOERR); /* For pkg-update update op is strict */ ret = pkgcli_update(force, true, reponame); return ((ret == EPKG_OK) ? EX_OK : EX_SOFTWARE); }
static int bee_dep_rebuild(int argc, char *argv[]) { int c, help; struct hash *graph; struct option long_options[] = { {"help", 0, &help, 1}, {0, 0, 0, 0} }; help = 0; while ((c = getopt_long(argc, argv, "", long_options, NULL)) != -1) { switch (c) { case '?': usage_update(); return 1; } } if (help) { usage_rebuild(); return 0; } if (argc > 1) { fprintf(stderr, "bee-dep: too many arguments\n"); return 1; } graph = init_cache(); hash_free(graph); return 0; }
int exec_update(int argc, char **argv) { int ret; int ch; bool force = false; while ((ch = getopt(argc, argv, "fq")) != -1) { switch (ch) { case 'q': quiet = true; break; case 'f': force = true; break; default: usage_update(); return (EX_USAGE); } } argc -= optind; argv += optind; if (argc != 0) { usage_update(); return (EX_USAGE); } ret = pkgdb_access(PKGDB_MODE_WRITE|PKGDB_MODE_CREATE, PKGDB_DB_REPO); if (ret == EPKG_ENOACCESS) { warnx("Insufficient privileges to update the repository " "catalogue"); return (EX_NOPERM); } else if (ret != EPKG_OK) return (EX_IOERR); ret = pkgcli_update(force); return ((ret == EPKG_OK) ? EX_OK : EX_SOFTWARE); }
static int bee_dep_update(int argc, char *argv[]) { int c, help; char *pkg; char path[PATH_MAX + 1]; struct hash *graph; struct stat st; struct option long_options[] = { {"help", 0, &help, 1}, {0, 0, 0, 0} }; help = 0; while ((c = getopt_long(argc, argv, "", long_options, NULL)) != -1) { switch (c) { case '?': usage_update(); return 1; } } if (help) { usage_update(); return 0; } if (argc == 1) { graph = get_cache(); if (update_cache(graph) || save_cache(graph, cache_filename())) { hash_free(graph); return 1; } hash_free(graph); return 0; } if (argc < 2) { fprintf(stderr, "bee-dep: pkgname needed\n"); return 1; } if (argc > 2) { fprintf(stderr, "bee-dep: too many arguments\n"); return 1; } pkg = argv[1]; if (sprintf(path, "%s/%s/DEPENDENCIES", bee_metadir(), pkg) < 0) { perror("bee-dep: sprintf"); return 1; } graph = get_cache(); if (stat(path, &st) != -1) { if (hash_search(graph, pkg)) { hash_free(graph); return 0; } if (graph_insert_nodes(graph, path)) { hash_free(graph); return 1; } } else { if (remove_package(graph, pkg)) { hash_free(graph); return 1; } } if (save_cache(graph, cache_filename())) { hash_free(graph); return 1; } hash_free(graph); return 0; }
int exec_update(int argc, char **argv) { char url[MAXPATHLEN]; const char *packagesite = NULL; const char *repo_name; struct pkg_config_kv *repokv = NULL; int retcode = EPKG_OK; bool multi_repos = false; (void)argv; if (argc != 1) { usage_update(); return (EX_USAGE); } if (geteuid() != 0) { warnx("updating the remote database can only be done as root"); return (EX_NOPERM); } /* * Fetch remote databases. */ pkg_config_bool(PKG_CONFIG_MULTIREPOS, &multi_repos); /* single repository */ if (!multi_repos) { /* * Single remote database */ pkg_config_string(PKG_CONFIG_REPO, &packagesite); if (packagesite == NULL) { warnx("PACKAGESITE is not defined."); return (1); } if (packagesite[strlen(packagesite) - 1] == '/') snprintf(url, MAXPATHLEN, "%srepo.txz", packagesite); else snprintf(url, MAXPATHLEN, "%s/repo.txz", packagesite); retcode = update_from_remote_repo("repo", url); } else { /* multiple repositories */ while (pkg_config_list(PKG_CONFIG_REPOS, &repokv) == EPKG_OK) { repo_name = pkg_config_kv_get(repokv, PKG_CONFIG_KV_KEY); packagesite = pkg_config_kv_get(repokv, PKG_CONFIG_KV_VALUE); if (packagesite[strlen(packagesite) - 1] == '/') snprintf(url, MAXPATHLEN, "%srepo.txz", packagesite); else snprintf(url, MAXPATHLEN, "%s/repo.txz", packagesite); retcode = update_from_remote_repo(repo_name, url); } } return (retcode); }