summaryrefslogtreecommitdiff
path: root/glib/gstring.c
diff options
context:
space:
mode:
Diffstat (limited to 'glib/gstring.c')
-rw-r--r--glib/gstring.c130
1 files changed, 107 insertions, 23 deletions
diff --git a/glib/gstring.c b/glib/gstring.c
index fc0780e2b4..91a5e1e2c9 100644
--- a/glib/gstring.c
+++ b/glib/gstring.c
@@ -21,6 +21,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
+#include <ctype.h>
typedef struct _GRealStringChunk GRealStringChunk;
@@ -101,6 +102,8 @@ g_string_chunk_free (GStringChunk *fchunk)
GRealStringChunk *chunk = (GRealStringChunk*) fchunk;
GSList *tmp_list;
+ g_return_if_fail (chunk != NULL);
+
if (chunk->storage_list)
{
GListAllocator *tmp_allocator = g_slist_set_allocator (NULL);
@@ -121,12 +124,14 @@ g_string_chunk_free (GStringChunk *fchunk)
gchar*
g_string_chunk_insert (GStringChunk *fchunk,
- gchar* string)
+ const gchar *string)
{
GRealStringChunk *chunk = (GRealStringChunk*) fchunk;
gint len = strlen (string);
char* pos;
+ g_return_val_if_fail (chunk != NULL, NULL);
+
if ((chunk->storage_next + len + 1) > chunk->this_size)
{
GListAllocator *tmp_allocator = g_slist_set_allocator (NULL);
@@ -155,15 +160,17 @@ g_string_chunk_insert (GStringChunk *fchunk,
gchar*
g_string_chunk_insert_const (GStringChunk *fchunk,
- gchar* string)
+ const gchar *string)
{
GRealStringChunk *chunk = (GRealStringChunk*) fchunk;
char* lookup;
+ g_return_val_if_fail (chunk != NULL, NULL);
+
if (!chunk->const_table)
chunk->const_table = g_hash_table_new (g_str_hash, g_str_equal);
- lookup = (char*) g_hash_table_lookup (chunk->const_table, string);
+ lookup = (char*) g_hash_table_lookup (chunk->const_table, (gchar *)string);
if (!lookup)
{
@@ -198,7 +205,7 @@ g_string_maybe_expand (GRealString* string, gint len)
}
GString*
-g_string_new (gchar *init)
+g_string_new (const gchar *init)
{
GRealString *string;
@@ -220,8 +227,11 @@ g_string_new (gchar *init)
}
void
-g_string_free (GString *string, gint free_segment)
+g_string_free (GString *string,
+ gint free_segment)
{
+ g_return_if_fail (string != NULL);
+
if (free_segment)
g_free (string->str);
@@ -230,7 +240,7 @@ g_string_free (GString *string, gint free_segment)
GString*
g_string_assign (GString *lval,
- char *rval)
+ const gchar *rval)
{
g_string_truncate (lval, 0);
g_string_append (lval, rval);
@@ -239,10 +249,13 @@ g_string_assign (GString *lval,
}
GString*
-g_string_truncate (GString* fstring, gint len)
+g_string_truncate (GString* fstring,
+ gint len)
{
GRealString *string = (GRealString*)fstring;
+ g_return_val_if_fail (string != NULL, NULL);
+
string->len = len;
string->str[len] = 0;
@@ -251,11 +264,16 @@ g_string_truncate (GString* fstring, gint len)
}
GString*
-g_string_append (GString *fstring, gchar *val)
+g_string_append (GString *fstring,
+ const gchar *val)
{
GRealString *string = (GRealString*)fstring;
- int len = strlen (val);
+ int len;
+ g_return_val_if_fail (string != NULL, NULL);
+ g_return_val_if_fail (val != NULL, fstring);
+
+ len = strlen (val);
g_string_maybe_expand (string, len);
strcpy (string->str + string->len, val);
@@ -266,10 +284,12 @@ g_string_append (GString *fstring, gchar *val)
}
GString*
-g_string_append_c (GString *fstring, char c)
+g_string_append_c (GString *fstring,
+ gchar c)
{
GRealString *string = (GRealString*)fstring;
+ g_return_val_if_fail (string != NULL, NULL);
g_string_maybe_expand (string, 1);
string->str[string->len++] = c;
@@ -279,11 +299,16 @@ g_string_append_c (GString *fstring, char c)
}
GString*
-g_string_prepend (GString *fstring, gchar *val)
+g_string_prepend (GString *fstring,
+ const gchar *val)
{
GRealString *string = (GRealString*)fstring;
- gint len = strlen (val);
+ gint len;
+
+ g_return_val_if_fail (string != NULL, NULL);
+ g_return_val_if_fail (val != NULL, fstring);
+ len = strlen (val);
g_string_maybe_expand (string, len);
g_memmove (string->str + len, string->str, string->len);
@@ -298,10 +323,12 @@ g_string_prepend (GString *fstring, gchar *val)
}
GString*
-g_string_prepend_c (GString *fstring, char c)
+g_string_prepend_c (GString *fstring,
+ gchar c)
{
GRealString *string = (GRealString*)fstring;
+ g_return_val_if_fail (string != NULL, NULL);
g_string_maybe_expand (string, 1);
g_memmove (string->str + 1, string->str, string->len);
@@ -315,14 +342,20 @@ g_string_prepend_c (GString *fstring, char c)
return fstring;
}
-GString *
-g_string_insert (GString *fstring, gint pos, gchar *val)
+GString*
+g_string_insert (GString *fstring,
+ gint pos,
+ const gchar *val)
{
GRealString *string = (GRealString*)fstring;
- gint len = strlen (val);
+ gint len;
+ g_return_val_if_fail (string != NULL, NULL);
+ g_return_val_if_fail (val != NULL, fstring);
+ g_return_val_if_fail (pos >= 0, fstring);
g_return_val_if_fail (pos <= string->len, fstring);
+ len = strlen (val);
g_string_maybe_expand (string, len);
g_memmove (string->str + pos + len, string->str + pos, string->len - pos);
@@ -337,10 +370,13 @@ g_string_insert (GString *fstring, gint pos, gchar *val)
}
GString *
-g_string_insert_c (GString *fstring, gint pos, gchar c)
+g_string_insert_c (GString *fstring,
+ gint pos,
+ gchar c)
{
GRealString *string = (GRealString*)fstring;
+ g_return_val_if_fail (string != NULL, NULL);
g_return_val_if_fail (pos <= string->len, fstring);
g_string_maybe_expand (string, 1);
@@ -356,15 +392,21 @@ g_string_insert_c (GString *fstring, gint pos, gchar c)
return fstring;
}
-GString *
-g_string_erase (GString *fstring, gint pos, gint len)
+GString*
+g_string_erase (GString *fstring,
+ gint pos,
+ gint len)
{
GRealString *string = (GRealString*)fstring;
+ g_return_val_if_fail (string != NULL, NULL);
+ g_return_val_if_fail (len >= 0, fstring);
+ g_return_val_if_fail (pos >= 0, fstring);
g_return_val_if_fail (pos <= string->len, fstring);
g_return_val_if_fail (pos + len <= string->len, fstring);
- g_memmove (string->str + pos, string->str + pos + len, string->len - (pos + len));
+ if (pos + len < string->len)
+ g_memmove (string->str + pos, string->str + pos + len, string->len - (pos + len));
string->len -= len;
@@ -373,6 +415,44 @@ g_string_erase (GString *fstring, gint pos, gint len)
return fstring;
}
+GString*
+g_string_down (GString *fstring)
+{
+ GRealString *string = (GRealString*)fstring;
+ gchar *s;
+
+ g_return_val_if_fail (string != NULL, NULL);
+
+ s = string->str;
+
+ while (*s)
+ {
+ *s = tolower (*s);
+ s++;
+ }
+
+ return fstring;
+}
+
+GString*
+g_string_up (GString *fstring)
+{
+ GRealString *string = (GRealString*)fstring;
+ gchar *s;
+
+ g_return_val_if_fail (string != NULL, NULL);
+
+ s = string->str;
+
+ while (*s)
+ {
+ *s = toupper (*s);
+ s++;
+ }
+
+ return fstring;
+}
+
static int
get_length_upper_bound (const gchar* fmt, va_list *args)
{
@@ -512,7 +592,7 @@ g_vsprintf (const gchar *fmt,
static void
g_string_sprintfa_int (GString *string,
- gchar *fmt,
+ const gchar *fmt,
va_list *args,
va_list *args2)
{
@@ -520,7 +600,9 @@ g_string_sprintfa_int (GString *string,
}
void
-g_string_sprintf (GString *string, gchar *fmt, ...)
+g_string_sprintf (GString *string,
+ const gchar *fmt,
+ ...)
{
va_list args, args2;
@@ -536,7 +618,9 @@ g_string_sprintf (GString *string, gchar *fmt, ...)
}
void
-g_string_sprintfa (GString *string, gchar *fmt, ...)
+g_string_sprintfa (GString *string,
+ const gchar *fmt,
+ ...)
{
va_list args, args2;