0, /* n_preallocs */
(GInstanceInitFunc) gtk_file_system_unix_init,
};
-
+
static const GInterfaceInfo file_system_info =
{
(GInterfaceInitFunc) gtk_file_system_unix_iface_init, /* interface_init */
/**
* gtk_file_system_unix_new:
- *
+ *
* Creates a new #GtkFileSystemUnix object. #GtkFileSystemUnix
* implements the #GtkFileSystem interface with direct access to
* the filesystem using Unix/Linux API calls
- *
+ *
* Return value: the new #GtkFileSystemUnix object
**/
GtkFileSystem *
GObjectClass *gobject_class = G_OBJECT_CLASS (class);
system_parent_class = g_type_class_peek_parent (class);
-
+
gobject_class->finalize = gtk_file_system_unix_finalize;
}
GError **error)
{
const gchar *filename = gtk_file_path_get_string (path);
-
+
g_return_val_if_fail (strcmp (filename, "/") == 0, NULL);
return filename_get_info ("/", types, error);
filename = filename_from_path (path);
g_return_val_if_fail (filename != NULL, FALSE);
-
+
result = mkdir (filename, 0777) != 0;
-
+
if (!result)
{
gchar *filename_utf8 = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
g_strerror (errno));
g_free (filename_utf8);
}
-
+
g_free (filename);
-
+
return result;
}
}
static gboolean
-gtk_file_system_unix_volume_mount (GtkFileSystem *file_system,
+gtk_file_system_unix_volume_mount (GtkFileSystem *file_system,
GtkFileSystemVolume *volume,
GError **error)
{
gchar *full_filename;
GError *tmp_error = NULL;
GtkFilePath *result;
-
+
base_filename = filename_from_path (base_path);
g_return_val_if_fail (base_filename != NULL, NULL);
GTK_FILE_SYSTEM_ERROR_BAD_FILENAME,
"%s",
tmp_error->message);
-
+
g_error_free (tmp_error);
g_free (base_filename);
return FALSE;
}
-
+
full_filename = g_build_filename (base_filename, filename, NULL);
result = filename_to_path (full_filename);
g_free (base_filename);
g_free (filename);
g_free (full_filename);
-
+
return result;
}
{
if (*(p + 1) == '\0')
break;
-
+
p += 1;
}
else if (*(p + 1) == '.' &&
if (*(p + 2) == '\0')
break;
-
+
p += 2;
}
else
base_filename = filename_from_path (base_path);
g_return_val_if_fail (base_filename != NULL, FALSE);
-
+
last_slash = strrchr (str, G_DIR_SEPARATOR);
if (!last_slash)
{
}
canonicalize_filename (folder_path);
-
+
*folder = filename_to_path (folder_path);
*file_part = g_strdup (last_slash + 1);
}
g_free (base_filename);
-
+
return result;
}
0, /* n_preallocs */
(GInstanceInitFunc) gtk_file_folder_unix_init,
};
-
+
static const GInterfaceInfo file_folder_info =
{
(GInterfaceInitFunc) gtk_file_folder_unix_iface_init, /* interface_init */
GtkFileFolderUnix *folder_unix = GTK_FILE_FOLDER_UNIX (object);
g_free (folder_unix->filename);
-
+
folder_parent_class->finalize (object);
}
GtkFileInfo *info;
gchar *dirname;
gchar *filename;
-
+
filename = filename_from_path (path);
g_return_val_if_fail (filename != NULL, NULL);
GTK_FILE_SYSTEM_ERROR_NONEXISTENT,
"%s",
tmp_error->message);
-
+
g_error_free (tmp_error);
return FALSE;
g_dir_close (dir);
*children = g_slist_reverse (*children);
-
+
return TRUE;
}
GtkFileIconType icon_type = GTK_FILE_ICON_REGULAR;
#endif
struct stat statbuf;
-
+
/* If stat fails, try to fall back to lstat to catch broken links
*/
if (stat (filename, &statbuf) != 0 &&
filename_utf8 ? filename_utf8 : "???",
g_strerror (errno));
g_free (filename_utf8);
-
+
return NULL;
}
{
if (types & GTK_FILE_INFO_DISPLAY_NAME)
gtk_file_info_set_display_name (info, "/");
-
+
if (types & GTK_FILE_INFO_IS_HIDDEN)
gtk_file_info_set_is_hidden (info, FALSE);
}
else
{
gchar *basename = g_path_get_basename (filename);
-
+
if (types & GTK_FILE_INFO_DISPLAY_NAME)
{
gchar *display_name = g_filename_to_utf8 (basename, -1, NULL, NULL, NULL);
if (!display_name)
display_name = g_strescape (basename, NULL);
-
+
gtk_file_info_set_display_name (info, display_name);
-
+
g_free (display_name);
}
-
+
if (types & GTK_FILE_INFO_IS_HIDDEN)
{
gtk_file_info_set_is_hidden (info, basename[0] == '.');
{
gtk_file_info_set_size (info, (gint64)statbuf.st_size);
}
-
+
return info;
}
filename_is_root (const char *filename)
{
const gchar *after_root;
-
+
after_root = g_path_skip_root (filename);
-
- return (*after_root == '\0');
+
+ return (after_root != NULL && *after_root == '\0');
}