#include #include #include "input.h" #include "output.h" #include "encode.h" #define OCTETBUF 4 #define SXTETBUF 5 unsigned char obuf[OCTETBUF]; unsigned char sbuf[SXTETBUF]; int main(int argc, char *argv[]) { int c, n, last; int dec, url, hlp, wrp; FILE *in, *out; char *prog; prog = *argv; dec = url = hlp = wrp = 0; while (--argc > 0 && (*++argv)[0] == '-') while ((c = *++argv[0])) switch (c) { case 'd': dec = 1; break; case 'u': url = 1; break; case 'h': hlp = 1; break; case 'w': wrp = 1; break; default: fprintf(stderr, "%s: illegal option %c\n", prog, c); exit(EXIT_FAILURE); break; } if (hlp) { fprintf(stdout, "Usage: %s -duhw infile outfile\n", prog); } else { in = out = NULL; if (argc >= 1 && (in = fopen(*argv, "r")) == NULL) { fprintf(stderr, "%s: can't open %s\n", prog, *argv); exit(EXIT_FAILURE); } if (argc == 2 && (out = fopen(*(argv+1), "w")) == NULL) { fprintf(stderr, "%s: can't open %s\n", prog, *(argv+1)); exit(EXIT_FAILURE); } if (dec) { while ((n = getsxts((in) ? in : stdin, sbuf))) { n = decode(sbuf, n, obuf, url); fwrite(obuf, sizeof(*obuf), n, (out) ? out : stdout); } } else if (wrp) { last = 0; while ((n = getocts((in) ? in : stdin, obuf))) { n = encode(obuf, n, sbuf, url); last = printw((out) ? out : stdout, sbuf, n); } if (last != '\n') fprintf((out) ? out : stdout, "\n"); } else { while ((n = getocts((in) ? in : stdin, obuf))) { encode(obuf, n, sbuf, url); fprintf((out) ? out : stdout, "%s", sbuf); } } if (in) fclose(in); if (out) fclose(out); } exit(EXIT_SUCCESS); }