[pacman-dev] [PATCH] pacman: improve backup printing
morganamilo
morganamilo at archlinux.org
Mon Aug 16 09:26:17 UTC 2021
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 at archlinux.org>
---
src/pacman/package.c | 52 ++++++++++++++++++++++++--------------------
src/pacman/package.h | 2 +-
2 files changed, 30 insertions(+), 24 deletions(-)
diff --git a/src/pacman/package.c b/src/pacman/package.c
index eaee3bb0..d4733405 100644
--- a/src/pacman/package.c
+++ b/src/pacman/package.c
@@ -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 */
if(from == ALPM_PKG_FROM_LOCALDB && extra) {
- dump_pkg_backups(pkg);
+ dump_pkg_backups(pkg, cols);
}
/* 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(strcmp(md5sum, backup->hash) != 0) {
- ret = "MODIFIED";
+ ret = "[modified]";
} else {
- ret = "UNMODIFIED";
+ ret = "[unmodified]";
}
free(md5sum);
} else {
switch(errno) {
case EACCES:
- ret = "UNREADABLE";
+ ret = "[unreadable]";
break;
case ENOENT:
- ret = "MISSING";
+ ret = "[missing]";
break;
default:
- ret = "UNKNOWN";
+ ret = "[unknown]";
}
}
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
*/
-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);
- 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 */
- for(i = alpm_pkg_get_backup(pkg); i; i = alpm_list_next(i)) {
- const alpm_backup_t *backup = i->data;
- const char *value;
- if(!backup->hash) {
- continue;
- }
- value = get_backup_file_status(root, backup);
- printf("%s\t%s%s\n", value, root, backup->name);
+ /* package has backup files, so print them */
+ for(i = alpm_pkg_get_backup(pkg); i; i = alpm_list_next(i)) {
+ const alpm_backup_t *backup = i->data;
+ const char *value;
+ char *line;
+ size_t needed;
+ if(!backup->hash) {
+ continue;
}
- } else {
- /* package had no backup files */
- printf(_("(none)\n"));
+ value = get_backup_file_status(root, backup);
+ needed = strlen(root) + strlen(backup->name) + 1 + strlen(value) + 1;
+ line = malloc(needed);
+ if(!line) {
+ goto cleanup;
+ }
+ sprintf(line, "%s%s %s", root, backup->name, value);
+ text = alpm_list_add(text, line);
}
+
+ list_display_linebreak(titles[T_BACKUP_FILES], text, cols);
+
+cleanup:
+ FREELIST(text);
}
/* List all files contained in a package
diff --git a/src/pacman/package.h b/src/pacman/package.h
index c1f3d5b3..809be776 100644
--- a/src/pacman/package.h
+++ b/src/pacman/package.h
@@ -24,7 +24,7 @@
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_changelog(alpm_pkg_t *pkg);
--
2.32.0
More information about the pacman-dev
mailing list