Changeset 3220 for trunk/src/kmk/kmkbuiltin
- Timestamp:
- Mar 31, 2018, 12:34:57 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/kmkbuiltin/chmod.c
r3192 r3220 42 42 /*__FBSDID("$FreeBSD: src/bin/chmod/chmod.c,v 1.33 2005/01/10 08:39:20 imp Exp $");*/ 43 43 44 /********************************************************************************************************************************* 45 * Header Files * 46 *********************************************************************************************************************************/ 47 #define FAKES_NO_GETOPT_H /* bird */ 44 48 #include "config.h" 45 49 #include <sys/types.h> … … 64 68 # include "haikufakes.h" 65 69 #endif 66 #include "getopt .h"70 #include "getopt_r.h" 67 71 #include "kmkbuiltin.h" 68 72 69 extern void * bsd_setmode(const char *p); 70 extern mode_t bsd_getmode(const void *bbox, mode_t omode); 71 extern void bsd_strmode(mode_t mode, char *p); 72 73 #if (defined(__APPLE__) && !defined(_DARWIN_FEATURE_UNIX_CONFORMANCE)) || defined(__OpenBSD__) 74 extern int lchmod(const char *, mode_t); 75 #endif 76 77 static int usage(PKMKBUILTINCTX pCtx, int is_err); 78 73 74 /********************************************************************************************************************************* 75 * Global Variables * 76 *********************************************************************************************************************************/ 79 77 static struct option long_options[] = 80 78 { … … 85 83 86 84 85 /********************************************************************************************************************************* 86 * Internal Functions * 87 *********************************************************************************************************************************/ 88 extern void * bsd_setmode(const char *p); 89 extern mode_t bsd_getmode(const void *bbox, mode_t omode); 90 extern void bsd_strmode(mode_t mode, char *p); 91 92 #if (defined(__APPLE__) && !defined(_DARWIN_FEATURE_UNIX_CONFORMANCE)) || defined(__OpenBSD__) 93 extern int lchmod(const char *, mode_t); 94 #endif 95 96 static int usage(PKMKBUILTINCTX pCtx, int is_err); 97 98 87 99 int 88 100 kmk_builtin_chmod(int argc, char *argv[], char **envp, PKMKBUILTINCTX pCtx) 89 101 { 102 struct getopt_state_r gos; 90 103 FTS *ftsp; 91 104 FTSENT *p; … … 97 110 int (*change_mode)(const char *, mode_t); 98 111 99 /* kmk: reset getopt and set progname */100 opterr = 1;101 optarg = NULL;102 optopt = 0;103 optind = 0; /* init */104 105 112 set = NULL; 106 113 Hflag = Lflag = Rflag = fflag = hflag = vflag = 0; 107 while ((ch = getopt_long(argc, argv, "HLPRXfghorstuvwx", long_options, NULL)) != -1) 114 115 getopt_initialize_r(&gos, argc, argv, "HLPRXfghorstuvwx", long_options, envp, pCtx); 116 while ((ch = getopt_long_r(&gos, NULL)) != -1) 108 117 switch (ch) { 109 118 case 'H': … … 143 152 case 'g': case 'o': case 'r': case 's': 144 153 case 't': case 'u': case 'w': case 'X': case 'x': 145 if (argv[ optind - 1][0] == '-' &&146 argv[ optind - 1][1] == ch &&147 argv[ optind - 1][2] == '\0')148 -- optind;154 if (argv[gos.optind - 1][0] == '-' && 155 argv[gos.optind - 1][1] == ch && 156 argv[gos.optind - 1][2] == '\0') 157 --gos.optind; 149 158 goto done; 150 159 case 'v': … … 160 169 return usage(pCtx, 1); 161 170 } 162 done: argv += optind;163 argc -= optind;171 done: argv += gos.optind; 172 argc -= gos.optind; 164 173 165 174 if (argc < 2) … … 179 188 } else 180 189 fts_options = hflag ? FTS_PHYSICAL : FTS_LOGICAL; 190 #ifndef KMK_BUILTIN_STANDALONE 191 fts_options |= FTS_NOCHDIR; /* Don't change the CWD while inside kmk. */ 192 #endif 181 193 182 194 if (hflag)
Note:
See TracChangeset
for help on using the changeset viewer.