From 9634760d5eae4e8618e4b9ed9752d7305b3695a9 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Tue, 27 Aug 2002 21:10:30 +0000 Subject: 17582: Improved option argument handling. unposted: Updated version to 4.1.0-dev-6 because of interface change. --- Src/Modules/files.c | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) (limited to 'Src/Modules/files.c') diff --git a/Src/Modules/files.c b/Src/Modules/files.c index 6d962efd1..51f362631 100644 --- a/Src/Modules/files.c +++ b/Src/Modules/files.c @@ -56,7 +56,7 @@ ask(void) /**/ static int -bin_sync(char *nam, char **args, char *ops, int func) +bin_sync(char *nam, char **args, Options ops, int func) { sync(); return 0; @@ -66,14 +66,14 @@ bin_sync(char *nam, char **args, char *ops, int func) /**/ static int -bin_mkdir(char *nam, char **args, char *ops, int func) +bin_mkdir(char *nam, char **args, Options ops, int func) { mode_t oumask = umask(0); mode_t mode = 0777 & ~oumask; int err = 0; umask(oumask); - if(ops['m']) { + if(OPT_ISSET(ops,'m')) { char *str = *args++, *ptr; if(!*args) { @@ -91,7 +91,7 @@ bin_mkdir(char *nam, char **args, char *ops, int func) while(ptr > *args + (**args == '/') && *--ptr == '/') *ptr = 0; - if(ops['p']) { + if(OPT_ISSET(ops,'p')) { char *ptr = *args; for(;;) { @@ -147,7 +147,7 @@ domkdir(char *nam, char *path, mode_t mode, int p) /**/ static int -bin_rmdir(char *nam, char **args, char *ops, int func) +bin_rmdir(char *nam, char **args, Options ops, int func) { int err = 0; @@ -183,7 +183,7 @@ bin_rmdir(char *nam, char **args, char *ops, int func) /**/ static int -bin_ln(char *nam, char **args, char *ops, int func) +bin_ln(char *nam, char **args, Options ops, int func) { MoveFunc move; int flags, err = 0; @@ -194,22 +194,22 @@ bin_ln(char *nam, char **args, char *ops, int func) if(func == BIN_MV) { move = (MoveFunc) rename; - flags = ops['f'] ? 0 : MV_ASKNW; + flags = OPT_ISSET(ops,'f') ? 0 : MV_ASKNW; flags |= MV_ATOMIC; } else { - flags = ops['f'] ? MV_FORCE : 0; + flags = OPT_ISSET(ops,'f') ? MV_FORCE : 0; #ifdef HAVE_LSTAT - if(ops['s']) + if(OPT_ISSET(ops,'s')) move = (MoveFunc) symlink; else #endif { move = (MoveFunc) link; - if(!ops['d']) + if(!OPT_ISSET(ops,'d')) flags |= MV_NODIRS; } } - if(ops['i'] && !ops['f']) + if(OPT_ISSET(ops,'i') && !OPT_ISSET(ops,'f')) flags |= MV_INTER; for(a = args; a[1]; a++) ; if(a != args) { @@ -567,18 +567,20 @@ rm_dirpost(char *arg, char *rp, struct stat const *sp, void *magic) /**/ static int -bin_rm(char *nam, char **args, char *ops, int func) +bin_rm(char *nam, char **args, Options ops, int func) { struct rmmagic rmm; int err; rmm.nam = nam; - rmm.opt_force = ops['f']; - rmm.opt_interact = ops['i'] && !ops['f']; - rmm.opt_unlinkdir = ops['d']; - err = recursivecmd(nam, ops['f'], ops['r'] && !ops['d'], ops['s'], + rmm.opt_force = OPT_ISSET(ops,'f'); + rmm.opt_interact = OPT_ISSET(ops,'i') && !OPT_ISSET(ops,'f'); + rmm.opt_unlinkdir = OPT_ISSET(ops,'d'); + err = recursivecmd(nam, OPT_ISSET(ops,'f'), + OPT_ISSET(ops,'r') && !OPT_ISSET(ops,'d'), + OPT_ISSET(ops,'s'), args, recurse_donothing, rm_dirpost, rm_leaf, &rmm); - return ops['f'] ? 0 : err; + return OPT_ISSET(ops,'f') ? 0 : err; } /* chown builtin */ @@ -620,7 +622,7 @@ enum { BIN_CHOWN, BIN_CHGRP }; /**/ static int -bin_chown(char *nam, char **args, char *ops, int func) +bin_chown(char *nam, char **args, Options ops, int func) { struct chownmagic chm; char *uspec = ztrdup(*args), *p = uspec; @@ -685,7 +687,7 @@ bin_chown(char *nam, char **args, char *ops, int func) chm.gid = -1; } free(uspec); - return recursivecmd(nam, 0, ops['R'], ops['s'], + return recursivecmd(nam, 0, OPT_ISSET(ops,'R'), OPT_ISSET(ops,'s'), args + 1, chown_dochown, recurse_donothing, chown_dochown, &chm); } -- cgit 1.4.1