Date: Wed, 19 Mar 1997 17:47:53 -0800 (PST) From: graphix@iastate.edu To: freebsd-gnats-submit@freebsd.org Subject: bin/3042: comm and uniq do not have a case insensitive mode Message-ID: <199703200147.RAA12139@freefall.freebsd.org> Resent-Message-ID: <199703200150.RAA12390@freefall.freebsd.org>
index | next in thread | raw e-mail
>Number: 3042
>Category: bin
>Synopsis: comm and uniq do not have a case insensitive mode
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Wed Mar 19 17:50:01 PST 1997
>Last-Modified:
>Originator: Kent Vander Velden
>Organization:
Iowa State University
>Release: FreeBSD-"CURRENT"
>Environment:
FreeBSD pseudo.cc.iastate.edu 3.0-CURRENT FreeBSD 3.0-CURRENT #0: Sun Feb 9 02:37:42 CST 1997 kent@pseudo.cc.iastate.edu:/usr/src/sys/compile/PSEUDO i386
>Description:
comm and uniq do not have a case insensitive mode. While these commands
generally do not have this mode, it should would be helpful in some
siutations.
>How-To-Repeat:
>Fix:
Index: comm/comm.1
===================================================================
RCS file: /jaz/FreeBSD-CVS/src/usr.bin/comm/comm.1,v
retrieving revision 1.1.1.1
diff -c -r1.1.1.1 comm.1
*** comm.1 1994/05/27 12:30:58 1.1.1.1
--- comm.1 1997/03/20 00:56:56
***************
*** 42,48 ****
.Nd select or reject lines common to two files
.Sh SYNOPSIS
.Nm comm
! .Op Fl 123
.Ar file1 file2
.Sh DESCRIPTION
The
--- 42,48 ----
.Nd select or reject lines common to two files
.Sh SYNOPSIS
.Nm comm
! .Op Fl 123i
.Ar file1 file2
.Sh DESCRIPTION
The
***************
*** 69,74 ****
--- 69,76 ----
Suppress printing of column 2.
.It Fl 3
Suppress printing of column 3.
+ .It Fl i
+ Case insensitive comparison of lines.
.El
.Pp
Each column will have a number of tab characters prepended to it
Index: comm/comm.c
===================================================================
RCS file: /jaz/FreeBSD-CVS/src/usr.bin/comm/comm.c,v
retrieving revision 1.1.1.2
diff -c -r1.1.1.2 comm.c
*** comm.c 1997/03/11 13:04:26 1.1.1.2
--- comm.c 1997/03/20 01:01:39
***************
*** 66,78 ****
char *argv[];
{
int comp, file1done, file2done, read1, read2;
! int ch, flag1, flag2, flag3;
FILE *fp1, *fp2;
char *col1, *col2, *col3;
char **p, line1[MAXLINELEN], line2[MAXLINELEN];
flag1 = flag2 = flag3 = 1;
! while ((ch = getopt(argc, argv, "-123")) != EOF)
switch(ch) {
case '-':
--optind;
--- 66,79 ----
char *argv[];
{
int comp, file1done, file2done, read1, read2;
! int ch, flag1, flag2, flag3, iflag;
FILE *fp1, *fp2;
char *col1, *col2, *col3;
char **p, line1[MAXLINELEN], line2[MAXLINELEN];
flag1 = flag2 = flag3 = 1;
! iflag = 0;
! while ((ch = getopt(argc, argv, "-123i")) != EOF)
switch(ch) {
case '-':
--optind;
***************
*** 86,91 ****
--- 87,95 ----
case '3':
flag3 = 0;
break;
+ case 'i':
+ iflag = 1;
+ break;
case '?':
default:
usage();
***************
*** 128,135 ****
break;
}
/* lines are the same */
! if (!(comp = strcmp(line1, line2))) {
read1 = read2 = 1;
if (col3)
(void)printf("%s%s", col3, line1);
--- 132,145 ----
break;
}
+ if(iflag) {
+ comp = strcasecmp(line1, line2);
+ } else {
+ comp = strcmp(line1, line2);
+ }
+
/* lines are the same */
! if (!comp) {
read1 = read2 = 1;
if (col3)
(void)printf("%s%s", col3, line1);
***************
*** 182,187 ****
usage()
{
! (void)fprintf(stderr, "usage: comm [-123] file1 file2\n");
exit(1);
}
--- 192,197 ----
usage()
{
! (void)fprintf(stderr, "usage: comm [-123i] file1 file2\n");
exit(1);
}
Index: uniq/uniq.1
===================================================================
RCS file: /jaz/FreeBSD-CVS/src/usr.bin/uniq/uniq.1,v
retrieving revision 1.1.1.1
diff -c -r1.1.1.1 uniq.1
*** uniq.1 1994/05/27 12:33:16 1.1.1.1
--- uniq.1 1997/03/20 01:04:07
***************
*** 43,48 ****
--- 43,49 ----
.Sh SYNOPSIS
.Nm uniq
.Op Fl c | Fl d | Fl u
+ .Op Fl i
.Op Fl f Ar fields
.Op Fl s Ar chars
.Oo
***************
*** 87,92 ****
--- 88,95 ----
Character numbers are one based, i.e. the first character is character one.
.It Fl u
Don't output lines that are repeated in the input.
+ .It Fl i
+ Case insensitive comparison of lines.
.\".It Fl Ns Ar n
.\"(Deprecated; replaced by
.\".Fl f ) .
Index: uniq/uniq.c
===================================================================
RCS file: /jaz/FreeBSD-CVS/src/usr.bin/uniq/uniq.c,v
retrieving revision 1.1.1.2
diff -c -r1.1.1.2 uniq.c
*** uniq.c 1997/03/11 13:08:01 1.1.1.2
--- uniq.c 1997/03/20 01:02:26
***************
*** 70,80 ****
{
register char *t1, *t2;
FILE *ifp, *ofp;
! int ch;
char *prevline, *thisline, *p;
obsolete(argv);
! while ((ch = getopt(argc, argv, "-cdf:s:u")) != EOF)
switch (ch) {
case '-':
--optind;
--- 70,82 ----
{
register char *t1, *t2;
FILE *ifp, *ofp;
! int ch, iflag, comp;
char *prevline, *thisline, *p;
+ iflag=0;
+
obsolete(argv);
! while ((ch = getopt(argc, argv, "-cdf:s:ui")) != EOF)
switch (ch) {
case '-':
--optind;
***************
*** 98,103 ****
--- 100,108 ----
case 'u':
uflag = 1;
break;
+ case 'i':
+ iflag = 1;
+ break;
case '?':
default:
usage();
***************
*** 148,155 ****
t2 = prevline;
}
/* If different, print; set previous to new value. */
! if (strcmp(t1, t2)) {
show(ofp, prevline);
t1 = prevline;
prevline = thisline;
--- 153,166 ----
t2 = prevline;
}
+ if(iflag) {
+ comp = strcasecmp(t1, t2);
+ } else {
+ comp = strcmp(t1, t2);
+ }
+
/* If different, print; set previous to new value. */
! if (comp) {
show(ofp, prevline);
t1 = prevline;
prevline = thisline;
>Audit-Trail:
>Unformatted:
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199703200147.RAA12139>
