}
}
*out = '\0';
- EnsureUTF8( psz );
return psz;
}
/**
* Remove forbidden characters from filenames (including slashes)
*/
-char* filename_sanitize( const char *str_origin )
+void filename_sanitize( char *str )
{
- char *str = strdup( str_origin );
+#if defined( WIN32 )
char *str_base = str;
+#endif
+
if( *str == '.' && (str[1] == '\0' || (str[1] == '.' && str[2] == '\0' ) ) )
{
while( *str )
*str = '_';
str++;
}
- return str_base;
+ return;
}
#if defined( WIN32 )
*str-- = '_';
}
#endif
-
- return str_base;
}
/**
if (schemelen == 4 && !strncasecmp (url, "file", 4))
{
#if (DIR_SEP_CHAR != '/')
- for (char *p = strchr (path, '/'); p; p = strchr (p, '/'))
- *p == DIR_SEP_CHAR;
+ for (char *p = strchr (path, '/'); p; p = strchr (p + 1, '/'))
+ *p = DIR_SEP_CHAR;
#endif
+ /* Leading slash => local path */
if (*path == DIR_SEP_CHAR)
+#ifndef WIN32
return path;
+#else
+ return memmove (path, path + 1, strlen (path + 1) + 1);
+#endif
/* Local path disguised as a remote one (MacOS X) */
if (!strncasecmp (path, "localhost"DIR_SEP, 10))
- {
- memmove (path, path + 9, strlen (path + 9) + 1);
- return path;
- }
+ return memmove (path, path + 9, strlen (path + 9) + 1);
#ifdef WIN32
if (*path && asprintf (&ret, "\\\\%s", path) == -1)
ret = strdup ("/dev/stdout");
break;
case 2:
- ret = strdup ("/dev/strerr");
+ ret = strdup ("/dev/stderr");
break;
default:
if (asprintf (&ret, "/dev/fd/%d", fd) == -1)