[BACK]Return to diff.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / diff

Diff for /src/usr.bin/diff/diff.c between version 1.26 and 1.27

version 1.26, 2003/07/08 04:45:32 version 1.27, 2003/07/09 00:07:44
Line 38 
Line 38 
   
 #include "diff.h"  #include "diff.h"
   
 int      aflag, bflag, iflag, Nflag, Pflag, rflag, sflag, tflag, wflag;  int      aflag, bflag, iflag, lflag, Nflag, Pflag, rflag, sflag, tflag, wflag;
 int      format, context, status;  int      format, context, status;
 char    *start, *ifdefname, *diffargs;  char    *start, *ifdefname, *diffargs;
 struct stat stb1, stb2;  struct stat stb1, stb2;
 struct excludes *excludes_list;  struct excludes *excludes_list;
   
 #define OPTIONS "abC:cD:efhinNPqrS:stU:uwX:x:"  #define OPTIONS "abC:cD:efhilnNPqrS:stU:uwX:x:"
 static struct option longopts[] = {  static struct option longopts[] = {
         { "text",                       no_argument,            0,      'a' },          { "text",                       no_argument,            0,      'a' },
         { "ignore-space-change",        no_argument,            0,      'b' },          { "ignore-space-change",        no_argument,            0,      'b' },
Line 53 
Line 53 
         { "ed",                         no_argument,            0,      'e' },          { "ed",                         no_argument,            0,      'e' },
         { "forward-ed",                 no_argument,            0,      'f' },          { "forward-ed",                 no_argument,            0,      'f' },
         { "ignore-case",                no_argument,            0,      'i' },          { "ignore-case",                no_argument,            0,      'i' },
           { "paginate",                   no_argument,            0,      'l' },
         { "new-file",                   no_argument,            0,      'N' },          { "new-file",                   no_argument,            0,      'N' },
         { "rcs",                        no_argument,            0,      'n' },          { "rcs",                        no_argument,            0,      'n' },
         { "unidirectional-new-file",    no_argument,            0,      'P' },          { "unidirectional-new-file",    no_argument,            0,      'P' },
Line 117 
Line 118 
                 case 'i':                  case 'i':
                         iflag = 1;                          iflag = 1;
                         break;                          break;
                   case 'l':
                           lflag = 1;
                           break;
                 case 'N':                  case 'N':
                         Nflag = 1;                          Nflag = 1;
                         break;                          break;
Line 187 
Line 191 
                 error("%s", argv[1]);                  error("%s", argv[1]);
         if (gotstdin && (S_ISDIR(stb1.st_mode) || S_ISDIR(stb2.st_mode)))          if (gotstdin && (S_ISDIR(stb1.st_mode) || S_ISDIR(stb2.st_mode)))
                 errorx("can't compare - to a directory");                  errorx("can't compare - to a directory");
           set_argstr(oargv, argv);
         if (S_ISDIR(stb1.st_mode) && S_ISDIR(stb2.st_mode)) {          if (S_ISDIR(stb1.st_mode) && S_ISDIR(stb2.st_mode)) {
                 if (format == D_IFDEF)                  if (format == D_IFDEF)
                         errorx("-D option not supported with directories");                          errorx("-D option not supported with directories");
                 set_argstr(oargv, argv);  
                 diffdir(argv[0], argv[1]);                  diffdir(argv[0], argv[1]);
         } else          } else {
                 diffreg(argv[0], argv[1], 0);                  print_status(diffreg(argv[0], argv[1], 0), argv[0], argv[1],
                       NULL);
           }
         exit(status);          exit(status);
 }  }
   
Line 227 
Line 233 
         return (q);          return (q);
 }  }
   
   int
   easprintf(char **ret, const char *fmt, ...)
   {
           int len;
           va_list ap;
   
           va_start(ap, fmt);
           len = vasprintf(ret, fmt, ap);
           va_end(ap);
   
           if (len == -1)
                   error(NULL);
           return(len);
   }
   
 __dead void  __dead void
 error(const char *fmt, ...)  error(const char *fmt, ...)
 {  {
Line 312 
Line 333 
         entry->pattern = pattern;          entry->pattern = pattern;
         entry->next = excludes_list;          entry->next = excludes_list;
         excludes_list = entry;          excludes_list = entry;
   }
   
   void
   print_status(int val, char *path1, char *path2, char *entry)
   {
           switch (val) {
           case D_ONLY:
                   printf("Only in %s: %s\n", path1, entry);
                   break;
           case D_COMMON:
                   printf("Common subdirectories: %s%s and %s%s\n",
                       path1, entry ? entry : "", path2, entry ? entry : "");
                   break;
           case D_BINARY:
                   printf("Binary files %s%s and %s%s differ\n",
                       path1, entry ? entry : "", path2, entry ? entry : "");
                   break;
           case D_DIFFER:
                   if (format == D_BRIEF)
                           printf("Files %s%s and %s%s differ\n",
                               path1, entry ? entry : "",
                               path2, entry ? entry : "");
                   break;
           case D_SAME:
                   if (sflag)
                           printf("Files %s%s and %s%s are identical\n",
                               path1, entry ? entry : "",
                               path2, entry ? entry : "");
                   break;
           }
 }  }
   
 __dead void  __dead void

Legend:
Removed from v.1.26  
changed lines
  Added in v.1.27