[hackers] [sbase] Add mandoc-manpage for mkfifo(1) and add full mode support || FRIGN

From: <git_AT_suckless.org>
Date: Wed, 28 Jan 2015 21:00:39 +0100 (CET)

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