Some adjustments, mostly from David McCullough <davidm@lineo.com> to
make busybox be more uClinux friendly.  I also adjusted Config.h for
uClinux so it will automagically disable apps the arn't going to
work without fork() and such.
 -Erik
diff --git a/uudecode.c b/uudecode.c
index 6a3f78a..6ac9f1b 100644
--- a/uudecode.c
+++ b/uudecode.c
@@ -207,6 +207,8 @@
   char buf[2 * BUFSIZ];
   char *outname;
   int do_base64 = 0;
+  int res;
+  int dofre;
 
   /* Search for header line.  */
 
@@ -226,6 +228,7 @@
   }
 
   /* If the output file name is given on the command line this rules.  */
+  dofre = FALSE;
   if (forced_outname != NULL)
     outname = (char *) forced_outname;
   else {
@@ -248,10 +251,11 @@
       }
       n = strlen (pw->pw_dir);
       n1 = strlen (p);
-      outname = (char *) alloca ((size_t) (n + n1 + 2));
+      outname = (char *) xmalloc ((size_t) (n + n1 + 2));
       memcpy (outname + n + 1, p, (size_t) (n1 + 1));
       memcpy (outname, pw->pw_dir, (size_t) n);
       outname[n] = '/';
+      dofre = TRUE;
     }
   }
 
@@ -261,6 +265,8 @@
 	  || chmod (outname, mode & (S_IRWXU | S_IRWXG | S_IRWXO))
          )) {
     perror_msg("%s", outname); /* */
+    if (dofre)
+	free(outname);
     return FALSE;
   }
 
@@ -269,9 +275,12 @@
 
   /* For each input line:  */
   if (do_base64)
-    return read_base64 (inname);
+      res = read_base64 (inname);
   else
-    return read_stduu (inname);
+       res = read_stduu (inname);
+  if (dofre)
+      free(outname);
+  return res;
 }
 
 int uudecode_main (int argc,