return strndup (str, n);
#else
if (str) {
- char *retval = malloc(n+1);
+ char *retval = g_malloc(n+1);
if (retval) {
strncpy(retval, str, n)[n] = 0;
}
}
if (*string) {
- int toklen = (string - c);
+ gsize toklen = (string - c);
token = g_strndup (c, toklen);
/* Need to leave a trailing empty
c = string;
while (*string && !(max_tokens > 0 && size >= max_tokens)) {
if (charcmp (*string, delimiter)) {
- int toklen = (string - c);
+ gsize toklen = (string - c);
if (toklen == 0) {
token = g_strdup ("");
} else {
size_t n;
char *ret, *rp;
const char *p;
+#ifdef G_OS_WIN32
+ const char *uriPrefix = "file:///";
+#else
+ const char *uriPrefix = "file://";
+#endif
g_return_val_if_fail (filename != NULL, NULL);
if (hostname != NULL)
g_warning ("%s", "eglib: g_filename_to_uri: hostname not handled");
- if (*filename != '/'){
+ if (!g_path_is_absolute (filename)){
if (error != NULL)
*error = g_error_new (NULL, 2, "Not an absolute filename");
return NULL;
}
- n = strlen ("file://") + 1;
+ n = strlen (uriPrefix) + 1;
for (p = filename; *p; p++){
+#ifdef G_OS_WIN32
+ if (*p == '\\') {
+ n++;
+ continue;
+ }
+#endif
if (char_needs_encoding (*p))
n += 3;
else
n++;
}
ret = g_malloc (n);
- strcpy (ret, "file://");
+ strcpy (ret, uriPrefix);
for (p = filename, rp = ret + strlen (ret); *p; p++){
+#ifdef G_OS_WIN32
+ if (*p == '\\') {
+ *rp++ = '/';
+ continue;
+ }
+#endif
if (char_needs_encoding (*p)){
*rp++ = '%';
*rp++ = hx [((unsigned char)(*p)) >> 4];
}
flen++;
}
+#ifndef G_OS_WIN32
flen++;
-
+#endif
+
result = g_malloc (flen + 1);
- *result = '/';
result [flen] = 0;
- for (p = uri + 8, r = result + 1; *p; p++){
+#ifndef G_OS_WIN32
+ *result = '/';
+ r = result + 1;
+#else
+ r = result;
+#endif
+
+ for (p = uri + 8; *p; p++){
if (*p == '%'){
*r++ = (char)((decode (p [1]) << 4) | decode (p [2]));
p += 2;
g_return_val_if_fail (s2 != NULL, 0);
for (i = 0; i < n; i++){
- gchar c1 = *s1++;
- gchar c2 = *s2++;
+ gchar c1 = g_ascii_tolower (*s1++);
+ gchar c2 = g_ascii_tolower (*s2++);
if (c1 == c2)
continue;
return result;
}
-gchar *
-g_strdup (const gchar *str)
-{
- if (str == NULL)
- return NULL;
-
- return strdup (str);
-}
-
gint
g_ascii_xdigit_value (gchar c)
{
(c - 'A' + 10))));
}
+gchar *
+g_strnfill (gsize length, gchar fill_char)
+{
+ gchar *ret = g_new (gchar, length + 1);
-
+ memset (ret, fill_char, length);
+ ret [length] = 0;
+ return ret;
+}