diff: don't force the format to 'context' with -p immediately

Instead, leave the fomat as unspecified (if it hasn't been) and use the
-p flag as a hint to 'context' if no other formatting option is specified.

This fixes `diff -purw`, used frequently by emaste, and matches the behavior
of its GNU counterpart.

PR:		250015
Reviewed by:	emaste
MFC after:	1 week
This commit is contained in:
Kyle Evans 2020-10-27 12:27:26 +00:00
parent 1f474190fc
commit b0d30b27f0

View File

@ -210,17 +210,6 @@ main(int argc, char **argv)
diff_format = D_NREVERSE;
break;
case 'p':
/*
* If it's not unset and it's not set to context or
* unified, we'll error out here as a conflicting
* format. If it's unset, we'll go ahead and set it to
* context.
*/
if (FORMAT_MISMATCHED(D_CONTEXT) &&
FORMAT_MISMATCHED(D_UNIFIED))
conflicting_format();
if (diff_format == D_UNSET)
diff_format = D_CONTEXT;
dflags |= D_PROTOTYPE;
break;
case 'P':
@ -320,6 +309,8 @@ main(int argc, char **argv)
newarg = optind != prevoptind;
prevoptind = optind;
}
if (diff_format == D_UNSET && (dflags & D_PROTOTYPE) != 0)
diff_format = D_CONTEXT;
if (diff_format == D_UNSET)
diff_format = D_NORMAL;
argc -= optind;