chiark / gitweb /
Prep v239: Unmask delete_chars()
[elogind.git] / src / basic / string-util.h
index 4270d3091745702b5162f49f6d288fbf8cfd8052..d3a01a65ee137006c563fba013b0311d0f923726 100644 (file)
@@ -1,12 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1+ */
 #pragma once
 
-/***
-  This file is part of systemd.
-
-  Copyright 2010 Lennart Poettering
-***/
-
 #include <alloca.h>
 #include <stdbool.h>
 #include <stddef.h>
@@ -59,7 +53,7 @@ static inline const char *empty_to_null(const char *p) {
 }
 
 #if 0 /// UNNEEDED by elogind
-static inline const char *strdash_if_empty(const char *str) {
+static inline const char *empty_to_dash(const char *str) {
         return isempty(str) ? "-" : str;
 }
 #endif // 0
@@ -124,13 +118,10 @@ char *strjoin_real(const char *x, ...) _sentinel_;
         })
 
 char *strstrip(char *s);
-#if 0 /// UNNEEDED by elogind
 char *delete_chars(char *s, const char *bad);
-#endif // 0
 char *delete_trailing_chars(char *s, const char *bad);
 char *truncate_nl(char *s);
 
-#if 0 /// UNNEEDED by elogind
 static inline char *skip_leading_chars(const char *s, const char *bad) {
 
         if (!s)
@@ -142,6 +133,7 @@ static inline char *skip_leading_chars(const char *s, const char *bad) {
         return (char*) s + strspn(s, bad);
 }
 
+#if 0 /// UNNEEDED by elogind
 char ascii_tolower(char x);
 char *ascii_strlower(char *s);
 char *ascii_strlower_n(char *s, size_t n);
@@ -164,7 +156,14 @@ static inline bool _pure_ in_charset(const char *s, const char* charset) {
 bool string_has_cc(const char *p, const char *ok) _pure_;
 
 char *ellipsize_mem(const char *s, size_t old_length_bytes, size_t new_length_columns, unsigned percent);
-char *ellipsize(const char *s, size_t length, unsigned percent);
+static inline char *ellipsize(const char *s, size_t length, unsigned percent) {
+        return ellipsize_mem(s, strlen(s), length, percent);
+}
+
+char *cellescape(char *buf, size_t len, const char *s);
+
+/* This limit is arbitrary, enough to give some idea what the string contains */
+#define CELLESCAPE_DEFAULT_LENGTH 64
 
 bool nulstr_contains(const char *nulstr, const char *needle);
 
@@ -217,3 +216,21 @@ static inline size_t strlen_ptr(const char *s) {
 
         return strlen(s);
 }
+
+/* Like startswith(), but operates on arbitrary memory blocks */
+static inline void *memory_startswith(const void *p, size_t sz, const char *token) {
+        size_t n;
+
+        assert(token);
+
+        n = strlen(token);
+        if (sz < n)
+                return NULL;
+
+        assert(p);
+
+        if (memcmp(p, token, n) != 0)
+                return NULL;
+
+        return (uint8_t*) p + n;
+}