Changeset View
Changeset View
Standalone View
Standalone View
usr.bin/bintrans/bintrans.c
Show All 32 Lines | |||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <string.h> | #include <string.h> | ||||
#include <sysexits.h> | #include <sysexits.h> | ||||
extern int main_decode(int, char *[]); | extern int main_decode(int, char *[]); | ||||
extern int main_encode(int, char *[]); | extern int main_encode(int, char *[]); | ||||
extern int main_base64_decode(const char *); | extern int main_base64_decode(const char *); | ||||
extern int main_base64_encode(const char *, const char *); | extern int main_base64_encode(const char *, const char *); | ||||
extern int main_quotedprintable(int, char*[]); | |||||
static int search(const char *const); | static int search(const char *const); | ||||
static void usage_base64(bool); | static void usage_base64(bool); | ||||
static void version_base64(void); | static void version_base64(void); | ||||
static void base64_encode_or_decode(int, char *[]); | static void base64_encode_or_decode(int, char *[]); | ||||
enum coders { | enum coders { | ||||
uuencode, uudecode, b64encode, b64decode, base64 | uuencode, uudecode, b64encode, b64decode, base64, qp | ||||
}; | }; | ||||
int | int | ||||
main(int argc, char *argv[]) | main(int argc, char *argv[]) | ||||
{ | { | ||||
const char *const progname = getprogname(); | const char *const progname = getprogname(); | ||||
int coder = search(progname); | int coder = search(progname); | ||||
Show All 9 Lines | case b64encode: | ||||
break; | break; | ||||
case uudecode: | case uudecode: | ||||
case b64decode: | case b64decode: | ||||
main_decode(argc, argv); | main_decode(argc, argv); | ||||
break; | break; | ||||
case base64: | case base64: | ||||
base64_encode_or_decode(argc, argv); | base64_encode_or_decode(argc, argv); | ||||
break; | break; | ||||
case qp: | |||||
main_quotedprintable(argc, argv); | |||||
break; | |||||
default: | default: | ||||
(void)fprintf(stderr, | (void)fprintf(stderr, | ||||
"usage: %1$s <uuencode | uudecode> ...\n" | "usage: %1$s <uuencode | uudecode> ...\n" | ||||
" %1$s <b64encode | b64decode> ...\n" | " %1$s <b64encode | b64decode> ...\n" | ||||
" %1$s <base64> ...\n", | " %1$s <base64> ...\n" | ||||
" %1$s <qp> ...\n", | |||||
progname); | progname); | ||||
exit(EX_USAGE); | exit(EX_USAGE); | ||||
} | } | ||||
} | } | ||||
static int | static int | ||||
search(const char *const progname) | search(const char *const progname) | ||||
{ | { | ||||
#define DESIGNATE(item) [item] = #item | #define DESIGNATE(item) [item] = #item | ||||
const char *const known[] = { | const char *const known[] = { | ||||
DESIGNATE(uuencode), | DESIGNATE(uuencode), | ||||
DESIGNATE(uudecode), | DESIGNATE(uudecode), | ||||
DESIGNATE(b64encode), | DESIGNATE(b64encode), | ||||
DESIGNATE(b64decode), | DESIGNATE(b64decode), | ||||
DESIGNATE(base64) | DESIGNATE(base64), | ||||
DESIGNATE(qp) | |||||
}; | }; | ||||
for (size_t i = 0; i < nitems(known); i++) | for (size_t i = 0; i < nitems(known); i++) | ||||
if (strcmp(progname, known[i]) == 0) | if (strcmp(progname, known[i]) == 0) | ||||
return ((int)i); | return ((int)i); | ||||
return (-1); | return (-1); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 54 Lines • Show Last 20 Lines |