+1999-08-03 Tor Lillqvist <tml@iki.fi>
+
+ * glib.h
+ * gstrfuncs.c
+ * tests/strfunc-test.c: Rename g_strccpy to g_strcompress and
+ g_strecpy to g_strescape per Tim Janik's suggestion. Dropped the
+ destination parameter, always g_malloc a new string. Fix bug in
+ g_strcompress, octal digits were gobbled up without limit, should
+ use max three.
+
+ Sources that use g_strescape must have ifdefs to be compilable
+ both with GLib 1.2 and 1.3.
+
Sat Jul 31 17:52:03 PDT 1999 Manish Singh <yosh@gimp.org>
* glib.h
+1999-08-03 Tor Lillqvist <tml@iki.fi>
+
+ * glib.h
+ * gstrfuncs.c
+ * tests/strfunc-test.c: Rename g_strccpy to g_strcompress and
+ g_strecpy to g_strescape per Tim Janik's suggestion. Dropped the
+ destination parameter, always g_malloc a new string. Fix bug in
+ g_strcompress, octal digits were gobbled up without limit, should
+ use max three.
+
+ Sources that use g_strescape must have ifdefs to be compilable
+ both with GLib 1.2 and 1.3.
+
Sat Jul 31 17:52:03 PDT 1999 Manish Singh <yosh@gimp.org>
* glib.h
+1999-08-03 Tor Lillqvist <tml@iki.fi>
+
+ * glib.h
+ * gstrfuncs.c
+ * tests/strfunc-test.c: Rename g_strccpy to g_strcompress and
+ g_strecpy to g_strescape per Tim Janik's suggestion. Dropped the
+ destination parameter, always g_malloc a new string. Fix bug in
+ g_strcompress, octal digits were gobbled up without limit, should
+ use max three.
+
+ Sources that use g_strescape must have ifdefs to be compilable
+ both with GLib 1.2 and 1.3.
+
Sat Jul 31 17:52:03 PDT 1999 Manish Singh <yosh@gimp.org>
* glib.h
+1999-08-03 Tor Lillqvist <tml@iki.fi>
+
+ * glib.h
+ * gstrfuncs.c
+ * tests/strfunc-test.c: Rename g_strccpy to g_strcompress and
+ g_strecpy to g_strescape per Tim Janik's suggestion. Dropped the
+ destination parameter, always g_malloc a new string. Fix bug in
+ g_strcompress, octal digits were gobbled up without limit, should
+ use max three.
+
+ Sources that use g_strescape must have ifdefs to be compilable
+ both with GLib 1.2 and 1.3.
+
Sat Jul 31 17:52:03 PDT 1999 Manish Singh <yosh@gimp.org>
* glib.h
+1999-08-03 Tor Lillqvist <tml@iki.fi>
+
+ * glib.h
+ * gstrfuncs.c
+ * tests/strfunc-test.c: Rename g_strccpy to g_strcompress and
+ g_strecpy to g_strescape per Tim Janik's suggestion. Dropped the
+ destination parameter, always g_malloc a new string. Fix bug in
+ g_strcompress, octal digits were gobbled up without limit, should
+ use max three.
+
+ Sources that use g_strescape must have ifdefs to be compilable
+ both with GLib 1.2 and 1.3.
+
Sat Jul 31 17:52:03 PDT 1999 Manish Singh <yosh@gimp.org>
* glib.h
+1999-08-03 Tor Lillqvist <tml@iki.fi>
+
+ * glib.h
+ * gstrfuncs.c
+ * tests/strfunc-test.c: Rename g_strccpy to g_strcompress and
+ g_strecpy to g_strescape per Tim Janik's suggestion. Dropped the
+ destination parameter, always g_malloc a new string. Fix bug in
+ g_strcompress, octal digits were gobbled up without limit, should
+ use max three.
+
+ Sources that use g_strescape must have ifdefs to be compilable
+ both with GLib 1.2 and 1.3.
+
Sat Jul 31 17:52:03 PDT 1999 Manish Singh <yosh@gimp.org>
* glib.h
+1999-08-03 Tor Lillqvist <tml@iki.fi>
+
+ * glib.h
+ * gstrfuncs.c
+ * tests/strfunc-test.c: Rename g_strccpy to g_strcompress and
+ g_strecpy to g_strescape per Tim Janik's suggestion. Dropped the
+ destination parameter, always g_malloc a new string. Fix bug in
+ g_strcompress, octal digits were gobbled up without limit, should
+ use max three.
+
+ Sources that use g_strescape must have ifdefs to be compilable
+ both with GLib 1.2 and 1.3.
+
Sat Jul 31 17:52:03 PDT 1999 Manish Singh <yosh@gimp.org>
* glib.h
+1999-08-03 Tor Lillqvist <tml@iki.fi>
+
+ * glib.h
+ * gstrfuncs.c
+ * tests/strfunc-test.c: Rename g_strccpy to g_strcompress and
+ g_strecpy to g_strescape per Tim Janik's suggestion. Dropped the
+ destination parameter, always g_malloc a new string. Fix bug in
+ g_strcompress, octal digits were gobbled up without limit, should
+ use max three.
+
+ Sources that use g_strescape must have ifdefs to be compilable
+ both with GLib 1.2 and 1.3.
+
Sat Jul 31 17:52:03 PDT 1999 Manish Singh <yosh@gimp.org>
* glib.h
* Double ended queue implementation.
* GLib macros for printf() formatting, e.g. G_GULONG_FORMAT = "lu"
* New thread-safe random number generator Mersenne Twister.
-
+* g_strcompress() added, g_strescape() had a slight API change, and
+ more tightly defined semantics.
Overview of Changes in GLib 1.2.1:
g_strcasecmp
g_strchomp
g_strchug
+ g_strcompress
g_strconcat
- g_strccpy
g_strdelimit
g_strdown
g_strdup
g_strdup_printf
g_strdup_vprintf
- g_strecpy
g_strerror
g_strescape
g_strfreev
#define g_strstrip( string ) g_strchomp (g_strchug (string))
/* String utility functions that return a newly allocated string which
- * ought to be freed from the caller at some point.
+ * ought to be freed with g_free from the caller at some point.
*/
gchar* g_strdup (const gchar *str);
gchar* g_strdup_printf (const gchar *format,
...); /* NULL terminated */
gchar* g_strjoin (const gchar *separator,
...); /* NULL terminated */
-/* Copy a string interpreting C string -style escape sequences.
- * The recognized sequences are \b \f \n \r \t \\ \" and the octal format.
+/* Make a copy of a string interpreting C string -style escape
+ * sequences. Inverse of g_strescape. The recognized sequences are \b
+ * \f \n \r \t \\ \" and the octal format.
*/
-gchar* g_strccpy (gchar *dest,
- const gchar *source);
+gchar* g_strcompress (const gchar *source);
+
/* Copy a string escaping nonprintable characters like in C strings.
- * Inverse of g_strccpy. The exceptions parameter if non-NULL points
- * to a string containing characters that are not escaped.
+ * Inverse of g_strcompress. The exceptions parameter, if non-NULL, points
+ * to a string containing characters that are not to be escaped.
*/
-gchar* g_strecpy (gchar *dest,
- const gchar *source,
+gchar* g_strescape (const gchar *source,
const gchar *exceptions);
-
-/* deprecated function (used to be a real function) */
-#define g_strescape(src) g_strecpy (g_new (char, strlen (src)*4+1), (src), NULL)
+/* Deprecated API:
+ * gchar* g_strescape (const gchar *source);
+ * Luckily this function wasn't much used.
+ * Add a second NULL parameter in calls for mostly identical semantics.
+ */
gpointer g_memdup (gconstpointer mem,
guint byte_size);
g_strcasecmp
g_strchomp
g_strchug
+ g_strcompress
g_strconcat
- g_strccpy
g_strdelimit
g_strdown
g_strdup
g_strdup_printf
g_strdup_vprintf
- g_strecpy
g_strerror
g_strescape
g_strfreev
#define g_strstrip( string ) g_strchomp (g_strchug (string))
/* String utility functions that return a newly allocated string which
- * ought to be freed from the caller at some point.
+ * ought to be freed with g_free from the caller at some point.
*/
gchar* g_strdup (const gchar *str);
gchar* g_strdup_printf (const gchar *format,
...); /* NULL terminated */
gchar* g_strjoin (const gchar *separator,
...); /* NULL terminated */
-/* Copy a string interpreting C string -style escape sequences.
- * The recognized sequences are \b \f \n \r \t \\ \" and the octal format.
+/* Make a copy of a string interpreting C string -style escape
+ * sequences. Inverse of g_strescape. The recognized sequences are \b
+ * \f \n \r \t \\ \" and the octal format.
*/
-gchar* g_strccpy (gchar *dest,
- const gchar *source);
+gchar* g_strcompress (const gchar *source);
+
/* Copy a string escaping nonprintable characters like in C strings.
- * Inverse of g_strccpy. The exceptions parameter if non-NULL points
- * to a string containing characters that are not escaped.
+ * Inverse of g_strcompress. The exceptions parameter, if non-NULL, points
+ * to a string containing characters that are not to be escaped.
*/
-gchar* g_strecpy (gchar *dest,
- const gchar *source,
+gchar* g_strescape (const gchar *source,
const gchar *exceptions);
-
-/* deprecated function (used to be a real function) */
-#define g_strescape(src) g_strecpy (g_new (char, strlen (src)*4+1), (src), NULL)
+/* Deprecated API:
+ * gchar* g_strescape (const gchar *source);
+ * Luckily this function wasn't much used.
+ * Add a second NULL parameter in calls for mostly identical semantics.
+ */
gpointer g_memdup (gconstpointer mem,
guint byte_size);
}
gchar*
-g_strccpy (gchar *dest,
- const gchar *source)
+g_strcompress (const gchar *source)
{
- const gchar *p = source;
+ const gchar *p = source, *octal;
+ gchar *dest = g_malloc (strlen (source) + 1);
gchar *q = dest;
- g_return_val_if_fail (dest != NULL, NULL);
-
while (*p)
{
if (*p == '\\')
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7':
*q = 0;
- while ((*p >= '0') && (*p <= '7'))
+ octal = p;
+ while ((p < octal + 3) && (*p >= '0') && (*p <= '7'))
{
*q = (*q * 8) + (*p - '0');
p++;
}
gchar *
-g_strecpy (gchar *dest,
- const gchar *src,
- const gchar *exceptions)
+g_strescape (const gchar *source,
+ const gchar *exceptions)
{
- const guchar *p = (guchar *) src;
+ const guchar *p = (guchar *) source;
+ /* Each source byte needs maximally four destination chars (\777) */
+ gchar *dest = g_malloc (strlen (source) * 4 + 1);
gchar *q = dest;
guchar excmap[256];
}
gchar*
-g_strccpy (gchar *dest,
- const gchar *source)
+g_strcompress (const gchar *source)
{
- const gchar *p = source;
+ const gchar *p = source, *octal;
+ gchar *dest = g_malloc (strlen (source) + 1);
gchar *q = dest;
- g_return_val_if_fail (dest != NULL, NULL);
-
while (*p)
{
if (*p == '\\')
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7':
*q = 0;
- while ((*p >= '0') && (*p <= '7'))
+ octal = p;
+ while ((p < octal + 3) && (*p >= '0') && (*p <= '7'))
{
*q = (*q * 8) + (*p - '0');
p++;
}
gchar *
-g_strecpy (gchar *dest,
- const gchar *src,
- const gchar *exceptions)
+g_strescape (const gchar *source,
+ const gchar *exceptions)
{
- const guchar *p = (guchar *) src;
+ const guchar *p = (guchar *) source;
+ /* Each source byte needs maximally four destination chars (\777) */
+ gchar *dest = g_malloc (strlen (source) * 4 + 1);
gchar *q = dest;
guchar excmap[256];
g_assert (strcmp(string, "00021 test ") == 0);
g_free (string);
- g_assert (strcmp(g_strccpy(g_malloc(100),
- "abc\\\\\\\"\\b\\f\\n\\r\\t\\003\\177\\234\\313"),
- "abc\\\"\b\f\n\r\t\003\177\234\313") == 0);
- g_assert (strcmp(g_strecpy(g_malloc(100),
- "abc\\\"\b\f\n\r\t\003\177\234\313",
- NULL),
+ g_assert (strcmp
+ (g_strcompress("abc\\\\\\\"\\b\\f\\n\\r\\t\\003\\177\\234\\313\\12345z"),
+ "abc\\\"\b\f\n\r\t\003\177\234\313\12345z") == 0);
+ g_assert (strcmp(g_strescape("abc\\\"\b\f\n\r\t\003\177\234\313",
+ NULL),
"abc\\\\\\\"\\b\\f\\n\\r\\t\\003\\177\\234\\313") == 0);
- g_assert (strcmp(g_strecpy(g_malloc(100),"abc\\\"\b\f\n\r\t\003\177\234\313",
- "\b\f\001\002\003\004"),
+ g_assert (strcmp(g_strescape("abc\\\"\b\f\n\r\t\003\177\234\313",
+ "\b\f\001\002\003\004"),
"abc\\\\\\\"\b\f\\n\\r\\t\003\\177\\234\\313") == 0);
return 0;