static void
manager_running (NMClient *client, GParamSpec *pspec, gpointer user_data)
{
	if (nm_client_get_manager_running (client)) {
		g_print ("NM appeared\n");
		test_wireless_enabled (client);
		test_get_state (client);
		test_get_active_connections (client);
		test_devices (client);
	} else
		g_print ("NM disappeared\n");
}
Beispiel #2
0
/* Check if NM is already running */
gboolean is_nm_running(void) {
    gboolean running;
    NMClient *client = NULL;

#if !defined(GLIB_VERSION_2_36)
    g_type_init();
#endif

    client = nm_client_new();
    if (!client)
        return FALSE;

    running = nm_client_get_manager_running(client);
    g_object_unref(client);
    return running;
}
Beispiel #3
0
int
main (int argc, char **argv)
{
	gboolean got_connections = FALSE;
	GOptionContext *opts;
	GError *error = NULL;
	NmtuiStartupData startup_data;
	const char *prgname;
	int i;

	setlocale (LC_ALL, "");
	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
	textdomain (GETTEXT_PACKAGE);

	opts = g_option_context_new (NULL);
	g_option_context_add_main_entries (opts, entries, NULL);

	if (!g_option_context_parse (opts, &argc, &argv, &error)) {
		g_printerr ("%s: %s: %s\n",
		            argv[0],
		            _("Could not parse arguments"),
		            error->message);
		exit (1);
	}
	g_option_context_free (opts);

	nm_editor_bindings_init ();

	nm_client = nm_client_new ();
	if (!nm_client_get_manager_running (nm_client)) {
		g_printerr ("%s\n", _("NetworkManager is not running."));
		exit (1);
	}

	nm_settings = nm_remote_settings_new (NULL);
	g_signal_connect (nm_settings, NM_REMOTE_SETTINGS_CONNECTIONS_READ,
	                  G_CALLBACK (connections_read), &got_connections);
	while (!got_connections)
		g_main_context_iteration (NULL, TRUE);

	if (sleep_on_startup)
		sleep (5);

	startup_data.subprogram = NULL;
	prgname = g_get_prgname ();
	if (g_str_has_prefix (prgname, "lt-"))
		prgname += 3;
	if (!strcmp (prgname, "nmtui")) {
		if (argc > 1) {
			for (i = 0; i < num_subprograms; i++) {
				if (!strcmp (argv[1], subprograms[i].name)) {
					argc--;
					argv[0] = (char *) subprograms[i].shortcut;
					memmove (&argv[1], &argv[2], argc * sizeof (char *));
					startup_data.subprogram = subprograms[i].func;
					break;
				}
			}
		} else
			startup_data.subprogram = nmtui_main;
	} else {
		for (i = 0; i < num_subprograms; i++) {
			if (!strcmp (prgname, subprograms[i].shortcut)) {
				startup_data.subprogram = subprograms[i].func;
				break;
			}
		}
	}
	if (!startup_data.subprogram)
		usage ();

	if (!noinit)
		nmt_newt_init ();

	startup_data.argc = argc;
	startup_data.argv = argv;
	g_idle_add (idle_run_subprogram, &startup_data);
	loop = g_main_loop_new (NULL, FALSE);
	g_main_loop_run (loop);
	g_main_loop_unref (loop);

	if (!noinit)
		nmt_newt_finished ();

	g_object_unref (nm_client);
	g_object_unref (nm_settings);

	return 0;
}