Portability fixes. Mostly for Android.
[pwmd.git] / src / util-string.h
blob31cb721e2bed919ccb275e50f1e4c17bede15566
1 /*
2 Copyright (C) 2012
3 Ben Kibbey <bjk@luxsci.net>
5 This file is part of pwmd.
7 Pwmd is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 2 of the License, or
10 (at your option) any later version.
12 Pwmd is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with Pwmd. If not, see <http://www.gnu.org/licenses/>.
20 #ifndef UTIL_STRING_H
21 #define UTIL_STRING_H
23 #include <stdarg.h>
25 struct string_s {
26 size_t allocated;
27 size_t len;
28 char *str;
31 // These mimic GLib's string utility functions.
32 void string_free(struct string_s *s, int with_data);
33 struct string_s *string_erase(struct string_s *s, ssize_t pos, ssize_t len);
34 struct string_s *string_new(const char *str);
35 struct string_s *string_append(struct string_s *s, const char *str);
36 struct string_s *string_truncate(struct string_s *s, size_t n);
37 struct string_s *string_prepend(struct string_s *s, const char *str);
38 struct string_s *string_append_printf(struct string_s *s, const char *fmt, ...);
39 struct string_s *string_insert_c(struct string_s *s, ssize_t pos, char c);
41 int strv_printf(char ***array, const char *fmt, ...);
42 void strv_free(char **str);
43 char **strv_cat(char **a, char *str);
44 char **strv_catv(char **dst, char **src);
45 int strv_length(char **a);
46 char **strv_dup(char **src);
47 char *strv_join(char *delim, char **a);
49 char **str_split(const char *str, const char *delim, int count);
50 char *str_down(char *str);
51 char *str_chomp(char *str);
52 char *str_dup(const char *);
53 char *str_asprintf(const char *fmt, ...);
54 int str_vasprintf(char **result, const char *fmt, va_list ap);
56 #endif