skalibs

Mirror/fork of https://skarnet.org/software/skalibs/
git clone https://ccx.te2000.cz/git/skalibs
Log | Files | Refs | README | LICENSE

commit 9806a4f3bb81f71c46735a2b378cb074fef6e27b
parent 15ec28669f6bd4cf4c958f84c0c7dbe58628b375
Author: Laurent Bercot <ska-skaware@skarnet.org>
Date:   Mon, 26 Oct 2020 08:59:58 +0000

 Prepare for 2.9.4.0; add open*coe() functions.

Diffstat:
MNEWS | 6++++++
Mdoc/index.html | 2+-
Mdoc/libstddjb/djbunix.html | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
Mdoc/license.html | 2+-
Mdoc/upgrade.html | 7+++++++
Mpackage/info | 2+-
Msrc/include/skalibs/djbunix.h | 8++++++++
Asrc/libstddjb/open_appendcoe.c | 10++++++++++
Asrc/libstddjb/open_createcoe.c | 10++++++++++
Asrc/libstddjb/open_exclcoe.c | 10++++++++++
Asrc/libstddjb/open_readbcoe.c | 15+++++++++++++++
Asrc/libstddjb/open_readcoe.c | 10++++++++++
Asrc/libstddjb/open_trunccoe.c | 10++++++++++
Asrc/libstddjb/open_writecoe.c | 10++++++++++
Asrc/libstddjb/openb_readcoe.c | 10++++++++++
Msrc/libstddjb/openreadfileclose.c | 2+-
Msrc/libstddjb/openreadnclose.c | 4++--
Msrc/libstddjb/openslurpclose.c | 2+-
Msrc/libstddjb/openwritenclose_unsafe.c | 2+-
Msrc/libstddjb/openwritevnclose_unsafe.c | 2+-
20 files changed, 166 insertions(+), 9 deletions(-)

diff --git a/NEWS b/NEWS @@ -1,5 +1,11 @@ Changelog for skalibs. +In 2.9.4.0 +---------- + + - New open*coe functions. + + In 2.9.3.0 ---------- diff --git a/doc/index.html b/doc/index.html @@ -60,7 +60,7 @@ with a standard C development environment </li> <h3> Download </h3> <ul> - <li> The current released version of skalibs is <a href="skalibs-2.9.3.0.tar.gz">2.9.3.0</a>. </li> + <li> The current released version of skalibs is <a href="skalibs-2.9.4.0.tar.gz">2.9.4.0</a>. </li> <li> Alternatively, you can checkout a copy of the <a href="//git.skarnet.org/cgi-bin/cgit.cgi/skalibs/">skalibs git repository</a>: diff --git a/doc/libstddjb/djbunix.html b/doc/libstddjb/djbunix.html @@ -254,12 +254,24 @@ Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. </p> <p> +<code> int open_readcoe (char const *file) </code> <br /> +Opens <em>file</em> in read-only, non-blocking mode, close-on-exec. +Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. +</p> + +<p> <code> int openb_read (char const *file) </code> <br /> Opens <em>file</em> in read-only, blocking mode. Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. </p> <p> +<code> int openb_readcoe (char const *file) </code> <br /> +Opens <em>file</em> in read-only, blocking mode, close-on-exec. +Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. +</p> + +<p> <code> int open_readb (char const *file) </code> <br /> Opens <em>file</em> in read-only, blocking mode. Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. @@ -271,6 +283,11 @@ with FIFOs. </p> <p> +<code> int open_readbcoe (char const *file) </code> <br /> +Same as above, but the file is opened close-on-exec. +</p> + +<p> <code> int open_excl (char const *file) </code> <br /> Opens <em>file</em> in write-only, non-blocking mode, with the additional O_EXCL and O_CREAT flags. @@ -278,6 +295,13 @@ Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. </p> <p> +<code> int open_exclcoe (char const *file) </code> <br /> +Opens <em>file</em> in write-only, non-blocking mode, close-on-exec, with the +additional O_EXCL and O_CREAT flags. +Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. +</p> + +<p> <code> int open_append (char const *file) </code> <br /> Opens <em>file</em> in write-only, non-blocking mode, with the additional O_APPEND and O_CREAT flags. @@ -285,6 +309,13 @@ Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. </p> <p> +<code> int open_appendcoe (char const *file) </code> <br /> +Opens <em>file</em> in write-only, non-blocking mode, close-on-exec, with the +additional O_APPEND and O_CREAT flags. +Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. +</p> + +<p> <code> int open_trunc (char const *file) </code> <br /> Opens <em>file</em> in write-only, non-blocking mode, with the additional O_TRUNC and O_CREAT flags. @@ -292,6 +323,13 @@ Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. </p> <p> +<code> int open_trunccoe (char const *file) </code> <br /> +Opens <em>file</em> in write-only, non-blocking mode, close-on-exec, with the +additional O_TRUNC and O_CREAT flags. +Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. +</p> + +<p> <code> int open_create (char const *file) </code> <br /> Opens <em>file</em> in write-only, non-blocking mode, with the additional O_CREAT flag. @@ -299,11 +337,24 @@ Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. </p> <p> +<code> int open_createcoe (char const *file) </code> <br /> +Opens <em>file</em> in write-only, non-blocking mode, close-on-exec, with the +additional O_CREAT flag. +Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. +</p> + +<p> <code> int open_write (char const *file) </code> <br /> Opens <em>file</em> in write-only, non-blocking mode. Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. </p> +<p> +<code> int open_writecoe (char const *file) </code> <br /> +Opens <em>file</em> in write-only, non-blocking mode, close-on-exec. +Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. +</p> + <h3> Executable search and execution, and environment </h3> <p> diff --git a/doc/license.html b/doc/license.html @@ -74,7 +74,7 @@ color, or different text font. </li> <p> <em>I am aware that the previous restrictions sound completely ridiculous while the official skalibs documentation is incomplete. -As of 2.9.3.0, I'm not going to enforce those restrictions, but if you're +As of 2.9.4.0, I'm not going to enforce those restrictions, but if you're going to provide documentation for skalibs, don't keep it to yourself, please send it to me instead. :-) </em> </p> diff --git a/doc/upgrade.html b/doc/upgrade.html @@ -16,6 +16,13 @@ <a href="//skarnet.org/">skarnet.org</a> </p> +<h2> in 2.9.4.0 </h2> + +<ul> + <li> New <tt>open*coe</tt> functions, which are O_CLOEXEC versions of the +<a href="libstddjb/djbunix.html">djbunix.h</a> functions without <tt>coe</tt>. </li> +</ul> + <h2> in 2.9.3.0 </h2> <ul> diff --git a/package/info b/package/info @@ -1,4 +1,4 @@ package=skalibs -version=2.9.3.0 +version=2.9.4.0 category=prog package_macro_name=SKALIBS diff --git a/src/include/skalibs/djbunix.h b/src/include/skalibs/djbunix.h @@ -43,13 +43,21 @@ extern void lock_unx (int) ; extern int open2 (char const *, unsigned int) ; extern int open3 (char const *, unsigned int, unsigned int) ; extern int open_read (char const *) ; +extern int open_readcoe (char const *) ; extern int openb_read (char const *) ; +extern int openb_readcoe (char const *) ; extern int open_readb (char const *) ; +extern int open_readbcoe (char const *) ; extern int open_excl (char const *) ; +extern int open_exclcoe (char const *) ; extern int open_append (char const *) ; +extern int open_appendcoe (char const *) ; extern int open_create (char const *) ; +extern int open_createcoe (char const *) ; extern int open_trunc (char const *) ; +extern int open_trunccoe (char const *) ; extern int open_write (char const *) ; +extern int open_writecoe (char const *) ; extern int socket_internal (int, int, int, unsigned int) ; extern int socketpair_internal (int, int, int, unsigned int, int *) ; diff --git a/src/libstddjb/open_appendcoe.c b/src/libstddjb/open_appendcoe.c @@ -0,0 +1,10 @@ +/* ISC license. */ + +#include <skalibs/nonposix.h> +#include <fcntl.h> +#include <skalibs/djbunix.h> + +int open_appendcoe (char const *fn) +{ + return open3(fn, O_WRONLY | O_NONBLOCK | O_APPEND | O_CREAT | O_CLOEXEC, 0666) ; +} diff --git a/src/libstddjb/open_createcoe.c b/src/libstddjb/open_createcoe.c @@ -0,0 +1,10 @@ +/* ISC license. */ + +#include <skalibs/nonposix.h> +#include <fcntl.h> +#include <skalibs/djbunix.h> + +int open_createcoe (char const *fn) +{ + return open3(fn, O_WRONLY | O_NONBLOCK | O_CREAT | O_CLOEXEC, 0666) ; +} diff --git a/src/libstddjb/open_exclcoe.c b/src/libstddjb/open_exclcoe.c @@ -0,0 +1,10 @@ +/* ISC license. */ + +#include <skalibs/nonposix.h> +#include <fcntl.h> +#include <skalibs/djbunix.h> + +int open_exclcoe (char const *fn) +{ + return open3(fn, O_WRONLY | O_CREAT | O_EXCL | O_NONBLOCK | O_CLOEXEC, 0666) ; +} diff --git a/src/libstddjb/open_readbcoe.c b/src/libstddjb/open_readbcoe.c @@ -0,0 +1,15 @@ +/* ISC license. */ + +#include <skalibs/djbunix.h> + +int open_readbcoe (char const *fn) +{ + int fd = open_readbcoe(fn) ; + if (fd < 0) return -1 ; + if (ndelay_off(fd) < 0) + { + fd_close(fd) ; + return -1 ; + } + return fd ; +} diff --git a/src/libstddjb/open_readcoe.c b/src/libstddjb/open_readcoe.c @@ -0,0 +1,10 @@ +/* ISC license. */ + +#include <skalibs/nonposix.h> +#include <fcntl.h> +#include <skalibs/djbunix.h> + +int open_readcoe (char const *fn) +{ + return open2(fn, O_RDONLY | O_NONBLOCK | O_CLOEXEC) ; +} diff --git a/src/libstddjb/open_trunccoe.c b/src/libstddjb/open_trunccoe.c @@ -0,0 +1,10 @@ +/* ISC license. */ + +#include <skalibs/nonposix.h> +#include <fcntl.h> +#include <skalibs/djbunix.h> + +int open_trunccoe (char const *fn) +{ + return open3(fn, O_WRONLY | O_NONBLOCK | O_TRUNC | O_CREAT | O_CLOEXEC, 0666) ; +} diff --git a/src/libstddjb/open_writecoe.c b/src/libstddjb/open_writecoe.c @@ -0,0 +1,10 @@ +/* ISC license. */ + +#include <skalibs/nonposix.h> +#include <fcntl.h> +#include <skalibs/djbunix.h> + +int open_writecoe (char const *fn) +{ + return open2(fn, O_WRONLY | O_NONBLOCK | O_CLOEXEC) ; +} diff --git a/src/libstddjb/openb_readcoe.c b/src/libstddjb/openb_readcoe.c @@ -0,0 +1,10 @@ +/* ISC license. */ + +#include <skalibs/nonposix.h> +#include <fcntl.h> +#include <skalibs/djbunix.h> + +int openb_readcoe (char const *fn) +{ + return open2(fn, O_RDONLY | O_CLOEXEC) ; +} diff --git a/src/libstddjb/openreadfileclose.c b/src/libstddjb/openreadfileclose.c @@ -8,7 +8,7 @@ int openreadfileclose (char const *file, stralloc *sa, size_t limit) { size_t n ; - int fd = open_readb(file) ; + int fd = openb_readcoe(file) ; if (fd < 0) return 0 ; { struct stat st ; diff --git a/src/libstddjb/openreadnclose.c b/src/libstddjb/openreadnclose.c @@ -22,12 +22,12 @@ static ssize_t readnclose (int fd, char *s, size_t n) ssize_t openreadnclose (char const *file, char *s, size_t n) { - int fd = open_readb(file) ; + int fd = openb_readcoe(file) ; return fd < 0 ? fd : readnclose(fd, s, n) ; } ssize_t openreadnclose_nb (char const *file, char *s, size_t n) { - int fd = open_read(file) ; + int fd = open_readcoe(file) ; return fd < 0 ? fd : readnclose(fd, s, n) ; } diff --git a/src/libstddjb/openslurpclose.c b/src/libstddjb/openslurpclose.c @@ -6,7 +6,7 @@ int openslurpclose (stralloc *sa, char const *fn) { int r ; - int fd = open_readb(fn) ; + int fd = openb_readcoe(fn) ; if (fd == -1) return 0 ; r = slurp(sa, fd) ; fd_close(fd) ; diff --git a/src/libstddjb/openwritenclose_unsafe.c b/src/libstddjb/openwritenclose_unsafe.c @@ -6,7 +6,7 @@ int openwritenclose_unsafe_internal (char const *fn, char const *s, size_t len, dev_t *dev, ino_t *ino, int dosync) { - int fd = open_trunc(fn) ; + int fd = open_trunccoe(fn) ; if (fd < 0) return 0 ; if (!writenclose_unsafe_internal(fd, s, len, dev, ino, dosync)) { diff --git a/src/libstddjb/openwritevnclose_unsafe.c b/src/libstddjb/openwritevnclose_unsafe.c @@ -8,7 +8,7 @@ int openwritevnclose_unsafe_internal (char const *fn, struct iovec const *v, unsigned int vlen, dev_t *dev, ino_t *ino, int dosync) { - int fd = open_trunc(fn) ; + int fd = open_trunccoe(fn) ; if (fd < 0) return 0 ; if (!writevnclose_unsafe_internal(fd, v, vlen, dev, ino, dosync)) {