static void g_keyfile_settings_backend_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GKeyfileSettingsBackend *kfsb = G_KEYFILE_SETTINGS_BACKEND (object); switch ((GKeyfileSettingsBackendProperty)prop_id) { case PROP_FILENAME: g_value_set_string (value, g_file_peek_path (kfsb->file)); break; case PROP_ROOT_PATH: g_value_set_string (value, kfsb->prefix); break; case PROP_ROOT_GROUP: g_value_set_string (value, kfsb->root_group); break; case PROP_DEFAULTS_DIR: g_value_set_string (value, kfsb->defaults_dir); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void ide_build_system_get_build_flags_cb (GObject *object, GAsyncResult *result, gpointer user_data) { IdeBuildSystem *self = (IdeBuildSystem *)object; g_autoptr(IdeTask) task = user_data; g_autoptr(GError) error = NULL; g_auto(GStrv) flags = NULL; GetBuildFlagsData *data; GFile *file; g_assert (IDE_IS_BUILD_SYSTEM (self)); g_assert (G_IS_ASYNC_RESULT (result)); g_assert (IDE_IS_TASK (task)); data = ide_task_get_task_data (task); g_assert (data != NULL); g_assert (data->files != NULL); g_assert (data->files->len > 0); g_assert (data->index < data->files->len); g_assert (data->flags != NULL); file = g_ptr_array_index (data->files, data->index); g_assert (G_IS_FILE (file)); data->index++; flags = ide_build_system_get_build_flags_finish (self, result, &error); if (error != NULL) g_debug ("Failed to load build flags for \"%s\": %s", g_file_peek_path (file), error->message); else g_hash_table_insert (data->flags, g_object_ref (file), g_steal_pointer (&flags)); if (ide_task_return_error_if_cancelled (task)) return; if (data->index < data->files->len) { GCancellable *cancellable = ide_task_get_cancellable (task); file = g_ptr_array_index (data->files, data->index); g_assert (G_IS_FILE (file)); ide_build_system_get_build_flags_async (self, file, cancellable, ide_build_system_get_build_flags_cb, g_steal_pointer (&task)); return; } ide_task_return_pointer (task, g_steal_pointer (&data->flags), g_hash_table_unref); }
void gbp_vagrant_runtime_provider_command_async (GbpVagrantRuntimeProvider *self, const gchar * const *command, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_autoptr(IdeSubprocessLauncher) launcher = NULL; g_autoptr(IdeSubprocess) subprocess = NULL; g_autoptr(IdeTask) task = NULL; g_autoptr(GError) error = NULL; g_autoptr(GFile) workdir = NULL; IdeContext *context; g_assert (GBP_IS_VAGRANT_RUNTIME_PROVIDER (self)); g_assert (command != NULL && command[0] != NULL); g_assert (g_str_equal ("vagrant", command[0])); g_assert (!cancellable || G_IS_CANCELLABLE (cancellable)); task = ide_task_new (self, cancellable, callback, user_data); ide_task_set_source_tag (task, gbp_vagrant_runtime_provider_command_async); context = ide_object_get_context (IDE_OBJECT (self)); workdir = ide_context_ref_workdir (context); launcher = ide_subprocess_launcher_new (G_SUBPROCESS_FLAGS_STDOUT_PIPE | G_SUBPROCESS_FLAGS_STDERR_SILENCE); ide_subprocess_launcher_set_cwd (launcher, g_file_peek_path (workdir)); ide_subprocess_launcher_push_args (launcher, command); if (!g_strv_contains (command, "--machine-readable")) ide_subprocess_launcher_push_argv (launcher, "--machine-readable"); if (!(subprocess = ide_subprocess_launcher_spawn (launcher, cancellable, &error))) ide_task_return_error (task, g_steal_pointer (&error)); else ide_subprocess_communicate_utf8_async (subprocess, NULL, cancellable, (GAsyncReadyCallback) gbp_vagrant_runtime_provider_command_cb, g_steal_pointer (&task)); }
static void g_keyfile_settings_backend_constructed (GObject *object) { GKeyfileSettingsBackend *kfsb = G_KEYFILE_SETTINGS_BACKEND (object); if (kfsb->file == NULL) { char *filename = g_build_filename (g_get_user_config_dir (), "glib-2.0", "settings", "keyfile", NULL); kfsb->file = g_file_new_for_path (filename); g_free (filename); } if (kfsb->prefix == NULL) { kfsb->prefix = g_strdup ("/"); kfsb->prefix_len = 1; } kfsb->keyfile = g_key_file_new (); kfsb->permission = g_simple_permission_new (TRUE); kfsb->dir = g_file_get_parent (kfsb->file); g_mkdir_with_parents (g_file_peek_path (kfsb->dir), 0700); kfsb->file_monitor = g_file_monitor (kfsb->file, G_FILE_MONITOR_NONE, NULL, NULL); kfsb->dir_monitor = g_file_monitor (kfsb->dir, G_FILE_MONITOR_NONE, NULL, NULL); compute_checksum (kfsb->digest, NULL, 0); g_signal_connect (kfsb->file_monitor, "changed", G_CALLBACK (file_changed), kfsb); g_signal_connect (kfsb->dir_monitor, "changed", G_CALLBACK (dir_changed), kfsb); g_keyfile_settings_backend_keyfile_writable (kfsb); g_keyfile_settings_backend_keyfile_reload (kfsb); load_system_settings (kfsb); }
static gchar * ide_file_settings_repr (IdeObject *object) { IdeFileSettings *self = (IdeFileSettings *)object; IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self); if (priv->file != NULL) { g_autofree gchar *uri = NULL; if (g_file_is_native (priv->file)) return g_strdup_printf ("%s path=\"%s\"", G_OBJECT_TYPE_NAME (self), g_file_peek_path (priv->file)); uri = g_file_get_uri (priv->file); return g_strdup_printf ("%s uri=\"%s\"", G_OBJECT_TYPE_NAME (self), uri); } return IDE_OBJECT_CLASS (ide_file_settings_parent_class)->repr (object); }
static void ide_build_system_real_get_build_flags_async (IdeBuildSystem *self, GFile *file, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_autoptr(IdeContext) context = NULL; g_autoptr(IdeTask) task = NULL; g_autoptr(GError) error = NULL; g_auto(GStrv) parsed_flags = NULL; IdeBuildManager *build_manager; IdeEnvironment *env; const gchar *flags = NULL; const gchar *path; IdePipeline *pipeline; IdeConfig *config; g_assert (IDE_IS_MAIN_THREAD ()); g_assert (IDE_IS_BUILD_SYSTEM (self)); g_assert (G_IS_FILE (file)); g_assert (!cancellable || G_IS_CANCELLABLE (cancellable)); task = ide_task_new (self, cancellable, callback, user_data); ide_task_set_source_tag (task, ide_build_system_real_get_build_flags_async); /* Avoid work immediately if we can */ if (ide_task_return_error_if_cancelled (task)) return; if (!g_file_is_native (file) || !(path = g_file_peek_path (file))) { ide_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, "Cannot get build flags for non-native file"); return; } if (!(context = ide_object_ref_context (IDE_OBJECT (self))) || !ide_context_has_project (context) || !(build_manager = ide_build_manager_from_context (context)) || !(pipeline = ide_build_manager_get_pipeline (build_manager)) || !(config = ide_pipeline_get_config (pipeline)) || !(env = ide_config_get_environment (config))) { ide_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_NOT_INITIALIZED, "Cannot access build flags without build config"); return; } if (ide_path_is_cpp_like (path)) { flags = ide_environment_getenv (env, "CXXFLAGS"); } else if (ide_path_is_c_like (path)) { if (!(flags = ide_environment_getenv (env, "CFLAGS"))) flags = ide_environment_getenv (env, "CXXFLAGS"); } else { ide_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, "Cannot extract build flags for unknown file type: \"%s\"", path); return; } if (flags == NULL) { ide_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, "No CFLAGS or CXXFLAGS environment variables were specified"); return; } if (!g_shell_parse_argv (flags, NULL, &parsed_flags, &error)) ide_task_return_error (task, g_steal_pointer (&error)); else ide_task_return_pointer (task, g_steal_pointer (&parsed_flags), g_strfreev); }