X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=uudecode.c;h=c0e8cea8cb5ed571baaac30c1bbbf68c9ea3d1a7;hb=67991cf824f8df27e74c92d754fb507681c69ce6;hp=752497cb093641fdaff9decf7dce3779cac5ebb4;hpb=b610615be9aedfac07d1e01f12575707fa3a227c;p=oweals%2Fbusybox.git diff --git a/uudecode.c b/uudecode.c index 752497cb0..c0e8cea8c 100644 --- a/uudecode.c +++ b/uudecode.c @@ -15,47 +15,22 @@ * along with this product; see the file COPYING. If not, write to * the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. - */ - -/* Copyright (c) 1983 Regents of the University of California. - * All rights reserved. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. 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. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. + * Reworked to GNU style by Ian Lance Taylor, ian@airs.com, August 93. * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. + * Original copyright notice is retained at the end of this file. */ -/* Reworked to GNU style by Ian Lance Taylor, ian@airs.com, August 93. */ -#include "internal.h" +#include "busybox.h" #include #include -#include +#include +#include +#include +#include "pwd_grp/pwd.h" +#include "pwd_grp/grp.h" /*struct passwd *getpwnam();*/ @@ -71,7 +46,7 @@ static int read_stduu (const char *inname) char *p; if (fgets (buf, sizeof(buf), stdin) == NULL) { - errorMsg("%s: Short file\n", inname); + error_msg("%s: Short file", inname); return FALSE; } p = buf; @@ -106,7 +81,7 @@ static int read_stduu (const char *inname) if (fgets (buf, sizeof(buf), stdin) == NULL || strcmp (buf, "end\n")) { - errorMsg("%s: No `end' line\n", inname); + error_msg("%s: No `end' line", inname); return FALSE; } @@ -156,7 +131,7 @@ static int read_base64 (const char *inname) unsigned char *p; if (fgets (buf, sizeof(buf), stdin) == NULL) { - errorMsg("%s: Short file\n", inname); + error_msg("%s: Short file", inname); return FALSE; } p = buf; @@ -164,7 +139,7 @@ static int read_base64 (const char *inname) if (memcmp (buf, "====", 4) == 0) break; if (last_data != 0) { - errorMsg("%s: data following `=' padding character\n", inname); + error_msg("%s: data following `=' padding character", inname); return FALSE; } @@ -186,14 +161,14 @@ static int read_base64 (const char *inname) while ((b64_tab[*p] & '\100') != 0) if (*p == '\n' || *p++ == '=') { - errorMsg("%s: illegal line\n", inname); + error_msg("%s: illegal line", inname); return FALSE; } c2 = b64_tab[*p++]; while (b64_tab[*p] == '\177') if (*p++ == '\n') { - errorMsg("%s: illegal line\n", inname); + error_msg("%s: illegal line", inname); return FALSE; } if (*p == '=') { @@ -205,7 +180,7 @@ static int read_base64 (const char *inname) while (b64_tab[*p] == '\177') if (*p++ == '\n') { - errorMsg("%s: illegal line\n", inname); + error_msg("%s: illegal line", inname); return FALSE; } putchar (c1 << 2 | c2 >> 4); @@ -237,7 +212,7 @@ static int decode (const char *inname, while (1) { if (fgets (buf, sizeof (buf), stdin) == NULL) { - errorMsg("%s: No `begin' line\n", inname); + error_msg("%s: No `begin' line", inname); return FALSE; } @@ -262,13 +237,13 @@ static int decode (const char *inname, while (*p != '/') ++p; if (*p == '\0') { - errorMsg("%s: Illegal ~user\n", inname); + error_msg("%s: Illegal ~user", inname); return FALSE; } *p++ = '\0'; pw = getpwnam (buf + 1); if (pw == NULL) { - errorMsg("%s: No user `%s'\n", inname, buf + 1); + error_msg("%s: No user `%s'", inname, buf + 1); return FALSE; } n = strlen (pw->pw_dir); @@ -285,7 +260,7 @@ static int decode (const char *inname, && (freopen (outname, "w", stdout) == NULL || chmod (outname, mode & (S_IRWXU | S_IRWXG | S_IRWXO)) )) { - errorMsg("uudeoce %s: %s %s\n", outname, inname, strerror(errno)); /* */ + perror_msg("%s", outname); /* */ return FALSE; } @@ -299,15 +274,6 @@ static int decode (const char *inname, return read_stduu (inname); } -static const char uudecode_usage[] = - "uudecode [FILE]...\n" -#ifndef BB_FEATURE_TRIVIAL_HELP - "\nUudecode a file that is uuencoded.\n\n" - "Options:\n" - "\t-o FILE\tdirect output to FILE\n" -#endif -; - int uudecode_main (int argc, char **argv) { @@ -326,21 +292,21 @@ int uudecode_main (int argc, break; default: - usage(uudecode_usage); + show_usage(); } } if (optind == argc) - exit_status = decode ("stdin", outname) == 0 ? TRUE : FALSE; + exit_status = decode ("stdin", outname) == 0 ? EXIT_SUCCESS : EXIT_FAILURE; else { - exit_status = TRUE; + exit_status = EXIT_SUCCESS; do { if (freopen (argv[optind], "r", stdin) != NULL) { if (decode (argv[optind], outname) != 0) exit_status = FALSE; } else { - errorMsg("uudecode: %s: %s\n", argv[optind], strerror(errno)); - exit_status = FALSE; + perror_msg("%s", argv[optind]); + exit_status = EXIT_FAILURE; } optind++; } @@ -348,3 +314,37 @@ int uudecode_main (int argc, } return(exit_status); } + +/* Copyright (c) 1983 Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. 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. + * + * 3. + * + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +