added new utility function file_utils_filename_from_uri().

2005-02-03  Sven Neumann  <sven@gimp.org>

	* app/file/file-utils.[ch]: added new utility function
	file_utils_filename_from_uri().

	* app/file/file-open.c (file_open_image)
	* app/file/file-save.c (file_save_as):
	* app/file/file-utils.c (file_utils_find_proc)
	(file_utils_uri_to_utf8_filename): replaced calls to
	g_filename_from_uri() with file_utils_filename_from_uri().
This commit is contained in:
Sven Neumann 2005-02-03 23:14:42 +00:00 committed by Sven Neumann
parent eb834ca3bf
commit 8b3481f3ff
5 changed files with 66 additions and 6 deletions

View file

@ -1,3 +1,14 @@
2005-02-03 Sven Neumann <sven@gimp.org>
* app/file/file-utils.[ch]: added new utility function
file_utils_filename_from_uri().
* app/file/file-open.c (file_open_image)
* app/file/file-save.c (file_save_as):
* app/file/file-utils.c (file_utils_find_proc)
(file_utils_uri_to_utf8_filename): replaced g_filename_from_uri()
with file_utils_filename_from_uri().
2005-02-03 Bill Skaggs <weskaggs@primate.ucdavis.edu>
* app/widgets/gimppropwidgets.c: add gtk-doc comments to

View file

@ -106,7 +106,7 @@ file_open_image (Gimp *gimp,
return NULL;
}
filename = g_filename_from_uri (uri, NULL, NULL);
filename = file_utils_filename_from_uri (uri);
if (filename)
{
@ -224,7 +224,7 @@ file_open_thumbnail (Gimp *gimp,
gint image_id;
gint i;
filename = g_filename_from_uri (uri, NULL, NULL);
filename = file_utils_filename_from_uri (uri);
args = g_new0 (Argument, proc->num_args);

View file

@ -133,7 +133,7 @@ file_save_as (GimpImage *gimage,
return GIMP_PDB_CALLING_ERROR;
}
filename = g_filename_from_uri (uri, NULL, NULL);
filename = file_utils_filename_from_uri (uri);
if (filename)
{

View file

@ -129,6 +129,53 @@ file_utils_filename_to_uri (GSList *procs,
return uri;
}
/**
* file_utils_filename_from_uri:
* @uri: a URI
*
* A utility function to be used as a replacement for
* g_filename_from_uri(). It deals with file: URIs with hostname in a
* platform-specific way. On Win32, a UNC path is created and
* returned, on other platforms the URI is detected as non-local and
* NULL is returned.
*
* Returns: newly allocated filename or %NULL if @uri is a remote file
**/
gchar *
file_utils_filename_from_uri (const gchar *uri)
{
gchar *filename;
gchar *hostname;
g_return_val_if_fail (uri != NULL, NULL);
filename = g_filename_from_uri (uri, &hostname, NULL);
if (!filename)
return NULL;
if (hostname)
{
/* we have a file: URI with a hostname */
#ifdef G_OS_WIN32
/* on Win32, create a valid UNC path and use it as the filename */
gchar *tmp = g_build_filename ("//", hostname, filename, NULL);
g_free (filename);
filename = tmp;
#else
/* otherwise return NULL, caller should use URI then */
g_free (filename);
filename = NULL;
#endif
g_free (hostname);
}
return filename;
}
PlugInProcDef *
file_utils_find_proc (GSList *procs,
const gchar *uri)
@ -146,7 +193,7 @@ file_utils_find_proc (GSList *procs,
if (file_proc)
return file_proc;
filename = g_filename_from_uri (uri, NULL, NULL);
filename = file_utils_filename_from_uri (uri);
/* Then look for magics */
if (filename)
@ -254,9 +301,10 @@ file_utils_uri_to_utf8_filename (const gchar *uri)
{
g_return_val_if_fail (uri != NULL, NULL);
if (! strncmp (uri, "file:", strlen ("file:")))
if (g_str_has_prefix (uri, "file:"))
{
gchar *filename = g_filename_from_uri (uri, NULL, NULL);
gchar *filename = file_utils_filename_from_uri (uri);
if (filename)
{
GError *error = NULL;

View file

@ -25,6 +25,7 @@
gchar * file_utils_filename_to_uri (GSList *procs,
const gchar *filename,
GError **error);
gchar * file_utils_filename_from_uri (const gchar *uri);
gchar * file_utils_uri_to_utf8_basename (const gchar *uri);
gchar * file_utils_uri_to_utf8_filename (const gchar *uri);