diff options
author | Daniel Walter <d.walter@0x90.at> | 2012-03-19 19:57:56 -0500 |
---|---|---|
committer | Daniel Walter <d.walter@0x90.at> | 2012-03-19 19:57:56 -0500 |
commit | 05744b3176828c25f6e2cc2d663615252b4cd02f (patch) | |
tree | 0877fb5acc60b3a23485bdbff1b63d39666ff789 /toys | |
parent | ee00a7f4587c1b75dedb71b5aa3d12608fb7b54c (diff) | |
download | toybox-05744b3176828c25f6e2cc2d663615252b4cd02f.tar.gz |
Add string to mode_t parser
added new function string_to_mode(char *m_string, mode_t base) which
parses a given string and converts it to a mode_t.
If either + or - are part of m_string the permissions are either
added or removed from base.
Currently support for permision copy is missing (e.g. g=u),
but all other flags should work.
Format for m_string: either symbolic modes or octal representation.
symbolic modes:
[auog][[+-=][rwxst]*]
examples:
string_to_mode("u=rwx,g=rw,o=r", 0);
string_to_mode("a-x", 0777);
string_to_mode("0744", 0);
Diffstat (limited to 'toys')
-rw-r--r-- | toys/mkfifo.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/toys/mkfifo.c b/toys/mkfifo.c index 17d9c2cb..ab466fc3 100644 --- a/toys/mkfifo.c +++ b/toys/mkfifo.c @@ -8,7 +8,7 @@ * * TODO: Add -m -USE_MKFIFO(NEWTOY(mkfifo, "<1", TOYFLAG_BIN)) +USE_MKFIFO(NEWTOY(mkfifo, "<1m:", TOYFLAG_BIN)) config MKFIFO bool "mkfifo" @@ -22,16 +22,21 @@ config MKFIFO #include "toys.h" DEFINE_GLOBALS( - long mode; + char *m_string; + mode_t mode; ) #define TT this.mkfifo +#define FLAG_m (1) void mkfifo_main(void) { char **s; TT.mode = 0666; + if (toys.optflags & FLAG_m) { + TT.mode = string_to_mode(TT.m_string, 0); + } for (s = toys.optargs; *s; s++) { if (mknod(*s, S_IFIFO | TT.mode, 0) < 0) { |