From 7ea5c614d9c9e36c55f1da3d7fb894e83bbb56f3 Mon Sep 17 00:00:00 2001 From: Christian Ruppert Date: Wed, 25 Jan 2012 23:18:08 +0100 Subject: Add -W/--writable function to checkpath Checkpath -W will use access(3p) to determine whether or not a path is writable. This is more accurate than test(1p) because it also takes into account whether or not the filesystem is mounted read-only. Modified by William Hubbs to add the man page update. --- src/rc/checkpath.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/rc/checkpath.c b/src/rc/checkpath.c index b0914f3f..7ebbb64d 100644 --- a/src/rc/checkpath.c +++ b/src/rc/checkpath.c @@ -185,8 +185,8 @@ parse_owner(struct passwd **user, struct group **group, const char *owner) } #include "_usage.h" -#define extraopts "path1 path2 ..." -#define getoptstring "dDfFpm:o:" getoptstring_COMMON +#define extraopts "path1 [path2] [...]" +#define getoptstring "dDfFpm:o:W:" getoptstring_COMMON static const struct option longopts[] = { { "directory", 0, NULL, 'd'}, { "directory-truncate", 0, NULL, 'D'}, @@ -195,6 +195,7 @@ static const struct option longopts[] = { { "pipe", 0, NULL, 'p'}, { "mode", 1, NULL, 'm'}, { "owner", 1, NULL, 'o'}, + { "writable", 1, NULL, 'W'}, longopts_COMMON }; static const char * const longopts_help[] = { @@ -205,6 +206,7 @@ static const char * const longopts_help[] = { "Create a named pipe (FIFO) if not exists", "Mode to check", "Owner to check (user:group)", + "Check whether the path is writable or not", longopts_help_COMMON }; #include "_usage.c" @@ -249,6 +251,11 @@ checkpath(int argc, char **argv) eerrorx("%s: owner `%s' not found", applet, optarg); break; + case 'W': + if (argv[optind] != NULL) + ewarn("-W/--writable takes only one path, everything else will be ignored"); + exit(!is_writable(optarg)); + break; case_RC_COMMON_GETOPT } -- cgit v1.2.3