Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 29 Apr 2002 16:13:14 -0700
From:      Peter Sanchez <fut0n@linuxforlesbians.org>
To:        freebsd-bugs@freebsd.org
Subject:   [fut0n@linuxforlesbians.org: Re: bin/37571: pkg_info broken with filenames]
Message-ID:  <20020429161314.A28072@sushi.linuxforlesbians.org>

next in thread | raw e-mail | index | archive | help
Here is a working patch. It also fixes a bug that was discovered when
using full paths to packages that dont exist, but the actual package is
installed. example, pkg_info //////epic4-1.0.

I didnt write this patch, It was written by Will Carrel
(william.a@carrel.org). 

--- usr.sbin/pkg_install/info/main.c    Mon Apr 29 15:55:00 2002
+++ usr.sbin/pkg_install/info/main.c.new        Mon Apr 29 15:49:00 2002
@@ -193,6 +193,7 @@
        if (MatchType != MATCH_REGEX)
            while ((pkgs_split = strrchr(*argv, (int)'/')) != NULL) {
                *pkgs_split++;
+
                /*
                 * If character after the '/' is alphanumeric or shell
                 * metachar, then we've found the package name.
                 * Otherwise
@@ -201,7 +202,7 @@
                 */
                if (isalpha(*pkgs_split) || ((MatchType == MATCH_GLOB) && \
                    strpbrk(pkgs_split, "*?[]") != NULL)) {
-                   /**argv = pkgs_split;*/
+
                    break;
                }
            }

--- usr.sbin/pkg_install/info/perform.c Mon Apr 29 15:55:06 2002
+++ usr.sbin/pkg_install/info/perform.c.new     Mon Apr 29 15:49:00 2002
@@ -142,8 +142,11 @@
            goto bail;
        }
     }
-    /* It's not an ininstalled package, try and find it among the installed */
-    else {
+    /* 
+     * It's not an ininstalled package, try and find it among the installed 
+     * so long as it doesn't have a / in it.
+     */
+    else if (strchr(pkg,(int)'/') == NULL) {
        sprintf(log_dir, "%s/%s", LOG_DIR, pkg);
        if (!fexists(log_dir)) {
            warnx("can't find package `%s' installed or in a file!",
pkg);
@@ -154,6 +157,11 @@
            return 1;
        }
        installed = TRUE;
+    }
+    /* Tried everywhere that makes sense, found nothing, must not exist */
+    else {
+        warnx("can't find package `%s' in a file!", pkg);
+       return 1;
     }
 
     /* Suck in the contents list */


I have tested it and it works very well.

Peter

On Mon, Apr 29, 2002 at 06:47:23PM +0200, dirk.meyer@dinoex.sub.org wrote:
> 
> >Number:         37571
> >Category:       bin
> >Synopsis:       pkg_info broken with filenames
> >Confidential:   no
> >Severity:       non-critical
> >Priority:       low
> >Responsible:    freebsd-bugs
> >State:          open
> >Quarter:        
> >Keywords:       
> >Date-Required:
> >Class:          sw-bug
> >Submitter-Id:   current-users
> >Arrival-Date:   Mon Apr 29 09:50:01 PDT 2002
> >Closed-Date:
> >Last-Modified:
> >Originator:     Dirk Meyer
> >Release:        FreeBSD 4.5-STABLE i386
> >Organization:
> privat
> >Environment:
> System: FreeBSD 4.5-STABLE i386
> 
> >Description:
> 
> 	pkg_info cant read any information from
> 	package-files supplied on the commandline.
> 
> 	This worked fine in older releases of FreeBSD.
> 
> >How-To-Repeat:
> 
> # cd /src
> # pkg_info /src/packages/All/gconf-1.0.9.tgz
> pkg_info: can't find package `gconf-1.0.9.tgz' installed or in a file!
> # ls -l /src/packages/All/gconf-1.0.9.tgz
> -rw-r--r--  1 root  wheel  706765 Apr 19 22:39 /src/packages/All/gconf-1.0.9.tgz
> # cd /src/packages/All/
> # pkg_info /src/packages/All/gconf-1.0.9.tgz
> Information for gconf-1.0.9.tgz:
> 
> [....]
> 
> >Fix:
> 	preserve pathname in pkg_info.
> 	or cd into the specified directory.
> 
> >Release-Note:
> >Audit-Trail:
> >Unformatted:
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-bugs" in the body of the message

-- 
Peter Sanchez			|	"The ability to read is what
 - pjs@linuxforlesbians.org	|	 distinguishes Unix users from
 - www.linuxforlesbians.org	|	 those of more popular platforms."
 - FreeBSD or DIE		|			- John Lasser

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020429161314.A28072>