Applied patch from Brent Priddy <brent.priddy@adtran.com> to handle the
special-case of using newlines as field delimiters.
diff --git a/cut.c b/cut.c
index 1d36a4e..2d313cc 100644
--- a/cut.c
+++ b/cut.c
@@ -102,10 +102,10 @@
 static void cut_file(FILE *file)
 {
 	char *line;
+	unsigned int cr_hits = 0;
 
 	/* go through every line in the file */
 	for (line = NULL; (line = get_line_from_file(file)) != NULL; free(line)) {
-
 		/* cut based on chars/bytes */
 		if (part == 'c' || part == 'b') {
 			int i;
@@ -129,34 +129,47 @@
 			char *start = line;
 			unsigned int delims_hit = 0;
 
-			for (ptr = line; (ptr = strchr(ptr, delim)) != NULL; ptr++) {
-				delims_hit++;
-				if (delims_hit == (startpos - 1)) {
-					start = ptr+1;
-				}
-				if (delims_hit == endpos) {
-					break;
-				}
-			}
-			/* we didn't hit any delimeters */
-			if (delims_hit == 0 && !supress_non_delimited_lines) {
-				fputs(line, stdout);
-			}
-			/* we =did= hit some delimiters */
-			else if (delims_hit > 0) {
-				/* we have a fixed end point */
-				if (ptr) {
-					while (start < ptr) {
+			if (delim == '\n') {
+				cr_hits++;
+				if (cr_hits >= startpos && cr_hits <= endpos) {
+					while (*start && *start != '\n') {
 						fputc(*start, stdout);
 						start++;
 					}
 					fputc('\n', stdout);
 				}
-				/* or we're just going til the end of the line */
-				else {
-					while (*start) {
-						fputc(*start, stdout);
-						start++;
+			}
+			else {
+				for (ptr = line; (ptr = strchr(ptr, delim)) != NULL; ptr++) {
+					delims_hit++;
+					if (delims_hit == (startpos - 1)) {
+						start = ptr+1;
+					}
+					if (delims_hit == endpos) {
+						break;
+					}
+				}
+			
+				/* we didn't hit any delimeters */
+				if (delims_hit == 0 && !supress_non_delimited_lines) {
+					fputs(line, stdout);
+				}
+				/* we =did= hit some delimiters */
+				else if (delims_hit > 0) {
+					/* we have a fixed end point */
+					if (ptr) {
+						while (start < ptr) {
+							fputc(*start, stdout);
+							start++;
+						}
+						fputc('\n', stdout);
+					}
+					/* or we're just going til the end of the line */
+					else {
+						while (*start) {
+							fputc(*start, stdout);
+							start++;
+						}
 					}
 				}
 			}