summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2016-04-21 22:36:21 +0100
committerVincent Sanders <vince@kyllikki.org>2016-04-21 22:36:21 +0100
commit7d9c9dba3610bb14c0de6acb1bdaf9ec49a66f33 (patch)
tree5efbbb0accdce7586dfe518f3ea0c00a6e8a9c43 /utils
parent3488e337b64f7444f3021ca98f391d4ded3326e4 (diff)
downloadnetsurf-7d9c9dba3610bb14c0de6acb1bdaf9ec49a66f33.tar.gz
netsurf-7d9c9dba3610bb14c0de6acb1bdaf9ec49a66f33.tar.bz2
Split utils header into string functions and everything else
split out the string handling API from the rest of the utils header and fix up all the fallout.
Diffstat (limited to 'utils')
-rw-r--r--utils/file.c1
-rw-r--r--utils/messages.c1
-rw-r--r--utils/string.h115
-rw-r--r--utils/url.c2
-rw-r--r--utils/utils.c1
-rw-r--r--utils/utils.h85
6 files changed, 119 insertions, 86 deletions
diff --git a/utils/file.c b/utils/file.c
index 00f8eefec..888811004 100644
--- a/utils/file.c
+++ b/utils/file.c
@@ -33,6 +33,7 @@
#include "utils/corestrings.h"
#include "utils/url.h"
#include "utils/nsurl.h"
+#include "utils/string.h"
#include "utils/file.h"
/**
diff --git a/utils/messages.c b/utils/messages.c
index d652fefae..d343cfcd1 100644
--- a/utils/messages.c
+++ b/utils/messages.c
@@ -25,6 +25,7 @@
* fast access.
*/
+#include <stdlib.h>
#include <assert.h>
#include <errno.h>
#include <stdio.h>
diff --git a/utils/string.h b/utils/string.h
new file mode 100644
index 000000000..03d891700
--- /dev/null
+++ b/utils/string.h
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2016 Vincent Sanders <vince@netsurf-browser.org>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * \file
+ * \brief Interface to utility string handling.
+ */
+
+#ifndef _NETSURF_UTILS_STRING_H_
+#define _NETSURF_UTILS_STRING_H_
+
+#include <stdlib.h>
+#include <stdarg.h>
+
+#include "utils/errors.h"
+
+
+/**
+ * Replace consecutive whitespace with a single space.
+ *
+ * @todo determine if squash_whitespace utf-8 safe and that it needs to be
+ *
+ * \param s source string
+ * \return heap allocated result, or NULL on memory exhaustion
+ */
+char *squash_whitespace(const char * s);
+
+
+/**
+ * Converts NUL terminated UTF-8 encoded string s containing zero or more
+ * spaces (char 32) or TABs (char 9) to non-breaking spaces
+ * (0xC2 + 0xA0 in UTF-8 encoding).
+ *
+ * Caller needs to free() result. Returns NULL in case of error. No
+ * checking is done on validness of the UTF-8 input string.
+ */
+char *cnv_space2nbsp(const char *s);
+
+
+/**
+ * Create a human readable representation of a size in bytes.
+ *
+ * Does a simple conversion which assumes the user speaks English.
+ * The buffer returned is one of three static ones so may change each
+ * time this call is made. Don't store the buffer for later use.
+ * It's done this way for convenience and to fight possible memory
+ * leaks, it is not necessarily pretty.
+ *
+ * @param bytesize The size in bytes.
+ * @return A human readable string representing the size.
+ */
+char *human_friendly_bytesize(unsigned long bytesize);
+
+
+/**
+ * Generate a string from one or more component elements separated with
+ * a single value.
+ *
+ * This is similar in intent to the perl join function creating a
+ * single delimited string from an array of several.
+ *
+ * @note If a string is allocated it must be freed by the caller.
+ *
+ * @param[in,out] str pointer to string pointer if this is NULL enough
+ * storage will be allocated for the complete path.
+ * @param[in,out] size The size of the space available if \a str not
+ * NULL on input and if not NULL set to the total
+ * output length on output.
+ * @param[in] sep The character to separate the elements with.
+ * @param[in] nelm The number of elements up to a maximum of 16.
+ * @param[in] ap The elements of the path as string pointers.
+ * @return NSERROR_OK and the complete path is written to str or error
+ * code on failure.
+ */
+nserror vsnstrjoin(char **str, size_t *size, char sep, size_t nelm, va_list ap);
+
+
+/**
+ * Generate a string from one or more component elements separated with
+ * a single value.
+ *
+ * This is similar in intent to the Perl join function creating a
+ * single delimited string from an array of several.
+ *
+ * @note If a string is allocated it must be freed by the caller.
+ *
+ * @param[in,out] str pointer to string pointer if this is NULL enough
+ * storage will be allocated for the complete path.
+ * @param[in,out] size The size of the space available if \a str not
+ * NULL on input and if not NULL set to the total
+ * output length on output.
+ * @param[in] sep The character to separate the elements with.
+ * @param[in] nelm The number of elements up to a maximum of 16.
+ * @param[in] ... The elements of the path as string pointers.
+ * @return NSERROR_OK and the complete path is written to str or error
+ * code on failure.
+ */
+nserror snstrjoin(char **str, size_t *size, char sep, size_t nelm, ...);
+
+#endif
diff --git a/utils/url.c b/utils/url.c
index 450d47188..1e3ef423c 100644
--- a/utils/url.c
+++ b/utils/url.c
@@ -24,11 +24,11 @@
#include <ctype.h>
#include <string.h>
+#include <stdlib.h>
#include <curl/curl.h>
#include "utils/config.h"
#include "utils/log.h"
-#include "utils/utils.h"
#include "utils/url.h"
diff --git a/utils/utils.c b/utils/utils.c
index 2a41c8a4c..1509a6b09 100644
--- a/utils/utils.c
+++ b/utils/utils.c
@@ -40,6 +40,7 @@
#include "utils/sys_time.h"
#include "utils/inet.h"
#include "utils/dirent.h"
+#include "utils/string.h"
#include "utils/utils.h"
/* exported interface documented in utils/utils.h */
diff --git a/utils/utils.h b/utils/utils.h
index a4362069f..d4bad9d0c 100644
--- a/utils/utils.h
+++ b/utils/utils.h
@@ -28,10 +28,6 @@
#include <inttypes.h>
#include <stdbool.h>
-#include <stdlib.h>
-#include <stdarg.h>
-
-#include "utils/errors.h"
/** Rectangle coordinates */
struct rect {
@@ -115,91 +111,10 @@ struct dirent;
/**
- * Replace consecutive whitespace with a single space.
- *
- * @todo determine if squash_whitespace utf-8 safe and that it needs to be
- *
- * \param s source string
- * \return heap allocated result, or NULL on memory exhaustion
- */
-char * squash_whitespace(const char * s);
-
-/**
- * Converts NUL terminated UTF-8 encoded string s containing zero or more
- * spaces (char 32) or TABs (char 9) to non-breaking spaces
- * (0xC2 + 0xA0 in UTF-8 encoding).
- *
- * Caller needs to free() result. Returns NULL in case of error. No
- * checking is done on validness of the UTF-8 input string.
- */
-char *cnv_space2nbsp(const char *s);
-
-/**
* Check if a directory exists.
*/
bool is_dir(const char *path);
-/**
- * Create a human redable representation of a size in bytes.
- *
- * Does a simple conversion which assumes the user speaks English.
- * The buffer returned is one of three static ones so may change each
- * time this call is made. Don't store the buffer for later use.
- * It's done this way for convenience and to fight possible memory
- * leaks, it is not necessarily pretty.
- *
- * @todo This implementation is strange doe sit need
- * reconsidering?
- *
- * @param bytesize The size in bytes.
- * @return A human readable string representing the size.
- */
-char *human_friendly_bytesize(unsigned long bytesize);
-
-
-/**
- * Generate a string from one or more component elemnts separated with
- * a single value.
- *
- * This is similar in intent to the perl join function creating a
- * single delimited string from an array of several.
- *
- * @note If a string is allocated it must be freed by the caller.
- *
- * @param[in,out] str pointer to string pointer if this is NULL enough
- * storage will be allocated for the complete path.
- * @param[in,out] size The size of the space available if \a str not
- * NULL on input and if not NULL set to the total
- * output length on output.
- * @param[in] sep The character to separete the elemnts with.
- * @param[in] nelm The number of elements up to a maximum of 16.
- * @param[in] ap The elements of the path as string pointers.
- * @return NSERROR_OK and the complete path is written to str or error
- * code on faliure.
- */
-nserror vsnstrjoin(char **str, size_t *size, char sep, size_t nelm, va_list ap);
-
-/**
- * Generate a string from one or more component elemnts separated with
- * a single value.
- *
- * This is similar in intent to the perl join function creating a
- * single delimited string from an array of several.
- *
- * @note If a string is allocated it must be freed by the caller.
- *
- * @param[in,out] str pointer to string pointer if this is NULL enough
- * storage will be allocated for the complete path.
- * @param[in,out] size The size of the space available if \a str not
- * NULL on input and if not NULL set to the total
- * output length on output.
- * @param[in] sep The character to separete the elemnts with.
- * @param[in] nelm The number of elements up to a maximum of 16.
- * @param[in] ... The elements of the path as string pointers.
- * @return NSERROR_OK and the complete path is written to str or error
- * code on faliure.
- */
-nserror snstrjoin(char **str, size_t *size, char sep, size_t nelm, ...);
/* Platform specific functions */
void warn_user(const char *warning, const char *detail);