diff --git a/findutils/Config.in b/findutils/Config.in
index a432ad8..3143bd4 100644
--- a/findutils/Config.in
+++ b/findutils/Config.in
@@ -95,7 +95,7 @@
 	default n
 	help
 	  xargs is used to execute a specified command on
-	  every item from standard input.  
+	  every item from standard input.
 
 config CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION
 	bool "  Enable prompt and confirmation option -p"
diff --git a/findutils/Makefile b/findutils/Makefile
index fffee8f..ba65a0e 100644
--- a/findutils/Makefile
+++ b/findutils/Makefile
@@ -1,6 +1,6 @@
 # Makefile for busybox
 #
-# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org>
+# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/findutils/Makefile.in b/findutils/Makefile.in
index 6413a7f..2d2f242 100644
--- a/findutils/Makefile.in
+++ b/findutils/Makefile.in
@@ -1,6 +1,6 @@
 # Makefile for busybox
 #
-# Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org>
+# Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
diff --git a/findutils/find.c b/findutils/find.c
index 6610304..11a838e 100644
--- a/findutils/find.c
+++ b/findutils/find.c
@@ -2,7 +2,7 @@
 /*
  * Mini find implementation for busybox
  *
- * Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org>
+ * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
  *
  * Reworked by David Douthitt <n9ubh@callsign.net> and
  *  Matt Kraai <kraai@alumni.carnegiemellon.edu>.
@@ -98,7 +98,7 @@
 		time_t mtime_secs = mtime_days * 24 * 60 * 60;
 		if (!((isdigit(mtime_char) && file_age >= mtime_secs &&
 						file_age < mtime_secs + 24 * 60 * 60) ||
-				(mtime_char == '+' && file_age >= mtime_secs + 24 * 60 * 60) || 
+				(mtime_char == '+' && file_age >= mtime_secs + 24 * 60 * 60) ||
 				(mtime_char == '-' && file_age < mtime_secs)))
 			goto no_match;
 	}
@@ -234,13 +234,13 @@
 				xdev_dev [0] = stbuf. st_dev;
 			}
 			else {
-			
+
 				for (i = 1; i < firstopt; i++) {
 					if ( stat ( argv [i], &stbuf ) < 0 )
 						bb_error_msg_and_die("could not stat '%s'", argv [i] );
 					xdev_dev [i-1] = stbuf. st_dev;
 				}
-			}						
+			}
 #endif
 #ifdef CONFIG_FEATURE_FIND_NEWER
 		} else if (strcmp(argv[i], "-newer") == 0) {
diff --git a/findutils/grep.c b/findutils/grep.c
index 241099c..229508c 100644
--- a/findutils/grep.c
+++ b/findutils/grep.c
@@ -2,7 +2,7 @@
  * Mini grep implementation for busybox using libc regex.
  *
  * Copyright (C) 1999,2000,2001 by Lineo, inc. and Mark Whitley
- * Copyright (C) 1999,2000,2001 by Mark Whitley <markw@codepoet.org> 
+ * Copyright (C) 1999,2000,2001 by Mark Whitley <markw@codepoet.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -116,7 +116,7 @@
 	int print_n_lines_after = 0;
 	int curpos = 0; /* track where we are in the circular 'before' buffer */
 	int idx = 0; /* used for iteration through the circular buffer */
-#endif /* CONFIG_FEATURE_GREP_CONTEXT */ 
+#endif /* CONFIG_FEATURE_GREP_CONTEXT */
 
 	while ((line = bb_get_chomped_line_from_file(file)) != NULL) {
 		llist_t *pattern_ptr = pattern_head;
@@ -190,7 +190,7 @@
 
 					/* make a note that we need to print 'after' lines */
 					print_n_lines_after = lines_after;
-#endif /* CONFIG_FEATURE_GREP_CONTEXT */ 
+#endif /* CONFIG_FEATURE_GREP_CONTEXT */
 					print_line(line, linenum, ':');
 				}
 			}
@@ -209,7 +209,7 @@
 				print_line(line, linenum, '-');
 				print_n_lines_after--;
 			}
-#endif /* CONFIG_FEATURE_GREP_CONTEXT */ 
+#endif /* CONFIG_FEATURE_GREP_CONTEXT */
 		free(line);
 	}
 
diff --git a/findutils/xargs.c b/findutils/xargs.c
index 8d7e813..16b94e2 100644
--- a/findutils/xargs.c
+++ b/findutils/xargs.c
@@ -96,12 +96,12 @@
 					return 124;
 				}
 				if (WIFSTOPPED(status)) {
-					bb_error_msg("%s: stopped by signal %d", 
+					bb_error_msg("%s: stopped by signal %d",
 						args[0], WSTOPSIG(status));
 					return 125;
 				}
 				if (WIFSIGNALED(status)) {
-					bb_error_msg("%s: terminated by signal %d", 
+					bb_error_msg("%s: terminated by signal %d",
 						args[0], WTERMSIG(status));
 					return 125;
 				}
@@ -129,7 +129,7 @@
 		    || (c) == '\f' || (c) == '\v')
 
 #ifdef CONFIG_FEATURE_XARGS_SUPPORT_QUOTES
-static xlist_t *process_stdin(xlist_t * list_arg, 
+static xlist_t *process_stdin(xlist_t * list_arg,
 	const char *eof_str, size_t mc, char *buf)
 {
 #define NORM      0
@@ -200,7 +200,7 @@
 		}
 		if (state == SPACE) {	/* word's delimiter or EOF detected */
 			if (q) {
-				bb_error_msg_and_die("unmatched %s quote", 
+				bb_error_msg_and_die("unmatched %s quote",
 					q == '\'' ? "single" : "double");
 			}
 			/* word loaded */
@@ -234,7 +234,7 @@
 }
 #else
 /* The variant does not support single quotes, double quotes or backslash */
-static xlist_t *process_stdin(xlist_t * list_arg, 
+static xlist_t *process_stdin(xlist_t * list_arg,
 	const char *eof_str, size_t mc, char *buf)
 {
 
@@ -496,8 +496,8 @@
 		read_args = process0_stdin;
 #endif
 
-	while ((list = READ_ARGS(list, eof_str, n_max_chars, max_chars)) != NULL || 
-		(opt & OPT_NO_EMPTY) == 0) 
+	while ((list = READ_ARGS(list, eof_str, n_max_chars, max_chars)) != NULL ||
+		(opt & OPT_NO_EMPTY) == 0)
 	{
 		opt |= OPT_NO_EMPTY;
 		n = 0;
@@ -574,7 +574,7 @@
 
 void bb_show_usage(void)
 {
-	fprintf(stderr, "Usage: %s [-p] [-r] [-t] -[x] [-n max_arg] [-s max_chars]\n", 
+	fprintf(stderr, "Usage: %s [-p] [-r] [-t] -[x] [-n max_arg] [-s max_chars]\n",
 		bb_applet_name);
 	exit(1);
 }
