ports/68896: make search can't be case insensitive under 5.x

Matthew Seaman m.seaman at infracaninophile.co.uk
Sat Jul 10 17:00:27 UTC 2004


>Number:         68896
>Category:       ports
>Synopsis:       make search can't be case insensitive under 5.x
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jul 10 17:00:26 GMT 2004
>Closed-Date:
>Last-Modified:
>Originator:     Matthew Seaman
>Release:        FreeBSD 4.10-STABLE i386
>Organization:
Infracaninophile
>Environment:
System: FreeBSD happy-idiot-talk.infracaninophile.co.uk 4.10-STABLE FreeBSD 4.10-STABLE #78: Mon Jul 5 15:49:39 BST 2004 root at happy-idiot-talk.infracaninophile.co.uk:/usr/obj/usr/src/sys/HAPPY-IDIOT-TALK i386



>Description:

Ref: the thread on freebsd-questions@ starting with:

    http://lists.freebsd.org/pipermail/freebsd-questions/2004-July/051953.html

Mark Frank noticed that, contrary to what it says in
/usr/ports/CHANGES that 'make search' would not do a case insensitive
search.

Further investigation showed that this only occured on 5.x systems and
was because the awk script in bsd.ports.subdir.mk was using the GNU
'IGNORECASE' extension, which isn't present in the one-true-awk used
in 5.x.  Under 4.x, which does use gawk, everything works as intended.

As I don't have access to a 5.x system, this patch has only been
tested under 4.x, but it should work.

>How-To-Repeat:

    On a 5.x system:

    % cd /usr/ports
    % make search name=phpmyadmin icase=1

>Fix:

	

--- bsd.port.subdir.mk.diff begins here ---
--- bsd.port.subdir.mk.orig	Sat Jul 10 17:25:21 2004
+++ bsd.port.subdir.mk	Sat Jul 10 17:35:44 2004
@@ -346,24 +346,33 @@
 	    -v rdeps="$$rdeps"      -v xrdeps="$$xrdeps" \
 	    -v icase="$${icase:-${PORTSEARCH_IGNORECASE}}" \
 	    -v keylim="$${keylim:-${PORTSEARCH_KEYLIM}}" \
-	    -v xkeylim="$${xkeylim:-${PORTSEARCH_XKEYLIM}}"\
+	    -v xkeylim="$${xkeylim:-${PORTSEARCH_XKEYLIM}}" \
 	    -v display="$${display:-${PORTSEARCH_DISPLAY_FIELDS}}" \
 	'BEGIN { \
 	    sub(top, "${PORTSDIR}", there); \
-	    IGNORECASE=icase; \
 	    keylen = length(key); keylim = keylim && keylen; \
 	    if (!keylim && keylen) \
-	      parms[0] = key; \
+	      parms[0] = (icase ? tolower(key) : key); \
 	    xkeylen = length(xkey); xkeylim = xkeylim && xkeylen; \
 	    if (!xkeylim && xkeylen) \
-	      xparms[0] = xkey; \
-	    if (length(name))  parms[1] = name;  if (length(xname))  xparms[1] = xname; \
-	    if (length(path))  parms[2] = path;  if (length(xpath))  xparms[2] = xpath; \
-	    if (length(info))  parms[4] = info;  if (length(xinfo))  xparms[4] = xinfo; \
-	    if (length(maint)) parms[6] = maint; if (length(xmaint)) xparms[6] = xmaint; \
-	    if (length(cat))   parms[7] = cat;   if (length(xcat))   xparms[7] = xcat; \
-	    if (length(bdeps)) parms[8] = bdeps; if (length(xbdeps)) xparms[8] = xbdeps; \
-	    if (length(rdeps)) parms[9] = rdeps; if (length(xrdeps)) xparms[9] = xrdeps; \
+	      xparms[0] = (icase ? tolower(xkey) : xkey); \
+	    if (icase) { \
+	      if (length(name))  parms[1] = tolower(name);  if (length(xname))  xparms[1] = tolower(xname); \
+	      if (length(path))  parms[2] = tolower(path);  if (length(xpath))  xparms[2] = tolower(xpath); \
+	      if (length(info))  parms[4] = tolower(info);  if (length(xinfo))  xparms[4] = tolower(xinfo); \
+	      if (length(maint)) parms[6] = tolower(maint); if (length(xmaint)) xparms[6] = tolower(xmaint); \
+	      if (length(cat))   parms[7] = tolower(cat);   if (length(xcat))   xparms[7] = tolower(xcat); \
+	      if (length(bdeps)) parms[8] = tolower(bdeps); if (length(xbdeps)) xparms[8] = tolower(xbdeps); \
+	      if (length(rdeps)) parms[9] = tolower(rdeps); if (length(xrdeps)) xparms[9] = tolower(xrdeps); \
+	    } else { \
+	      if (length(name))  parms[1] = name;  if (length(xname))  xparms[1] = xname; \
+	      if (length(path))  parms[2] = path;  if (length(xpath))  xparms[2] = xpath; \
+	      if (length(info))  parms[4] = info;  if (length(xinfo))  xparms[4] = xinfo; \
+	      if (length(maint)) parms[6] = maint; if (length(xmaint)) xparms[6] = xmaint; \
+	      if (length(cat))   parms[7] = cat;   if (length(xcat))   xparms[7] = xcat; \
+	      if (length(bdeps)) parms[8] = bdeps; if (length(xbdeps)) xparms[8] = xbdeps; \
+	      if (length(rdeps)) parms[9] = rdeps; if (length(xrdeps)) xparms[9] = xrdeps; \
+	    } \
 	    fields["name"]  = 1; names[1] = "Port"; \
 	    fields["path"]  = 2; names[2] = "Path"; \
 	    fields["info"]  = 4; names[4] = "Info"; \
@@ -380,17 +389,17 @@
 	    if ($$2 !~ there) \
 	      next; \
 	    for (i in parms) \
-	      if ($$i !~ parms[i]) \
+	      if ((icase ? tolower($$i) : $$i) !~ parms[i]) \
 	        next; \
 	    for (i in xparms) \
-	      if ($$i ~ xparms[i]) \
+	      if ((icase ? tolower($$i) : $$i) ~ xparms[i]) \
 	        next; \
 	    found = 0; \
 	    for (i = 1; i < 10; i++) \
 	      if (i in disp) { \
-	        if (xkeylim && $$i ~ xkey) \
+	        if (xkeylim && (icase ? tolower($$i) : $$i) ~ xkey) \
 	          next; \
-	        if (!found && keylim && $$i ~ key) \
+	        if (!found && keylim && (icase ? tolower($$i) : $$i) ~ key) \
 	          found = 1; \
 	      } \
 	    if (keylim && !found) \
--- bsd.port.subdir.mk.diff ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list