X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=utils%2Fuuencode%2Fuuencode.c;fp=utils%2Fuuencode%2Fuuencode.c;h=0000000000000000000000000000000000000000;hb=4476699b7c7de3abf9f6da71ed409b2c032dc50f;hp=9f5df43d2ba66da9596c60c3daf89ba450f4ee84;hpb=2e838897cc574a9147bcf0b1681aeeaa44001fce;p=pdutils diff --git a/utils/uuencode/uuencode.c b/utils/uuencode/uuencode.c deleted file mode 100644 index 9f5df43..0000000 --- a/utils/uuencode/uuencode.c +++ /dev/null @@ -1,116 +0,0 @@ -#include -#include -#include - -char base64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -char oldbase[65]; - -void do_historical(FILE *in, FILE *out, char *decode) { - unsigned char input[45]; - unsigned char output[62]; - size_t bytes; - - fprintf(out, "begin %s %s\n", "644", decode); - do { - unsigned int bits; - int i; - input[0] = 0; input[1] = 0; input[2] = 0; - bytes = fread(input, 1, 45, in); - - for (i = bytes; i < 45; i++) { - input[i] = 0; - } - output[0] = oldbase[bytes]; - output[1] = 0; - - for (i=0;i> 6) & 0x3f)]; - output[i/3*4+2] = oldbase[((bits >> 12) & 0x3f)]; - output[i/3*4+1] = oldbase[((bits >> 18) & 0x3f)]; - output[i/3*4+5] = 0; - } - fprintf(out, "%s\n", output); - } while (bytes); - fprintf(out, "end\n"); -} - -int main(int ac, char *av[]) { - int mime = 0; - char *file = 0; - char *decode = 0; - FILE *output = stdout; - unsigned char input[3]; - int groups = 0; - size_t bytes; - int i; - - for (i = 0; i<64; i++) { - oldbase[i] = i + 0x20; - } - oldbase[0] = '`'; - - decode = av[ac-1]; - if (!strcmp(av[1], "-m")) { - mime = 1; - if (ac == 4) { - file = av[ac-2]; - } - } else if (ac == 3) { - file = av[ac-2]; - } - - if (file) { - if (freopen(file, "r", stdin) == 0) { - perror("can't open file:"); - exit(EXIT_FAILURE); - } - } - - if (!mime) { - do_historical(stdin, output, decode); - exit(EXIT_SUCCESS); - } - - fprintf(output, "begin-base64 %s %s\n", "644", decode); - - do { - unsigned char out[4]; - unsigned int bits; - int i; - input[0] = 0; input[1] = 0; input[2] = 0; - bytes = fread(input, 1, 3, stdin); - if (!bytes) { - continue; - } - bits = (input[0] << 16) | (input[1] << 8) | (input[2]); - - out[3] = bits & 0x3f; - out[2] = (bits >> 6) & 0x3f; - out[1] = (bits >> 12) & 0x3f; - out[0] = (bits >> 18) & 0x3f; - - for (i=0;i < bytes+1; i++) { - fputc(base64[out[i]], stdout); - } - - switch (bytes) { - case 1: - fputc('=', stdout); - case 2: - fputc('=', stdout); - } - if (++groups % 15 == 0) { - fputc('\n', stdout); - } - } while (bytes); - - if (groups % 15 != 0) { - fputc('\n', stdout); - } - fprintf(stdout, "====\n"); - - return 0; -}