From 4684272897e351ed21f82a0ef84bc94194b4d538 Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Thu, 1 Mar 2018 12:51:30 +0000 Subject: Add byte_zzero, openb_read --- NEWS | 2 +- configure | 1 + doc/libstddjb/djbunix.html | 6 ++++++ doc/upgrade.html | 3 ++- package/deps.mak | 5 ++--- src/include/skalibs/bytestr.h | 1 + src/include/skalibs/djbunix.h | 1 + src/libstddjb/byte_zzero.c | 35 +++++++++++++++++++++++++++++++++++ src/libstddjb/openb_read.c | 10 ++++++++++ src/sysdeps/tryexplicit_bzero.c | 30 ++++++++++++++++++++++++++++++ 10 files changed, 89 insertions(+), 5 deletions(-) create mode 100644 src/libstddjb/byte_zzero.c create mode 100644 src/libstddjb/openb_read.c create mode 100644 src/sysdeps/tryexplicit_bzero.c diff --git a/NEWS b/NEWS index c8832b9..05bfb32 100644 --- a/NEWS +++ b/NEWS @@ -4,7 +4,7 @@ In 2.6.4.0 ---------- - Bugfixes. - - New function: execvep_loose() + - New functions: execvep_loose(), byte_zzero(), openb_read() In 2.6.3.1 diff --git a/configure b/configure index d6213c4..f785a63 100755 --- a/configure +++ b/configure @@ -541,6 +541,7 @@ EOF choose cl itimer ITIMER 'setitimer()' choose cl namespaces NAMESPACES 'namespaces' choose cl nsgetparent NSGETPARENT 'NS_GET_PARENT' + choose cl explicit_bzero EXPLICIT_BZERO 'explicit_bzero()' echo '#endif' >> $sysdeps/sysdeps.h fi diff --git a/doc/libstddjb/djbunix.html b/doc/libstddjb/djbunix.html index 05515aa..1507bcd 100644 --- a/doc/libstddjb/djbunix.html +++ b/doc/libstddjb/djbunix.html @@ -260,6 +260,12 @@ Opens file in read-only, non-blocking mode. Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails.

+

+ int openb_read (char const *file)
+Opens file in read-only, blocking mode. +Returns a valid fd number if it succeeds, or -1 (and sets errno) if it fails. +

+

int open_readb (char const *file)
Opens file in read-only, blocking mode. diff --git a/doc/upgrade.html b/doc/upgrade.html index 7f95df7..18a8656 100644 --- a/doc/upgrade.html +++ b/doc/upgrade.html @@ -19,7 +19,8 @@

in 2.6.4.0

in 2.6.3.1

diff --git a/package/deps.mak b/package/deps.mak index ea62f01..7c8e154 100644 --- a/package/deps.mak +++ b/package/deps.mak @@ -22,7 +22,6 @@ src/include/skalibs/djbunix.h: src/include/skalibs/env.h src/include/skalibs/env src/include/skalibs/env.h: src/include/skalibs/gccattributes.h src/include/skalibs/stralloc.h src/include/skalibs/envalloc.h: src/include/skalibs/genalloc.h src/include/skalibs/environ.h: src/include/skalibs/posixplz.h -src/include/skalibs/error.h: src/include/skalibs/gccattributes.h src/include/skalibs/fmtscan.h: src/include/skalibs/gccattributes.h src/include/skalibs/genalloc.h: src/include/skalibs/functypes.h src/include/skalibs/stralloc.h src/include/skalibs/genqdyn.h: src/include/skalibs/stralloc.h @@ -31,7 +30,6 @@ src/include/skalibs/gensetdyn.h: src/include/skalibs/functypes.h src/include/ska src/include/skalibs/getpeereid.h: src/include/skalibs/posixplz.h src/include/skalibs/iobuffer.h: src/include/skalibs/buffer.h src/include/skalibs/djbunix.h src/include/skalibs/iopause.h: src/include/skalibs/tai.h -src/include/skalibs/ip46.h: src/include/skalibs/fmtscan.h src/include/skalibs/socket.h src/include/skalibs/kolbak.h: src/include/skalibs/unixmessage.h src/include/skalibs/lolstdio.h: src/include/skalibs/bufalloc.h src/include/skalibs/buffer.h src/include/skalibs/strerr2.h src/include/skalibs/mininetstring.h: src/include/skalibs/stralloc.h @@ -53,7 +51,6 @@ src/include/skalibs/strerr2.h: src/include/skalibs/strerr.h src/include/skalibs/tai.h: src/include/skalibs/gccattributes.h src/include/skalibs/uint64.h src/include/skalibs/textclient.h: src/include/skalibs/allreadwrite.h src/include/skalibs/tai.h src/include/skalibs/textmessage.h src/include/skalibs/textmessage.h: src/include/skalibs/allreadwrite.h src/include/skalibs/bufalloc.h src/include/skalibs/buffer.h src/include/skalibs/gccattributes.h src/include/skalibs/stralloc.h src/include/skalibs/tai.h -src/include/skalibs/types.h: src/include/skalibs/uint16.h src/include/skalibs/uint32.h src/include/skalibs/uint64.h src/include/skalibs/unix-timed.h: src/include/skalibs/bufalloc.h src/include/skalibs/buffer.h src/include/skalibs/functypes.h src/include/skalibs/stralloc.h src/include/skalibs/tai.h src/include/skalibs/unix-transactional.h: src/include/skalibs/stralloc.h src/include/skalibs/uint64.h src/include/skalibs/unixconnection.h: src/include/skalibs/unixmessage.h @@ -248,6 +245,7 @@ src/libstddjb/byte_count.o src/libstddjb/byte_count.lo: src/libstddjb/byte_count src/libstddjb/byte_in.o src/libstddjb/byte_in.lo: src/libstddjb/byte_in.c src/include/skalibs/bytestr.h src/libstddjb/byte_rchr.o src/libstddjb/byte_rchr.lo: src/libstddjb/byte_rchr.c src/include/skalibs/bytestr.h src/libstddjb/byte_search.o src/libstddjb/byte_search.lo: src/libstddjb/byte_search.c src/include/skalibs/bytestr.h src/include/skalibs/posixplz.h +src/libstddjb/byte_zzero.o src/libstddjb/byte_zzero.lo: src/libstddjb/byte_zzero.c src/include/skalibs/bytestr.h src/include/skalibs/gccattributes.h src/include/skalibs/nonposix.h src/include/skalibs/sysdeps.h src/libstddjb/case_lowerb.o src/libstddjb/case_lowerb.lo: src/libstddjb/case_lowerb.c src/include/skalibs/bytestr.h src/libstddjb/case_lowers.o src/libstddjb/case_lowers.lo: src/libstddjb/case_lowers.c src/include/skalibs/bytestr.h src/libstddjb/case_startb.o src/libstddjb/case_startb.lo: src/libstddjb/case_startb.c src/include/skalibs/bytestr.h @@ -437,6 +435,7 @@ src/libstddjb/open_read.o src/libstddjb/open_read.lo: src/libstddjb/open_read.c src/libstddjb/open_readb.o src/libstddjb/open_readb.lo: src/libstddjb/open_readb.c src/include/skalibs/djbunix.h src/libstddjb/open_trunc.o src/libstddjb/open_trunc.lo: src/libstddjb/open_trunc.c src/include/skalibs/djbunix.h src/include/skalibs/nonposix.h src/libstddjb/open_write.o src/libstddjb/open_write.lo: src/libstddjb/open_write.c src/include/skalibs/djbunix.h src/include/skalibs/nonposix.h +src/libstddjb/openb_read.o src/libstddjb/openb_read.lo: src/libstddjb/openb_read.c src/include/skalibs/djbunix.h src/include/skalibs/nonposix.h src/libstddjb/openreadfileclose.o src/libstddjb/openreadfileclose.lo: src/libstddjb/openreadfileclose.c src/include/skalibs/allreadwrite.h src/include/skalibs/djbunix.h src/include/skalibs/stralloc.h src/libstddjb/openreadnclose.o src/libstddjb/openreadnclose.lo: src/libstddjb/openreadnclose.c src/include/skalibs/allreadwrite.h src/include/skalibs/djbunix.h src/libstddjb/openslurpclose.o src/libstddjb/openslurpclose.lo: src/libstddjb/openslurpclose.c src/include/skalibs/djbunix.h src/include/skalibs/stralloc.h diff --git a/src/include/skalibs/bytestr.h b/src/include/skalibs/bytestr.h index 3a5c95e..b20a34d 100644 --- a/src/include/skalibs/bytestr.h +++ b/src/include/skalibs/bytestr.h @@ -31,6 +31,7 @@ extern size_t byte_in (char const *, size_t, char const *, size_t) gccattr_pure #define byte_equal(s, n, t) (!memcmp(s, (t), n)) extern size_t byte_count (char const *, size_t, char) gccattr_pure ; extern size_t byte_search (char const *, size_t, char const *, size_t) ; +extern void byte_zzero (char *, size_t) ; #define str_diffb(a, n, b) strncmp(a, (b), n) extern size_t str_chr (char const *, int) gccattr_pure ; diff --git a/src/include/skalibs/djbunix.h b/src/include/skalibs/djbunix.h index 6e2adcc..d3edc97 100644 --- a/src/include/skalibs/djbunix.h +++ b/src/include/skalibs/djbunix.h @@ -44,6 +44,7 @@ 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 openb_read (char const *) ; extern int open_readb (char const *) ; extern int open_excl (char const *) ; extern int open_append (char const *) ; diff --git a/src/libstddjb/byte_zzero.c b/src/libstddjb/byte_zzero.c new file mode 100644 index 0000000..99a5e3a --- /dev/null +++ b/src/libstddjb/byte_zzero.c @@ -0,0 +1,35 @@ +/* ISC license. */ + +#include + +#ifdef SKALIBS_HASEXPLICIT_BZERO + +#include +#include +#include +#include + +void byte_zzero (char *s, size_t n) +{ + explicit_bzero(s, n) ; +} + +#else + +#include +#include +#include + +void _byte_zzero_hook (char *, size_t) gccattr_weak ; + +gccattr_weak void _byte_zzero_hook (char *s, size_t n) +{ +} + +void byte_zzero (char *s, size_t n) +{ + memset(s, 0, n) ; + _byte_zzero_hook(s, n) ; +} + +#endif diff --git a/src/libstddjb/openb_read.c b/src/libstddjb/openb_read.c new file mode 100644 index 0000000..19ec073 --- /dev/null +++ b/src/libstddjb/openb_read.c @@ -0,0 +1,10 @@ +/* ISC license. */ + +#include +#include +#include + +int openb_read (char const *fn) +{ + return open2(fn, O_RDONLY) ; +} diff --git a/src/sysdeps/tryexplicit_bzero.c b/src/sysdeps/tryexplicit_bzero.c new file mode 100644 index 0000000..869c578 --- /dev/null +++ b/src/sysdeps/tryexplicit_bzero.c @@ -0,0 +1,30 @@ +/* ISC license. */ + +#undef _POSIX_C_SOURCE +#undef _XOPEN_SOURCE + +#ifndef __EXTENSIONS__ +#define __EXTENSIONS__ +#endif +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif +#ifndef _BSD_SOURCE +#define _BSD_SOURCE +#endif +#ifndef _NETBSD_SOURCE +#define _NETBSD_SOURCE +#endif +#ifndef _INCOMPLETE_XOPEN_C063 +#define _INCOMPLETE_XOPEN_C063 +#endif + +#include +#include + +int main (void) +{ + char blah[4] ; + explicit_bzero(blah, 4) ; + return 0 ; +} -- cgit v1.2.3