fsck.c (241806) | fsck.c (241807) |
---|---|
1/* $NetBSD: fsck.c,v 1.30 2003/08/07 10:04:15 agc Exp $ */ 2 3/* 4 * Copyright (c) 1996 Christos Zoulas. All rights reserved. 5 * Copyright (c) 1980, 1989, 1993, 1994 6 * The Regents of the University of California. All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 21 unchanged lines hidden (view full) --- 30 * SUCH DAMAGE. 31 * 32 * From: @(#)mount.c 8.19 (Berkeley) 4/19/94 33 * From: $NetBSD: mount.c,v 1.24 1995/11/18 03:34:29 cgd Exp 34 * $NetBSD: fsck.c,v 1.30 2003/08/07 10:04:15 agc Exp $ 35 */ 36 37#include <sys/cdefs.h> | 1/* $NetBSD: fsck.c,v 1.30 2003/08/07 10:04:15 agc Exp $ */ 2 3/* 4 * Copyright (c) 1996 Christos Zoulas. All rights reserved. 5 * Copyright (c) 1980, 1989, 1993, 1994 6 * The Regents of the University of California. All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 21 unchanged lines hidden (view full) --- 30 * SUCH DAMAGE. 31 * 32 * From: @(#)mount.c 8.19 (Berkeley) 4/19/94 33 * From: $NetBSD: mount.c,v 1.24 1995/11/18 03:34:29 cgd Exp 34 * $NetBSD: fsck.c,v 1.30 2003/08/07 10:04:15 agc Exp $ 35 */ 36 37#include <sys/cdefs.h> |
38__FBSDID("$FreeBSD: head/sbin/fsck/fsck.c 241806 2012-10-21 12:01:11Z uqs $"); | 38__FBSDID("$FreeBSD: head/sbin/fsck/fsck.c 241807 2012-10-21 12:01:19Z uqs $"); |
39 40#include <sys/param.h> 41#include <sys/mount.h> 42#include <sys/queue.h> 43#include <sys/wait.h> 44#define FSTYPENAMES 45#include <sys/disklabel.h> 46#include <sys/ioctl.h> --- 21 unchanged lines hidden (view full) --- 68 char *options; 69 TAILQ_ENTRY(entry) entries; 70}; 71 72static char *options = NULL; 73static int flags = 0; 74static int forceflag = 0; 75 | 39 40#include <sys/param.h> 41#include <sys/mount.h> 42#include <sys/queue.h> 43#include <sys/wait.h> 44#define FSTYPENAMES 45#include <sys/disklabel.h> 46#include <sys/ioctl.h> --- 21 unchanged lines hidden (view full) --- 68 char *options; 69 TAILQ_ENTRY(entry) entries; 70}; 71 72static char *options = NULL; 73static int flags = 0; 74static int forceflag = 0; 75 |
76static int checkfs(const char *, const char *, const char *, char *, pid_t *); | 76static int checkfs(const char *, const char *, const char *, const char *, pid_t *); |
77static int selected(const char *); 78static void addoption(char *); 79static const char *getoptions(const char *); 80static void addentry(struct fstypelist *, const char *, const char *); 81static void maketypelist(char *); 82static void catopt(char **, const char *); | 77static int selected(const char *); 78static void addoption(char *); 79static const char *getoptions(const char *); 80static void addentry(struct fstypelist *, const char *, const char *); 81static void maketypelist(char *); 82static void catopt(char **, const char *); |
83static void mangle(char *, int *, const char ***, int *); | 83static void mangle(char *, int *, const char ** volatile *, int *); |
84static const char *getfslab(const char *); 85static void usage(void) __dead2; 86static int isok(struct fstab *); 87 88int 89main(int argc, char *argv[]) 90{ 91 struct fstab *fs; --- 90 unchanged lines hidden (view full) --- 182 strcmp(type, FSTAB_RW) && strcmp(type, FSTAB_RQ)) 183 184 185 for (; argc--; argv++) { 186 const char *spec, *mntpt, *type, *cp; 187 char device[MAXPATHLEN]; 188 struct statfs *mntp; 189 | 84static const char *getfslab(const char *); 85static void usage(void) __dead2; 86static int isok(struct fstab *); 87 88int 89main(int argc, char *argv[]) 90{ 91 struct fstab *fs; --- 90 unchanged lines hidden (view full) --- 182 strcmp(type, FSTAB_RW) && strcmp(type, FSTAB_RQ)) 183 184 185 for (; argc--; argv++) { 186 const char *spec, *mntpt, *type, *cp; 187 char device[MAXPATHLEN]; 188 struct statfs *mntp; 189 |
190 mntpt = NULL; |
|
190 spec = *argv; 191 cp = strrchr(spec, '/'); 192 if (cp == 0) { 193 (void)snprintf(device, sizeof(device), "%s%s", 194 _PATH_DEV, spec); 195 spec = device; 196 } 197 mntp = getmntpt(spec); --- 82 unchanged lines hidden (view full) --- 280 return (1); 281 printf("%s: DEFER FOR BACKGROUND CHECKING\n", fs->fs_spec); 282 return (0); 283} 284 285 286static int 287checkfs(const char *pvfstype, const char *spec, const char *mntpt, | 191 spec = *argv; 192 cp = strrchr(spec, '/'); 193 if (cp == 0) { 194 (void)snprintf(device, sizeof(device), "%s%s", 195 _PATH_DEV, spec); 196 spec = device; 197 } 198 mntp = getmntpt(spec); --- 82 unchanged lines hidden (view full) --- 281 return (1); 282 printf("%s: DEFER FOR BACKGROUND CHECKING\n", fs->fs_spec); 283 return (0); 284} 285 286 287static int 288checkfs(const char *pvfstype, const char *spec, const char *mntpt, |
288 char *auxopt, pid_t *pidp) | 289 const char *auxopt, pid_t *pidp) |
289{ | 290{ |
290 const char **argv; | 291 const char ** volatile argv; |
291 pid_t pid; 292 int argc, i, status, maxargc; 293 char *optbuf, execbase[MAXPATHLEN]; 294 char *vfstype = NULL; 295 const char *extra = NULL; 296 297#ifdef __GNUC__ 298 /* Avoid vfork clobbering */ --- 8 unchanged lines hidden (view full) --- 307 * from the disklabel work for "4.2BSD" filesystems. It does a 308 * very limited subset of transliteration to a normalised form of 309 * filesystem name, and we do not seem to enforce a filesystem 310 * name character set. 311 */ 312 vfstype = strdup(pvfstype); 313 if (vfstype == NULL) 314 perr("strdup(pvfstype)"); | 292 pid_t pid; 293 int argc, i, status, maxargc; 294 char *optbuf, execbase[MAXPATHLEN]; 295 char *vfstype = NULL; 296 const char *extra = NULL; 297 298#ifdef __GNUC__ 299 /* Avoid vfork clobbering */ --- 8 unchanged lines hidden (view full) --- 308 * from the disklabel work for "4.2BSD" filesystems. It does a 309 * very limited subset of transliteration to a normalised form of 310 * filesystem name, and we do not seem to enforce a filesystem 311 * name character set. 312 */ 313 vfstype = strdup(pvfstype); 314 if (vfstype == NULL) 315 perr("strdup(pvfstype)"); |
315 for (i = 0; i < strlen(vfstype); i++) { | 316 for (i = 0; i < (int)strlen(vfstype); i++) { |
316 vfstype[i] = tolower(vfstype[i]); 317 if (vfstype[i] == ' ') 318 vfstype[i] = '_'; 319 } 320 321 extra = getoptions(vfstype); 322 optbuf = NULL; 323 if (options) --- 32 unchanged lines hidden (view full) --- 356 free(vfstype); 357 return (1); 358 359 case 0: /* Child. */ 360 if ((flags & CHECK_DEBUG) && auxopt == NULL) 361 _exit(0); 362 363 /* Go find an executable. */ | 317 vfstype[i] = tolower(vfstype[i]); 318 if (vfstype[i] == ' ') 319 vfstype[i] = '_'; 320 } 321 322 extra = getoptions(vfstype); 323 optbuf = NULL; 324 if (options) --- 32 unchanged lines hidden (view full) --- 357 free(vfstype); 358 return (1); 359 360 case 0: /* Child. */ 361 if ((flags & CHECK_DEBUG) && auxopt == NULL) 362 _exit(0); 363 364 /* Go find an executable. */ |
364 execvP(execbase, _PATH_SYSPATH, (char * const *)argv); | 365 execvP(execbase, _PATH_SYSPATH, __DECONST(char * const *, argv)); |
365 if (spec) 366 warn("exec %s for %s in %s", execbase, spec, _PATH_SYSPATH); 367 else 368 warn("exec %s in %s", execbase, _PATH_SYSPATH); 369 _exit(1); 370 /* NOTREACHED */ 371 372 default: /* Parent. */ --- 120 unchanged lines hidden (view full) --- 493 (void)snprintf(s + i, j, ",%s", o); 494 } else 495 s = estrdup(o); 496 *sp = s; 497} 498 499 500static void | 366 if (spec) 367 warn("exec %s for %s in %s", execbase, spec, _PATH_SYSPATH); 368 else 369 warn("exec %s in %s", execbase, _PATH_SYSPATH); 370 _exit(1); 371 /* NOTREACHED */ 372 373 default: /* Parent. */ --- 120 unchanged lines hidden (view full) --- 494 (void)snprintf(s + i, j, ",%s", o); 495 } else 496 s = estrdup(o); 497 *sp = s; 498} 499 500 501static void |
501mangle(char *opts, int *argcp, const char ***argvp, int *maxargcp) | 502mangle(char *opts, int *argcp, const char ** volatile *argvp, int *maxargcp) |
502{ 503 char *p, *s; 504 int argc, maxargc; 505 const char **argv; 506 507 argc = *argcp; 508 argv = *argvp; 509 maxargc = *maxargcp; --- 20 unchanged lines hidden (view full) --- 530 } 531 532 *argcp = argc; 533 *argvp = argv; 534 *maxargcp = maxargc; 535} 536 537 | 503{ 504 char *p, *s; 505 int argc, maxargc; 506 const char **argv; 507 508 argc = *argcp; 509 argv = *argvp; 510 maxargc = *maxargcp; --- 20 unchanged lines hidden (view full) --- 531 } 532 533 *argcp = argc; 534 *argvp = argv; 535 *maxargcp = maxargc; 536} 537 538 |
538const static char * | 539static const char * |
539getfslab(const char *str) 540{ 541 struct disklabel dl; 542 int fd; 543 char p; 544 const char *vfstype; 545 u_char t; 546 --- 38 unchanged lines hidden --- | 540getfslab(const char *str) 541{ 542 struct disklabel dl; 543 int fd; 544 char p; 545 const char *vfstype; 546 u_char t; 547 --- 38 unchanged lines hidden --- |