Mercurial > hg > toybox
annotate toys/mkfifo.c @ 226:6aac63925eff
Update web pages.
author | Rob Landley <rob@landley.net> |
---|---|
date | Sat, 05 Jan 2008 18:09:49 -0600 |
parents | 25447caf1b4b |
children | d4176f3f3835 |
rev | line source |
---|---|
157
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
1 /* vi: set sw=4 ts=4: */ |
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
2 /* |
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
3 * mkfifo.c: Create a named pipe. |
168
14fa82969ea3
Tighten up error handling, add a umask() call so -m 123 actually works.
Rob Landley <rob@landley.net>
parents:
157
diff
changeset
|
4 * |
14fa82969ea3
Tighten up error handling, add a umask() call so -m 123 actually works.
Rob Landley <rob@landley.net>
parents:
157
diff
changeset
|
5 * See http://www.opengroup.org/onlinepubs/009695399/utilities/mkfifo.html |
157
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
6 */ |
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
7 |
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
8 #include "toys.h" |
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
9 |
186
25447caf1b4b
Change command main() functions to return void, and exit(toys.exitval) from
Rob Landley <rob@landley.net>
parents:
168
diff
changeset
|
10 void mkfifo_main(void) |
157
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
11 { |
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
12 char *arg; |
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
13 int i; |
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
14 mode_t mode; |
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
15 |
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
16 if (toys.optflags) { |
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
17 char *end; |
168
14fa82969ea3
Tighten up error handling, add a umask() call so -m 123 actually works.
Rob Landley <rob@landley.net>
parents:
157
diff
changeset
|
18 mode = (mode_t)strtol(toy.mkfifo.mode, &end, 8); |
14fa82969ea3
Tighten up error handling, add a umask() call so -m 123 actually works.
Rob Landley <rob@landley.net>
parents:
157
diff
changeset
|
19 if (end<=toy.mkfifo.mode || *end || mode<0 || mode>0777) |
157
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
20 error_exit("Invalid mode"); |
168
14fa82969ea3
Tighten up error handling, add a umask() call so -m 123 actually works.
Rob Landley <rob@landley.net>
parents:
157
diff
changeset
|
21 } else mode = 0644; |
157
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
22 |
168
14fa82969ea3
Tighten up error handling, add a umask() call so -m 123 actually works.
Rob Landley <rob@landley.net>
parents:
157
diff
changeset
|
23 umask(0); |
157
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
24 for (i = 0; (arg = toys.optargs[i]); i++) |
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
25 if (mkfifo(arg, mode)) |
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
26 perror_exit(arg); |
714f4c051594
Add initial mkfifo implementation
Charlie Shepherd <masterdriverz@gentoo.org>
parents:
diff
changeset
|
27 } |