/*
- * GPLv2
* Copyright 2003, Glenn McGrath <bug1@iinet.net.au>
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as published
- * by the Free Software Foundation; either version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * 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.
+ * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
*
* Based on specification from
* http://www.opengroup.org/onlinepubs/007904975/utilities/uuencode.html
*
- * Bugs: the spec doesnt mention anything about "`\n`\n" prior to the "end" line
+ * Bugs: the spec doesn't mention anything about "`\n`\n" prior to the
+ * "end" line
*/
line_ptr++;
/* Tolerate an overly long line to acomadate a possible exta '`' */
- if (strlen(line_ptr) < length) {
+ if (strlen(line_ptr) < (size_t)length) {
bb_error_msg_and_die("Short file");
}
- while (length > 0) {
+ while (length > 0) {
/* Merge four 6 bit chars to three 8 bit chars */
- fputc(((line_ptr[0] - 0x20) & 077) << 2 | ((line_ptr[1] - 0x20) & 077) >> 4, dst_stream);
+ fputc(((line_ptr[0] - 0x20) & 077) << 2 | ((line_ptr[1] - 0x20) & 077) >> 4, dst_stream);
line_ptr++;
length--;
if (length == 0) {
break;
}
- fputc(((line_ptr[0] - 0x20) & 077) << 4 | ((line_ptr[1] - 0x20) & 077) >> 2, dst_stream);
+ fputc(((line_ptr[0] - 0x20) & 077) << 4 | ((line_ptr[1] - 0x20) & 077) >> 2, dst_stream);
line_ptr++;
length--;
if (length == 0) {
break;
}
- fputc(((line_ptr[0] - 0x20) & 077) << 6 | ((line_ptr[1] - 0x20) & 077), dst_stream);
+ fputc(((line_ptr[0] - 0x20) & 077) << 6 | ((line_ptr[1] - 0x20) & 077), dst_stream);
line_ptr += 2;
length -= 2;
}
static int read_base64(FILE *src_stream, FILE *dst_stream)
{
- const char *base64_table =
+ static const char base64_table[] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n";
char term_count = 0;
while (count < 4) {
char *table_ptr;
- char ch;
+ int ch;
/* Get next _valid_ character */
do {
/* Merge 6 bit chars to 8 bit */
fputc(translated[0] << 2 | translated[1] >> 4, dst_stream);
if (count > 2) {
- fputc(translated[1] << 4 | translated[2] >> 2, dst_stream);
+ fputc(translated[1] << 4 | translated[2] >> 2, dst_stream);
}
if (count > 3) {
- fputc(translated[2] << 6 | translated[3], dst_stream);
+ fputc(translated[2] << 6 | translated[3], dst_stream);
}
}
}
-extern int uudecode_main(int argc, char **argv)
+int uudecode_main(int argc, char **argv)
{
int (*decode_fn_ptr) (FILE * src, FILE * dst);
FILE *src_stream;