checkpoint of hacking for mail.cs.berkeley.edu
[unix-history] / usr / src / usr.bin / comm / comm.c
index 0b6a496..77942fc 100644 (file)
@@ -5,17 +5,7 @@
  * This code is derived from software contributed to Berkeley by
  * Case Larsen.
  *
  * This code is derived from software contributed to Berkeley by
  * Case Larsen.
  *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley.  The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ * %sccs.include.redist.c%
  */
 
 #ifndef lint
  */
 
 #ifndef lint
@@ -25,26 +15,30 @@ char copyright[] =
 #endif /* not lint */
 
 #ifndef lint
 #endif /* not lint */
 
 #ifndef lint
-static char sccsid[] = "@(#)comm.c     5.1 (Berkeley) %G%";
+static char sccsid[] = "@(#)comm.c     5.8 (Berkeley) %G%";
 #endif /* not lint */
 
 #endif /* not lint */
 
-#include <sys/file.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <errno.h>
 #include <stdio.h>
 #include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 
 
-#define        MAXLINELEN      (2048 + 1)
+#define        MAXLINELEN      (_POSIX2_LINE_MAX + 1)
 
 
-static char *tabs[] = { "", "\t", "\t\t" };
+char *tabs[] = { "", "\t", "\t\t" };
 
 main(argc,argv)
        int argc;
 
 main(argc,argv)
        int argc;
-       char **argv;
+       char *argv[];
 {
 {
-       extern int optind;
-       FILE *fp1, *fp2, *file();
        register int comp, file1done, file2done, read1, read2;
        register char *col1, *col2, *col3;
        int ch, flag1, flag2, flag3;
        register int comp, file1done, file2done, read1, read2;
        register char *col1, *col2, *col3;
        int ch, flag1, flag2, flag3;
+       FILE *fp1, *fp2, *file();
        char **p, line1[MAXLINELEN], line2[MAXLINELEN];
        char **p, line1[MAXLINELEN], line2[MAXLINELEN];
+       extern int optind;
 
        flag1 = flag2 = flag3 = 1;
        while ((ch = getopt(argc, argv, "-123")) != EOF)
 
        flag1 = flag2 = flag3 = 1;
        while ((ch = getopt(argc, argv, "-123")) != EOF)
@@ -76,12 +70,13 @@ done:       argc -= optind;
 
        /* for each column printed, add another tab offset */
        p = tabs;
 
        /* for each column printed, add another tab offset */
        p = tabs;
+       col1 = col2 = col3 = NULL;
        if (flag1)
                col1 = *p++;
        if (flag2)
                col2 = *p++;
        if (flag3)
        if (flag1)
                col1 = *p++;
        if (flag2)
                col2 = *p++;
        if (flag3)
-               col3 = *p++;
+               col3 = *p;
 
        for (read1 = read2 = 1;;) {
                /* read next line, check for EOF */
 
        for (read1 = read2 = 1;;) {
                /* read next line, check for EOF */
@@ -93,12 +88,12 @@ done:       argc -= optind;
                /* if one file done, display the rest of the other file */
                if (file1done) {
                        if (!file2done && col2)
                /* if one file done, display the rest of the other file */
                if (file1done) {
                        if (!file2done && col2)
-                               show(fp1, col2, line2);
+                               show(fp2, col2, line2);
                        break;
                }
                if (file2done) {
                        if (!file1done && col1)
                        break;
                }
                if (file2done) {
                        if (!file1done && col1)
-                               show(fp2, col1, line1);
+                               show(fp1, col1, line1);
                        break;
                }
 
                        break;
                }
 
@@ -143,8 +138,8 @@ file(name)
 
        if (!strcmp(name, "-"))
                return(stdin);
 
        if (!strcmp(name, "-"))
                return(stdin);
-       if (!(fp = fopen(name, "r"))) {
-               (void)fprintf(stderr, "comm: can't read %s.\n", name);
+       if ((fp = fopen(name, "r")) == NULL) {
+               (void)fprintf(stderr, "comm: %s: %s\n", name, strerror(errno));
                exit(1);
        }
        return(fp);
                exit(1);
        }
        return(fp);
@@ -152,6 +147,6 @@ file(name)
 
 usage()
 {
 
 usage()
 {
-       (void)fprintf(stderr, "usage: comm [-123] [ - ] file1 file2\n");
+       (void)fprintf(stderr, "usage: comm [-123] file1 file2\n");
        exit(1);
 }
        exit(1);
 }