Avoid printing // for packages that install to /

I have some packages that install to / (for whatever reason).  Right now we
print entries of the form //path/to/file when listing files (pkg_info -L,
pkg_info -g etc.)  This change avoids printing the redundant / .
This commit is contained in:
emaste 2011-10-24 18:29:50 +00:00
parent eacb4e8e29
commit 080d3778f8

View File

@ -207,6 +207,14 @@ show_plist(const char *title, Package *plist, plist_t type, Boolean showall)
}
}
const char *
elide_root(const char *dir)
{
if (strcmp(dir, "/") == 0)
return "";
return dir;
}
/* Show all files in the packing list (except ignored ones) */
void
show_files(const char *title, Package *plist)
@ -223,7 +231,7 @@ show_files(const char *title, Package *plist)
switch(p->type) {
case PLIST_FILE:
if (!ign)
printf("%s/%s\n", dir, p->name);
printf("%s/%s\n", elide_root(dir), p->name);
ign = FALSE;
break;
@ -270,7 +278,7 @@ show_size(const char *title, Package *plist)
switch (p->type) {
case PLIST_FILE:
if (!ign) {
snprintf(tmp, FILENAME_MAX, "%s/%s", dir, p->name);
snprintf(tmp, FILENAME_MAX, "%s/%s", elide_root(dir), p->name);
if (!lstat(tmp, &sb)) {
size += sb.st_size;
if (Verbose)
@ -328,7 +336,7 @@ show_cksum(const char *title, Package *plist)
else
dir = p->name;
} else if (p->type == PLIST_FILE) {
snprintf(tmp, FILENAME_MAX, "%s/%s", dir, p->name);
snprintf(tmp, FILENAME_MAX, "%s/%s", elide_root(dir), p->name);
if (!fexists(tmp))
warnx("%s doesn't exist", tmp);
else if (p->next && p->next->type == PLIST_COMMENT &&