SUpport old style -[::digit::] options for head and tail
Also make head behave like GNU head (-0/-n 0 is valid)
diff --git a/coreutils/head.c b/coreutils/head.c
index 4a16771..c5c11fc 100644
--- a/coreutils/head.c
+++ b/coreutils/head.c
@@ -47,12 +47,17 @@
 	FILE *fp;
 	int need_headers, opt, len = 10, status = EXIT_SUCCESS;
 
+	if (( argc >= 2 ) && ( strlen ( argv [1] ) >= 2 ) && ( argv [1][0] == '-' ) && isdigit ( argv [1][1] )) {
+		len = atoi ( &argv [1][1] );
+		optind = 2;
+	}
+
 	/* parse argv[] */
 	while ((opt = getopt(argc, argv, "n:")) > 0) {
 		switch (opt) {
 		case 'n':
 			len = atoi(optarg);
-			if (len >= 1)
+			if (len >= 0)
 				break;
 			/* fallthrough */
 		default: