int main (int argc, char *argv[]) { const char *search_path[] = { "resource:///org/gnome/maps", NULL }; GError *error = NULL; GjsContext *context; int status; bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); g_irepository_prepend_search_path (GNOME_MAPS_PKGLIBDIR); context = gjs_context_new_with_search_path ((char**) search_path); if (!gjs_context_define_string_array(context, "ARGV", argc - 1, (const char**)argv + 1, &error)) { g_critical ("Failed to define ARGV: %s", error->message); g_error_free (error); return 1; } if (!gjs_context_eval (context, "const Main = imports.main; Main.start();", -1, "<main>", &status, &error)) { g_critical ("Failed to run: %s", error->message); g_error_free (error); return status; } return 0; }
gboolean gjs_context_eval_file(GjsContext *js_context, const char *filename, int *exit_status_p, GError **error) { char *script; gsize script_len; if (!g_file_get_contents(filename, &script, &script_len, error)) return FALSE; if (!gjs_context_eval(js_context, script, script_len, filename, exit_status_p, error)) { g_free(script); return FALSE; } g_free(script); return TRUE; }
int main(int argc, char **argv) { char *command_line; GOptionContext *context; GError *error = NULL; GjsContext *js_context; char *script; const char *filename; gsize len; int code; const char *source_js_version; context = g_option_context_new(NULL); /* pass unknown through to the JS script */ g_option_context_set_ignore_unknown_options(context, TRUE); g_option_context_add_main_entries(context, entries, NULL); if (!g_option_context_parse(context, &argc, &argv, &error)) g_error("option parsing failed: %s", error->message); setlocale(LC_ALL, ""); g_type_init(); command_line = g_strjoinv(" ", argv); g_free(command_line); if (command != NULL) { script = command; source_js_version = gjs_context_scan_buffer_for_js_version(script, 1024); len = strlen(script); filename = "<command line>"; } else if (argc <= 1) { source_js_version = NULL; script = g_strdup("const Console = imports.console; Console.interact();"); len = strlen(script); filename = "<stdin>"; } else /*if (argc >= 2)*/ { error = NULL; if (!g_file_get_contents(argv[1], &script, &len, &error)) { g_printerr("%s\n", error->message); exit(1); } source_js_version = gjs_context_scan_buffer_for_js_version(script, 1024); filename = argv[1]; argc--; argv++; } /* If user explicitly specifies a version, use it */ if (js_version != NULL) source_js_version = js_version; if (source_js_version != NULL) js_context = g_object_new(GJS_TYPE_CONTEXT, "search-path", include_path, "js-version", source_js_version, NULL); else js_context = g_object_new(GJS_TYPE_CONTEXT, "search-path", include_path, NULL); /* prepare command line arguments */ if (!gjs_context_define_string_array(js_context, "ARGV", argc - 1, (const char**)argv + 1, &error)) { g_printerr("Failed to defined ARGV: %s", error->message); exit(1); } /* evaluate the script */ error = NULL; if (!gjs_context_eval(js_context, script, len, filename, &code, &error)) { g_free(script); g_printerr("%s\n", error->message); exit(1); } g_free(script); exit(code); }
int main(int argc, char **argv) { GOptionContext *context; ClutterActor *stage; GError *error = NULL; CinnamonGlobal *global; GjsContext *js_context; char *script; const char *filename; char *title; gsize len; int code; gtk_init (&argc, &argv); clutter_x11_set_display (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ())); clutter_x11_disable_event_retrieval (); if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS) return 1; gdk_window_add_filter (NULL, event_filter, NULL); context = g_option_context_new (NULL); /* pass unknown through to the JS script */ g_option_context_set_ignore_unknown_options (context, TRUE); g_option_context_add_main_entries (context, entries, NULL); if (!g_option_context_parse (context, &argc, &argv, &error)) g_error ("option parsing failed: %s", error->message); setlocale (LC_ALL, ""); g_type_init (); _cinnamon_global_init (NULL); global = cinnamon_global_get (); js_context = _cinnamon_global_get_gjs_context (global); /* prepare command line arguments */ if (!gjs_context_define_string_array (js_context, "ARGV", argc - 2, (const char**)argv + 2, &error)) { g_printerr ("Failed to defined ARGV: %s", error->message); exit (1); } if (command != NULL) { script = command; len = strlen (script); filename = "<command line>"; } else if (argc <= 1) { script = g_strdup ("const Console = imports.console; Console.interact();"); len = strlen (script); filename = "<stdin>"; } else /*if (argc >= 2)*/ { error = NULL; if (!g_file_get_contents (argv[1], &script, &len, &error)) { g_printerr ("%s\n", error->message); exit (1); } filename = argv[1]; } stage = clutter_stage_get_default (); title = g_filename_display_basename (filename); clutter_stage_set_title (CLUTTER_STAGE (stage), title); g_free (title); #if HAVE_BLUETOOTH /* The module imports are all so intertwined that if the test * imports anything in js/ui, it will probably eventually end up * pulling in ui/status/bluetooth.js. So we need this. */ g_irepository_prepend_search_path (BLUETOOTH_DIR); #endif /* evaluate the script */ error = NULL; if (!gjs_context_eval (js_context, script, len, filename, &code, &error)) { g_free (script); g_printerr ("%s\n", error->message); exit (1); } g_free (script); exit (code); }
int main(int argc, char **argv) { GOptionContext *context; GError *error = NULL; ShellGlobal *global; GjsContext *js_context; char *script; const char *filename; char *title; gsize len; int code; gtk_init (&argc, &argv); clutter_x11_set_display (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ())); clutter_x11_disable_event_retrieval (); if (clutter_init (&argc, &argv) != CLUTTER_INIT_SUCCESS) return 1; gdk_window_add_filter (NULL, event_filter, NULL); context = g_option_context_new (NULL); /* pass unknown through to the JS script */ g_option_context_set_ignore_unknown_options (context, TRUE); g_option_context_add_main_entries (context, entries, NULL); if (!g_option_context_parse (context, &argc, &argv, &error)) g_error ("option parsing failed: %s", error->message); setlocale (LC_ALL, ""); _shell_global_init (NULL); global = shell_global_get (); js_context = _shell_global_get_gjs_context (global); /* prepare command line arguments */ if (!gjs_context_define_string_array (js_context, "ARGV", argc - 2, (const char**)argv + 2, &error)) { g_printerr ("Failed to defined ARGV: %s", error->message); exit (1); } if (command != NULL) { script = command; len = strlen (script); filename = "<command line>"; } else if (argc <= 1) { script = g_strdup ("const Console = imports.console; Console.interact();"); len = strlen (script); filename = "<stdin>"; } else /*if (argc >= 2)*/ { error = NULL; if (!g_file_get_contents (argv[1], &script, &len, &error)) { g_printerr ("%s\n", error->message); exit (1); } filename = argv[1]; } title = g_filename_display_basename (filename); g_set_prgname (title); g_free (title); /* evaluate the script */ error = NULL; if (!gjs_context_eval (js_context, script, len, filename, &code, &error)) { g_free (script); g_printerr ("%s\n", error->message); exit (1); } gjs_context_gc (js_context); gjs_context_gc (js_context); g_free (script); exit (code); }