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:
Xavier Chantry 2008-08-20 22:08:11 +02:00 committed by Dan McGee
parent 7865fb9af4
commit adc4078b87
5 changed files with 47 additions and 25 deletions

View file

@ -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;
}

View file

@ -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;
}

View file

@ -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;

View file

@ -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;

View file

@ -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)));