static void do_upgrades_once (NautilusApplication *self) { char *metafile_dir, *updated, *nautilus_dir, *xdg_dir; const gchar *message; int fd, res; if (!self->priv->no_desktop) { mark_desktop_files_trusted (); } metafile_dir = g_build_filename (g_get_home_dir (), ".nautilus/metafiles", NULL); if (g_file_test (metafile_dir, G_FILE_TEST_IS_DIR)) { updated = g_build_filename (metafile_dir, "migrated-to-gvfs", NULL); if (!g_file_test (updated, G_FILE_TEST_EXISTS)) { g_spawn_command_line_async (LIBEXECDIR"/nautilus-convert-metadata --quiet", NULL); fd = g_creat (updated, 0600); if (fd != -1) { close (fd); } } g_free (updated); } g_free (metafile_dir); nautilus_dir = g_build_filename (g_get_home_dir (), ".nautilus", NULL); xdg_dir = nautilus_get_user_directory (); if (g_file_test (nautilus_dir, G_FILE_TEST_IS_DIR)) { /* test if we already attempted to migrate first */ updated = g_build_filename (nautilus_dir, "DEPRECATED-DIRECTORY", NULL); message = _("Nautilus 3.0 deprecated this directory and tried migrating " "this configuration to ~/.config/nautilus"); if (!g_file_test (updated, G_FILE_TEST_EXISTS)) { /* rename() works fine if the destination directory is * empty. */ res = g_rename (nautilus_dir, xdg_dir); if (res == -1) { fd = g_creat (updated, 0600); if (fd != -1) { res = write (fd, message, strlen (message)); close (fd); } } } g_free (updated); } g_free (nautilus_dir); g_free (xdg_dir); }
static gchar * get_keyfile_path (void) { gchar *xdg_dir, *retval; xdg_dir = nautilus_get_user_directory (); retval = g_build_filename (xdg_dir, "desktop-metadata", NULL); g_free (xdg_dir); return retval; }
/* get_private_customization_directory Get the path where a customization's pixmaps are stored @customization_name : the name of the customization to get. Should be one of "emblems", "colors", or "patterns" Return value: The directory name where the customization's user-specific pixmaps are stored */ static char * get_private_customization_path (const char *customization_name) { char *user_directory; char *directory_path; user_directory = nautilus_get_user_directory (); directory_path = g_build_filename (user_directory, customization_name, NULL); g_free (user_directory); return directory_path; }
char * nautilus_get_searches_directory (void) { char *user_dir; char *searches_dir; user_dir = nautilus_get_user_directory (); searches_dir = g_build_filename (user_dir, "searches", NULL); g_free (user_dir); if (!g_file_test (searches_dir, G_FILE_TEST_EXISTS)) g_mkdir (searches_dir, DEFAULT_NAUTILUS_DIRECTORY_MODE); return searches_dir; }
static void nautilus_search_directory_file_init (NautilusSearchDirectoryFile *search_file) { NautilusFile *file; gchar *xdg_dir; file = NAUTILUS_FILE (search_file); search_file->details = G_TYPE_INSTANCE_GET_PRIVATE (search_file, NAUTILUS_TYPE_SEARCH_DIRECTORY_FILE, NautilusSearchDirectoryFileDetails); xdg_dir = nautilus_get_user_directory (); search_file->details->metadata_filename = g_build_filename (xdg_dir, "search-metadata", NULL); g_free (xdg_dir); file->details->got_file_info = TRUE; file->details->mime_type = eel_ref_str_get_unique ("x-directory/normal"); file->details->type = G_FILE_TYPE_DIRECTORY; file->details->size = 0; file->details->file_info_is_up_to_date = TRUE; file->details->custom_icon = NULL; file->details->activation_uri = NULL; file->details->got_link_info = TRUE; file->details->link_info_is_up_to_date = TRUE; file->details->directory_count = 0; file->details->got_directory_count = TRUE; file->details->directory_count_is_up_to_date = TRUE; nautilus_file_set_display_name (file, _("Search"), NULL, TRUE); }
char * nautilus_get_data_file_path (const char *partial_path) { char *path; char *user_directory; /* first try the user's home directory */ user_directory = nautilus_get_user_directory (); path = g_build_filename (user_directory, partial_path, NULL); g_free (user_directory); if (g_file_test (path, G_FILE_TEST_EXISTS)) { return path; } g_free (path); /* next try the shared directory */ path = g_build_filename (NAUTILUS_DATADIR, partial_path, NULL); if (g_file_test (path, G_FILE_TEST_EXISTS)) { return path; } g_free (path); return NULL; }
static gboolean check_required_directories (NautilusApplication *application) { char *user_directory; char *desktop_directory; GSList *directories; gboolean ret; g_assert (NAUTILUS_IS_APPLICATION (application)); nautilus_profile_start (NULL); ret = TRUE; user_directory = nautilus_get_user_directory (); desktop_directory = nautilus_get_desktop_directory (); directories = NULL; if (!g_file_test (user_directory, G_FILE_TEST_IS_DIR)) { directories = g_slist_prepend (directories, user_directory); } if (!g_file_test (desktop_directory, G_FILE_TEST_IS_DIR)) { directories = g_slist_prepend (directories, desktop_directory); } if (directories != NULL) { int failed_count; GString *directories_as_string; GSList *l; char *error_string; const char *detail_string; GtkDialog *dialog; ret = FALSE; failed_count = g_slist_length (directories); directories_as_string = g_string_new ((const char *)directories->data); for (l = directories->next; l != NULL; l = l->next) { g_string_append_printf (directories_as_string, ", %s", (const char *)l->data); } error_string = _("Oops! Something went wrong."); if (failed_count == 1) { detail_string = g_strdup_printf (_("Unable to create a required folder. " "Please create the following folder, or " "set permissions such that it can be created:\n%s"), directories_as_string->str); } else { detail_string = g_strdup_printf (_("Unable to create required folders. " "Please create the following folders, or " "set permissions such that they can be created:\n%s"), directories_as_string->str); } dialog = eel_show_error_dialog (error_string, detail_string, NULL); /* We need the main event loop so the user has a chance to see the dialog. */ gtk_application_add_window (GTK_APPLICATION (application), GTK_WINDOW (dialog)); g_string_free (directories_as_string, TRUE); } g_slist_free (directories); g_free (user_directory); g_free (desktop_directory); nautilus_profile_end (NULL); return ret; }