diff options
author | eik <eik@FreeBSD.org> | 2004-06-29 18:59:19 +0000 |
---|---|---|
committer | eik <eik@FreeBSD.org> | 2004-06-29 18:59:19 +0000 |
commit | 7a7a88ae41089ff6cb4d75e4c2271702d2fc40ba (patch) | |
tree | d736eb1b5c7ccb34088587a0c550492399691ef6 /usr.sbin/pkg_install/info | |
parent | ffbd0ede95b92fdb9e9a5457126a4eeca1726352 (diff) | |
download | FreeBSD-src-7a7a88ae41089ff6cb4d75e4c2271702d2fc40ba.zip FreeBSD-src-7a7a88ae41089ff6cb4d75e4c2271702d2fc40ba.tar.gz |
- pkg_info: flag -r: (show packages this packages depends on (documentation change))
- pkg_info: new flag -j (show the requirements script)
- pkg_info: fix verbose output when used on packages
- better handling of corrupt entries in /var/db/pkg
- differ between corrupt entires and packages not installed
- various small fixes
PR: 56989, 57016, 57029, 26468
Diffstat (limited to 'usr.sbin/pkg_install/info')
-rw-r--r-- | usr.sbin/pkg_install/info/main.c | 10 | ||||
-rw-r--r-- | usr.sbin/pkg_install/info/perform.c | 32 | ||||
-rw-r--r-- | usr.sbin/pkg_install/info/pkg_info.1 | 8 |
3 files changed, 24 insertions, 26 deletions
diff --git a/usr.sbin/pkg_install/info/main.c b/usr.sbin/pkg_install/info/main.c index 3c2fb44..a7bcfe2 100644 --- a/usr.sbin/pkg_install/info/main.c +++ b/usr.sbin/pkg_install/info/main.c @@ -26,7 +26,7 @@ __FBSDID("$FreeBSD$"); #include "info.h" #include <err.h> -static char Options[] = "abcdDe:EfgGhiIkl:LmoO:pPqQrRst:vVW:xX"; +static char Options[] = "abcdDe:EfgGhiIjkl:LmoO:pPqQrRst:vVW:xX"; int Flags = 0; match_t MatchType = MATCH_GLOB; @@ -115,12 +115,16 @@ main(int argc, char **argv) Flags |= SHOW_INSTALL; break; + case 'j': + Flags |= SHOW_REQUIRE; + break; + case 'k': Flags |= SHOW_DEINSTALL; break; case 'r': - Flags |= SHOW_REQUIRE; + Flags |= SHOW_DEPEND; break; case 'R': @@ -258,7 +262,7 @@ static void usage() { fprintf(stderr, "%s\n%s\n%s\n%s\n%s\n", - "usage: pkg_info [-bcdDEfgGiIjLmopPqQrRsvVxX] [-e package] [-l prefix]", + "usage: pkg_info [-bcdDEfgGiIjkLmopPqQrRsvVxX] [-e package] [-l prefix]", " [-t template] -a | pkg-name ...", " pkg_info [-qQ] -W filename", " pkg_info [-qQ] -O origin", diff --git a/usr.sbin/pkg_install/info/perform.c b/usr.sbin/pkg_install/info/perform.c index 5511f41..960641b 100644 --- a/usr.sbin/pkg_install/info/perform.c +++ b/usr.sbin/pkg_install/info/perform.c @@ -46,7 +46,7 @@ pkg_perform(char **pkgs) if (Flags & SHOW_PKGNAME) { return matched_packages(pkgs); } else if (CheckPkg) { - return isinstalledpkg(CheckPkg) == TRUE ? 0 : 1; + return isinstalledpkg(CheckPkg) > 0 ? 0 : 1; /* Not reached */ } else if (!TAILQ_EMPTY(whead)) { return find_pkg(whead); @@ -92,7 +92,7 @@ pkg_do(char *pkg) { Boolean installed = FALSE, isTMP = FALSE; char log_dir[FILENAME_MAX]; - char fname[FILENAME_MAX], extrlist[FILENAME_MAX]; + char fname[FILENAME_MAX]; Package plist; FILE *fp; struct stat sb; @@ -135,29 +135,19 @@ pkg_do(char *pkg) goto bail; } Home = make_playpen(PlayPen, sb.st_size / 2); - snprintf(extrlist, sizeof(extrlist), "--fast-read %s %s %s", - CONTENTS_FNAME, COMMENT_FNAME, DESC_FNAME); - if (Flags & SHOW_DISPLAY) - snprintf(extrlist, sizeof(extrlist), "%s %s", extrlist, - DISPLAY_FNAME); - if (Flags & SHOW_INSTALL) - snprintf(extrlist, sizeof(extrlist), "%s %s %s", extrlist, - INSTALL_FNAME, POST_INSTALL_FNAME); - if (Flags & SHOW_DEINSTALL) - snprintf(extrlist, sizeof(extrlist), "%s %s %s", extrlist, - DEINSTALL_FNAME, POST_DEINSTALL_FNAME); - if (Flags & SHOW_MTREE) - snprintf(extrlist, sizeof(extrlist), "%s %s", extrlist, - MTREE_FNAME); - if (unpack(fname, extrlist)) { + if (unpack(fname, "'+*'")) { warnx("error during unpacking, no info for '%s' available", pkg); code = 1; goto bail; } } - /* It's not an ininstalled package, try and find it among the installed */ + /* It's not an uninstalled package, try and find it among the installed */ else { - if (!isinstalledpkg(pkg)) { + int isinstalled = isinstalledpkg(pkg); + if (isinstalled < 0) { + warnx("the package info for package '%s' is corrupt", pkg); + return 1; + } else if (isinstalled == 0) { warnx("can't find package '%s' installed or in a file!", pkg); return 1; } @@ -199,7 +189,7 @@ pkg_do(char *pkg) printf("%s%s:", InfoPrefix, pkg); if (Flags & SHOW_COMMENT) show_file("Comment:\n", COMMENT_FNAME); - if (Flags & SHOW_REQUIRE) + if (Flags & SHOW_DEPEND) show_plist("Depends on:\n", &plist, PLIST_PKGDEP, FALSE); if ((Flags & SHOW_REQBY) && !isemptyfile(REQUIRED_BY_FNAME)) show_file("Required by:\n", REQUIRED_BY_FNAME); @@ -209,6 +199,8 @@ pkg_do(char *pkg) show_file("Install notice:\n", DISPLAY_FNAME); if (Flags & SHOW_PLIST) show_plist("Packing list:\n", &plist, (plist_t)0, TRUE); + if (Flags & SHOW_REQUIRE && fexists(REQUIRE_FNAME)) + show_file("Requirements script:\n", REQUIRE_FNAME); if ((Flags & SHOW_INSTALL) && fexists(INSTALL_FNAME)) show_file("Install script:\n", INSTALL_FNAME); if ((Flags & SHOW_INSTALL) && fexists(POST_INSTALL_FNAME)) diff --git a/usr.sbin/pkg_install/info/pkg_info.1 b/usr.sbin/pkg_install/info/pkg_info.1 index 7dfe453..1fd2c11 100644 --- a/usr.sbin/pkg_install/info/pkg_info.1 +++ b/usr.sbin/pkg_install/info/pkg_info.1 @@ -17,7 +17,7 @@ .\" @(#)pkg_info.1 .\" $FreeBSD$ .\" -.Dd February 8, 2001 +.Dd June 29, 2004 .Dt PKG_INFO 1 .Os .Sh NAME @@ -25,7 +25,7 @@ .Nd a utility for displaying information on software packages .Sh SYNOPSIS .Nm -.Op Fl bcdDEfgGiIkLmopPqQrRsvVxX +.Op Fl bcdDEfgGijIkLmopPqQrRsvVxX .Op Fl e Ar package .Op Fl l Ar prefix .Op Fl t Ar template @@ -99,10 +99,12 @@ Show the install script (if any) for each package. .It Fl I Show an index line for each package. This option takes precedence over all other package formatting options. +.It Fl j +Show the requirements script (if any) for each package. .It Fl k Show the de-install script (if any) for each package. .It Fl r -Show the requirements script (if any) for each package. +Show the list of packages on which each package depends. .It Fl R Show the list of installed packages which require each package. .It Fl m |