aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstddjb
diff options
context:
space:
mode:
authorLaurent Bercot <ska-skaware@skarnet.org>2025-10-17 20:55:48 +0000
committerLaurent Bercot <ska-skaware@skarnet.org>2025-10-17 20:55:48 +0000
commit1d769dd630932b265cd15bb2e5b97459766e3125 (patch)
treed76bd3467c5b0388b6fecfcf435f85897b8a27aa /src/libstddjb
parent96b537f42695da1b865588baf591fdfcae76bd41 (diff)
downloadskalibs-1d769dd630932b265cd15bb2e5b97459766e3125.tar.gz
Add string qsort/bsearch cmp functions and avltreeb wrappers
Diffstat (limited to 'src/libstddjb')
-rw-r--r--src/libstddjb/bytestr-internal.h11
-rw-r--r--src/libstddjb/fd_unlock.c2
-rw-r--r--src/libstddjb/gol_main.c2
-rw-r--r--src/libstddjb/str_bcmp.c10
-rw-r--r--src/libstddjb/str_cmp.c10
-rw-r--r--src/libstddjb/stringkey_bcmp.c12
-rw-r--r--src/libstddjb/stringkey_cmp.c13
7 files changed, 58 insertions, 2 deletions
diff --git a/src/libstddjb/bytestr-internal.h b/src/libstddjb/bytestr-internal.h
new file mode 100644
index 0000000..effb0c5
--- /dev/null
+++ b/src/libstddjb/bytestr-internal.h
@@ -0,0 +1,11 @@
+/* ISC license. */
+
+#ifndef BYTESTR_INTERNAL_H
+#define BYTESTR_INTERNAL_H
+
+struct stringkey_s
+{
+ char const *s ;
+} ;
+
+#endif
diff --git a/src/libstddjb/fd_unlock.c b/src/libstddjb/fd_unlock.c
index 64984b9..f9758b5 100644
--- a/src/libstddjb/fd_unlock.c
+++ b/src/libstddjb/fd_unlock.c
@@ -8,7 +8,7 @@
void fd_unlock (int fd)
{
- struct flock fl =
+ static struct flock const fl =
{
.l_type = F_UNLCK,
.l_whence = SEEK_SET,
diff --git a/src/libstddjb/gol_main.c b/src/libstddjb/gol_main.c
index 1915fca..d7b1026 100644
--- a/src/libstddjb/gol_main.c
+++ b/src/libstddjb/gol_main.c
@@ -7,7 +7,7 @@
unsigned int gol_main (int argc, char const *const *argv, gol_bool const *b, unsigned int bn, gol_arg const *a, unsigned int an, uint64_t *br, char const **ar)
{
- if (argc < 1 || argv[argc]) strerr_diefu1x(100, "gol: invalid argc/argv") ;
+ if (argc < 1 || argv[argc]) strerr_diefu1x(103, "gol: invalid argc/argv") ;
if (argc == 1) return 1 ;
return 1 + gol_argv(argv + 1, b, bn, a, an, br, ar) ;
}
diff --git a/src/libstddjb/str_bcmp.c b/src/libstddjb/str_bcmp.c
new file mode 100644
index 0000000..e2248e1
--- /dev/null
+++ b/src/libstddjb/str_bcmp.c
@@ -0,0 +1,10 @@
+/* ISC license. */
+
+#include <string.h>
+
+#include <skalibs/bytestr.h>
+
+int str_bcmp (void const *a, void const *b)
+{
+ return strcmp((char const *)a, *(char const *const *)b) ;
+}
diff --git a/src/libstddjb/str_cmp.c b/src/libstddjb/str_cmp.c
new file mode 100644
index 0000000..b19b834
--- /dev/null
+++ b/src/libstddjb/str_cmp.c
@@ -0,0 +1,10 @@
+/* ISC license. */
+
+#include <string.h>
+
+#include <skalibs/bytestr.h>
+
+int str_cmp (void const *a, void const *b)
+{
+ return strcmp(*(char const *const *)a, *(char const *const *)b) ;
+}
diff --git a/src/libstddjb/stringkey_bcmp.c b/src/libstddjb/stringkey_bcmp.c
new file mode 100644
index 0000000..e77c35e
--- /dev/null
+++ b/src/libstddjb/stringkey_bcmp.c
@@ -0,0 +1,12 @@
+/* ISC license. */
+
+#include <string.h>
+
+#include <skalibs/bytestr.h>
+#include "bytestr-internal.h"
+
+int stringkey_bcmp (void const *a, void const *b)
+{
+ struct stringkey_s const *bb = b ;
+ return strcmp((char const *)a, bb->s) ;
+}
diff --git a/src/libstddjb/stringkey_cmp.c b/src/libstddjb/stringkey_cmp.c
new file mode 100644
index 0000000..5c683c1
--- /dev/null
+++ b/src/libstddjb/stringkey_cmp.c
@@ -0,0 +1,13 @@
+/* ISC license. */
+
+#include <string.h>
+
+#include <skalibs/bytestr.h>
+#include "bytestr-internal.h"
+
+int stringkey_cmp (void const *a, void const *b)
+{
+ struct stringkey_s const *aa = a ;
+ struct stringkey_s const *bb = b ;
+ return strcmp(aa->s, bb->s) ;
+}