Changeset 3192 in kBuild for trunk/src/kmk/kmkbuiltin/chmod.c
- Timestamp:
- Mar 26, 2018 8:25:56 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/kmkbuiltin/chmod.c
r3148 r3192 75 75 #endif 76 76 77 static int usage( FILE *);77 static int usage(PKMKBUILTINCTX pCtx, int is_err); 78 78 79 79 static struct option long_options[] = … … 86 86 87 87 int 88 kmk_builtin_chmod(int argc, char *argv[], char **envp )88 kmk_builtin_chmod(int argc, char *argv[], char **envp, PKMKBUILTINCTX pCtx) 89 89 { 90 90 FTS *ftsp; … … 98 98 99 99 /* kmk: reset getopt and set progname */ 100 g_progname = argv[0];101 100 opterr = 1; 102 101 optarg = NULL; … … 153 152 break; 154 153 case 261: 155 usage( stdout);154 usage(pCtx, 0); 156 155 return 0; 157 156 case 262: … … 159 158 case '?': 160 159 default: 161 return usage( stderr);160 return usage(pCtx, 1); 162 161 } 163 162 done: argv += optind; … … 165 164 166 165 if (argc < 2) 167 return usage( stderr);166 return usage(pCtx, 1); 168 167 169 168 if (Rflag) { 170 169 fts_options = FTS_PHYSICAL; 171 170 if (hflag) 172 return errx( 1,171 return errx(pCtx, 1, 173 172 "the -R and -h options may not be specified together."); 174 173 if (Hflag) … … 188 187 mode = *argv; 189 188 if ((set = bsd_setmode(mode)) == NULL) 190 return errx( 1, "invalid file mode: %s", mode);189 return errx(pCtx, 1, "invalid file mode: %s", mode); 191 190 192 191 if ((ftsp = fts_open(++argv, fts_options, 0)) == NULL) 193 return err( 1, "fts_open");192 return err(pCtx, 1, "fts_open"); 194 193 for (rval = 0; (p = fts_read(ftsp)) != NULL;) { 195 194 switch (p->fts_info) { … … 199 198 continue; 200 199 case FTS_DNR: /* Warn, chmod, continue. */ 201 warnx( "fts: %s: %s", p->fts_path, strerror(p->fts_errno));200 warnx(pCtx, "fts: %s: %s", p->fts_path, strerror(p->fts_errno)); 202 201 rval = 1; 203 202 break; 204 203 case FTS_ERR: /* Warn, continue. */ 205 204 case FTS_NS: 206 warnx( "fts: %s: %s", p->fts_path, strerror(p->fts_errno));205 warnx(pCtx, "fts: %s: %s", p->fts_path, strerror(p->fts_errno)); 207 206 rval = 1; 208 207 continue; … … 225 224 continue; 226 225 if ((*change_mode)(p->fts_accpath, newmode) && !fflag) { 227 warn( "%schmod: %s", hflag ? "l" : "", p->fts_path);226 warn(pCtx, "%schmod: %s", hflag ? "l" : "", p->fts_path); 228 227 rval = 1; 229 228 } else { 230 229 if (vflag) { 231 (void)printf("%s", p->fts_path);230 kmk_builtin_ctx_printf(pCtx, 0, "%s", p->fts_path); 232 231 233 232 if (vflag > 1) { … … 238 237 S_IFMT) | newmode, m2); 239 238 240 (void)printf(": 0%o [%s] -> 0%o [%s]",239 kmk_builtin_ctx_printf(pCtx, 0, ": 0%o [%s] -> 0%o [%s]", 241 240 (unsigned int)p->fts_statp->st_mode, m1, 242 241 (unsigned int)((p->fts_statp->st_mode & S_IFMT) | newmode), m2); 243 242 } 244 (void)printf("\n");243 kmk_builtin_ctx_printf(pCtx, 0, "\n"); 245 244 } 246 245 … … 248 247 } 249 248 if (errno) 250 rval = err( 1, "fts_read");249 rval = err(pCtx, 1, "fts_read"); 251 250 free(set); 252 251 fts_close(ftsp); … … 255 254 256 255 int 257 usage( FILE *out)258 { 259 (void)fprintf(out,256 usage(PKMKBUILTINCTX pCtx, int is_err) 257 { 258 kmk_builtin_ctx_printf(pCtx, is_err, 260 259 "usage: %s [-fhv] [-R [-H | -L | -P]] mode file ...\n" 261 260 " or: %s --version\n" 262 261 " or: %s --help\n", 263 g_progname, g_progname, g_progname);262 pCtx->pszProgName, pCtx->pszProgName, pCtx->pszProgName); 264 263 265 264 return 1; 266 265 } 266 267 #ifdef KMK_BUILTIN_STANDALONE 268 int main(int argc, char **argv, char **envp) 269 { 270 KMKBUILTINCTX Ctx = { "kmk_chmod", NULL }; 271 return kmk_builtin_chmod(argc, argv, envp, &Ctx); 272 } 273 #endif 274
Note:
See TracChangeset
for help on using the changeset viewer.