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:
FRIGN 2015-01-28 20:55:50 +01:00
parent ee6f7d3fc0
commit befec8cf67
3 changed files with 44 additions and 24 deletions

2
README
View File

@ -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

View File

@ -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.

View File

@ -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;
}