Fix ARGBEGIN bug. Refactor wmiir.c. Create lib and include directories before installing.

This commit is contained in:
Kris Maglione 2007-03-27 17:39:00 -04:00
parent 666c5cfa05
commit e012b7c5f7
3 changed files with 28 additions and 22 deletions

View File

@ -27,13 +27,12 @@ write_data(IxpCFid *fid, char *name) {
uint len;
buf = ixp_emalloc(fid->iounit);;
while((len = read(0, buf, fid->iounit)) > 0)
if(ixp_write(fid, buf, len) != len)
fatal("cannot write file '%s': %s\n", name, errstr);
/* do an explicit empty write when no writing has been done yet */
if(fid->offset == 0)
if(ixp_write(fid, buf, 0) != 0)
do {
len = read(0, buf, fid->iounit);
if(len >= 0 && ixp_write(fid, buf, len) != len)
fatal("cannot write file '%s': %s\n", name, errstr);
} while(len > 0);
free(buf);
}
@ -277,10 +276,25 @@ xls(int argc, char *argv[]) {
return 0;
}
typedef struct exectab exectab;
struct exectab {
char *cmd;
int (*fn)(int, char**);
} etab[] = {
{"write", xwrite},
{"xwrite", xawrite},
{"read", xread},
{"create", xcreate},
{"remove", xremove},
{"ls", xls},
{0, 0}
};
int
main(int argc, char *argv[]) {
int ret;
char *cmd, *address;
exectab *tab;
int ret;
address = getenv("WMII_ADDRESS");
@ -304,21 +318,13 @@ main(int argc, char *argv[]) {
if(client == nil)
fatal("%s\n", errstr);
if(!strcmp(cmd, "create"))
ret = xcreate(argc, argv);
else if(!strcmp(cmd, "ls"))
ret = xls(argc, argv);
else if(!strcmp(cmd, "read"))
ret = xread(argc, argv);
else if(!strcmp(cmd, "remove"))
ret = xremove(argc, argv);
else if(!strcmp(cmd, "write"))
ret = xwrite(argc, argv);
else if(!strcmp(cmd, "xwrite"))
ret = xawrite(argc, argv);
else
for(tab = etab; tab->cmd; tab++)
if(strcmp(cmd, tab->cmd) == 0) break;
if(tab->cmd == 0)
usage();
ret = tab->fn(argc, argv);
ixp_unmount(client);
return ret;
}

View File

@ -42,7 +42,7 @@ char *argv0;
#define ARGBEGIN int _argi, _argtmp, _inargv=0; char *_argv; \
if(!argv0)argv0=ARGF(); _inargv=1; \
while(argc && argv[0][0] == '-') { \
_argi=1; _argv=*argv++; argc++; \
_argi=1; _argv=*argv++; argc--; \
while(_argv[_argi]) switch(_argv[_argi++])
#define ARGEND }_inargv=0;USED(_argtmp);USED(_argv);USED(_argi)
#define ARGF() ((_inargv && _argv[_argi]) ? \

View File

@ -5,7 +5,7 @@ depend: cleandep
MANDIRS=${MAN}/man1
mkdirs:
for i in ${BIN} ${ETC} ${MANDIRS} ${DIRS}; do \
for i in ${BIN} ${ETC} ${LIBDIR} ${MANDIRS} ${INCLUDE} ${DIRS}; do \
test -d $$i || echo MKDIR $$i; \
mkdir -pm 0755 $$i; \
done