aboutsummaryrefslogtreecommitdiff
path: root/util-linux
diff options
context:
space:
mode:
authorGlenn L McGrath <bug1@ihug.co.nz>2002-08-22 18:41:20 +0000
committerGlenn L McGrath <bug1@ihug.co.nz>2002-08-22 18:41:20 +0000
commit9fef17dec333e17b1f24bc729d3b16725f4ccc75 (patch)
tree87eca9d8c978b9ea4736e05e4c480d51097e0319 /util-linux
parent7c58e9be69b2a3f52977879b1a300579c9914b29 (diff)
downloadbusybox-w32-9fef17dec333e17b1f24bc729d3b16725f4ccc75.tar.gz
busybox-w32-9fef17dec333e17b1f24bc729d3b16725f4ccc75.tar.bz2
busybox-w32-9fef17dec333e17b1f24bc729d3b16725f4ccc75.zip
Run through indent, fix comments
Diffstat (limited to 'util-linux')
-rw-r--r--util-linux/mount.c230
1 files changed, 120 insertions, 110 deletions
diff --git a/util-linux/mount.c b/util-linux/mount.c
index df6b3a822..873d27eb5 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -54,24 +54,24 @@
54#include <ctype.h> 54#include <ctype.h>
55#include "busybox.h" 55#include "busybox.h"
56#if defined CONFIG_FEATURE_USE_DEVPS_PATCH 56#if defined CONFIG_FEATURE_USE_DEVPS_PATCH
57# include <linux/devmtab.h> /* For Erik's nifty devmtab device driver */ 57# include <linux/devmtab.h> /* For Erik's nifty devmtab device driver */
58#endif 58#endif
59 59
60enum { 60enum {
61 MS_MGC_VAL = 0xc0ed0000, /* Magic number indicatng "new" flags */ 61 MS_MGC_VAL = 0xc0ed0000, /* Magic number indicatng "new" flags */
62 MS_RDONLY = 1, /* Mount read-only */ 62 MS_RDONLY = 1, /* Mount read-only */
63 MS_NOSUID = 2, /* Ignore suid and sgid bits */ 63 MS_NOSUID = 2, /* Ignore suid and sgid bits */
64 MS_NODEV = 4, /* Disallow access to device special files */ 64 MS_NODEV = 4, /* Disallow access to device special files */
65 MS_NOEXEC = 8, /* Disallow program execution */ 65 MS_NOEXEC = 8, /* Disallow program execution */
66 MS_SYNCHRONOUS = 16, /* Writes are synced at once */ 66 MS_SYNCHRONOUS = 16, /* Writes are synced at once */
67 MS_REMOUNT = 32, /* Alter flags of a mounted FS */ 67 MS_REMOUNT = 32, /* Alter flags of a mounted FS */
68 MS_MANDLOCK = 64, /* Allow mandatory locks on an FS */ 68 MS_MANDLOCK = 64, /* Allow mandatory locks on an FS */
69 S_QUOTA = 128, /* Quota initialized for file/directory/symlink */ 69 S_QUOTA = 128, /* Quota initialized for file/directory/symlink */
70 S_APPEND = 256, /* Append-only file */ 70 S_APPEND = 256, /* Append-only file */
71 S_IMMUTABLE = 512, /* Immutable file */ 71 S_IMMUTABLE = 512, /* Immutable file */
72 MS_NOATIME = 1024, /* Do not update access times. */ 72 MS_NOATIME = 1024, /* Do not update access times. */
73 MS_NODIRATIME = 2048, /* Do not update directory access times */ 73 MS_NODIRATIME = 2048, /* Do not update directory access times */
74 MS_BIND = 4096, /* Use the new linux 2.4.x "mount --bind" feature */ 74 MS_BIND = 4096, /* Use the new linux 2.4.x "mount --bind" feature */
75}; 75};
76 76
77 77
@@ -81,13 +81,13 @@ enum {
81static int use_loop = FALSE; 81static int use_loop = FALSE;
82#endif 82#endif
83 83
84extern int mount (__const char *__special_file, __const char *__dir, 84extern int mount(__const char *__special_file, __const char *__dir,
85 __const char *__fstype, unsigned long int __rwflag, 85 __const char *__fstype, unsigned long int __rwflag,
86 __const void *__data); 86 __const void *__data);
87extern int umount (__const char *__special_file); 87extern int umount(__const char *__special_file);
88extern int umount2 (__const char *__special_file, int __flags); 88extern int umount2(__const char *__special_file, int __flags);
89 89
90extern int sysfs( int option, unsigned int fs_index, char * buf); 90extern int sysfs(int option, unsigned int fs_index, char *buf);
91 91
92extern const char mtab_file[]; /* Defined in utility.c */ 92extern const char mtab_file[]; /* Defined in utility.c */
93 93
@@ -125,16 +125,16 @@ do_mount(char *specialfile, char *dir, char *filesystemtype,
125 char *mtab_opts, int mount_all) 125 char *mtab_opts, int mount_all)
126{ 126{
127 int status = 0; 127 int status = 0;
128
128#if defined CONFIG_FEATURE_MOUNT_LOOP 129#if defined CONFIG_FEATURE_MOUNT_LOOP
129 char *lofile = NULL; 130 char *lofile = NULL;
130#endif 131#endif
131 132
132 if (! fakeIt) 133 if (!fakeIt) {
133 {
134#if defined CONFIG_FEATURE_MOUNT_LOOP 134#if defined CONFIG_FEATURE_MOUNT_LOOP
135 if (use_loop==TRUE) { 135 if (use_loop == TRUE) {
136 int loro = flags & MS_RDONLY; 136 int loro = flags & MS_RDONLY;
137 137
138 lofile = specialfile; 138 lofile = specialfile;
139 139
140 specialfile = find_unused_loop_device(); 140 specialfile = find_unused_loop_device();
@@ -152,8 +152,10 @@ do_mount(char *specialfile, char *dir, char *filesystemtype,
152#endif 152#endif
153 status = mount(specialfile, dir, filesystemtype, flags, string_flags); 153 status = mount(specialfile, dir, filesystemtype, flags, string_flags);
154 if (status < 0 && errno == EROFS) { 154 if (status < 0 && errno == EROFS) {
155 error_msg("%s is write-protected, mounting read-only", specialfile); 155 error_msg("%s is write-protected, mounting read-only",
156 status = mount(specialfile, dir, filesystemtype, flags |= MS_RDONLY, string_flags); 156 specialfile);
157 status = mount(specialfile, dir, filesystemtype, flags |=
158 MS_RDONLY, string_flags);
157 } 159 }
158 /* Don't whine about already mounted filesystems when mounting all. */ 160 /* Don't whine about already mounted filesystems when mounting all. */
159 if (status < 0 && errno == EBUSY && mount_all) 161 if (status < 0 && errno == EBUSY && mount_all)
@@ -162,11 +164,11 @@ do_mount(char *specialfile, char *dir, char *filesystemtype,
162 164
163 165
164 /* If the mount was sucessful, do anything needed, then return TRUE */ 166 /* If the mount was sucessful, do anything needed, then return TRUE */
165 if (status == 0 || fakeIt==TRUE) { 167 if (status == 0 || fakeIt == TRUE) {
166 168
167#if defined CONFIG_FEATURE_MTAB_SUPPORT 169#if defined CONFIG_FEATURE_MTAB_SUPPORT
168 if (useMtab) { 170 if (useMtab) {
169 erase_mtab(specialfile); // Clean any stale entries 171 erase_mtab(specialfile); /* Clean any stale entries */
170 write_mtab(specialfile, dir, filesystemtype, flags, mtab_opts); 172 write_mtab(specialfile, dir, filesystemtype, flags, mtab_opts);
171 } 173 }
172#endif 174#endif
@@ -190,13 +192,12 @@ do_mount(char *specialfile, char *dir, char *filesystemtype,
190 192
191static void paste_str(char **s1, const char *s2) 193static void paste_str(char **s1, const char *s2)
192{ 194{
193 *s1 = xrealloc(*s1, strlen(*s1)+strlen(s2)+1); 195 *s1 = xrealloc(*s1, strlen(*s1) + strlen(s2) + 1);
194 strcat(*s1, s2); 196 strcat(*s1, s2);
195} 197}
196 198
197/* Seperate standard mount options from the nonstandard string options */ 199/* Seperate standard mount options from the nonstandard string options */
198static void 200static void parse_mount_options(char *options, int *flags, char **strflags)
199parse_mount_options(char *options, int *flags, char **strflags)
200{ 201{
201 while (options) { 202 while (options) {
202 int gotone = FALSE; 203 int gotone = FALSE;
@@ -217,13 +218,13 @@ parse_mount_options(char *options, int *flags, char **strflags)
217 f++; 218 f++;
218 } 219 }
219#if defined CONFIG_FEATURE_MOUNT_LOOP 220#if defined CONFIG_FEATURE_MOUNT_LOOP
220 if (!strcasecmp("loop", options)) { /* loop device support */ 221 if (!strcasecmp("loop", options)) { /* loop device support */
221 use_loop = TRUE; 222 use_loop = TRUE;
222 gotone = TRUE; 223 gotone = TRUE;
223 } 224 }
224#endif 225#endif
225 if (! gotone) { 226 if (!gotone) {
226 if (**strflags) /* have previous parsed options */ 227 if (**strflags) /* have previous parsed options */
227 paste_str(strflags, ","); 228 paste_str(strflags, ",");
228 paste_str(strflags, options); 229 paste_str(strflags, options);
229 } 230 }
@@ -245,81 +246,85 @@ mount_one(char *blockDevice, char *directory, char *filesystemType,
245 246
246#if defined CONFIG_FEATURE_USE_DEVPS_PATCH 247#if defined CONFIG_FEATURE_USE_DEVPS_PATCH
247 if (strcmp(filesystemType, "auto") == 0) { 248 if (strcmp(filesystemType, "auto") == 0) {
248 static const char *noauto_array[] = { "tmpfs", "shm", "proc", "ramfs", "devpts", "devfs", "usbdevfs", 0 }; 249 static const char *noauto_array[] =
250 { "tmpfs", "shm", "proc", "ramfs", "devpts", "devfs", "usbdevfs",
2510 };
249 const char **noauto_fstype; 252 const char **noauto_fstype;
250 const int num_of_filesystems = sysfs(3, 0, 0); 253 const int num_of_filesystems = sysfs(3, 0, 0);
251 char buf[255]; 254 char buf[255];
252 int i=0; 255 int i = 0;
253 256
254 filesystemType=buf; 257 filesystemType = buf;
255 258
256 while(i < num_of_filesystems) { 259 while (i < num_of_filesystems) {
257 sysfs(2, i++, filesystemType); 260 sysfs(2, i++, filesystemType);
258 for (noauto_fstype = noauto_array; *noauto_fstype; noauto_fstype++) { 261 for (noauto_fstype = noauto_array; *noauto_fstype;
262 noauto_fstype++) {
259 if (!strcmp(filesystemType, *noauto_fstype)) { 263 if (!strcmp(filesystemType, *noauto_fstype)) {
260 break; 264 break;
261 } 265 }
262 } 266 }
263 if (!*noauto_fstype) { 267 if (!*noauto_fstype) {
264 status = do_mount(blockDevice, directory, filesystemType, 268 status = do_mount(blockDevice, directory, filesystemType,
265 flags | MS_MGC_VAL, string_flags, 269 flags | MS_MGC_VAL, string_flags,
266 useMtab, fakeIt, mtab_opts, mount_all); 270 useMtab, fakeIt, mtab_opts, mount_all);
267 if (status) 271 if (status)
268 break; 272 break;
269 } 273 }
270 } 274 }
271 } 275 }
272#else 276#else
273 if (strcmp(filesystemType, "auto") == 0) { 277 if (strcmp(filesystemType, "auto") == 0) {
274 char buf[255]; 278 char buf[255];
275 FILE *f; 279 FILE *f;
276 int read_proc = 0; 280 int read_proc = 0;
277 281
278 f = fopen ( "/etc/filesystems", "r" ); 282 f = fopen("/etc/filesystems", "r");
279 283
280 if ( f ) { 284 if (f) {
281 while ( fgets ( buf, sizeof( buf ), f )) { 285 while (fgets(buf, sizeof(buf), f)) {
282 if ( *buf == '*' ) 286 if (*buf == '*')
283 read_proc = 1; 287 read_proc = 1;
284 else if ( *buf == '#' ) 288 else if (*buf == '#')
285 continue; 289 continue;
286 else { 290 else {
287 filesystemType = buf; 291 filesystemType = buf;
288 292
289 // Add NULL termination to each line 293 /* Add NULL termination to each line */
290 while (*filesystemType && !isspace ( *filesystemType )) 294 while (*filesystemType && !isspace(*filesystemType))
291 filesystemType++; 295 filesystemType++;
292 *filesystemType = '\0'; 296 *filesystemType = '\0';
293 297
294 filesystemType = buf; 298 filesystemType = buf;
295 299
296 if ( xstrlen ( filesystemType )) { 300 if (xstrlen(filesystemType)) {
297 status = do_mount(blockDevice, directory, filesystemType, 301 status =
298 flags | MS_MGC_VAL, string_flags, 302 do_mount(blockDevice, directory, filesystemType,
299 useMtab, fakeIt, mtab_opts, mount_all); 303 flags | MS_MGC_VAL, string_flags,
304 useMtab, fakeIt, mtab_opts, mount_all);
300 if (status) 305 if (status)
301 break; 306 break;
302 } 307 }
303 308
304 } 309 }
305 } 310 }
306 fclose ( f ); 311 fclose(f);
307 } 312 }
308 313
309 if (( !f || read_proc ) && !status ) { 314 if ((!f || read_proc) && !status) {
310 f = xfopen("/proc/filesystems", "r"); 315 f = xfopen("/proc/filesystems", "r");
311 316
312 while (fgets(buf, sizeof(buf), f) != NULL) { 317 while (fgets(buf, sizeof(buf), f) != NULL) {
313 filesystemType = buf; 318 filesystemType = buf;
314 if (*filesystemType == '\t') { // Not a nodev filesystem 319 if (*filesystemType == '\t') { /* Not a nodev filesystem */
315 320
316 // Add NULL termination to each line 321 /* Add NULL termination to each line */
317 while (*filesystemType && *filesystemType != '\n') 322 while (*filesystemType && *filesystemType != '\n')
318 filesystemType++; 323 filesystemType++;
319 *filesystemType = '\0'; 324 *filesystemType = '\0';
320 325
321 filesystemType = buf; 326 filesystemType = buf;
322 filesystemType++; // hop past tab 327 filesystemType++; /* hop past tab */
323 328
324 status = do_mount(blockDevice, directory, filesystemType, 329 status = do_mount(blockDevice, directory, filesystemType,
325 flags | MS_MGC_VAL, string_flags, 330 flags | MS_MGC_VAL, string_flags,
@@ -334,11 +339,11 @@ mount_one(char *blockDevice, char *directory, char *filesystemType,
334#endif 339#endif
335 else { 340 else {
336 status = do_mount(blockDevice, directory, filesystemType, 341 status = do_mount(blockDevice, directory, filesystemType,
337 flags | MS_MGC_VAL, string_flags, useMtab, 342 flags | MS_MGC_VAL, string_flags, useMtab,
338 fakeIt, mtab_opts, mount_all); 343 fakeIt, mtab_opts, mount_all);
339 } 344 }
340 345
341 if (! status) { 346 if (!status) {
342 if (whineOnErrors) { 347 if (whineOnErrors) {
343 perror_msg("Mounting %s on %s failed", blockDevice, directory); 348 perror_msg("Mounting %s on %s failed", blockDevice, directory);
344 } 349 }
@@ -354,34 +359,35 @@ static void show_mounts(char *onlytype)
354 char device[] = "/dev/mtab"; 359 char device[] = "/dev/mtab";
355 struct k_mntent *mntentlist; 360 struct k_mntent *mntentlist;
356 361
357 /* open device */ 362 /* open device */
358 fd = open(device, O_RDONLY); 363 fd = open(device, O_RDONLY);
359 if (fd < 0) 364 if (fd < 0)
360 perror_msg_and_die("open failed for `%s'", device); 365 perror_msg_and_die("open failed for `%s'", device);
361 366
362 /* How many mounted filesystems? We need to know to 367 /* How many mounted filesystems? We need to know to
363 * allocate enough space for later... */ 368 * allocate enough space for later... */
364 numfilesystems = ioctl (fd, DEVMTAB_COUNT_MOUNTS); 369 numfilesystems = ioctl(fd, DEVMTAB_COUNT_MOUNTS);
365 if (numfilesystems<0) 370 if (numfilesystems < 0)
366 perror_msg_and_die( "\nDEVMTAB_COUNT_MOUNTS"); 371 perror_msg_and_die("\nDEVMTAB_COUNT_MOUNTS");
367 mntentlist = (struct k_mntent *) xcalloc ( numfilesystems, sizeof(struct k_mntent)); 372 mntentlist =
368 373 (struct k_mntent *) xcalloc(numfilesystems, sizeof(struct k_mntent));
374
369 /* Grab the list of mounted filesystems */ 375 /* Grab the list of mounted filesystems */
370 if (ioctl (fd, DEVMTAB_GET_MOUNTS, mntentlist)<0) 376 if (ioctl(fd, DEVMTAB_GET_MOUNTS, mntentlist) < 0)
371 perror_msg_and_die( "\nDEVMTAB_GET_MOUNTS"); 377 perror_msg_and_die("\nDEVMTAB_GET_MOUNTS");
372 378
373 for( i = 0 ; i < numfilesystems ; i++) { 379 for (i = 0; i < numfilesystems; i++) {
374 if ( !onlytype || ( strcmp ( mntentlist[i].mnt_type, onlytype ) == 0 )) { 380 if (!onlytype || (strcmp(mntentlist[i].mnt_type, onlytype) == 0)) {
375 printf( "%s %s %s %s %d %d\n", mntentlist[i].mnt_fsname, 381 printf("%s %s %s %s %d %d\n", mntentlist[i].mnt_fsname,
376 mntentlist[i].mnt_dir, mntentlist[i].mnt_type, 382 mntentlist[i].mnt_dir, mntentlist[i].mnt_type,
377 mntentlist[i].mnt_opts, mntentlist[i].mnt_freq, 383 mntentlist[i].mnt_opts, mntentlist[i].mnt_freq,
378 mntentlist[i].mnt_passno); 384 mntentlist[i].mnt_passno);
379 } 385 }
380 } 386 }
381#ifdef CONFIG_FEATURE_CLEAN_UP 387#ifdef CONFIG_FEATURE_CLEAN_UP
382 /* Don't bother to close files or free memory. Exit 388 /* Don't bother to close files or free memory. Exit
383 * does that automagically, so we can save a few bytes */ 389 * does that automagically, so we can save a few bytes */
384 free( mntentlist); 390 free(mntentlist);
385 close(fd); 391 close(fd);
386#endif 392#endif
387 exit(EXIT_SUCCESS); 393 exit(EXIT_SUCCESS);
@@ -393,15 +399,16 @@ static void show_mounts(char *onlytype)
393 399
394 while ((m = getmntent(mountTable)) != 0) { 400 while ((m = getmntent(mountTable)) != 0) {
395 char *blockDevice = m->mnt_fsname; 401 char *blockDevice = m->mnt_fsname;
402
396 if (strcmp(blockDevice, "/dev/root") == 0) { 403 if (strcmp(blockDevice, "/dev/root") == 0) {
397 blockDevice = find_real_root_device_name(blockDevice); 404 blockDevice = find_real_root_device_name(blockDevice);
398 } 405 }
399 if ( !onlytype || ( strcmp ( m-> mnt_type, onlytype ) == 0 )) { 406 if (!onlytype || (strcmp(m->mnt_type, onlytype) == 0)) {
400 printf("%s on %s type %s (%s)\n", blockDevice, m->mnt_dir, 407 printf("%s on %s type %s (%s)\n", blockDevice, m->mnt_dir,
401 m->mnt_type, m->mnt_opts); 408 m->mnt_type, m->mnt_opts);
402 } 409 }
403#ifdef CONFIG_FEATURE_CLEAN_UP 410#ifdef CONFIG_FEATURE_CLEAN_UP
404 if(blockDevice != m->mnt_fsname) 411 if (blockDevice != m->mnt_fsname)
405 free(blockDevice); 412 free(blockDevice);
406#endif 413#endif
407 } 414 }
@@ -459,7 +466,7 @@ extern int mount_main(int argc, char **argv)
459 break; 466 break;
460#endif 467#endif
461 case 'v': 468 case 'v':
462 break; /* ignore -v */ 469 break; /* ignore -v */
463 } 470 }
464 } 471 }
465 472
@@ -470,6 +477,7 @@ extern int mount_main(int argc, char **argv)
470 /* if device is a filename get its real path */ 477 /* if device is a filename get its real path */
471 if (stat(argv[optind], &statbuf) == 0) { 478 if (stat(argv[optind], &statbuf) == 0) {
472 char *tmp = simplify_path(argv[optind]); 479 char *tmp = simplify_path(argv[optind]);
480
473 safe_strncpy(device, tmp, PATH_MAX); 481 safe_strncpy(device, tmp, PATH_MAX);
474 } else { 482 } else {
475 safe_strncpy(device, argv[optind], PATH_MAX); 483 safe_strncpy(device, argv[optind], PATH_MAX);
@@ -483,59 +491,61 @@ extern int mount_main(int argc, char **argv)
483 f = setmntent("/etc/fstab", "r"); 491 f = setmntent("/etc/fstab", "r");
484 492
485 if (f == NULL) 493 if (f == NULL)
486 perror_msg_and_die( "\nCannot read /etc/fstab"); 494 perror_msg_and_die("\nCannot read /etc/fstab");
487 495
488 while ((m = getmntent(f)) != NULL) { 496 while ((m = getmntent(f)) != NULL) {
489 if (! all && optind + 1 == argc && ( 497 if (!all && optind + 1 == argc && ((strcmp(device, m->mnt_fsname)
490 (strcmp(device, m->mnt_fsname) != 0) && 498 != 0)
491 (strcmp(device, m->mnt_dir) != 0) ) ) { 499 && (strcmp(device, m->mnt_dir)
500 != 0))) {
492 continue; 501 continue;
493 } 502 }
494 503
495 if (all && ( // If we're mounting 'all' 504 if (all && ( /* If we're mounting 'all' */
496 (strstr(m->mnt_opts, "noauto")) || // and the file system isn't noauto, 505 (strstr(m->mnt_opts, "noauto")) || /* and the file system isn't noauto, */
497 (strstr(m->mnt_type, "swap")) || // and isn't swap or nfs, then mount it 506 (strstr(m->mnt_type, "swap")) || /* and isn't swap or nfs, then mount it */
498 (strstr(m->mnt_type, "nfs")) ) ) { 507 (strstr(m->mnt_type, "nfs")))) {
499 continue; 508 continue;
500 } 509 }
501 510
502 if (all || flags == 0) { // Allow single mount to override fstab flags 511 if (all || flags == 0) { /* Allow single mount to override fstab flags */
503 flags = 0; 512 flags = 0;
504 string_flags[0] = 0; 513 string_flags[0] = 0;
505 parse_mount_options(m->mnt_opts, &flags, &string_flags); 514 parse_mount_options(m->mnt_opts, &flags, &string_flags);
506 } 515 }
507 516
508 strcpy(device, m->mnt_fsname); 517 strcpy(device, m->mnt_fsname);
509 strcpy(directory, m->mnt_dir); 518 strcpy(directory, m->mnt_dir);
510 filesystemType = xstrdup(m->mnt_type); 519 filesystemType = xstrdup(m->mnt_type);
511singlemount: 520 singlemount:
512 extra_opts = string_flags; 521 extra_opts = string_flags;
513 rc = EXIT_SUCCESS; 522 rc = EXIT_SUCCESS;
514#ifdef CONFIG_NFSMOUNT 523#ifdef CONFIG_NFSMOUNT
515 if (strchr(device, ':') != NULL) { 524 if (strchr(device, ':') != NULL) {
516 filesystemType = "nfs"; 525 filesystemType = "nfs";
517 if (nfsmount (device, directory, &flags, &extra_opts, 526 if (nfsmount(device, directory, &flags, &extra_opts,
518 &string_flags, 1)) { 527 &string_flags, 1)) {
519 perror_msg("nfsmount failed"); 528 perror_msg("nfsmount failed");
520 rc = EXIT_FAILURE; 529 rc = EXIT_FAILURE;
521 } 530 }
522 } 531 }
523#endif 532#endif
524 if (!mount_one(device, directory, filesystemType, flags, 533 if (!mount_one(device, directory, filesystemType, flags,
525 string_flags, useMtab, fakeIt, extra_opts, TRUE, all)) 534 string_flags, useMtab, fakeIt, extra_opts, TRUE,
535 all))
526 rc = EXIT_FAILURE; 536 rc = EXIT_FAILURE;
527 537
528 if (! all) 538 if (!all)
529 break; 539 break;
530 } 540 }
531 if (f) 541 if (f)
532 endmntent(f); 542 endmntent(f);
533 543
534 if (! all && f && m == NULL) 544 if (!all && f && m == NULL)
535 fprintf(stderr, "Can't find %s in /etc/fstab\n", device); 545 fprintf(stderr, "Can't find %s in /etc/fstab\n", device);
536 546
537 return rc; 547 return rc;
538 } 548 }
539 549
540 goto singlemount; 550 goto singlemount;
541} 551}