static VALUE rg_m_im_module_path(G_GNUC_UNUSED VALUE self) { return CSTR2RVAL(gtk_rc_get_im_module_path()); }
int main (int argc, char **argv) { char *cwd; int i; char *path; gboolean error = FALSE; gchar *cache_file = NULL; gint first_file = 1; GString *contents; if (argc > 1 && strcmp (argv[1], "--update-cache") == 0) { cache_file = gtk_rc_get_im_module_file (); first_file = 2; } contents = g_string_new (""); g_string_append_printf (contents, "# GTK+ Input Method Modules file\n" "# Automatically generated file, do not edit\n" "# Created by %s from gtk+-%d.%d.%d\n" "#\n", argv[0], GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); if (argc == first_file) /* No file arguments given */ { char **dirs; int i; GHashTable *dirs_done; path = gtk_rc_get_im_module_path (); g_string_append_printf (contents, "# ModulesPath = %s\n#\n", path); dirs = pango_split_file_list (path); dirs_done = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL); for (i = 0; dirs[i]; i++) if (!g_hash_table_lookup (dirs_done, dirs[i])) { GDir *dir = g_dir_open (dirs[i], 0, NULL); if (dir) { const char *dent; while ((dent = g_dir_read_name (dir))) { if (g_str_has_suffix (dent, SOEXT)) error |= query_module (dirs[i], dent, contents); } g_dir_close (dir); } g_hash_table_insert (dirs_done, dirs[i], GUINT_TO_POINTER (TRUE)); } g_hash_table_destroy (dirs_done); } else { cwd = g_get_current_dir (); for (i = first_file; i < argc; i++) error |= query_module (cwd, argv[i], contents); g_free (cwd); } if (!error) { if (cache_file) { GError *err; err = NULL; if (!g_file_set_contents (cache_file, contents->str, -1, &err)) { g_fprintf (stderr, "%s\n", err->message); error = 1; } } else g_print ("%s\n", contents->str); } return error ? 1 : 0; }
int main (int argc, char **argv) { char *cwd; int i; char *path; gboolean error = FALSE; g_printf ("# GTK+ Input Method Modules file\n" "# Automatically generated file, do not edit\n" "# Created by %s from gtk+-%d.%d.%d\n" "#\n", argv[0], GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); if (argc == 1) /* No arguments given */ { char **dirs; int i; GHashTable *dirs_done; path = gtk_rc_get_im_module_path (); g_printf ("# ModulesPath = %s\n#\n", path); dirs = pango_split_file_list (path); dirs_done = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, NULL); for (i=0; dirs[i]; i++) if (!g_hash_table_lookup (dirs_done, dirs[i])) { GDir *dir = g_dir_open (dirs[i], 0, NULL); if (dir) { const char *dent; while ((dent = g_dir_read_name (dir))) { if (g_str_has_suffix (dent, SOEXT)) error |= query_module (dirs[i], dent); } g_dir_close (dir); } g_hash_table_insert (dirs_done, dirs[i], GUINT_TO_POINTER (TRUE)); } g_hash_table_destroy (dirs_done); } else { cwd = g_get_current_dir (); for (i=1; i<argc; i++) error |= query_module (cwd, argv[i]); g_free (cwd); } return error ? 1 : 0; }