split yesno() into yesno() and noyes() functions.
The yesno function had a preset argument for specifying the default answer : yes or no. However, in all our calls to yesno, only one used the default "no" answer. Having to specify preset==1 for all the other cases was rather cumbersome. To make this easier, this commit adds a noyes function, with the following behavior : yesno() : default answer is yes noyes() : default answer is no Signed-off-by: Xavier Chantry <shiningxc@gmail.com> Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
7865fb9af4
commit
adc4078b87
5 changed files with 47 additions and 25 deletions
|
@ -255,33 +255,33 @@ void cb_trans_conv(pmtransconv_t event, void *data1, void *data2,
|
|||
case PM_TRANS_CONV_INSTALL_IGNOREPKG:
|
||||
if(data2) {
|
||||
/* TODO we take this route based on data2 being not null? WTF */
|
||||
*response = yesno(1, _(":: %s requires installing %s from IgnorePkg/IgnoreGroup. Install anyway?"),
|
||||
*response = yesno(_(":: %s requires installing %s from IgnorePkg/IgnoreGroup. Install anyway?"),
|
||||
alpm_pkg_get_name(data2),
|
||||
alpm_pkg_get_name(data1));
|
||||
} else {
|
||||
*response = yesno(1, _(":: %s is in IgnorePkg/IgnoreGroup. Install anyway?"),
|
||||
*response = yesno(_(":: %s is in IgnorePkg/IgnoreGroup. Install anyway?"),
|
||||
alpm_pkg_get_name(data1));
|
||||
}
|
||||
break;
|
||||
case PM_TRANS_CONV_REMOVE_HOLDPKG:
|
||||
*response = yesno(1, _(":: %s is designated as a HoldPkg. Remove anyway?"),
|
||||
*response = yesno(_(":: %s is designated as a HoldPkg. Remove anyway?"),
|
||||
alpm_pkg_get_name(data1));
|
||||
break;
|
||||
case PM_TRANS_CONV_REPLACE_PKG:
|
||||
*response = yesno(1, _(":: Replace %s with %s/%s?"),
|
||||
*response = yesno(_(":: Replace %s with %s/%s?"),
|
||||
alpm_pkg_get_name(data1),
|
||||
(char *)data3,
|
||||
alpm_pkg_get_name(data2));
|
||||
break;
|
||||
case PM_TRANS_CONV_CONFLICT_PKG:
|
||||
*response = yesno(1, _(":: %s conflicts with %s. Remove %s?"),
|
||||
*response = yesno(_(":: %s conflicts with %s. Remove %s?"),
|
||||
(char *)data1,
|
||||
(char *)data2,
|
||||
(char *)data2);
|
||||
break;
|
||||
case PM_TRANS_CONV_LOCAL_NEWER:
|
||||
if(!config->op_s_downloadonly) {
|
||||
*response = yesno(1, _(":: %s-%s: local version is newer. Upgrade anyway?"),
|
||||
*response = yesno(_(":: %s-%s: local version is newer. Upgrade anyway?"),
|
||||
alpm_pkg_get_name(data1),
|
||||
alpm_pkg_get_version(data1));
|
||||
} else {
|
||||
|
@ -289,7 +289,7 @@ void cb_trans_conv(pmtransconv_t event, void *data1, void *data2,
|
|||
}
|
||||
break;
|
||||
case PM_TRANS_CONV_CORRUPTED_PKG:
|
||||
*response = yesno(1, _(":: File %s is corrupted. Do you want to delete it?"),
|
||||
*response = yesno(_(":: File %s is corrupted. Do you want to delete it?"),
|
||||
(char *)data1);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -75,10 +75,10 @@ int pacman_remove(alpm_list_t *targets)
|
|||
}
|
||||
printf(_(":: group %s:\n"), targ);
|
||||
list_display(" ", pkgnames);
|
||||
int all = yesno(1, _(" Remove whole content?"));
|
||||
int all = yesno(_(" Remove whole content?"));
|
||||
for(p = pkgnames; p; p = alpm_list_next(p)) {
|
||||
char *pkgn = alpm_list_getdata(p);
|
||||
if(all || yesno(1, _(":: Remove %s from group %s?"), pkgn, targ)) {
|
||||
if(all || yesno(_(":: Remove %s from group %s?"), pkgn, targ)) {
|
||||
if(alpm_trans_addtarget(pkgn) == -1) {
|
||||
pm_fprintf(stderr, PM_LOG_ERROR, "'%s': %s\n", targ,
|
||||
alpm_strerrorlast());
|
||||
|
@ -131,7 +131,7 @@ int pacman_remove(alpm_list_t *targets)
|
|||
printf("\n");
|
||||
|
||||
/* get confirmation */
|
||||
if(yesno(1, _("Do you want to remove these packages?")) == 0) {
|
||||
if(yesno(_("Do you want to remove these packages?")) == 0) {
|
||||
retval = 1;
|
||||
goto cleanup;
|
||||
}
|
||||
|
|
|
@ -85,7 +85,7 @@ static int sync_cleandb(const char *dbpath, int keep_used) {
|
|||
/* We have a directory that doesn't match any syncdb.
|
||||
* Ask the user if he wants to remove it. */
|
||||
if(!found) {
|
||||
if(!yesno(1, _("Do you want to remove %s?"), path)) {
|
||||
if(!yesno(_("Do you want to remove %s?"), path)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -105,7 +105,7 @@ static int sync_cleandb_all(void) {
|
|||
char newdbpath[PATH_MAX];
|
||||
|
||||
printf(_("Database directory: %s\n"), dbpath);
|
||||
if(!yesno(1, _("Do you want to remove unused repositories?"))) {
|
||||
if(!yesno(_("Do you want to remove unused repositories?"))) {
|
||||
return(0);
|
||||
}
|
||||
/* The sync dbs were previously put in dbpath/, but are now in dbpath/sync/,
|
||||
|
@ -135,12 +135,12 @@ static int sync_cleancache(int level)
|
|||
printf(_("Cache directory: %s\n"), cachedir);
|
||||
switch(config->cleanmethod) {
|
||||
case PM_CLEAN_KEEPINST:
|
||||
if(!yesno(1, _("Do you want to remove uninstalled packages from cache?"))) {
|
||||
if(!yesno(_("Do you want to remove uninstalled packages from cache?"))) {
|
||||
return(0);
|
||||
}
|
||||
break;
|
||||
case PM_CLEAN_KEEPCUR:
|
||||
if(!yesno(1, _("Do you want to remove outdated packages from cache?"))) {
|
||||
if(!yesno(_("Do you want to remove outdated packages from cache?"))) {
|
||||
return(0);
|
||||
}
|
||||
break;
|
||||
|
@ -215,7 +215,7 @@ static int sync_cleancache(int level)
|
|||
} else {
|
||||
/* full cleanup */
|
||||
printf(_("Cache directory: %s\n"), cachedir);
|
||||
if(!yesno(0, _("Do you want to remove ALL packages from cache?"))) {
|
||||
if(!noyes(_("Do you want to remove ALL packages from cache?"))) {
|
||||
return(0);
|
||||
}
|
||||
printf(_("removing all packages from cache... "));
|
||||
|
@ -604,14 +604,14 @@ static int sync_trans(alpm_list_t *targets)
|
|||
(char*)alpm_pkg_get_name(k->data));
|
||||
}
|
||||
list_display(" ", pkgnames);
|
||||
if(yesno(1, _(":: Install whole content?"))) {
|
||||
if(yesno(_(":: Install whole content?"))) {
|
||||
for(k = pkgnames; k; k = alpm_list_next(k)) {
|
||||
targets = alpm_list_add(targets, strdup(alpm_list_getdata(k)));
|
||||
}
|
||||
} else {
|
||||
for(k = pkgnames; k; k = alpm_list_next(k)) {
|
||||
char *pkgname = alpm_list_getdata(k);
|
||||
if(yesno(1, _(":: Install %s from group %s?"), pkgname, targ)) {
|
||||
if(yesno(_(":: Install %s from group %s?"), pkgname, targ)) {
|
||||
targets = alpm_list_add(targets, strdup(pkgname));
|
||||
}
|
||||
}
|
||||
|
@ -673,9 +673,9 @@ static int sync_trans(alpm_list_t *targets)
|
|||
printf("\n");
|
||||
|
||||
if(config->op_s_downloadonly) {
|
||||
confirm = yesno(1, _("Proceed with download?"));
|
||||
confirm = yesno(_("Proceed with download?"));
|
||||
} else {
|
||||
confirm = yesno(1, _("Proceed with installation?"));
|
||||
confirm = yesno(_("Proceed with installation?"));
|
||||
}
|
||||
if(!confirm) {
|
||||
goto cleanup;
|
||||
|
@ -817,7 +817,7 @@ int pacman_sync(alpm_list_t *targets)
|
|||
if(packages) {
|
||||
printf(_(":: The following packages should be upgraded first :\n"));
|
||||
list_display(" ", packages);
|
||||
if(yesno(1, _(":: Do you want to cancel the current operation\n"
|
||||
if(yesno(_(":: Do you want to cancel the current operation\n"
|
||||
":: and upgrade these packages now?"))) {
|
||||
FREELIST(targs);
|
||||
targs = packages;
|
||||
|
|
|
@ -619,10 +619,9 @@ void display_optdepends(pmpkg_t *pkg)
|
|||
}
|
||||
|
||||
/* presents a prompt and gets a Y/N answer */
|
||||
int yesno(short preset, char *fmt, ...)
|
||||
static int question(short preset, char *fmt, va_list args)
|
||||
{
|
||||
char response[32];
|
||||
va_list args;
|
||||
FILE *stream;
|
||||
|
||||
if(config->noconfirm) {
|
||||
|
@ -632,9 +631,7 @@ int yesno(short preset, char *fmt, ...)
|
|||
stream = stderr;
|
||||
}
|
||||
|
||||
va_start(args, fmt);
|
||||
vfprintf(stream, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
if(preset) {
|
||||
fprintf(stream, " %s ", _("[Y/n]"));
|
||||
|
@ -662,6 +659,30 @@ int yesno(short preset, char *fmt, ...)
|
|||
return(0);
|
||||
}
|
||||
|
||||
int yesno(char *fmt, ...)
|
||||
{
|
||||
int ret;
|
||||
va_list args;
|
||||
|
||||
va_start(args, fmt);
|
||||
ret = question(1, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
int noyes(char *fmt, ...)
|
||||
{
|
||||
int ret;
|
||||
va_list args;
|
||||
|
||||
va_start(args, fmt);
|
||||
ret = question(0, fmt, args);
|
||||
va_end(args);
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
int pm_printf(pmloglevel_t level, const char *format, ...)
|
||||
{
|
||||
int ret;
|
||||
|
|
|
@ -55,7 +55,8 @@ void list_display_linebreak(const char *title, const alpm_list_t *list);
|
|||
void display_targets(const alpm_list_t *pkgs, int install);
|
||||
void display_synctargets(const alpm_list_t *syncpkgs);
|
||||
void display_optdepends(pmpkg_t *pkg);
|
||||
int yesno(short preset, char *fmt, ...);
|
||||
int yesno(char *fmt, ...);
|
||||
int noyes(char *fmt, ...);
|
||||
int pm_printf(pmloglevel_t level, const char *format, ...) __attribute__((format(printf,2,3)));
|
||||
int pm_fprintf(FILE *stream, pmloglevel_t level, const char *format, ...) __attribute__((format(printf,3,4)));
|
||||
int pm_vfprintf(FILE *stream, pmloglevel_t level, const char *format, va_list args) __attribute__((format(printf,3,0)));
|
||||
|
|
Loading…
Add table
Reference in a new issue