pacman: improve backup printing

The current backup printing does not fit in with the rest of the info at
all. Change to be more consistant.

Old:

Backup Files    :
MODIFIED	/etc/pacman.conf
UNMODIFIED	/etc/makepkg.conf

New:

Backup Files    : /etc/pacman.conf [modified]
                  /etc/makepkg.conf [unmodified]

Signed-off-by: morganamilo <morganamilo@archlinux.org>
This commit is contained in:
morganamilo 2021-08-16 10:26:17 +01:00
parent 39c3cbdf56
commit 841236a1c9
No known key found for this signature in database
GPG key ID: E48D0A8326DE47C5
2 changed files with 30 additions and 24 deletions

View file

@ -348,7 +348,7 @@ void dump_pkg_full(alpm_pkg_t *pkg, int extra)
/* Print additional package info if info flag passed more than once */ /* Print additional package info if info flag passed more than once */
if(from == ALPM_PKG_FROM_LOCALDB && extra) { if(from == ALPM_PKG_FROM_LOCALDB && extra) {
dump_pkg_backups(pkg); dump_pkg_backups(pkg, cols);
} }
/* final newline to separate packages */ /* final newline to separate packages */
@ -379,21 +379,21 @@ static const char *get_backup_file_status(const char *root,
/* if checksums don't match, file has been modified */ /* if checksums don't match, file has been modified */
if(strcmp(md5sum, backup->hash) != 0) { if(strcmp(md5sum, backup->hash) != 0) {
ret = "MODIFIED"; ret = "[modified]";
} else { } else {
ret = "UNMODIFIED"; ret = "[unmodified]";
} }
free(md5sum); free(md5sum);
} else { } else {
switch(errno) { switch(errno) {
case EACCES: case EACCES:
ret = "UNREADABLE"; ret = "[unreadable]";
break; break;
case ENOENT: case ENOENT:
ret = "MISSING"; ret = "[missing]";
break; break;
default: default:
ret = "UNKNOWN"; ret = "[unknown]";
} }
} }
return ret; return ret;
@ -401,27 +401,33 @@ static const char *get_backup_file_status(const char *root,
/* Display list of backup files and their modification states /* Display list of backup files and their modification states
*/ */
void dump_pkg_backups(alpm_pkg_t *pkg) void dump_pkg_backups(alpm_pkg_t *pkg, unsigned short cols)
{ {
alpm_list_t *i; alpm_list_t *i, *text = NULL;
const char *root = alpm_option_get_root(config->handle); const char *root = alpm_option_get_root(config->handle);
printf("%s%s\n%s", config->colstr.title, titles[T_BACKUP_FILES],
config->colstr.nocolor);
if(alpm_pkg_get_backup(pkg)) {
/* package has backup files, so print them */ /* package has backup files, so print them */
for(i = alpm_pkg_get_backup(pkg); i; i = alpm_list_next(i)) { for(i = alpm_pkg_get_backup(pkg); i; i = alpm_list_next(i)) {
const alpm_backup_t *backup = i->data; const alpm_backup_t *backup = i->data;
const char *value; const char *value;
char *line;
size_t needed;
if(!backup->hash) { if(!backup->hash) {
continue; continue;
} }
value = get_backup_file_status(root, backup); value = get_backup_file_status(root, backup);
printf("%s\t%s%s\n", value, root, backup->name); needed = strlen(root) + strlen(backup->name) + 1 + strlen(value) + 1;
line = malloc(needed);
if(!line) {
goto cleanup;
} }
} else { sprintf(line, "%s%s %s", root, backup->name, value);
/* package had no backup files */ text = alpm_list_add(text, line);
printf(_("(none)\n"));
} }
list_display_linebreak(titles[T_BACKUP_FILES], text, cols);
cleanup:
FREELIST(text);
} }
/* List all files contained in a package /* List all files contained in a package

View file

@ -24,7 +24,7 @@
void dump_pkg_full(alpm_pkg_t *pkg, int extra); void dump_pkg_full(alpm_pkg_t *pkg, int extra);
void dump_pkg_backups(alpm_pkg_t *pkg); void dump_pkg_backups(alpm_pkg_t *pkg, unsigned short cols);
void dump_pkg_files(alpm_pkg_t *pkg, int quiet); void dump_pkg_files(alpm_pkg_t *pkg, int quiet);
void dump_pkg_changelog(alpm_pkg_t *pkg); void dump_pkg_changelog(alpm_pkg_t *pkg);