aboutsummaryrefslogtreecommitdiff
path: root/toys
diff options
context:
space:
mode:
authorDaniel Walter <d.walter@0x90.at>2012-03-19 19:57:56 -0500
committerDaniel Walter <d.walter@0x90.at>2012-03-19 19:57:56 -0500
commit05744b3176828c25f6e2cc2d663615252b4cd02f (patch)
tree0877fb5acc60b3a23485bdbff1b63d39666ff789 /toys
parentee00a7f4587c1b75dedb71b5aa3d12608fb7b54c (diff)
downloadtoybox-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.c9
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) {