aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2025-06-02 18:29:41 +0000
committerLaurent Bercot <ska@appnovation.com>2025-06-02 18:29:41 +0000
commit1f94bad45a8a161410c4564ebe5bbb892556d1bd (patch)
tree87ac42a398ea4536344e6ebe0a506f79d9b3564d
parentdf513f668cbd03f369bfaffa6743b5f21dbfe355 (diff)
downloadskalibs-1f94bad45a8a161410c4564ebe5bbb892556d1bd.tar.gz
Add prog.h and prog_pid_fill
Signed-off-by: Laurent Bercot <ska@appnovation.com>
-rw-r--r--NEWS1
-rw-r--r--doc/upgrade.html1
-rw-r--r--package/deps.mak6
-rw-r--r--src/include/skalibs/prog.h18
-rw-r--r--src/include/skalibs/stddjb.h1
-rw-r--r--src/include/skalibs/strerr.h3
-rw-r--r--src/libstddjb/prog_pid_fill.c15
7 files changed, 41 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index 0436869..c67c0d4 100644
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,7 @@ In 2.14.5.0
- Bugfixes.
- Support for shared libraries on MacOS.
- crc32c implementation: skalibs/crc32c.h
+ - new skalibs/prog.h header for PROG modifications
In 2.14.4.0
diff --git a/doc/upgrade.html b/doc/upgrade.html
index 3903acc..dac4635 100644
--- a/doc/upgrade.html
+++ b/doc/upgrade.html
@@ -21,6 +21,7 @@
<ul>
<li> Support for shared libraries on MacOS. </li>
<li> New <tt>crc32c</tt> function. </li>
+ <li> New <tt>skalibs/prog.h</tt> header, for PROG modifications </li>
</ul>
<h2> in 2.14.4.0 </h2>
diff --git a/package/deps.mak b/package/deps.mak
index e771be2..a3b8641 100644
--- a/package/deps.mak
+++ b/package/deps.mak
@@ -35,6 +35,7 @@ src/include/skalibs/lolstdio.h: src/include/skalibs/bufalloc.h src/include/skali
src/include/skalibs/netstring.h: src/include/skalibs/buffer.h src/include/skalibs/stralloc.h
src/include/skalibs/posixishard.h: src/include/skalibs/gccattributes.h src/include/skalibs/stat.h
src/include/skalibs/posixplz.h: src/include/skalibs/functypes.h src/include/skalibs/gccattributes.h
+src/include/skalibs/prog.h: src/include/skalibs/types.h
src/include/skalibs/random.h: src/include/skalibs/functypes.h src/include/skalibs/stralloc.h
src/include/skalibs/setgroups.h: src/include/skalibs/sysdeps.h
src/include/skalibs/sha512.h: src/include/skalibs/uint64.h
@@ -46,8 +47,8 @@ src/include/skalibs/skamisc.h: src/include/skalibs/buffer.h src/include/skalibs/
src/include/skalibs/socket.h: src/include/skalibs/fcntl.h src/include/skalibs/gccattributes.h src/include/skalibs/posixplz.h src/include/skalibs/tai.h
src/include/skalibs/stat.h: src/include/skalibs/sysdeps.h
src/include/skalibs/stdcrypto.h: src/include/skalibs/blake2s.h src/include/skalibs/crc32c.h src/include/skalibs/sha1.h src/include/skalibs/sha256.h src/include/skalibs/sha512.h
-src/include/skalibs/stddjb.h: src/include/skalibs/alarm.h src/include/skalibs/alloc.h src/include/skalibs/allreadwrite.h src/include/skalibs/bitarray.h src/include/skalibs/bufalloc.h src/include/skalibs/buffer.h src/include/skalibs/bytestr.h src/include/skalibs/cbuffer.h src/include/skalibs/cdb.h src/include/skalibs/cdbmake.h src/include/skalibs/cspawn.h src/include/skalibs/devino.h src/include/skalibs/direntry.h src/include/skalibs/disize.h src/include/skalibs/diuint.h src/include/skalibs/diuint32.h src/include/skalibs/djbtime.h src/include/skalibs/djbunix.h src/include/skalibs/env.h src/include/skalibs/envalloc.h src/include/skalibs/error.h src/include/skalibs/exec.h src/include/skalibs/fmtscan.h src/include/skalibs/functypes.h src/include/skalibs/gccattributes.h src/include/skalibs/genalloc.h src/include/skalibs/genwrite.h src/include/skalibs/iopause.h src/include/skalibs/ip46.h src/include/skalibs/lolstdio.h src/include/skalibs/netstring.h src/include/skalibs/segfault.h src/include/skalibs/selfpipe.h src/include/skalibs/setgroups.h src/include/skalibs/sgetopt.h src/include/skalibs/sig.h src/include/skalibs/siovec.h src/include/skalibs/skamisc.h src/include/skalibs/socket.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/strerr.h: src/include/skalibs/gccattributes.h
+src/include/skalibs/stddjb.h: src/include/skalibs/alarm.h src/include/skalibs/alloc.h src/include/skalibs/allreadwrite.h src/include/skalibs/bitarray.h src/include/skalibs/bufalloc.h src/include/skalibs/buffer.h src/include/skalibs/bytestr.h src/include/skalibs/cbuffer.h src/include/skalibs/cdb.h src/include/skalibs/cdbmake.h src/include/skalibs/cspawn.h src/include/skalibs/devino.h src/include/skalibs/direntry.h src/include/skalibs/disize.h src/include/skalibs/diuint.h src/include/skalibs/diuint32.h src/include/skalibs/djbtime.h src/include/skalibs/djbunix.h src/include/skalibs/env.h src/include/skalibs/envalloc.h src/include/skalibs/error.h src/include/skalibs/exec.h src/include/skalibs/fmtscan.h src/include/skalibs/functypes.h src/include/skalibs/gccattributes.h src/include/skalibs/genalloc.h src/include/skalibs/genwrite.h src/include/skalibs/iopause.h src/include/skalibs/ip46.h src/include/skalibs/lolstdio.h src/include/skalibs/netstring.h src/include/skalibs/prog.h src/include/skalibs/segfault.h src/include/skalibs/selfpipe.h src/include/skalibs/setgroups.h src/include/skalibs/sgetopt.h src/include/skalibs/sig.h src/include/skalibs/siovec.h src/include/skalibs/skamisc.h src/include/skalibs/socket.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/strerr.h: src/include/skalibs/gccattributes.h src/include/skalibs/prog.h
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
@@ -482,6 +483,7 @@ src/libstddjb/openwritevnclose_unsafe5.o src/libstddjb/openwritevnclose_unsafe5.
src/libstddjb/path_canonicalize.o src/libstddjb/path_canonicalize.lo: src/libstddjb/path_canonicalize.c src/include/skalibs/djbunix.h
src/libstddjb/pipe_internal.o src/libstddjb/pipe_internal.lo: src/libstddjb/pipe_internal.c src/include/skalibs/djbunix.h src/include/skalibs/fcntl.h src/include/skalibs/nonposix.h src/include/skalibs/sysdeps.h
src/libstddjb/prog.o src/libstddjb/prog.lo: src/libstddjb/prog.c src/include/skalibs/strerr.h
+src/libstddjb/prog_pid_fill.o src/libstddjb/prog_pid_fill.lo: src/libstddjb/prog_pid_fill.c src/include/skalibs/prog.h src/include/skalibs/types.h
src/libstddjb/readnclose.o src/libstddjb/readnclose.lo: src/libstddjb/readnclose.c src/include/skalibs/allreadwrite.h src/include/skalibs/djbunix.h
src/libstddjb/rm_rf.o src/libstddjb/rm_rf.lo: src/libstddjb/rm_rf.c src/include/skalibs/djbunix.h src/include/skalibs/skamisc.h
src/libstddjb/rm_rf_in_tmp.o src/libstddjb/rm_rf_in_tmp.lo: src/libstddjb/rm_rf_in_tmp.c src/include/skalibs/djbunix.h src/include/skalibs/stralloc.h
diff --git a/src/include/skalibs/prog.h b/src/include/skalibs/prog.h
new file mode 100644
index 0000000..de23e1f
--- /dev/null
+++ b/src/include/skalibs/prog.h
@@ -0,0 +1,18 @@
+/* ISC license. */
+
+#ifndef SKALIBS_PROG_H
+#define SKALIBS_PROG_H
+
+#include <stddef.h>
+#include <skalibs/types.h>
+
+extern char const *PROG ;
+
+#define PROG_pid_len(name) (sizeof(name) + 5 + PID_FMT)
+
+#define PROG_pid_fill(buf, name) prog_pid_fill(buf, (name), sizeof(name)-1)
+#define PROG_pid_set(buf, name) do { PROG_pid_fill(buf, name) ; PROG = buf ; } while (0)
+
+extern void prog_pid_fill (char *, char const *, size_t) ;
+
+#endif
diff --git a/src/include/skalibs/stddjb.h b/src/include/skalibs/stddjb.h
index ab5bcaf..d57a3df 100644
--- a/src/include/skalibs/stddjb.h
+++ b/src/include/skalibs/stddjb.h
@@ -39,6 +39,7 @@
#include <skalibs/iopause.h>
#include <skalibs/lolstdio.h>
#include <skalibs/netstring.h>
+#include <skalibs/prog.h>
#include <skalibs/segfault.h>
#include <skalibs/selfpipe.h>
#include <skalibs/setgroups.h>
diff --git a/src/include/skalibs/strerr.h b/src/include/skalibs/strerr.h
index 2448981..2ece01e 100644
--- a/src/include/skalibs/strerr.h
+++ b/src/include/skalibs/strerr.h
@@ -4,6 +4,7 @@
#define SKALIBS_STRERR_H
#include <skalibs/gccattributes.h>
+#include <skalibs/prog.h>
extern void strerr_warnv (char const *const *, unsigned int) ;
extern void strerr_warnvsys (char const *const *, unsigned int) ;
@@ -21,8 +22,6 @@ extern void strerr_dievsys(int, char const *const *, unsigned int) gccattr_noret
#define strerr_die(e, ...) strerr_dien(e, sizeof(strerr_array(__VA_ARGS__))/sizeof(char const *), __VA_ARGS__)
#define strerr_diesys(e, ...) strerr_diensys(e, sizeof(strerr_array(__VA_ARGS__))/sizeof(char const *), __VA_ARGS__)
-extern char const *PROG ;
-
#define strerr_warnwn(n, ...) strerr_warnn((n)+2, PROG, ": warning: ", __VA_ARGS__)
#define strerr_warnwnsys(n, ...) strerr_warnnsys((n)+2, PROG, ": warning: ", __VA_ARGS__)
#define strerr_warnfn(n, ...) strerr_warnn((n)+2, PROG, ": fatal: ", __VA_ARGS__)
diff --git a/src/libstddjb/prog_pid_fill.c b/src/libstddjb/prog_pid_fill.c
new file mode 100644
index 0000000..1214b04
--- /dev/null
+++ b/src/libstddjb/prog_pid_fill.c
@@ -0,0 +1,15 @@
+/* ISC license. */
+
+#include <string.h>
+#include <unistd.h>
+
+#include <skalibs/types.h>
+#include <skalibs/prog.h>
+
+void prog_pid_fill (char *s, char const *name, size_t len)
+{
+ memcpy(s, name, len) ; s += len ;
+ memcpy(s, ": pid ", 6) ; s += 6 ;
+ s += pid_fmt(s, pid_fmt(s, getpid())) ;
+ *s++ = 0 ;
+}