int main (int argc, char *argv[]) { GError *error; GOptionContext *context; const char *mimetype; gchar *param; gchar *summary; setlocale (LC_ALL, ""); bindtextdomain (GETTEXT_PACKAGE, GVFS_LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); error = NULL; param = g_strdup_printf ("%s [%s]", _("MIMETYPE"), _("HANDLER")); summary = _("Get or set the handler for a mime-type."); context = g_option_context_new (param); g_option_context_set_summary (context, summary); g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE); g_option_context_parse (context, &argc, &argv, &error); g_option_context_free (context); g_free (param); if (error != NULL || (query == set && !show_version)) { g_printerr (_("Error parsing commandline options: %s\n"), error ? error->message : _("Specify either --query or --set")); g_printerr ("\n"); g_printerr (_("Try \"%s --help\" for more information."), g_get_prgname ()); g_printerr ("\n"); if (error != NULL) g_error_free (error); return 1; } if (show_version) { g_print (PACKAGE_STRING "\n"); return 0; } if (query && argc != 2) { g_printerr (_("Must specify a single mime-type.\n")); g_printerr (_("Try \"%s --help\" for more information."), g_get_prgname ()); g_printerr ("\n"); return 1; } else if (set && argc != 3) { g_printerr (_("Must specify the mime-type followed by the default handler.\n")); g_printerr (_("Try \"%s --help\" for more information."), g_get_prgname ()); g_printerr ("\n"); return 1; } mimetype = argv[1]; if (query) { GAppInfo *info; info = g_app_info_get_default_for_type (mimetype, FALSE); if (!info) { g_print (_("No default applications for '%s'\n"), mimetype); } else { GList *list, *l; g_print (_("Default application for '%s': %s\n"), mimetype, g_app_info_get_id (info)); g_object_unref (info); list = g_app_info_get_all_for_type (mimetype); if (list != NULL) g_print (_("Registered applications:\n")); else g_print (_("No registered applications\n")); for (l = list; l != NULL; l = l->next) { info = l->data; g_print ("\t%s\n", g_app_info_get_id (info)); g_object_unref (info); } g_list_free (list); list = g_app_info_get_recommended_for_type (mimetype); if (list != NULL) g_print (_("Recommended applications:\n")); else g_print (_("No recommended applications\n")); for (l = list; l != NULL; l = l->next) { info = l->data; g_print ("\t%s\n", g_app_info_get_id (info)); g_object_unref (info); } g_list_free (list); } } else if (set) { const char *handler; GAppInfo *info; handler = argv[2]; info = get_app_info_for_id (handler); if (info == NULL) { g_printerr (_("Failed to load info for handler '%s'\n"), handler); return 1; } if (g_app_info_set_as_default_for_type (info, mimetype, &error) == FALSE) { g_printerr (_("Failed to set '%s' as the default handler for '%s': %s\n"), handler, mimetype, error->message); g_error_free (error); g_object_unref (info); return 1; } g_print ("Set %s as the default for %s\n", g_app_info_get_id (info), mimetype); g_object_unref (info); } return 0; }
int main (int argc, char *argv[]) { GError *error; GOptionContext *context; const char *mimetype; setlocale (LC_ALL, ""); g_type_init (); error = NULL; context = g_option_context_new (_("- get/set handler for <mimetype>")); g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE); g_option_context_parse (context, &argc, &argv, &error); g_option_context_free (context); if (error != NULL || query == set) { g_printerr (_("Error parsing commandline options: %s\n"), error ? error->message : _("Specify one of --query and --set")); g_printerr ("\n"); g_printerr (_("Try \"%s --help\" for more information."), g_get_prgname ()); g_printerr ("\n"); if (error != NULL) g_error_free(error); return 1; } if (query && argc != 2) { g_printerr (_("Must specify a single mime-type.\n")); g_printerr (_("Try \"%s --help\" for more information."), g_get_prgname ()); g_printerr ("\n"); return 1; } else if (set && argc != 3) { g_printerr (_("Must specify the mime-type followed by the default handler.\n")); g_printerr (_("Try \"%s --help\" for more information."), g_get_prgname ()); g_printerr ("\n"); return 1; } mimetype = argv[1]; if (query) { GAppInfo *info; info = g_app_info_get_default_for_type (mimetype, FALSE); if (!info) { g_print (_("No default applications for '%s'\n"), mimetype); } else { GList *list, *l; g_print (_("Default application for '%s': %s\n"), mimetype, g_app_info_get_id (info)); g_object_unref (info); list = g_app_info_get_all_for_type (mimetype); if (list != NULL) g_print (_("Registered applications:\n")); for (l = list; l != NULL; l = l->next) { info = l->data; g_print ("\t%s\n", g_app_info_get_id (info)); g_object_unref (info); } g_list_free (list); list = g_app_info_get_recommended_for_type (mimetype); if (list != NULL) g_print (_("Recommended applications:\n")); for (l = list; l != NULL; l = l->next) { info = l->data; g_print ("\t%s\n", g_app_info_get_id (info)); g_object_unref (info); } g_list_free (list); } } else if (set) { const char *handler; GAppInfo *info; handler = argv[2]; info = get_app_info_for_id (handler); if (info == NULL) { g_printerr (_("Failed to load info for handler '%s'\n"), handler); return 1; } if (g_app_info_set_as_default_for_type (info, mimetype, &error) == FALSE) { g_printerr (_("Failed to set '%s' as the default handler for '%s': %s\n"), handler, mimetype, error->message); g_error_free (error); g_object_unref (info); return 1; } g_print ("Set %s as the default for %s\n", g_app_info_get_id (info), mimetype); g_object_unref (info); } return 0; }