* pacman hidden arguments: removed -Y and -D. -T is the only hidden arg now, to
be used in place of -Y. Also, -D was rather silly, as it does mostly what -S does. * Cleaned up pacman_deptest - removed the goofy faketarget stuff (NEEDS testing still) * libalpm function renames
This commit is contained in:
parent
8fbdd03cce
commit
4dd6c92228
7 changed files with 42 additions and 141 deletions
|
@ -184,7 +184,7 @@ checkdeps() {
|
||||||
|
|
||||||
pmout=$(pacman $PACMAN_OPTS -T $*)
|
pmout=$(pacman $PACMAN_OPTS -T $*)
|
||||||
ret=$?
|
ret=$?
|
||||||
if [ $ret -eq 127 ]; then #unresolved deps
|
if [ $ret -eq 1 ]; then #unresolved deps
|
||||||
#strip out the pacman prefix from "requires: xyz"
|
#strip out the pacman prefix from "requires: xyz"
|
||||||
echo $pmout | sed 's|requires:||g'
|
echo $pmout | sed 's|requires:||g'
|
||||||
elif [ $ret -ne 0 ]; then
|
elif [ $ret -ne 0 ]; then
|
||||||
|
@ -211,8 +211,8 @@ handledeps() {
|
||||||
FAKEROOTKEY2=$FAKEROOTKEY
|
FAKEROOTKEY2=$FAKEROOTKEY
|
||||||
unset FAKEROOTKEY
|
unset FAKEROOTKEY
|
||||||
fi
|
fi
|
||||||
sudo pacman $PACMAN_OPTS -D $deplist
|
sudo pacman $PACMAN_OPTS -S $deplist
|
||||||
if [ "$?" = "127" ]; then
|
if [ $? -eq 1 ]; then
|
||||||
error "Failed to install missing dependencies."
|
error "Failed to install missing dependencies."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -223,8 +223,8 @@ handledeps() {
|
||||||
elif [ "$DEP_BIN" = "1" ]; then
|
elif [ "$DEP_BIN" = "1" ]; then
|
||||||
# install missing deps from binary packages (using pacman -S)
|
# install missing deps from binary packages (using pacman -S)
|
||||||
msg "Installing missing dependencies..."
|
msg "Installing missing dependencies..."
|
||||||
pacman $PACMAN_OPTS -D $deplist
|
pacman $PACMAN_OPTS -S $deplist
|
||||||
if [ "$?" = "127" ]; then
|
if [ $? -eq 1 ]; then
|
||||||
error "Failed to install missing dependencies."
|
error "Failed to install missing dependencies."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -36,131 +36,36 @@
|
||||||
|
|
||||||
extern config_t *config;
|
extern config_t *config;
|
||||||
|
|
||||||
/* TODO this function is fairly messy, with the obscure return codes and the odd
|
|
||||||
* 'dummy' packages and all these messy FREELISTs of synctargs
|
|
||||||
*/
|
|
||||||
int pacman_deptest(alpm_list_t *targets)
|
int pacman_deptest(alpm_list_t *targets)
|
||||||
{
|
{
|
||||||
alpm_list_t *data, *i;
|
|
||||||
char *str;
|
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
|
pmdb_t *local;
|
||||||
|
pmpkg_t *pkg;
|
||||||
|
alpm_list_t *i, *provides;
|
||||||
|
|
||||||
if(targets == NULL) {
|
if(targets == NULL) {
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* we create a transaction to hold a dummy package to be able to use
|
local = alpm_option_get_localdb();
|
||||||
* deps checkings from alpm_trans_prepare() */
|
|
||||||
if(alpm_trans_init(PM_TRANS_TYPE_ADD, 0, NULL, NULL, NULL) == -1) {
|
|
||||||
ERR(NL, "%s", alpm_strerror(pm_errno));
|
|
||||||
if(pm_errno == PM_ERR_HANDLE_LOCK) {
|
|
||||||
MSG(NL, _(" if you're sure a package manager is not already running,\n"
|
|
||||||
" you can remove %s%s\n"), alpm_option_get_root(), PM_LOCK);
|
|
||||||
}
|
|
||||||
return(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We use a hidden facility from alpm_trans_addtarget() to add a dummy
|
|
||||||
* target to the transaction (see the library code for details).
|
|
||||||
* It allows us to use alpm_trans_prepare() to check dependencies of the
|
|
||||||
* given target.
|
|
||||||
*/
|
|
||||||
str = (char *)malloc(strlen("name=dummy|version=1.0-1")+1);
|
|
||||||
if(str == NULL) {
|
|
||||||
ERR(NL, _("memory allocation failure\n"));
|
|
||||||
retval = 1;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
strcpy(str, "name=dummy|version=1.0-1");
|
|
||||||
for(i = targets; i; i = alpm_list_next(i)) {
|
for(i = targets; i; i = alpm_list_next(i)) {
|
||||||
const char *targ = alpm_list_getdata(i);
|
const char *pkgname;
|
||||||
str = (char *)realloc(str, strlen(str)+8+strlen(targ)+1);
|
|
||||||
strcat(str, "|depend=");
|
|
||||||
strcat(str, targ);
|
|
||||||
}
|
|
||||||
vprint(_("add target %s\n"), str);
|
|
||||||
if(alpm_trans_addtarget(str) == -1) {
|
|
||||||
FREE(str);
|
|
||||||
ERR(NL, _("could not add target (%s)\n"), alpm_strerror(pm_errno));
|
|
||||||
retval = 1;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
FREE(str);
|
|
||||||
|
|
||||||
if(alpm_trans_prepare(&data) == -1) {
|
pkgname = alpm_list_getdata(i);
|
||||||
alpm_list_t *synctargs = NULL;
|
/* find this package in the local DB */
|
||||||
retval = 126;
|
pkg = alpm_db_get_pkg(local, pkgname);
|
||||||
/* return 126 = deps were missing, but successfully resolved
|
|
||||||
* return 127 = deps were missing, and failed to resolve; OR
|
|
||||||
* = deps were missing, but no resolution was attempted; OR
|
|
||||||
* = unresolvable conflicts were found
|
|
||||||
*/
|
|
||||||
switch(pm_errno) {
|
|
||||||
case PM_ERR_UNSATISFIED_DEPS:
|
|
||||||
for(i = data; i; i = alpm_list_next(i)) {
|
|
||||||
pmdepmissing_t *miss = alpm_list_getdata(i);
|
|
||||||
if(!config->op_d_resolve) {
|
|
||||||
MSG(NL, _("requires: %s"), alpm_dep_get_name(miss));
|
|
||||||
switch(alpm_dep_get_mod(miss)) {
|
|
||||||
case PM_DEP_MOD_ANY:
|
|
||||||
break;
|
|
||||||
case PM_DEP_MOD_EQ:
|
|
||||||
MSG(CL, "=%s", alpm_dep_get_version(miss));
|
|
||||||
break;
|
|
||||||
case PM_DEP_MOD_GE:
|
|
||||||
MSG(CL, ">=%s", alpm_dep_get_version(miss));
|
|
||||||
break;
|
|
||||||
case PM_DEP_MOD_LE:
|
|
||||||
MSG(CL, "<=%s", alpm_dep_get_version(miss));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
MSG(CL, "\n");
|
|
||||||
}
|
|
||||||
synctargs = alpm_list_add(synctargs, strdup(alpm_dep_get_name(miss)));
|
|
||||||
}
|
|
||||||
alpm_list_free(data);
|
|
||||||
break;
|
|
||||||
case PM_ERR_CONFLICTING_DEPS:
|
|
||||||
/* we can't auto-resolve conflicts */
|
|
||||||
for(i = data; i; i = alpm_list_next(i)) {
|
|
||||||
pmdepmissing_t *miss = alpm_list_getdata(i);
|
|
||||||
MSG(NL, _("conflict: %s"), alpm_dep_get_name(miss));
|
|
||||||
}
|
|
||||||
retval = 127;
|
|
||||||
alpm_list_free(data);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
retval = 127;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* attempt to resolve missing dependencies */
|
if(!pkg) {
|
||||||
/* TODO: handle version comparators (eg, glibc>=2.2.5) */
|
/* not found, can we find anything that provides this in the local DB? */
|
||||||
if(retval == 126 && synctargs != NULL) {
|
provides = alpm_db_whatprovides(local, pkgname);
|
||||||
if(alpm_trans_release() == -1) {
|
if(!provides) {
|
||||||
ERR(NL, _("could not release transaction (%s)"), alpm_strerror(pm_errno));
|
/* nope, must be missing */
|
||||||
FREELIST(synctargs);
|
MSG(NL, _("requires: %s"), pkgname);
|
||||||
return(1);
|
|
||||||
}
|
|
||||||
if(!config->op_d_resolve || pacman_sync(synctargs) != 0) {
|
|
||||||
/* error (or -D not used) */
|
|
||||||
retval = 127;
|
|
||||||
}
|
|
||||||
FREELIST(synctargs);
|
|
||||||
return(retval);
|
|
||||||
}
|
|
||||||
|
|
||||||
FREELIST(synctargs);
|
|
||||||
}
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
if(!config->op_d_resolve) {
|
|
||||||
if(alpm_trans_release() == -1) {
|
|
||||||
ERR(NL, _("could not release transaction (%s)"), alpm_strerror(pm_errno));
|
|
||||||
retval = 1;
|
retval = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return(retval);
|
return(retval);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -217,7 +217,6 @@ static int parseargs(int argc, char *argv[])
|
||||||
static struct option opts[] =
|
static struct option opts[] =
|
||||||
{
|
{
|
||||||
{"add", no_argument, 0, 'A'},
|
{"add", no_argument, 0, 'A'},
|
||||||
{"resolve", no_argument, 0, 'D'}, /* used by 'makepkg -s' */
|
|
||||||
{"freshen", no_argument, 0, 'F'},
|
{"freshen", no_argument, 0, 'F'},
|
||||||
{"query", no_argument, 0, 'Q'},
|
{"query", no_argument, 0, 'Q'},
|
||||||
{"remove", no_argument, 0, 'R'},
|
{"remove", no_argument, 0, 'R'},
|
||||||
|
@ -264,7 +263,7 @@ static int parseargs(int argc, char *argv[])
|
||||||
struct stat st;
|
struct stat st;
|
||||||
unsigned short logmask;
|
unsigned short logmask;
|
||||||
|
|
||||||
while((opt = getopt_long(argc, argv, "ARUFQSTDYr:b:vkhscVfmnoldepiuwyg", opts, &option_index))) {
|
while((opt = getopt_long(argc, argv, "ARUFQSTr:b:vkhscVfmnoldepiuwyg", opts, &option_index))) {
|
||||||
if(opt < 0) {
|
if(opt < 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -316,11 +315,6 @@ static int parseargs(int argc, char *argv[])
|
||||||
alpm_option_set_cachedir(optarg);
|
alpm_option_set_cachedir(optarg);
|
||||||
break;
|
break;
|
||||||
case 'A': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_ADD); break;
|
case 'A': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_ADD); break;
|
||||||
case 'D':
|
|
||||||
config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_DEPTEST);
|
|
||||||
config->op_d_resolve = 1;
|
|
||||||
config->flags |= PM_TRANS_FLAG_ALLDEPS;
|
|
||||||
break;
|
|
||||||
case 'F':
|
case 'F':
|
||||||
config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_UPGRADE);
|
config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_UPGRADE);
|
||||||
config->flags |= PM_TRANS_FLAG_FRESHEN;
|
config->flags |= PM_TRANS_FLAG_FRESHEN;
|
||||||
|
@ -331,9 +325,6 @@ static int parseargs(int argc, char *argv[])
|
||||||
case 'T': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_DEPTEST); break;
|
case 'T': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_DEPTEST); break;
|
||||||
case 'U': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_UPGRADE); break;
|
case 'U': config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_UPGRADE); break;
|
||||||
case 'V': config->version = 1; break;
|
case 'V': config->version = 1; break;
|
||||||
case 'Y':
|
|
||||||
config->op = (config->op != PM_OP_MAIN ? 0 : PM_OP_DEPTEST);
|
|
||||||
break;
|
|
||||||
case 'b':
|
case 'b':
|
||||||
if(stat(optarg, &st) == -1 || !S_ISDIR(st.st_mode)) {
|
if(stat(optarg, &st) == -1 || !S_ISDIR(st.st_mode)) {
|
||||||
ERR(NL, _("'%s' is not a valid db path\n"), optarg);
|
ERR(NL, _("'%s' is not a valid db path\n"), optarg);
|
||||||
|
|
|
@ -153,7 +153,7 @@ int pacman_query(alpm_list_t *targets)
|
||||||
const char *grpname;
|
const char *grpname;
|
||||||
|
|
||||||
grpname = alpm_grp_get_name(grp);
|
grpname = alpm_grp_get_name(grp);
|
||||||
pkgnames = alpm_grp_get_packages(grp);
|
pkgnames = alpm_grp_get_pkgs(grp);
|
||||||
|
|
||||||
for(p = pkgnames; p; p = alpm_list_next(p)) {
|
for(p = pkgnames; p; p = alpm_list_next(p)) {
|
||||||
MSG(NL, "%s %s\n", grpname, (char *)alpm_list_getdata(p));
|
MSG(NL, "%s %s\n", grpname, (char *)alpm_list_getdata(p));
|
||||||
|
@ -162,7 +162,7 @@ int pacman_query(alpm_list_t *targets)
|
||||||
} else {
|
} else {
|
||||||
pmgrp_t *grp = alpm_db_readgrp(db_local, package);
|
pmgrp_t *grp = alpm_db_readgrp(db_local, package);
|
||||||
if(grp) {
|
if(grp) {
|
||||||
alpm_list_t *p, *pkgnames = alpm_grp_get_packages(grp);
|
alpm_list_t *p, *pkgnames = alpm_grp_get_pkgs(grp);
|
||||||
for(p = pkgnames; p; p = alpm_list_next(p)) {
|
for(p = pkgnames; p; p = alpm_list_next(p)) {
|
||||||
MSG(NL, "%s %s\n", package, (char *)alpm_list_getdata(p));
|
MSG(NL, "%s %s\n", package, (char *)alpm_list_getdata(p));
|
||||||
}
|
}
|
||||||
|
@ -217,7 +217,7 @@ int pacman_query(alpm_list_t *targets)
|
||||||
pkgver = alpm_pkg_get_version(tmpp);
|
pkgver = alpm_pkg_get_version(tmpp);
|
||||||
|
|
||||||
if(config->op_q_list || config->op_q_orphans || config->op_q_foreign) {
|
if(config->op_q_list || config->op_q_orphans || config->op_q_foreign) {
|
||||||
info = alpm_db_readpkg(db_local, (char *)pkgname);
|
info = alpm_db_get_pkg(db_local, (char *)pkgname);
|
||||||
if(info == NULL) {
|
if(info == NULL) {
|
||||||
/* something weird happened */
|
/* something weird happened */
|
||||||
ERR(NL, _("package \"%s\" not found\n"), pkgname);
|
ERR(NL, _("package \"%s\" not found\n"), pkgname);
|
||||||
|
@ -250,7 +250,7 @@ int pacman_query(alpm_list_t *targets)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
info = alpm_db_readpkg(db_local, package);
|
info = alpm_db_get_pkg(db_local, package);
|
||||||
if(info == NULL) {
|
if(info == NULL) {
|
||||||
ERR(NL, _("package \"%s\" not found\n"), package);
|
ERR(NL, _("package \"%s\" not found\n"), package);
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -53,7 +53,7 @@ int pacman_remove(alpm_list_t *targets)
|
||||||
pmgrp_t *grp = alpm_db_readgrp(db_local, alpm_list_getdata(i));
|
pmgrp_t *grp = alpm_db_readgrp(db_local, alpm_list_getdata(i));
|
||||||
if(grp) {
|
if(grp) {
|
||||||
int all;
|
int all;
|
||||||
alpm_list_t *pkgnames = alpm_grp_get_packages(grp);
|
alpm_list_t *pkgnames = alpm_grp_get_pkgs(grp);
|
||||||
|
|
||||||
MSG(NL, _(":: group %s:\n"), alpm_grp_get_name(grp));
|
MSG(NL, _(":: group %s:\n"), alpm_grp_get_name(grp));
|
||||||
list_display(" ", pkgnames);
|
list_display(" ", pkgnames);
|
||||||
|
@ -117,7 +117,7 @@ int pacman_remove(alpm_list_t *targets)
|
||||||
if(config->flags & PM_TRANS_FLAG_RECURSE || config->flags & PM_TRANS_FLAG_CASCADE) {
|
if(config->flags & PM_TRANS_FLAG_RECURSE || config->flags & PM_TRANS_FLAG_CASCADE) {
|
||||||
/* list transaction targets */
|
/* list transaction targets */
|
||||||
alpm_list_t *lst = NULL;
|
alpm_list_t *lst = NULL;
|
||||||
for(i = alpm_trans_get_packages(); i; i = alpm_list_next(i)) {
|
for(i = alpm_trans_get_pkgs(); i; i = alpm_list_next(i)) {
|
||||||
pmpkg_t *pkg = alpm_list_getdata(i);
|
pmpkg_t *pkg = alpm_list_getdata(i);
|
||||||
lst = alpm_list_add(lst, strdup(alpm_pkg_get_name(pkg)));
|
lst = alpm_list_add(lst, strdup(alpm_pkg_get_name(pkg)));
|
||||||
}
|
}
|
||||||
|
|
|
@ -292,7 +292,7 @@ static int sync_group(int level, alpm_list_t *syncs, alpm_list_t *targets)
|
||||||
if(grp) {
|
if(grp) {
|
||||||
/* TODO this should be a lot cleaner, why two outputs? */
|
/* TODO this should be a lot cleaner, why two outputs? */
|
||||||
MSG(NL, "%s\n", (char *)alpm_grp_get_name(grp));
|
MSG(NL, "%s\n", (char *)alpm_grp_get_name(grp));
|
||||||
list_display(" ", alpm_grp_get_packages(grp));
|
list_display(" ", alpm_grp_get_pkgs(grp));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -305,7 +305,7 @@ static int sync_group(int level, alpm_list_t *syncs, alpm_list_t *targets)
|
||||||
|
|
||||||
MSG(NL, "%s\n", (char *)alpm_grp_get_name(grp));
|
MSG(NL, "%s\n", (char *)alpm_grp_get_name(grp));
|
||||||
if(grp && level > 1) {
|
if(grp && level > 1) {
|
||||||
list_display(" ", alpm_grp_get_packages(grp));
|
list_display(" ", alpm_grp_get_pkgs(grp));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -510,10 +510,10 @@ int pacman_sync(alpm_list_t *targets)
|
||||||
* this can prevent some of the "syntax error" problems users can have
|
* this can prevent some of the "syntax error" problems users can have
|
||||||
* when sysupgrade'ing with an older version of pacman.
|
* when sysupgrade'ing with an older version of pacman.
|
||||||
*/
|
*/
|
||||||
data = alpm_trans_get_packages();
|
data = alpm_trans_get_pkgs();
|
||||||
for(i = data; i; i = alpm_list_next(i)) {
|
for(i = data; i; i = alpm_list_next(i)) {
|
||||||
pmsyncpkg_t *sync = alpm_list_getdata(i);
|
pmsyncpkg_t *sync = alpm_list_getdata(i);
|
||||||
pmpkg_t *spkg = alpm_sync_get_package(sync);
|
pmpkg_t *spkg = alpm_sync_get_pkg(sync);
|
||||||
if(strcmp("pacman", alpm_pkg_get_name(spkg)) == 0 && alpm_list_count(data) > 1) {
|
if(strcmp("pacman", alpm_pkg_get_name(spkg)) == 0 && alpm_list_count(data) > 1) {
|
||||||
MSG(NL, _("\n:: pacman has detected a newer version of the \"pacman\" package.\n"));
|
MSG(NL, _("\n:: pacman has detected a newer version of the \"pacman\" package.\n"));
|
||||||
MSG(NL, _(":: It is recommended that you allow pacman to upgrade itself\n"));
|
MSG(NL, _(":: It is recommended that you allow pacman to upgrade itself\n"));
|
||||||
|
@ -567,7 +567,7 @@ int pacman_sync(alpm_list_t *targets)
|
||||||
found++;
|
found++;
|
||||||
MSG(NL, _(":: group %s:\n"), targ);
|
MSG(NL, _(":: group %s:\n"), targ);
|
||||||
/* remove dupe entries in case a package exists in multiple repos */
|
/* remove dupe entries in case a package exists in multiple repos */
|
||||||
alpm_list_t *pkgs = alpm_list_remove_dupes(alpm_grp_get_packages(grp));
|
alpm_list_t *pkgs = alpm_list_remove_dupes(alpm_grp_get_pkgs(grp));
|
||||||
list_display(" ", pkgs);
|
list_display(" ", pkgs);
|
||||||
if(yesno(_(":: Install whole content? [Y/n] "))) {
|
if(yesno(_(":: Install whole content? [Y/n] "))) {
|
||||||
for(k = pkgs; k; k = alpm_list_next(k)) {
|
for(k = pkgs; k; k = alpm_list_next(k)) {
|
||||||
|
@ -659,7 +659,7 @@ int pacman_sync(alpm_list_t *targets)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
packages = alpm_trans_get_packages();
|
packages = alpm_trans_get_pkgs();
|
||||||
if(packages == NULL) {
|
if(packages == NULL) {
|
||||||
/* nothing to do: just exit without complaining */
|
/* nothing to do: just exit without complaining */
|
||||||
MSG(NL, _(" local database is up to date\n"));
|
MSG(NL, _(" local database is up to date\n"));
|
||||||
|
|
|
@ -274,7 +274,7 @@ void display_targets(alpm_list_t *syncpkgs)
|
||||||
|
|
||||||
for(i = syncpkgs; i; i = alpm_list_next(i)) {
|
for(i = syncpkgs; i; i = alpm_list_next(i)) {
|
||||||
pmsyncpkg_t *sync = alpm_list_getdata(i);
|
pmsyncpkg_t *sync = alpm_list_getdata(i);
|
||||||
pmpkg_t *pkg = alpm_sync_get_package(sync);
|
pmpkg_t *pkg = alpm_sync_get_pkg(sync);
|
||||||
|
|
||||||
/* If this sync record is a replacement, the data member contains
|
/* If this sync record is a replacement, the data member contains
|
||||||
* a list of packages to be removed due to the package that is being
|
* a list of packages to be removed due to the package that is being
|
||||||
|
@ -381,9 +381,14 @@ void fill_progress(const int percent, const int proglen)
|
||||||
const unsigned short chomp = alpm_option_get_chomp();
|
const unsigned short chomp = alpm_option_get_chomp();
|
||||||
const unsigned int hashlen = proglen - 8;
|
const unsigned int hashlen = proglen - 8;
|
||||||
const unsigned int hash = percent * hashlen / 100;
|
const unsigned int hash = percent * hashlen / 100;
|
||||||
unsigned int lasthash = 0, mouth = 0;
|
static unsigned int lasthash = 0, mouth = 0;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
|
if(percent == 0) {
|
||||||
|
lasthash = 0;
|
||||||
|
mouth = 0;
|
||||||
|
}
|
||||||
|
|
||||||
printf(" [");
|
printf(" [");
|
||||||
for(i = hashlen; i > 1; --i) {
|
for(i = hashlen; i > 1; --i) {
|
||||||
/* if special progress bar enabled */
|
/* if special progress bar enabled */
|
||||||
|
|
Loading…
Add table
Reference in a new issue