cmp: with -s, do not report open errors

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/editors/cmp.c b/editors/cmp.c
index f495da7..f84a56e 100644
--- a/editors/cmp.c
+++ b/editors/cmp.c
@@ -33,8 +33,6 @@
 	unsigned opt;
 	int retval = 0;
 
-	xfunc_error_retval = 2;	/* 1 is returned if files are different. */
-
 	opt_complementary = "-1"
 			IF_DESKTOP(":?4")
 			IF_NOT_DESKTOP(":?2")
@@ -43,8 +41,6 @@
 	argv += optind;
 
 	filename1 = *argv;
-	fp1 = xfopen_stdin(filename1);
-
 	if (*++argv) {
 		filename2 = *argv;
 		if (ENABLE_DESKTOP && *++argv) {
@@ -55,6 +51,10 @@
 		}
 	}
 
+	xfunc_error_retval = 2;  /* missing file results in exitcode 2 */
+	if (opt & CMP_OPT_s)
+		logmode = 0;  /* -s suppresses open error messages */
+	fp1 = xfopen_stdin(filename1);
 	fp2 = xfopen_stdin(filename2);
 	if (fp1 == fp2) {		/* Paranoia check... stdin == stdin? */
 		/* Note that we don't bother reading stdin.  Neither does gnu wc.
@@ -63,6 +63,7 @@
 		 */
 		return 0;
 	}
+	logmode = LOGMODE_STDIO;
 
 	if (opt & CMP_OPT_l)
 		fmt = fmt_l_opt;