Thu Jun 29 15:57:28 2000  Owen Taylor  <otaylor@redhat.com>

        * NEWS: updated

	* Makefile.am: added snapcheck target to go along with snapshot

	* gstring.c glib.h (g_string_hash): Add g_string_hash to
	go along with g_string_equal.

Tue Jun 27 12:40:23 EDT 2000  David A. Wheeler <dwheeler@dwheeler.com>

	* glib.h: Added g_string_equal for comparing GStrings;
	changed g_str_equal so it returns gboolean (instead of gint).

	* gstring.c: Modified GString implementation to support embedded
	ASCII NUL ('\0') characters, and implemented g_string_equal.

	* testglib.c tests/string-test.c: Added tests for g_string_equal
	and tests for proper handling of embedded ASCII NUL characters.
This commit is contained in:
Owen Taylor
2000-06-29 20:09:36 +00:00
committed by Owen Taylor
parent 6bbcc10e8d
commit 6e47268c14
18 changed files with 382 additions and 33 deletions

View File

@@ -67,7 +67,7 @@ static GMemChunk *string_mem_chunk = NULL;
/* Hash Functions.
*/
gint
gboolean
g_str_equal (gconstpointer v1,
gconstpointer v2)
{
@@ -265,6 +265,48 @@ g_string_free (GString *string,
G_UNLOCK (string_mem_chunk);
}
gboolean
g_string_equal (const GString *v,
const GString *v2)
{
gchar *p, *q;
GRealString *string1 = (GRealString *) v;
GRealString *string2 = (GRealString *) v2;
gint i = string1->len;
if (i != string2->len)
return FALSE;
p = string1->str;
q = string2->str;
while (i)
{
if (*p != *q)
return FALSE;
p++;
q++;
i--;
}
return TRUE;
}
/* 31 bit hash function */
guint
g_string_hash (const GString *str)
{
const gchar *p = str->str;
gint n = str->len;
guint h = 0;
while (n--)
{
h = (h << 5) - h + *p;
p++;
}
return h;
}
GString*
g_string_assign (GString *string,
const gchar *rval)
@@ -320,7 +362,7 @@ g_string_insert_len (GString *fstring,
g_memmove (string->str + pos + len, string->str + pos, string->len - pos);
/* insert the new string */
strncpy (string->str + pos, val, len);
g_memmove (string->str + pos, val, len);
string->len += len;
@@ -457,15 +499,17 @@ g_string_down (GString *fstring)
{
GRealString *string = (GRealString *) fstring;
guchar *s;
gint n = string->len;
g_return_val_if_fail (string != NULL, NULL);
s = string->str;
while (*s)
while (n)
{
*s = tolower (*s);
s++;
n--;
}
return fstring;
@@ -476,15 +520,17 @@ g_string_up (GString *fstring)
{
GRealString *string = (GRealString *) fstring;
guchar *s;
gint n = string->len;
g_return_val_if_fail (string != NULL, NULL);
s = string->str;
while (*s)
while (n)
{
*s = toupper (*s);
s++;
n--;
}
return fstring;