OSDN Git Service

diff: emit /dev/null if diff -rN diffs a file against /dev/null
authorDenis Vlasenko <vda.linux@googlemail.com>
Sun, 23 Nov 2008 14:40:00 +0000 (14:40 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Sun, 23 Nov 2008 14:40:00 +0000 (14:40 -0000)
function                                             old     new   delta
diffreg                                             1782    1786      +4

editors/diff.c

index 0e96c84..7fce70d 100644 (file)
@@ -858,7 +858,7 @@ static void print_header(const char *file1, const char *file2)
  * lines appended (beginning at b).  If c is greater than d then there are
  * lines missing from the to file.
  */
-static void change(char *file1, FILE *f1, char *file2, FILE *f2,
+static void change(const char *file1, FILE *f1, const char *file2, FILE *f2,
                        int a, int b, int c, int d)
 {
        if ((a > b && c > d) || (option_mask32 & FLAG_q)) {
@@ -902,7 +902,7 @@ static void change(char *file1, FILE *f1, char *file2, FILE *f2,
 }
 
 
-static void output(char *file1, FILE *f1, char *file2, FILE *f2)
+static void output(const char *file1, FILE *f1, const char *file2, FILE *f2)
 {
        /* Note that j0 and j1 can't be used as they are defined in math.h.
         * This also allows the rather amusing variable 'j00'... */
@@ -999,7 +999,7 @@ static void output(char *file1, FILE *f1, char *file2, FILE *f2)
  */
 /* NB: files can be not REGular. The only sure thing that they
  * are not both DIRectories. */
-static unsigned diffreg(char *file1, char *file2, int flags)
+static unsigned diffreg(const char *file1, const char *file2, int flags)
 {
        int *member;     /* will be overlaid on nfile[1] */
        int *class;      /* will be overlaid on nfile[0] */
@@ -1022,13 +1022,11 @@ static unsigned diffreg(char *file1, char *file2, int flags)
 
        if (flags & D_EMPTY1)
                /* can't be stdin, but xfopen_stdin() is smaller code */
-               f1 = xfopen_stdin(bb_dev_null);
-       else
-               f1 = xfopen_stdin(file1);
+               file1 = bb_dev_null;
+       f1 = xfopen_stdin(file1);
        if (flags & D_EMPTY2)
-               f2 = xfopen_stdin(bb_dev_null);
-       else
-               f2 = xfopen_stdin(file2);
+               file2 = bb_dev_null;
+       f2 = xfopen_stdin(file2);
 
        /* NB: if D_EMPTY1/2 is set, other file is always a regular file,
         * not pipe/fifo/chardev/etc - D_EMPTY is used by "diff -r" only,