aboutsummaryrefslogtreecommitdiff
path: root/src/rc/rc-misc.c
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2008-08-20 10:02:11 +0000
committerRoy Marples <roy@marples.name>2008-08-20 10:02:11 +0000
commit1ab1e9328a6313ae7d77957168484ce4b52fdf5d (patch)
tree5369c0f16c55fa3bf5bc8836bf35636e425abf39 /src/rc/rc-misc.c
parenta9f7d2d5e5df184fd2eae38422605333e483c4d0 (diff)
Add -k,--umask option, Gentoo #232455.
Diffstat (limited to 'src/rc/rc-misc.c')
-rw-r--r--src/rc/rc-misc.c22
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;
+}