shred: smaller code

function                                             old     new   delta
shred_main                                           361     356      -5

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/coreutils/shred.c b/coreutils/shred.c
index 9cd39b7..b3c0095 100644
--- a/coreutils/shred.c
+++ b/coreutils/shred.c
@@ -66,16 +66,21 @@
 
 	for (;;) {
 		struct stat sb;
+		const char *fname;
 		unsigned i;
-		int fd = -1;
+		int fd;
 
+		fname = *argv++;
+		if (!fname)
+			break;
+		fd = -1;
 		if (opt & OPT_f) {
-			fd = open(*argv, O_WRONLY);
+			fd = open(fname, O_WRONLY);
 			if (fd < 0)
-				chmod(*argv, 0666);
+				chmod(fname, 0666);
 		}
 		if (fd < 0)
-			fd = xopen(*argv, O_WRONLY);
+			fd = xopen(fname, O_WRONLY);
 
 		if (fstat(fd, &sb) == 0 && sb.st_size > 0) {
 			off_t size = sb.st_size;
@@ -91,13 +96,10 @@
 			}
 			if (opt & OPT_u) {
 				ftruncate(fd, 0);
-				xunlink(*argv);
+				xunlink(fname);
 			}
 			xclose(fd);
 		}
-		argv++;
-		if (!*argv)
-			break;
 	}
 
 	return EXIT_SUCCESS;