diff options
Diffstat (limited to 'libdiskfs/opts-append-std.c')
-rw-r--r-- | libdiskfs/opts-append-std.c | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/libdiskfs/opts-append-std.c b/libdiskfs/opts-append-std.c index d3da031d..b951bf93 100644 --- a/libdiskfs/opts-append-std.c +++ b/libdiskfs/opts-append-std.c @@ -1,8 +1,8 @@ /* Get standard diskfs run-time options - Copyright (C) 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1995, 96,97,98,99,2002 Free Software Foundation, Inc. - Written by Miles Bader <miles@gnu.ai.mit.edu> + Written by Miles Bader <miles@gnu.org> This file is part of the GNU Hurd. @@ -26,7 +26,7 @@ #include "priv.h" error_t -diskfs_append_std_options (char **argz, unsigned *argz_len) +diskfs_append_std_options (char **argz, size_t *argz_len) { error_t err; extern int diskfs_sync_interval; @@ -35,21 +35,32 @@ diskfs_append_std_options (char **argz, unsigned *argz_len) err = argz_add (argz, argz_len, "--readonly"); else err = argz_add (argz, argz_len, "--writable"); - if (err) - return err; - if (diskfs_synchronous) - err = argz_add (argz, argz_len, "--sync"); - else if (diskfs_sync_interval == 0) - err = argz_add (argz, argz_len, "--nosync"); - else + if (!err && _diskfs_nosuid) + err = argz_add (argz, argz_len, "--no-suid"); + if (!err && _diskfs_noexec) + err = argz_add (argz, argz_len, "--no-exec"); + if (!err && _diskfs_noatime) + err = argz_add (argz, argz_len, "--no-atime"); + if (!err && _diskfs_no_inherit_dir_group) + err = argz_add (argz, argz_len, "--no-inherit-dir-group"); + + if (! err) { - char buf[80]; - sprintf (buf, "--sync=%d", diskfs_sync_interval); - err = argz_add (argz, argz_len, buf); + if (diskfs_synchronous) + err = argz_add (argz, argz_len, "--sync"); + else if (DEFAULT_SYNC_INTERVAL != diskfs_sync_interval) + { + if (diskfs_sync_interval == 0) + err = argz_add (argz, argz_len, "--no-sync"); + else + { + char buf[80]; + sprintf (buf, "--sync=%d", diskfs_sync_interval); + err = argz_add (argz, argz_len, buf); + } + } } - if (err) - free (argz); /* Free the first option allocated. */ return err; } |