Add mandoc-manpage for mkfifo(1) and add full mode support
and mark it as finished in the README. Previously, it would only parse octal mode strings. Given we have the parsemode()-function in util.h anyway, why not also use it?
This commit is contained in:
parent
ee6f7d3fc0
commit
befec8cf67
2
README
2
README
@ -43,7 +43,7 @@ The following tools are implemented ('*' == finished, '#' == UTF-8 support,
|
|||||||
= ls no -C, -R, -q, -u
|
= ls no -C, -R, -q, -u
|
||||||
md5sum non-posix none
|
md5sum non-posix none
|
||||||
=* mkdir yes none
|
=* mkdir yes none
|
||||||
= mkfifo yes none
|
=* mkfifo yes none
|
||||||
= mktemp non-posix none
|
= mktemp non-posix none
|
||||||
= mv yes (-i)
|
= mv yes (-i)
|
||||||
= nice yes none
|
= nice yes none
|
||||||
|
48
mkfifo.1
48
mkfifo.1
@ -1,19 +1,29 @@
|
|||||||
.TH MKFIFO 1 sbase\-VERSION
|
.Dd January 28, 2015
|
||||||
.SH NAME
|
.Dt MKFIFO 1 sbase\-VERSION
|
||||||
mkfifo \- make named pipe
|
.Sh NAME
|
||||||
.SH SYNOPSIS
|
.Nm mkfifo
|
||||||
.B mkfifo
|
.Nd create named pipes
|
||||||
.RB [ \-m
|
.Sh SYNOPSIS
|
||||||
.IR mode ]
|
.Nm mkfifo
|
||||||
.I name ...
|
.Op Fl m Ar mode
|
||||||
.SH DESCRIPTION
|
.Ar name ...
|
||||||
.B mkfifo
|
.Sh DESCRIPTION
|
||||||
creates named pipes (FIFOs) with the given names.
|
.Nm
|
||||||
.SH OPTIONS
|
creates a named pipe for each
|
||||||
.TP
|
.Ar name
|
||||||
.B \-m
|
if it does not already exist.
|
||||||
Set the file permission bits of newly created FIFOs to mode. The mode
|
.Sh OPTIONS
|
||||||
is specified in octal as we do not currently support all the formats that
|
.Bl -tag -width Ds
|
||||||
the chmod(1) utility supports.
|
.It Fl m
|
||||||
.SH SEE ALSO
|
Set the file
|
||||||
.IR mkfifo (3)
|
.Ar mode
|
||||||
|
of newly created named pipes.
|
||||||
|
.El
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr mkfifo 3
|
||||||
|
.Sh STANDARDS
|
||||||
|
The
|
||||||
|
.Nm
|
||||||
|
utility is compliant with the
|
||||||
|
.St -p1003.1-2008
|
||||||
|
specification.
|
||||||
|
18
mkfifo.c
18
mkfifo.c
@ -15,13 +15,16 @@ usage(void)
|
|||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP |
|
mode_t mode = 0;
|
||||||
S_IWGRP | S_IROTH | S_IWOTH;
|
mode_t mask;
|
||||||
|
int mflag = 0;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
ARGBEGIN {
|
ARGBEGIN {
|
||||||
case 'm':
|
case 'm':
|
||||||
mode = estrtol(EARGF(usage()), 8);
|
mflag = 1;
|
||||||
|
mask = getumask();
|
||||||
|
mode = parsemode(EARGF(usage()), mode, mask);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
@ -31,10 +34,17 @@ main(int argc, char *argv[])
|
|||||||
usage();
|
usage();
|
||||||
|
|
||||||
for (; argc > 0; argc--, argv++) {
|
for (; argc > 0; argc--, argv++) {
|
||||||
if (mkfifo(argv[0], mode) < 0) {
|
if (mkfifo(argv[0], S_IRUSR | S_IWUSR |
|
||||||
|
S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) < 0) {
|
||||||
weprintf("mkfifo %s:", argv[0]);
|
weprintf("mkfifo %s:", argv[0]);
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
|
if (mflag) {
|
||||||
|
if (chmod(argv[0], mode) < 0) {
|
||||||
|
weprintf("chmod %s:", argv[0]);
|
||||||
|
ret = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user