[hackers] [sbase] Add mandoc-manpage for mkfifo(1) and add full mode support || FRIGN
commit 145602ec334400b795a3a2376e59019d33617bee
Author: FRIGN <dev_AT_frign.de>
Date: Wed Jan 28 20:55:50 2015 +0100
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?
diff --git a/README b/README
index dab73bc..987f26f 100644
--- a/README
+++ b/README
_AT_@ -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
diff --git a/mkfifo.1 b/mkfifo.1
index 0f60d87..ea5ec6c 100644
--- a/mkfifo.1
+++ b/mkfifo.1
_AT_@ -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.
diff --git a/mkfifo.c b/mkfifo.c
index fbaee4c..5bad406 100644
--- a/mkfifo.c
+++ b/mkfifo.c
_AT_@ -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();
_AT_@ -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;
}
Received on Wed Jan 28 2015 - 21:00:39 CET
This archive was generated by hypermail 2.3.0
: Wed Jan 28 2015 - 21:12:17 CET