Remove trailing whitespace.  Update copyright to include 2004.
diff --git a/shell/Config.in b/shell/Config.in
index 892b96e..bcb5e71 100644
--- a/shell/Config.in
+++ b/shell/Config.in
@@ -41,7 +41,7 @@
 	  the most complete and most pedantically correct shell included with
 	  busybox.  This shell is actually a derivative of the Debian 'dash'
 	  shell (by Herbert Xu), which was created by porting the 'ash' shell
-	  (written by Kenneth Almquist) from NetBSD.  
+	  (written by Kenneth Almquist) from NetBSD.
 
 comment "Ash Shell Options"
 	depends on CONFIG_ASH
diff --git a/shell/Makefile b/shell/Makefile
index a082192..8f476c1 100644
--- a/shell/Makefile
+++ b/shell/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/shell/Makefile.in b/shell/Makefile.in
index c5be7ba..7b9f41e 100644
--- a/shell/Makefile.in
+++ b/shell/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/shell/ash.c b/shell/ash.c
index 8c2493e..060860c 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -7615,7 +7615,7 @@
 	int quoted = 0;
 	static const char *const vstype[16] = {
 		nullstr, "}", "-", "+", "?", "=",
-		"%", "%%", "#", "##", nullstr 
+		"%", "%%", "#", "##", nullstr
 	};
 
 	nextc = makestrspace((strlen(s) + 1) * 8, cmdnextc);
diff --git a/shell/hush.c b/shell/hush.c
index 84818ff..5da9757 100644
--- a/shell/hush.c
+++ b/shell/hush.c
@@ -12,7 +12,7 @@
  *      written Dec 2000 and Jan 2001 by Larry Doolittle.  The
  *      execution engine, the builtins, and much of the underlying
  *      support has been adapted from busybox-0.49pre's lash, which is
- *      Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org>
+ *      Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
  *      written by Erik Andersen <andersen@codepoet.org>.  That, in turn,
  *      is based in part on ladsh.c, by Michael K. Johnson and Erik W.
  *      Troan, which they placed in the public domain.  I don't know
@@ -197,7 +197,7 @@
 	redir_type type;			/* type of redirection */
 	int fd;						/* file descriptor being redirected */
 	int dup;					/* -1, or file descriptor being duplicated */
-	struct redir_struct *next;	/* pointer to the next redirect in the list */ 
+	struct redir_struct *next;	/* pointer to the next redirect in the list */
 	glob_t word;				/* *word.gl_pathv is the filename */
 };
 
@@ -248,7 +248,7 @@
 unsigned int global_argc;
 unsigned int last_return_code;
 extern char **environ; /* This is in <unistd.h>, but protected with __USE_GNU */
- 
+
 /* "globals" within this file */
 static char *ifs;
 static char map[256];
@@ -421,7 +421,7 @@
 	{"continue", "Continue for, while or until loop", builtin_not_written},
 	{"env", "Print all environment variables", builtin_env},
 	{"eval", "Construct and run shell command", builtin_eval},
-	{"exec", "Exec command, replacing this shell with the exec'd process", 
+	{"exec", "Exec command, replacing this shell with the exec'd process",
 		builtin_exec},
 	{"exit", "Exit from shell()", builtin_exit},
 	{"export", "Set environment variable", builtin_export},
@@ -456,10 +456,10 @@
 {
 	char *str = NULL;
 	int rcode = EXIT_SUCCESS;
-	
+
 	if (child->argv[1]) {
 		str = make_string(child->argv + 1);
-		parse_string_outer(str, FLAG_EXIT_FROM_LOOP | 
+		parse_string_outer(str, FLAG_EXIT_FROM_LOOP |
 					FLAG_PARSE_SEMICOLON);
 		free(str);
 		rcode = last_return_code;
@@ -873,7 +873,7 @@
 	PS1 = getenv("PS1");
 	if(PS1==0)
 		PS1 = "\\w \\$ ";
-#endif	
+#endif
 }
 
 static inline void setup_prompt_string(int promptmode, char **prompt_str)
@@ -919,7 +919,7 @@
 	i->p = the_command;
 }
 
-/* This is the magic location that prints prompts 
+/* This is the magic location that prints prompts
  * and gets data back from the user */
 static int file_get(struct in_str *i)
 {
@@ -1110,14 +1110,14 @@
 		}
 
 		/* Check if the command matches any busybox internal commands
-		 * ("applets") here.  
+		 * ("applets") here.
 		 * FIXME: This feature is not 100% safe, since
 		 * BusyBox is not fully reentrant, so we have no guarantee the things
 		 * from the .bss are still zeroed, or that things from .data are still
 		 * at their defaults.  We could exec ourself from /proc/self/exe, but I
 		 * really dislike relying on /proc for things.  We could exec ourself
 		 * from global_argv[0], but if we are in a chroot, we may not be able
-		 * to find ourself... */ 
+		 * to find ourself... */
 #ifdef CONFIG_FEATURE_SH_STANDALONE_SHELL
 		{
 			int argc_l;
@@ -1196,7 +1196,7 @@
 		}
 	}
 
-	/* we don't wait for background thejobs to return -- append it 
+	/* we don't wait for background thejobs to return -- append it
 	   to the list of backgrounded thejobs and leave it alone */
 	printf("[%d] %d\n", thejob->jobid, thejob->progs[0].pid);
 	last_bg_pid = thejob->progs[0].pid;
@@ -1226,7 +1226,7 @@
 	free(pi);
 }
 
-/* Checks to see if any processes have exited -- if they 
+/* Checks to see if any processes have exited -- if they
    have, figure out why and see if a job has completed */
 static int checkjobs(struct pipe* fg_pipe)
 {
@@ -1246,7 +1246,7 @@
 			int i, rcode = 0;
 			for (i=0; i < fg_pipe->num_progs; i++) {
 				if (fg_pipe->progs[i].pid == childpid) {
-					if (i==fg_pipe->num_progs-1) 
+					if (i==fg_pipe->num_progs-1)
 						rcode=WEXITSTATUS(status);
 					(fg_pipe->num_progs)--;
 					return(rcode);
@@ -1289,7 +1289,7 @@
 			if (pi->stopped_progs == pi->num_progs) {
 				printf("\n"JOB_STATUS_FORMAT, pi->jobid, "Stopped", pi->text);
 			}
-#endif	
+#endif
 		}
 	}
 
@@ -1378,7 +1378,7 @@
 				/* Ok, this case is tricky.  We have to decide if this is a
 				 * local variable, or an already exported variable.  If it is
 				 * already exported, we have to export the new value.  If it is
-				 * not exported, we need only set this as a local variable. 
+				 * not exported, we need only set this as a local variable.
 				 * This junk is all to decide whether or not to export this
 				 * variable. */
 				int export_me=0;
@@ -1408,7 +1408,7 @@
 		}
 		if (child->sp) {
 			char * str = NULL;
-			
+
 			str = make_string((child->argv + i));
 			parse_string_outer(str, FLAG_EXIT_FROM_LOOP | FLAG_REPARSING);
 			free(str);
@@ -1454,7 +1454,7 @@
 #if !defined(__UCLIBC__) || defined(__UCLIBC_HAS_MMU__)
 		if (!(child->pid = fork()))
 #else
-		if (!(child->pid = vfork())) 
+		if (!(child->pid = vfork()))
 #endif
 		{
 			/* Set the handling for job control signals back to the default.  */
@@ -1465,7 +1465,7 @@
 			signal(SIGTTIN, SIG_DFL);
 			signal(SIGTTOU, SIG_DFL);
 			signal(SIGCHLD, SIG_DFL);
-			
+
 			close_all();
 
 			if (nextin != 0) {
@@ -1497,7 +1497,7 @@
 
 			pseudo_exec(child);
 		}
-		
+
 
 		/* put our child in the process group whose leader is the
 		   first process in this pipe */
@@ -1513,7 +1513,7 @@
 		if (nextout != 1)
 			close(nextout);
 
-		/* If there isn't another process, nextin is garbage 
+		/* If there isn't another process, nextin is garbage
 		   but it doesn't matter */
 		nextin = pipefds[0];
 	}
@@ -1539,12 +1539,12 @@
 		    (rpipe->next == NULL)) {
 				syntax();
 				return 1;
-		}		
-		if ((rpipe->r_mode == RES_IN && 
-			(rpipe->next->r_mode == RES_IN && 
+		}
+		if ((rpipe->r_mode == RES_IN &&
+			(rpipe->next->r_mode == RES_IN &&
 			rpipe->next->progs->argv != NULL))||
 			(rpipe->r_mode == RES_FOR &&
-			rpipe->next->r_mode != RES_IN)) { 
+			rpipe->next->r_mode != RES_IN)) {
 				syntax();
 				return 1;
 		}
@@ -1572,7 +1572,7 @@
 		if (rmode == RES_ELIF && !if_code) continue;
 		if (rmode == RES_FOR && pi->num_progs) {
 			if (!list) {
-				/* if no variable values after "in" we skip "for" */		
+				/* if no variable values after "in" we skip "for" */
 				if (!pi->next->progs->argv) continue;
 				/* create list of variable values */
 				list = make_list_in(pi->next->progs->argv,
@@ -1581,7 +1581,7 @@
 				save_name = pi->progs->argv[0];
 				pi->progs->argv[0] = NULL;
 				flag_rep = 1;
-			}	
+			}
 			if (!(*list)) {
 				free(pi->progs->argv[0]);
 				free(save_list);
@@ -1591,26 +1591,26 @@
 				pi->progs->glob_result.gl_pathv[0] =
 					pi->progs->argv[0];
 				continue;
-			} else {			
+			} else {
 				/* insert new value from list for variable */
-				if (pi->progs->argv[0]) 
+				if (pi->progs->argv[0])
 					free(pi->progs->argv[0]);
 				pi->progs->argv[0] = *list++;
 				pi->progs->glob_result.gl_pathv[0] =
 					pi->progs->argv[0];
 			}
-		}		
+		}
 		if (rmode == RES_IN) continue;
 		if (rmode == RES_DO) {
 			if (!flag_rep) continue;
-		}	    
+		}	
 		if ((rmode == RES_DONE)) {
 			if (flag_rep) {
 				flag_restore = 1;
 			} else {
 				rpipe = NULL;
 			}
-		}		
+		}
 		if (pi->num_progs == 0) continue;
 		save_num_progs = pi->num_progs; /* save number of programs */
 		rcode = run_pipe_real(pi);
@@ -1642,9 +1642,9 @@
 		pi->num_progs = save_num_progs; /* restore number of programs */
 		if ( rmode == RES_IF || rmode == RES_ELIF )
 			next_if_code=rcode;  /* can be overwritten a number of times */
-		if (rmode == RES_WHILE) 
+		if (rmode == RES_WHILE)
 			flag_rep = !last_return_code;
-		if (rmode == RES_UNTIL) 
+		if (rmode == RES_UNTIL)
 			flag_rep = last_return_code;
 		if ( (rcode==EXIT_SUCCESS && pi->followup==PIPE_OR) ||
 		     (rcode!=EXIT_SUCCESS && pi->followup==PIPE_AND) )
@@ -1723,7 +1723,7 @@
 		pi->next=NULL;
 		free(pi);
 	}
-	return rcode;	
+	return rcode;
 }
 
 /* Select which version we will use */
@@ -1732,7 +1732,7 @@
 	int rcode=0;
 	if (fake_mode==0) {
 		rcode = run_list_real(pi);
-	} 
+	}
 	/* free_pipe_list has the side effect of clearing memory
 	 * In the long run that function can be merged with run_list_real,
 	 * but doing that now would hobble the debugging effort. */
@@ -1862,7 +1862,7 @@
 
 	/* Assume when we enter this function that we are already in
 	 * NAME=VALUE format.  So the first order of business is to
-	 * split 's' on the '=' into 'name' and 'value' */ 
+	 * split 's' on the '=' into 'name' and 'value' */
 	value = strchr(name, '=');
 	if (value==0 && ++value==0) {
 		free(name);
@@ -1991,7 +1991,7 @@
 
 	debug_printf("Redirect type %d%s\n", redir->fd, redir_table[style].descrip);
 
-	/* Check for a '2>&1' type redirect */ 
+	/* Check for a '2>&1' type redirect */
 	redir->dup = redirect_dup_num(input);
 	if (redir->dup == -2) return 1;  /* syntax error */
 	if (redir->dup != -1) {
@@ -2377,9 +2377,9 @@
 static char *lookup_param(char *src)
 {
 	char *p=NULL;
-	if (src) { 
+	if (src) {
 		p = getenv(src);
-		if (!p) 
+		if (!p)
 			p = get_local_var(src);
 	}
 	return p;
@@ -2499,7 +2499,7 @@
 			if (m==2) {  /* unquoted IFS */
 				if (done_word(dest, ctx)) {
 					return 1;
-				}	
+				}
 				/* If we aren't performing a substitution, treat a newline as a
 				 * command separator.  */
 				if (end_trigger != '\0' && ch=='\n')
@@ -2624,7 +2624,7 @@
 	}
 	/* complain if quote?  No, maybe we just finished a command substitution
 	 * that was quoted.  Example:
-	 * $ echo "`cat foo` plus more" 
+	 * $ echo "`cat foo` plus more"
 	 * and we just got the EOF generated by the subshell that ran "cat foo"
 	 * The only real complaint is if we got an EOF when end_trigger != '\0',
 	 * that is, we were really supposed to get end_trigger, and never got
@@ -2684,7 +2684,7 @@
 			if (ctx.old_flag != 0) {
 				free(ctx.stack);
 				b_reset(&temp);
-			}	
+			}
 			temp.nonnull = 0;
 			temp.quote = 0;
 			inp->p = NULL;
@@ -2748,9 +2748,9 @@
 	/* XXX what should these be while sourcing /etc/profile? */
 	global_argc = argc;
 	global_argv = argv;
-	
+
 	/* (re?) initialize globals.  Sometimes hush_main() ends up calling
-	 * hush_main(), therefore we cannot rely on the BSS to zero out this 
+	 * hush_main(), therefore we cannot rely on the BSS to zero out this
 	 * stuff.  Reset these to 0 every time. */
 	ifs = NULL;
 	/* map[] is taken care of with call to update_ifs_map() */
@@ -2770,7 +2770,7 @@
 #endif
 	PS2 = "> ";
 
-	/* initialize our shell local variables with the values 
+	/* initialize our shell local variables with the values
 	 * currently living in the environment */
 	if (e) {
 		for (; *e; e++)
@@ -2790,7 +2790,7 @@
 		}
 	}
 	input=stdin;
-	
+
 	while ((opt = getopt(argc, argv, "c:xif")) > 0) {
 		switch (opt) {
 			case 'c':
@@ -2832,13 +2832,13 @@
 	debug_printf("\ninteractive=%d\n", interactive);
 	if (interactive) {
 		/* Looks like they want an interactive shell */
-#ifndef CONFIG_FEATURE_SH_EXTRA_QUIET 
+#ifndef CONFIG_FEATURE_SH_EXTRA_QUIET
 		printf( "\n\n" BB_BANNER " hush - the humble shell v0.01 (testing)\n");
 		printf( "Enter 'help' for a list of built-in commands.\n\n");
 #endif
 		setup_job_control();
 	}
-	
+
 	if (argv[optind]==NULL) {
 		opt=parse_file_outer(stdin);
 		goto final_return;
@@ -2877,7 +2877,7 @@
 	int len;
 	int done = 0;
 	char *p, *p1, *res_str = NULL;
-	
+
 	while ((p = strchr(inp, SPECIAL_VAR_SYMBOL))) {
 		if (p != inp) {
 			len = p - inp;
@@ -2893,7 +2893,7 @@
 			res_str = xrealloc(res_str, (1 + len));
 			strcpy((res_str + res_str_len), p1);
 			res_str_len = len;
-		} 
+		}
 		*p = SPECIAL_VAR_SYMBOL;
 		inp = ++p;
 		done = 1;
@@ -2915,8 +2915,8 @@
 	int n = 0;
 	char **list;
 	char *p1, *p2, *p3;
-	
-	/* create list of variable values */	
+
+	/* create list of variable values */
 	list = xmalloc(sizeof(*list));
 	for (i = 0; inp[i]; i++) {
 		p3 = insert_var_value(inp[i]);
@@ -2928,13 +2928,13 @@
 			}
 			if ((p2 = strchr(p1, ' '))) {
 				len = p2 - p1;
-			} else {	
+			} else {
 				len = strlen(p1);
 				p2 = p1 + len;
 			}
-			/* we use n + 2 in realloc for list,because we add 
+			/* we use n + 2 in realloc for list,because we add
 			 * new element and then we will add NULL element */
-			list = xrealloc(list, sizeof(*list) * (n + 2));			
+			list = xrealloc(list, sizeof(*list) * (n + 2));
 			list[n] = xmalloc(2 + name_len + len);
 			strcpy(list[n], name);
 			strcat(list[n], "=");
@@ -2946,7 +2946,7 @@
 	}
 	list[n] = NULL;
 	return list;
-}	
+}
 
 /* Make new string for parser */
 static char * make_string(char ** inp)
diff --git a/shell/lash.c b/shell/lash.c
index e4b1b12..d2d4298 100644
--- a/shell/lash.c
+++ b/shell/lash.c
@@ -2,7 +2,7 @@
 /*
  * lash -- the BusyBox Lame-Ass SHell
  *
- * Copyright (C) 1999-2003 by Erik Andersen <andersen@codepoet.org>
+ * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
  *
  * Based in part on ladsh.c by Michael K. Johnson and Erik W. Troan, which is
  * under the following liberal license: "We have placed this source code in the
@@ -927,7 +927,7 @@
 
 		}
 		if (var) {
-			/* a single character construction was found, and 
+			/* a single character construction was found, and
 			 * already handled in the case statement */
 			src=dst+2;
 		} else {
@@ -1093,7 +1093,7 @@
 
 				prog->redirects[i].fd = -1;
 				if (buf != prog->argv[argc_l]) {
-					/* the stuff before this character may be the file number 
+					/* the stuff before this character may be the file number
 					   being redirected */
 					prog->redirects[i].fd =
 						strtol(prog->argv[argc_l], &chptr, 10);
diff --git a/shell/msh.c b/shell/msh.c
index 31dd04f..e705950 100644
--- a/shell/msh.c
+++ b/shell/msh.c
@@ -23,7 +23,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- * 
+ *
  * Original copyright notice is retained at the end of this file.
  */
 
@@ -770,7 +770,7 @@
 					if (--argc > 0)
 						PUSHIO(aword, *++argv, iof = nlchar);
 					break;
-	
+
 				case 'q':
 					qflag = SIG_DFL;
 					break;
@@ -784,7 +784,7 @@
 					setval(prompt, "");
 					iof = linechar;
 					break;
-	
+
 				case 'i':
 					interactive++;
 				default:
@@ -809,7 +809,7 @@
 		PUSHIO(afile, 0, iof);
 		if (isatty(0) && isatty(1) && !cflag) {
 			interactive++;
-#ifndef CONFIG_FEATURE_SH_EXTRA_QUIET 
+#ifndef CONFIG_FEATURE_SH_EXTRA_QUIET
 			printf( "\n\n" BB_BANNER " Built-in shell (msh)\n");
 			printf( "Enter 'help' for a list of built-in commands.\n\n");
 #endif
@@ -838,7 +838,7 @@
 				ap++;
 			}
 		}
-	}	
+	}
 	setval(lookup("#"), putn((--dolc < 0) ? (dolc = 0) : dolc));
 
 	for (;;) {
@@ -2303,7 +2303,7 @@
 #if __GNUC__
 	/* Avoid longjmp clobbering */
 	(void) &wp;
-#endif	
+#endif
 
 
 	if (t == NULL)
@@ -2318,7 +2318,7 @@
 	case TPAREN:
 		rv = execute(t->left, pin, pout, 0);
 		break;
-			
+
 	case TCOM:
 		{
 			int child;
@@ -2395,7 +2395,7 @@
 		} else {
 			i = -1;
 			while (*wp++ != NULL)
-				;			
+				;
 		}
 		vp = lookup(t->str);
 		while (setjmp(bc.brkpt))
@@ -2497,7 +2497,7 @@
 	(void) &cp;
 	(void) &resetsig;
 	(void) &owp;
-#endif	
+#endif
 
 	owp = wp;
 	resetsig = 0;
@@ -2532,7 +2532,7 @@
 		hintr = intr;
 		hbrklist = brklist;
 		hexecflg = execflg;
-	
+
 		i = vfork();
 		if (i != 0) {
                 	/* who wrote this crappy non vfork safe shit? */
@@ -2563,7 +2563,7 @@
 		(*pforked)++;
 		brklist = 0;
 		execflg = 0;
-	}	
+	}
 	if (owp != NULL)
 		while ((cp = *owp++) != NULL && assign(cp, COPYV))
 			if (shcom == NULL)
@@ -2841,7 +2841,7 @@
 #endif
 	optind = 1;
 	if (find_applet_by_name(name)) {
-		/* We have to exec here since we vforked.  Running 
+		/* We have to exec here since we vforked.  Running
 		 * run_applet_by_name() won't work and bad things
 		 * will happen. */
 		execve("/proc/self/exe", v, envp);
@@ -2964,8 +2964,8 @@
 		for (i=0, applet = applets; i < NUM_APPLETS; applet++, i++) {
 			if (!applet->name)
 				continue;
-		
-			col += printf("%s%s", ((col == 0) ? "\t" : " "), 
+
+			col += printf("%s%s", ((col == 0) ? "\t" : " "),
 					applet->name);
 			if (col > 60) {
 				printf("\n");
@@ -3194,7 +3194,7 @@
 				if (n == SIGINT)
 					setsig(n, onintr);
 				else
-					setsig(n, n == SIGQUIT ? SIG_IGN 
+					setsig(n, n == SIGQUIT ? SIG_IGN
 							       : SIG_DFL);
 			else
 				setsig(n, SIG_DFL);
@@ -3784,7 +3784,7 @@
 	/* Avoid longjmp clobbering */
 	(void) &cp;
 #endif
-	
+
 	for (cp = e.iop->argp->aword; *cp != '`'; cp++)
 		if (*cp == 0) {
 			err("no closing `");
@@ -3837,7 +3837,7 @@
 					err("unclosed ${\n");
 					return(0);
 				}
-				if (operator) {	
+				if (operator) {
 					src++;
 					while (*src && (*src != '}')) {
 						alt_value[alt_index++] = *src++;
@@ -3875,7 +3875,7 @@
 		}
 	}
 	*dest = '\0';
-	
+
 	if (openpipe(pf) < 0)
 		return(0);
 	while ((i = vfork()) == -1 && errno == EAGAIN)
@@ -3897,7 +3897,7 @@
 	for (j=0; j<=_NSIG; j++)
 		if (ourtrap[j] && signal(j, SIG_IGN) != SIG_IGN)
 			signal(j, SIG_DFL);
-	
+
 	dup2(pf[1], 1);
 	closepipe(pf);
 
@@ -4121,7 +4121,7 @@
 	wb->w_words[wb->w_nword++] = wd;
 	return(wb);
 }
-static 
+static
 char **
 getwords(wb)
 register struct wdblock *wb;
@@ -4557,7 +4557,7 @@
 	    c = mycommand[position];
 	    position++;
 	    return(c);
-	} else 
+	} else
 #endif
 	{
 		i = safe_read(ap->afile, &c, sizeof(c));
@@ -4858,7 +4858,7 @@
 		char c;
 		char tname[30] = ".msh_XXXXXX";
 		jmp_buf ev;
-	
+
 		tf = mkstemp(tname);
 		if (tf < 0)
 			return (-1);
@@ -4917,24 +4917,24 @@
 /*
  * Copyright (c) 1987,1997, Prentice Hall
  * All rights reserved.
- * 
+ *
  * Redistribution and use of the MINIX operating system in source and
  * binary forms, with or without modification, are permitted provided
  * that the following conditions are met:
- * 
+ *
  * Redistributions of source code must retain the above copyright
  * notice, this list of conditions and the following disclaimer.
- * 
+ *
  * Redistributions in binary form must reproduce the above
  * copyright notice, this list of conditions and the following
  * disclaimer in the documentation and/or other materials provided
  * with the distribution.
- * 
+ *
  * Neither the name of Prentice Hall nor the names of the software
  * authors or contributors may be used to endorse or promote
  * products derived from this software without specific prior
  * written permission.
- * 
+ *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS, AUTHORS, AND
  * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF