int run(int argc, char *argv[]) { po::positional_options_description p; p.add("input", -1); try { po::store(po::command_line_parser(argc, argv).options(desc).positional(p).run(), vm); po::notify(vm); if (vm.count("manager")) *manager_mode = true; if (vm.count("input")) *args = vm["input"].as < CmdArgs >(); if (vm.count("log-file")) *trace = 0; if (vm.count("log-stdout")) *trace = 1; if (vm.count("help")) return show_help(generic); if (vm.count("version")) return show_version(); if (vm.count("infos")) return show_infos(); if (vm.count("list")) return show_package_list(); if (vm.count("restart")) return remove_configuration_file(); if (vm.count("package")) return PROGRAM_OPTIONS_PACKAGE; if (vm.count("remote")) return PROGRAM_OPTIONS_REMOTE; if (vm.count("config")) return PROGRAM_OPTIONS_CONFIG; } catch (const std::exception &e) { std::cerr << e.what() << std::endl; return PROGRAM_OPTIONS_FAILURE; } std::cerr << _("Nothing to do. Use package, remote or config mode." " See the help.\n"); return PROGRAM_OPTIONS_END; }
static int show_transaction_sizes(struct transaction *trans, int cols) { uint64_t dlsize = 0, instsize = 0, rmsize = 0, disk_free_size = 0; char size[8]; if (!print_trans_colmode(trans, cols)) { /* * Show the list of packages that will be downloaded, installed, updated, * removed or configured. */ xbps_dictionary_get_uint32(trans->d, "total-download-pkgs", &trans->dl_pkgcnt); if (trans->dl_pkgcnt) { printf("%u package%s will be downloaded:\n", trans->dl_pkgcnt, trans->dl_pkgcnt == 1 ? "" : "s"); show_package_list(trans, NULL, cols); printf("\n"); } xbps_dictionary_get_uint32(trans->d, "total-install-pkgs", &trans->inst_pkgcnt); if (trans->inst_pkgcnt) { printf("%u package%s will be installed:\n", trans->inst_pkgcnt, trans->inst_pkgcnt == 1 ? "" : "s"); show_package_list(trans, "install", cols); printf("\n"); } xbps_dictionary_get_uint32(trans->d, "total-update-pkgs", &trans->up_pkgcnt); if (trans->up_pkgcnt) { printf("%u package%s will be updated:\n", trans->up_pkgcnt, trans->up_pkgcnt == 1 ? "" : "s"); show_package_list(trans, "update", cols); printf("\n"); } xbps_dictionary_get_uint32(trans->d, "total-configure-pkgs", &trans->cf_pkgcnt); if (trans->cf_pkgcnt) { printf("%u package%s will be configured:\n", trans->cf_pkgcnt, trans->cf_pkgcnt == 1 ? "" : "s"); show_package_list(trans, "configure", cols); printf("\n"); } xbps_dictionary_get_uint32(trans->d, "total-remove-pkgs", &trans->rm_pkgcnt); if (trans->rm_pkgcnt) { printf("%u package%s will be removed:\n", trans->rm_pkgcnt, trans->rm_pkgcnt == 1 ? "" : "s"); show_package_list(trans, "remove", cols); printf("\n"); } } /* * Show total download/installed/removed size for all required packages. */ xbps_dictionary_get_uint64(trans->d, "total-download-size", &dlsize); xbps_dictionary_get_uint64(trans->d, "total-installed-size", &instsize); xbps_dictionary_get_uint64(trans->d, "total-removed-size", &rmsize); xbps_dictionary_get_uint64(trans->d, "disk-free-size", &disk_free_size); if (dlsize || instsize || rmsize || disk_free_size) printf("\n"); if (dlsize) { if (xbps_humanize_number(size, (int64_t)dlsize) == -1) { xbps_error_printf("humanize_number returns " "%s\n", strerror(errno)); return -1; } printf("Size to download: %6s\n", size); } if (instsize) { if (xbps_humanize_number(size, (int64_t)instsize) == -1) { xbps_error_printf("humanize_number2 returns " "%s\n", strerror(errno)); return -1; } printf("Size required on disk: %6s\n", size); } if (rmsize) { if (xbps_humanize_number(size, (int64_t)rmsize) == -1) { xbps_error_printf("humanize_number3 returns " "%s\n", strerror(errno)); return -1; } printf("Size freed on disk: %6s\n", size); } if (disk_free_size) { if (xbps_humanize_number(size, (int64_t)disk_free_size) == -1) { xbps_error_printf("humanize_number3 returns " "%s\n", strerror(errno)); return -1; } printf("Free space on disk: %6s\n", size); } printf("\n"); return 0; }
static int show_transaction_sizes(struct transaction *trans, int cols) { uint64_t dlsize = 0, instsize = 0, rmsize = 0; char size[8]; /* * Show the list of packages that will be installed. */ if (xbps_dictionary_get_uint32(trans->d, "total-install-pkgs", &trans->inst_pkgcnt)) { printf("%u package%s will be installed:\n", trans->inst_pkgcnt, trans->inst_pkgcnt == 1 ? "" : "s"); show_package_list(trans->iter, "install", cols); printf("\n"); } if (xbps_dictionary_get_uint32(trans->d, "total-update-pkgs", &trans->up_pkgcnt)) { printf("%u package%s will be updated:\n", trans->up_pkgcnt, trans->up_pkgcnt == 1 ? "" : "s"); show_package_list(trans->iter, "update", cols); printf("\n"); } if (xbps_dictionary_get_uint32(trans->d, "total-configure-pkgs", &trans->cf_pkgcnt)) { printf("%u package%s will be configured:\n", trans->cf_pkgcnt, trans->cf_pkgcnt == 1 ? "" : "s"); show_package_list(trans->iter, "configure", cols); printf("\n"); } if (xbps_dictionary_get_uint32(trans->d, "total-remove-pkgs", &trans->rm_pkgcnt)) { printf("%u package%s will be removed:\n", trans->rm_pkgcnt, trans->rm_pkgcnt == 1 ? "" : "s"); show_package_list(trans->iter, "remove", cols); printf("\n"); } /* * Show total download/installed/removed size for all required packages. */ xbps_dictionary_get_uint64(trans->d, "total-download-size", &dlsize); xbps_dictionary_get_uint64(trans->d, "total-installed-size", &instsize); xbps_dictionary_get_uint64(trans->d, "total-removed-size", &rmsize); if (dlsize || instsize || rmsize) printf("\n"); if (dlsize) { if (xbps_humanize_number(size, (int64_t)dlsize) == -1) { xbps_error_printf("humanize_number returns " "%s\n", strerror(errno)); return -1; } printf("Total download size:\t%6s\n", size); } if (instsize) { if (xbps_humanize_number(size, (int64_t)instsize) == -1) { xbps_error_printf("humanize_number2 returns " "%s\n", strerror(errno)); return -1; } printf("Total installed size:\t%6s\n", size); } if (rmsize) { if (xbps_humanize_number(size, (int64_t)rmsize) == -1) { xbps_error_printf("humanize_number3 returns " "%s\n", strerror(errno)); return -1; } printf("Total freed size:\t%6s\n", size); } printf("\n"); return 0; }