ref: 9bfaf452c97c5bcbedd275e9f5a111639e54c3a1
dir: /unix/test.c/
#include <assert.h>
#include <err.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "otf.h"
#include "otfsys.h"
static char *argv0;
#define ARGBEGIN for((argv0? 0: (argv0=*argv)),argv++,argc--;\
argv[0] && argv[0][0]=='-' && argv[0][1];\
argc--, argv++) {\
char *_args, *_argt;\
int _argc;\
_args = &argv[0][1];\
if(_args[0]=='-' && _args[1]==0){\
argc--; argv++; break;\
}\
_argc = 0;\
while((_argc = *_args++) != 0)\
switch(_argc)
#define ARGEND (void)_argt; (void)_argc; (void)_args;}(void)argv; (void)argc;
#define ARGF() (_argt=_args, _args="",\
(*_argt? _argt: argv[1]? (argc--, *++argv): 0))
#define ARGC() _argc
#define EARGF(x) (_argt=_args, _args="",\
(*_argt? _argt: argv[1]? (argc--, *++argv): (x, (char*)0)))
#include "test.h"
static int
otfseek(void *aux, int off, int whence)
{
if(fseek(aux, off, whence) < 0)
return -1;
return ftell(aux);
}
static int
otfread(void *aux, void *dst, int sz)
{
return fread(dst, 1, sz, aux);
}
static int
otfwrite(void *aux, const void *src, int sz)
{
return fwrite(src, 1, sz, aux);
}
static void
usage(Otfile *out)
{
printusage(out);
exit(1);
}
int
main(int argc, char **argv)
{
Otfile in, out;
out.print = (void*)fprintf;
out.write = otfwrite;
out.aux = fdopen(1, "wb");
in.seek = otfseek;
in.read = otfread;
parseoptions();
if((in.aux = fopen(*argv, "rb")) == NULL)
err(1, nil);
if(process(&in, &out) != 0)
errx(1, "%s", otferrstr());
fclose(out.aux);
return 0;
}