diff options
author | Roy Marples <roy@marples.name> | 2008-08-20 10:02:11 +0000 |
---|---|---|
committer | Roy Marples <roy@marples.name> | 2008-08-20 10:02:11 +0000 |
commit | 1ab1e9328a6313ae7d77957168484ce4b52fdf5d (patch) | |
tree | 5369c0f16c55fa3bf5bc8836bf35636e425abf39 /src/rc/rc-misc.c | |
parent | a9f7d2d5e5df184fd2eae38422605333e483c4d0 (diff) |
Add -k,--umask option, Gentoo #232455.
Diffstat (limited to 'src/rc/rc-misc.c')
-rw-r--r-- | src/rc/rc-misc.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/rc/rc-misc.c b/src/rc/rc-misc.c index 191fa3d4..22e2e309 100644 --- a/src/rc/rc-misc.c +++ b/src/rc/rc-misc.c @@ -374,3 +374,25 @@ pid_t exec_service(const char *service, const char *arg) return pid; } + +int +parse_mode(mode_t *mode, char *text) +{ + char *p; + unsigned long l; + + /* Check for a numeric mode */ + if ((*text - '0') < 8) { + l = strtoul(text, &p, 8); + if (*p || l > 07777U) { + errno = EINVAL; + return -1; + } + *mode = (mode_t) l; + return 0; + } + + /* We currently don't check g+w type stuff */ + errno = EINVAL; + return -1; +} |