summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChantry Xavier <shiningxc@gmail.com>2007-11-22 21:01:45 +0100
committerDan McGee <dan@archlinux.org>2007-12-02 18:14:13 +0100
commit250331a636699561e1239e341f30f2adfebbcb43 (patch)
tree0a8ebd84f468ac9f9628d1257ed68d28713f3181 /src
parentc15f7710deafe1b4fe9411381bd07cd0dbe8da48 (diff)
downloadpacman-250331a636699561e1239e341f30f2adfebbcb43.tar.gz
pacman-250331a636699561e1239e341f30f2adfebbcb43.tar.xz
Add new --needed option for -S.
During a pacman operation such as a group install, pacman can ask several questions such as "local version is up to date. Upgrade anyway?". They are usually all answered either by yes or by no: * yes when you want to reinstall all the targets. * no when you only want to install the missing ones (either because you are installing a group, or because you are copying a pacman -S line from wiki or whatever). So instead of asking this question for each target, it is now now configured with a flag. Yes will be the default -S behavior, No will be achieved with the --needed flag. Signed-off-by: Chantry Xavier <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'src')
-rw-r--r--src/pacman/callback.c11
-rw-r--r--src/pacman/pacman.c13
2 files changed, 8 insertions, 16 deletions
diff --git a/src/pacman/callback.c b/src/pacman/callback.c
index 232ca4cd..dd469ecc 100644
--- a/src/pacman/callback.c
+++ b/src/pacman/callback.c
@@ -305,7 +305,6 @@ void cb_trans_conv(pmtransconv_t event, void *data1, void *data2,
*response = yesno(str);
break;
case PM_TRANS_CONV_LOCAL_NEWER:
-
if(!config->op_s_downloadonly) {
snprintf(str, LOG_STR_LEN, _(":: %s-%s: local version is newer. Upgrade anyway? [Y/n] "),
alpm_pkg_get_name(data1),
@@ -315,16 +314,6 @@ void cb_trans_conv(pmtransconv_t event, void *data1, void *data2,
*response = 1;
}
break;
- case PM_TRANS_CONV_LOCAL_UPTODATE:
- if(!config->op_s_downloadonly) {
- snprintf(str, LOG_STR_LEN, _(":: %s-%s: local version is up to date. Upgrade anyway? [Y/n] "),
- alpm_pkg_get_name(data1),
- alpm_pkg_get_version(data1));
- *response = yesno(str);
- } else {
- *response = 1;
- }
- break;
case PM_TRANS_CONV_CORRUPTED_PKG:
if(!config->noconfirm) {
snprintf(str, LOG_STR_LEN, _(":: File %s is corrupted. Do you want to delete it? [Y/n] "),
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index 3f4af22c..19d8b2a4 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -129,6 +129,7 @@ static void usage(int op, const char * const myname)
printf(_(" -u, --sysupgrade upgrade all packages that are out of date\n"));
printf(_(" -w, --downloadonly download packages but do not install/upgrade anything\n"));
printf(_(" -y, --refresh download fresh package databases from the server\n"));
+ printf(_(" --needed only install outdated or not yet installed packages\n"));
printf(_(" --ignore <pkg> ignore a package upgrade (can be used more than once)\n"));
printf(_(" --ignoregroup <grp>\n"
" ignore a group upgrade (can be used more than once)\n"));
@@ -261,8 +262,8 @@ static int parseargs(int argc, char *argv[])
{"info", no_argument, 0, 'i'},
{"dbonly", no_argument, 0, 'k'},
{"list", no_argument, 0, 'l'},
- {"nosave", no_argument, 0, 'n'},
{"foreign", no_argument, 0, 'm'},
+ {"nosave", no_argument, 0, 'n'},
{"owns", no_argument, 0, 'o'},
{"file", no_argument, 0, 'p'},
{"print-uris", no_argument, 0, 'p'},
@@ -286,10 +287,11 @@ static int parseargs(int argc, char *argv[])
{"asdeps", no_argument, 0, 1008},
{"logfile", required_argument, 0, 1009},
{"ignoregroup", required_argument, 0, 1010},
+ {"needed", no_argument, 0, 1011},
{0, 0, 0, 0}
};
- while((opt = getopt_long(argc, argv, "ARUFQSTr:b:vkhscVfmnoldepituwygzq", opts, &option_index))) {
+ while((opt = getopt_long(argc, argv, "ARUFQSTr:b:vkhscVfmnoldepqituwygz", opts, &option_index))) {
alpm_list_t *list = NULL, *item = NULL; /* lists for splitting strings */
if(opt < 0) {
@@ -361,6 +363,7 @@ static int parseargs(int argc, char *argv[])
}
FREELIST(list);
break;
+ case 1011: config->flags |= PM_TRANS_FLAG_NEEDED; break;
case 'A': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_ADD); break;
case 'Q': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_QUERY); break;
case 'R': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_REMOVE); break;
@@ -402,6 +405,9 @@ static int parseargs(int argc, char *argv[])
config->op_q_isfile = 1;
config->flags |= PM_TRANS_FLAG_PRINTURIS;
break;
+ case 'q':
+ config->quiet = 1;
+ break;
case 'r':
if(alpm_option_set_root(optarg) != 0) {
pm_printf(PM_LOG_ERROR, _("problem setting root '%s' (%s)\n"),
@@ -429,9 +435,6 @@ static int parseargs(int argc, char *argv[])
config->flags |= PM_TRANS_FLAG_NOCONFLICTS;
break;
case 'y': (config->op_s_sync)++; break;
- case 'q':
- config->quiet = 1;
- break;
case '?': return(1);
default: return(1);
}