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
|
||||
md5sum non-posix none
|
||||
=* mkdir yes none
|
||||
= mkfifo yes none
|
||||
=* mkfifo yes none
|
||||
= mktemp non-posix none
|
||||
= mv yes (-i)
|
||||
= nice yes none
|
||||
|
48
mkfifo.1
48
mkfifo.1
@ -1,19 +1,29 @@
|
||||
.TH MKFIFO 1 sbase\-VERSION
|
||||
.SH NAME
|
||||
mkfifo \- make named pipe
|
||||
.SH SYNOPSIS
|
||||
.B mkfifo
|
||||
.RB [ \-m
|
||||
.IR mode ]
|
||||
.I name ...
|
||||
.SH DESCRIPTION
|
||||
.B mkfifo
|
||||
creates named pipes (FIFOs) with the given names.
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B \-m
|
||||
Set the file permission bits of newly created FIFOs to mode. The mode
|
||||
is specified in octal as we do not currently support all the formats that
|
||||
the chmod(1) utility supports.
|
||||
.SH SEE ALSO
|
||||
.IR mkfifo (3)
|
||||
.Dd January 28, 2015
|
||||
.Dt MKFIFO 1 sbase\-VERSION
|
||||
.Sh NAME
|
||||
.Nm mkfifo
|
||||
.Nd create named pipes
|
||||
.Sh SYNOPSIS
|
||||
.Nm mkfifo
|
||||
.Op Fl m Ar mode
|
||||
.Ar name ...
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
creates a named pipe for each
|
||||
.Ar name
|
||||
if it does not already exist.
|
||||
.Sh OPTIONS
|
||||
.Bl -tag -width Ds
|
||||
.It Fl m
|
||||
Set the file
|
||||
.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
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP |
|
||||
S_IWGRP | S_IROTH | S_IWOTH;
|
||||
mode_t mode = 0;
|
||||
mode_t mask;
|
||||
int mflag = 0;
|
||||
int ret = 0;
|
||||
|
||||
ARGBEGIN {
|
||||
case 'm':
|
||||
mode = estrtol(EARGF(usage()), 8);
|
||||
mflag = 1;
|
||||
mask = getumask();
|
||||
mode = parsemode(EARGF(usage()), mode, mask);
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
@ -31,10 +34,17 @@ main(int argc, char *argv[])
|
||||
usage();
|
||||
|
||||
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]);
|
||||
ret = 1;
|
||||
}
|
||||
if (mflag) {
|
||||
if (chmod(argv[0], mode) < 0) {
|
||||
weprintf("chmod %s:", argv[0]);
|
||||
ret = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user