Annotation of src/usr.bin/ssh/uuencode.c, Revision 1.5
1.1 markus 1: /*
1.4 markus 2: * Copyright (c) 2000 Markus Friedl. All rights reserved.
1.1 markus 3: */
4: #include "includes.h"
5: #include "xmalloc.h"
6:
1.4 markus 7: #include <resolv.h>
1.1 markus 8:
9: int
1.4 markus 10: uuencode(unsigned char *src, unsigned int srclength,
11: char *target, size_t targsize)
1.1 markus 12: {
1.5 ! markus 13: return __b64_ntop(src, srclength, target, targsize);
1.1 markus 14: }
15:
16: int
1.4 markus 17: uudecode(const char *src, unsigned char *target, size_t targsize)
1.1 markus 18: {
1.5 ! markus 19: int len;
! 20: char *encoded, *p;
! 21:
! 22: /* copy the 'readonly' source */
! 23: encoded = xstrdup(src);
! 24: /* skip whitespace and data */
! 25: for (p = encoded; *p == ' ' || *p == '\t'; p++)
! 26: ;
! 27: for (; *p != '\0' && *p != ' ' && *p != '\t'; p++)
! 28: ;
! 29: /* and remote trailing whitespace because __b64_pton needs this */
! 30: *p = '\0';
! 31: len = __b64_pton(encoded, target, targsize);
! 32: xfree(encoded);
! 33: return len;
1.1 markus 34: }
35:
36: void
37: dump_base64(FILE *fp, unsigned char *data, int len)
38: {
39: unsigned char *buf = xmalloc(2*len);
40: int i, n;
1.4 markus 41: n = uuencode(data, len, buf, 2*len);
1.1 markus 42: for (i = 0; i < n; i++) {
43: fprintf(fp, "%c", buf[i]);
44: if (i % 70 == 69)
45: fprintf(fp, "\n");
46: }
47: if (i % 70 != 69)
48: fprintf(fp, "\n");
49: xfree(buf);
50: }