summaryrefslogtreecommitdiff
path: root/src/mate-screensaver-dialog.c
diff options
context:
space:
mode:
authorPerberos <[email protected]>2011-11-06 10:21:31 -0300
committerPerberos <[email protected]>2011-11-06 10:21:31 -0300
commit8e617a6b7b9742e055148b0e8ebb5982fe64bf9b (patch)
treecd2a8d36ae78a86262ad1b2a8ca8e87026028c53 /src/mate-screensaver-dialog.c
parent43cee15f735cfdf2615306209990a3cecae21724 (diff)
downloadmate-screensaver-8e617a6b7b9742e055148b0e8ebb5982fe64bf9b.tar.bz2
mate-screensaver-8e617a6b7b9742e055148b0e8ebb5982fe64bf9b.tar.xz
allman
Diffstat (limited to 'src/mate-screensaver-dialog.c')
-rw-r--r--src/mate-screensaver-dialog.c583
1 files changed, 265 insertions, 318 deletions
diff --git a/src/mate-screensaver-dialog.c b/src/mate-screensaver-dialog.c
index d698159..10083aa 100644
--- a/src/mate-screensaver-dialog.c
+++ b/src/mate-screensaver-dialog.c
@@ -44,146 +44,114 @@
#define MAX_FAILURES 5
-static gboolean verbose = FALSE;
-static gboolean show_version = FALSE;
-static gboolean enable_logout = FALSE;
-static gboolean enable_switch = FALSE;
-static char *logout_command = NULL;
-static char *status_message = NULL;
-static char *away_message = NULL;
-
-static GOptionEntry entries [] =
-{
- {
- "verbose", 0, 0, G_OPTION_ARG_NONE, &verbose,
- N_("Show debugging output"), NULL
- },
- {
- "version", 0, 0, G_OPTION_ARG_NONE, &show_version,
- N_("Version of this application"), NULL
- },
- {
- "enable-logout", 0, 0, G_OPTION_ARG_NONE, &enable_logout,
- N_("Show the logout button"), NULL
- },
- {
- "logout-command", 0, 0, G_OPTION_ARG_STRING, &logout_command,
- N_("Command to invoke from the logout button"), NULL
- },
- {
- "enable-switch", 0, 0, G_OPTION_ARG_NONE, &enable_switch,
- N_("Show the switch user button"), NULL
- },
- {
- "status-message", 0, 0, G_OPTION_ARG_STRING, &status_message,
- N_("Message to show in the dialog"), N_("MESSAGE")
- },
- {
- "away-message", 0, 0, G_OPTION_ARG_STRING, &away_message,
- N_("Not used"), N_("MESSAGE")
- },
- { NULL }
+static gboolean verbose = FALSE;
+static gboolean show_version = FALSE;
+static gboolean enable_logout = FALSE;
+static gboolean enable_switch = FALSE;
+static char* logout_command = NULL;
+static char* status_message = NULL;
+static char* away_message = NULL;
+
+static GOptionEntry entries[] = {
+ {"verbose", 0, 0, G_OPTION_ARG_NONE, &verbose, N_("Show debugging output"), NULL},
+ {"version", 0, 0, G_OPTION_ARG_NONE, &show_version, N_("Version of this application"), NULL},
+ {"enable-logout", 0, 0, G_OPTION_ARG_NONE, &enable_logout, N_("Show the logout button"), NULL},
+ {"logout-command", 0, 0, G_OPTION_ARG_STRING, &logout_command, N_("Command to invoke from the logout button"), NULL},
+ {"enable-switch", 0, 0, G_OPTION_ARG_NONE, &enable_switch, N_("Show the switch user button"), NULL},
+ {"status-message", 0, 0, G_OPTION_ARG_STRING, &status_message, N_("Message to show in the dialog"), N_("MESSAGE")},
+ {"away-message", 0, 0, G_OPTION_ARG_STRING, &away_message, N_("Not used"), N_("MESSAGE")},
+ {NULL}
};
-static char *
-get_id_string (GtkWidget *widget)
+static char* get_id_string(GtkWidget* widget)
{
- char *id = NULL;
+ char* id = NULL;
- g_return_val_if_fail (widget != NULL, NULL);
- g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
+ g_return_val_if_fail(widget != NULL, NULL);
+ g_return_val_if_fail(GTK_IS_WIDGET(widget), NULL);
- id = g_strdup_printf ("%" G_GUINT32_FORMAT,
- (guint32) GDK_WINDOW_XID (widget->window));
+ id = g_strdup_printf("%" G_GUINT32_FORMAT, (guint32) GDK_WINDOW_XID(widget->window));
return id;
}
-static gboolean
-print_id (GtkWidget *widget)
+static gboolean print_id(GtkWidget* widget)
{
- char *id;
+ char* id;
- gs_profile_start (NULL);
+ gs_profile_start(NULL);
- id = get_id_string (widget);
- printf ("WINDOW ID=%s\n", id);
- fflush (stdout);
+ id = get_id_string(widget);
+ printf("WINDOW ID=%s\n", id);
+ fflush(stdout);
- gs_profile_end (NULL);
+ gs_profile_end(NULL);
- g_free (id);
+ g_free(id);
return FALSE;
}
-static void
-response_cancel (void)
+static void response_cancel(void)
{
- printf ("RESPONSE=CANCEL\n");
- fflush (stdout);
+ printf("RESPONSE=CANCEL\n");
+ fflush(stdout);
}
-static void
-response_ok (void)
+static void response_ok(void)
{
- printf ("RESPONSE=OK\n");
- fflush (stdout);
+ printf("RESPONSE=OK\n");
+ fflush(stdout);
}
-static gboolean
-quit_response_ok (void)
+static gboolean quit_response_ok(void)
{
- response_ok ();
- gtk_main_quit ();
+ response_ok();
+ gtk_main_quit();
return FALSE;
}
-static gboolean
-quit_response_cancel (void)
+static gboolean quit_response_cancel(void)
{
- response_cancel ();
- gtk_main_quit ();
+ response_cancel();
+ gtk_main_quit();
return FALSE;
}
-static void
-response_lock_init_failed (void)
+static void response_lock_init_failed(void)
{
/* if we fail to lock then we should drop the dialog */
- response_ok ();
+ response_ok();
}
-static char *
-request_response (GSLockPlug *plug,
- const char *prompt,
- gboolean visible)
+static char* request_response(GSLockPlug* plug, const char* prompt, gboolean visible)
{
- int response;
- char *text;
+ int response;
+ char* text;
- gs_lock_plug_set_sensitive (plug, TRUE);
- gs_lock_plug_enable_prompt (plug, prompt, visible);
- response = gs_lock_plug_run (plug);
+ gs_lock_plug_set_sensitive(plug, TRUE);
+ gs_lock_plug_enable_prompt(plug, prompt, visible);
+ response = gs_lock_plug_run(plug);
gs_debug ("got response: %d", response);
text = NULL;
+
if (response == GS_LOCK_PLUG_RESPONSE_OK)
{
- gs_lock_plug_get_text (plug, &text);
+ gs_lock_plug_get_text(plug, &text);
}
- gs_lock_plug_disable_prompt (plug);
+
+ gs_lock_plug_disable_prompt(plug);
return text;
}
/* Adapted from MDM2 daemon/verify-pam.c on 2006-06-13 */
-static const char *
-maybe_translate_message (const char *msg)
+static const char* maybe_translate_message(const char* msg)
{
- char *s;
- const char *ret;
- static GHashTable *hash = NULL;
+ char* s;
+ const char* ret;
+ static GHashTable* hash = NULL;
if (hash == NULL)
{
@@ -193,31 +161,31 @@ maybe_translate_message (const char *msg)
some of these messages to be more sane. */
hash = g_hash_table_new (g_str_hash, g_str_equal);
/* login: is whacked always translate to Username: */
- g_hash_table_insert (hash, "login:", _("Username:"));
- g_hash_table_insert (hash, "Username:", _("Username:"));
- g_hash_table_insert (hash, "username:", _("Username:"));
- g_hash_table_insert (hash, "Password:", _("Password:"));
- g_hash_table_insert (hash, "password:", _("Password:"));
- g_hash_table_insert (hash, "You are required to change your password immediately (password aged)", _("You are required to change your password immediately (password aged)"));
- g_hash_table_insert (hash, "You are required to change your password immediately (root enforced)", _("You are required to change your password immediately (root enforced)"));
- g_hash_table_insert (hash, "Your account has expired; please contact your system administrator", _("Your account has expired; please contact your system administrator"));
- g_hash_table_insert (hash, "No password supplied", _("No password supplied"));
- g_hash_table_insert (hash, "Password unchanged", _("Password unchanged"));
- g_hash_table_insert (hash, "Can not get username", _("Can not get username"));
- g_hash_table_insert (hash, "Retype new UNIX password:", _("Retype new UNIX password:"));
- g_hash_table_insert (hash, "Enter new UNIX password:", _("Enter new UNIX password:"));
- g_hash_table_insert (hash, "(current) UNIX password:", _("(current) UNIX password:"));
- g_hash_table_insert (hash, "Error while changing NIS password.", _("Error while changing NIS password."));
- g_hash_table_insert (hash, "You must choose a longer password", _("You must choose a longer password"));
- g_hash_table_insert (hash, "Password has been already used. Choose another.", _("Password has been already used. Choose another."));
- g_hash_table_insert (hash, "You must wait longer to change your password", _("You must wait longer to change your password"));
- g_hash_table_insert (hash, "Sorry, passwords do not match", _("Sorry, passwords do not match"));
+ g_hash_table_insert(hash, "login:", _("Username:"));
+ g_hash_table_insert(hash, "Username:", _("Username:"));
+ g_hash_table_insert(hash, "username:", _("Username:"));
+ g_hash_table_insert(hash, "Password:", _("Password:"));
+ g_hash_table_insert(hash, "password:", _("Password:"));
+ g_hash_table_insert(hash, "You are required to change your password immediately (password aged)", _("You are required to change your password immediately (password aged)"));
+ g_hash_table_insert(hash, "You are required to change your password immediately (root enforced)", _("You are required to change your password immediately (root enforced)"));
+ g_hash_table_insert(hash, "Your account has expired; please contact your system administrator", _("Your account has expired; please contact your system administrator"));
+ g_hash_table_insert(hash, "No password supplied", _("No password supplied"));
+ g_hash_table_insert(hash, "Password unchanged", _("Password unchanged"));
+ g_hash_table_insert(hash, "Can not get username", _("Can not get username"));
+ g_hash_table_insert(hash, "Retype new UNIX password:", _("Retype new UNIX password:"));
+ g_hash_table_insert(hash, "Enter new UNIX password:", _("Enter new UNIX password:"));
+ g_hash_table_insert(hash, "(current) UNIX password:", _("(current) UNIX password:"));
+ g_hash_table_insert(hash, "Error while changing NIS password.", _("Error while changing NIS password."));
+ g_hash_table_insert(hash, "You must choose a longer password", _("You must choose a longer password"));
+ g_hash_table_insert(hash, "Password has been already used. Choose another.", _("Password has been already used. Choose another."));
+ g_hash_table_insert(hash, "You must wait longer to change your password", _("You must wait longer to change your password"));
+ g_hash_table_insert(hash, "Sorry, passwords do not match", _("Sorry, passwords do not match"));
/* FIXME: what about messages which have some variables in them, perhaps try to do those as well */
}
- s = g_strstrip (g_strdup (msg));
- ret = g_hash_table_lookup (hash, s);
- g_free (s);
+ s = g_strstrip(g_strdup(msg));
+ ret = g_hash_table_lookup(hash, s);
+ g_free(s);
if (ret != NULL)
{
@@ -229,165 +197,154 @@ maybe_translate_message (const char *msg)
}
}
-static gboolean
-auth_message_handler (GSAuthMessageStyle style,
- const char *msg,
- char **response,
- gpointer data)
+static gboolean auth_message_handler(GSAuthMessageStyle style, const char* msg, char** response, gpointer data)
{
- gboolean ret;
- GSLockPlug *plug;
- const char *message;
+ gboolean ret;
+ GSLockPlug* plug;
+ const char* message;
- plug = GS_LOCK_PLUG (data);
+ plug = GS_LOCK_PLUG(data);
- gs_profile_start (NULL);
- gs_debug ("Got message style %d: '%s'", style, msg);
+ gs_profile_start(NULL);
+ gs_debug("Got message style %d: '%s'", style, msg);
- gtk_widget_show (GTK_WIDGET (plug));
- gs_lock_plug_set_ready (plug);
+ gtk_widget_show(GTK_WIDGET(plug));
+ gs_lock_plug_set_ready(plug);
ret = TRUE;
*response = NULL;
- message = maybe_translate_message (msg);
+ message = maybe_translate_message(msg);
switch (style)
{
- case GS_AUTH_MESSAGE_PROMPT_ECHO_ON:
- if (msg != NULL)
- {
- char *resp;
- resp = request_response (plug, message, TRUE);
- *response = resp;
- }
- break;
- case GS_AUTH_MESSAGE_PROMPT_ECHO_OFF:
- if (msg != NULL)
- {
- char *resp;
- resp = request_response (plug, message, FALSE);
- *response = resp;
- }
- break;
- case GS_AUTH_MESSAGE_ERROR_MSG:
- gs_lock_plug_show_message (plug, message);
- break;
- case GS_AUTH_MESSAGE_TEXT_INFO:
- gs_lock_plug_show_message (plug, message);
- break;
- default:
- g_assert_not_reached ();
+ case GS_AUTH_MESSAGE_PROMPT_ECHO_ON:
+ if (msg != NULL)
+ {
+ char *resp;
+ resp = request_response(plug, message, TRUE);
+ *response = resp;
+ }
+ break;
+ case GS_AUTH_MESSAGE_PROMPT_ECHO_OFF:
+ if (msg != NULL)
+ {
+ char *resp;
+ resp = request_response(plug, message, FALSE);
+ *response = resp;
+ }
+ break;
+ case GS_AUTH_MESSAGE_ERROR_MSG:
+ gs_lock_plug_show_message(plug, message);
+ break;
+ case GS_AUTH_MESSAGE_TEXT_INFO:
+ gs_lock_plug_show_message(plug, message);
+ break;
+ default:
+ g_assert_not_reached();
}
if (*response == NULL)
{
- gs_debug ("Got no response");
+ gs_debug("Got no response");
ret = FALSE;
}
else
{
- gs_lock_plug_show_message (plug, _("Checking..."));
- gs_lock_plug_set_sensitive (plug, FALSE);
+ gs_lock_plug_show_message(plug, _("Checking..."));
+ gs_lock_plug_set_sensitive(plug, FALSE);
}
/* we may have pending events that should be processed before continuing back into PAM */
- while (gtk_events_pending ())
+ while (gtk_events_pending())
{
- gtk_main_iteration ();
+ gtk_main_iteration();
}
- gs_lock_plug_set_busy (plug);
- gs_profile_end (NULL);
+ gs_lock_plug_set_busy(plug);
+ gs_profile_end(NULL);
return ret;
}
-static gboolean
-reset_idle_cb (GSLockPlug *plug)
+static gboolean reset_idle_cb(GSLockPlug* plug)
{
- gs_lock_plug_set_sensitive (plug, TRUE);
- gs_lock_plug_show_message (plug, NULL);
+ gs_lock_plug_set_sensitive(plug, TRUE);
+ gs_lock_plug_show_message(plug, NULL);
return FALSE;
}
-static gboolean
-do_auth_check (GSLockPlug *plug)
+static gboolean do_auth_check(GSLockPlug* plug)
{
- GError *error;
+ GError* error;
gboolean res;
error = NULL;
- gs_lock_plug_disable_prompt (plug);
- gs_lock_plug_set_busy (plug);
- res = gs_auth_verify_user (g_get_user_name (), g_getenv ("DISPLAY"), auth_message_handler, plug, &error);
+ gs_lock_plug_disable_prompt(plug);
+ gs_lock_plug_set_busy(plug);
+ res = gs_auth_verify_user(g_get_user_name(), g_getenv("DISPLAY"), auth_message_handler, plug, &error);
+
+ gs_debug("Verify user returned: %s", res ? "TRUE" : "FALSE");
- gs_debug ("Verify user returned: %s", res ? "TRUE" : "FALSE");
if (! res)
{
if (error != NULL)
{
- gs_debug ("Verify user returned error: %s", error->message);
- gs_lock_plug_show_message (plug, error->message);
+ gs_debug("Verify user returned error: %s", error->message);
+ gs_lock_plug_show_message(plug, error->message);
}
else
{
- gs_lock_plug_show_message (plug, _("Authentication failed."));
+ gs_lock_plug_show_message(plug, _("Authentication failed."));
}
- printf ("NOTICE=AUTH FAILED\n");
- fflush (stdout);
+ printf("NOTICE=AUTH FAILED\n");
+ fflush(stdout);
if (error != NULL)
{
- g_error_free (error);
+ g_error_free(error);
}
}
return res;
}
-static void
-response_cb (GSLockPlug *plug,
- gint response_id)
+static void response_cb(GSLockPlug* plug, gint response_id)
{
- if ((response_id == GS_LOCK_PLUG_RESPONSE_CANCEL) ||
- (response_id == GTK_RESPONSE_DELETE_EVENT))
+ if ((response_id == GS_LOCK_PLUG_RESPONSE_CANCEL) || (response_id == GTK_RESPONSE_DELETE_EVENT))
{
- quit_response_cancel ();
+ quit_response_cancel();
}
}
-static gboolean
-response_request_quit (void)
+static gboolean response_request_quit(void)
{
- printf ("REQUEST QUIT\n");
- fflush (stdout);
+ printf("REQUEST QUIT\n");
+ fflush(stdout);
return FALSE;
}
-static gboolean
-quit_timeout_cb (gpointer data)
+static gboolean quit_timeout_cb(gpointer data)
{
- gtk_main_quit ();
+ gtk_main_quit();
return FALSE;
}
-static gboolean
-auth_check_idle (GSLockPlug *plug)
+static gboolean auth_check_idle(GSLockPlug* plug)
{
- gboolean res;
- gboolean again;
+ gboolean res;
+ gboolean again;
static guint loop_counter = 0;
again = TRUE;
- res = do_auth_check (plug);
+ res = do_auth_check(plug);
if (res)
{
again = FALSE;
- g_idle_add ((GSourceFunc)quit_response_ok, NULL);
+ g_idle_add((GSourceFunc) quit_response_ok, NULL);
}
else
{
@@ -396,7 +353,7 @@ auth_check_idle (GSLockPlug *plug)
if (loop_counter < MAX_FAILURES)
{
gs_debug ("Authentication failed, retrying (%u)", loop_counter);
- g_timeout_add (3000, (GSourceFunc)reset_idle_cb, plug);
+ g_timeout_add (3000, (GSourceFunc) reset_idle_cb, plug);
}
else
{
@@ -405,58 +362,55 @@ auth_check_idle (GSLockPlug *plug)
/* Don't quit immediately, but rather request that mate-screensaver
* terminates us after it has finished the dialog shake. Time out
* after 5 seconds and quit anyway if this doesn't happen though */
- g_idle_add ((GSourceFunc)response_request_quit, NULL);
- g_timeout_add (5000, (GSourceFunc)quit_timeout_cb, NULL);
+ g_idle_add((GSourceFunc) response_request_quit, NULL);
+ g_timeout_add(5000, (GSourceFunc) quit_timeout_cb, NULL);
}
}
return again;
}
-static void
-show_cb (GtkWidget *widget,
- gpointer data)
+static void show_cb(GtkWidget* widget, gpointer data)
{
- print_id (widget);
+ print_id(widget);
}
-static gboolean
-popup_dialog_idle (void)
+static gboolean popup_dialog_idle(void)
{
- GtkWidget *widget;
+ GtkWidget* widget;
- gs_profile_start (NULL);
+ gs_profile_start(NULL);
- widget = gs_lock_plug_new ();
+ widget = gs_lock_plug_new();
if (enable_logout)
{
- g_object_set (widget, "logout-enabled", TRUE, NULL);
+ g_object_set(widget, "logout-enabled", TRUE, NULL);
}
if (logout_command)
{
- g_object_set (widget, "logout-command", logout_command, NULL);
+ g_object_set(widget, "logout-command", logout_command, NULL);
}
if (enable_switch)
{
- g_object_set (widget, "switch-enabled", TRUE, NULL);
+ g_object_set(widget, "switch-enabled", TRUE, NULL);
}
if (status_message)
{
- g_object_set (widget, "status-message", status_message, NULL);
+ g_object_set(widget, "status-message", status_message, NULL);
}
- g_signal_connect (GS_LOCK_PLUG (widget), "response", G_CALLBACK (response_cb), NULL);
- g_signal_connect (widget, "show", G_CALLBACK (show_cb), NULL);
+ g_signal_connect(GS_LOCK_PLUG(widget), "response", G_CALLBACK(response_cb), NULL);
+ g_signal_connect(widget, "show", G_CALLBACK(show_cb), NULL);
- gtk_widget_realize (widget);
+ gtk_widget_realize(widget);
- g_idle_add ((GSourceFunc)auth_check_idle, widget);
+ g_idle_add((GSourceFunc) auth_check_idle, widget);
- gs_profile_end (NULL);
+ gs_profile_end(NULL);
return FALSE;
}
@@ -470,42 +424,37 @@ popup_dialog_idle (void)
If the executable is setuid root, then these initializations
are run as root, before discarding privileges.
*/
-static gboolean
-privileged_initialization (int *argc,
- char **argv,
- gboolean verbose)
+static gboolean privileged_initialization(int* argc, char** argv, gboolean verbose)
{
gboolean ret;
- char *nolock_reason;
- char *orig_uid;
- char *uid_message;
+ char* nolock_reason;
+ char* orig_uid;
+ char* uid_message;
- gs_profile_start (NULL);
+ gs_profile_start(NULL);
-#ifndef NO_LOCKING
- /* before hack_uid () for proper permissions */
- gs_auth_priv_init ();
-#endif /* NO_LOCKING */
+ #ifndef NO_LOCKING
+ /* before hack_uid () for proper permissions */
+ gs_auth_priv_init();
+ #endif /* NO_LOCKING */
- ret = hack_uid (&nolock_reason,
- &orig_uid,
- &uid_message);
+ ret = hack_uid(&nolock_reason, &orig_uid, &uid_message);
if (nolock_reason)
{
- g_debug ("Locking disabled: %s", nolock_reason);
+ g_debug("Locking disabled: %s", nolock_reason);
}
if (uid_message && verbose)
{
- g_print ("Modified UID: %s", uid_message);
+ g_print("Modified UID: %s", uid_message);
}
- g_free (nolock_reason);
- g_free (orig_uid);
- g_free (uid_message);
+ g_free(nolock_reason);
+ g_free(orig_uid);
+ g_free(uid_message);
- gs_profile_end (NULL);
+ gs_profile_end(NULL);
return ret;
}
@@ -517,149 +466,147 @@ privileged_initialization (int *argc,
*
* Figure out what locking mechanisms are supported.
*/
-static gboolean
-lock_initialization (int *argc,
- char **argv,
- char **nolock_reason,
- gboolean verbose)
+static gboolean lock_initialization (int* argc, char** argv, char** nolock_reason, gboolean verbose)
{
if (nolock_reason != NULL)
{
*nolock_reason = NULL;
}
-#ifdef NO_LOCKING
- if (nolock_reason != NULL)
- {
- *nolock_reason = g_strdup ("not compiled with locking support");
- }
+ #ifdef NO_LOCKING
- return FALSE;
-#else /* !NO_LOCKING */
-
- /* Finish initializing locking, now that we're out of privileged code. */
- if (! gs_auth_init ())
- {
if (nolock_reason != NULL)
{
- *nolock_reason = g_strdup ("error getting password");
+ *nolock_reason = g_strdup("not compiled with locking support");
}
return FALSE;
- }
+ #else /* !NO_LOCKING */
- /* If locking is currently enabled, but the environment indicates that
- we have been launched as MDM's "Background" program, then disable
- locking just in case.
- */
- if (getenv ("RUNNING_UNDER_MDM"))
- {
- if (nolock_reason != NULL)
+ /* Finish initializing locking, now that we're out of privileged code. */
+ if (!gs_auth_init())
{
- *nolock_reason = g_strdup ("running under MDM");
- }
+ if (nolock_reason != NULL)
+ {
+ *nolock_reason = g_strdup("error getting password");
+ }
- return FALSE;
- }
+ return FALSE;
+ }
- /* If the server is XDarwin (MacOS X) then disable locking.
- (X grabs only affect X programs, so you can use Command-Tab
- to bring any other Mac program to the front, e.g., Terminal.)
- */
- {
- gboolean macos = FALSE;
-
-#ifdef __APPLE__
- /* Disable locking if *running* on Apple hardware, since we have no
- reliable way to determine whether the server is running on MacOS.
- Hopefully __APPLE__ means "MacOS" and not "Linux on Mac hardware"
- but I'm not really sure about that.
- */
- macos = TRUE;
-#endif
-
- if (macos)
+ /* If locking is currently enabled, but the environment indicates that
+ * we have been launched as MDM's "Background" program, then disable
+ * locking just in case.
+ */
+ if (getenv("RUNNING_UNDER_MDM"))
{
if (nolock_reason != NULL)
{
- *nolock_reason = g_strdup ("Cannot lock securely on MacOS X");
+ *nolock_reason = g_strdup("running under MDM");
}
return FALSE;
}
- }
-#endif /* NO_LOCKING */
+ /* If the server is XDarwin (MacOS X) then disable locking.
+ * (X grabs only affect X programs, so you can use Command-Tab
+ * to bring any other Mac program to the front, e.g., Terminal.)
+ */
+ {
+ gboolean macos = FALSE;
+
+ #ifdef __APPLE__
+ /* Disable locking if *running* on Apple hardware, since we have no
+ * reliable way to determine whether the server is running on MacOS.
+ * Hopefully __APPLE__ means "MacOS" and not "Linux on Mac hardware"
+ * but I'm not really sure about that.
+ */
+ macos = TRUE;
+ #endif /* __APPLE__ */
+
+ if (macos)
+ {
+ if (nolock_reason != NULL)
+ {
+ *nolock_reason = g_strdup("Cannot lock securely on MacOS X");
+ }
+
+ return FALSE;
+ }
+ }
+
+ #endif /* NO_LOCKING */
return TRUE;
}
-int
-main (int argc,
- char **argv)
+int main(int argc, char** argv)
{
- GError *error = NULL;
- char *nolock_reason = NULL;
-
-#ifdef ENABLE_NLS
- bindtextdomain (GETTEXT_PACKAGE, MATELOCALEDIR);
-# ifdef HAVE_BIND_TEXTDOMAIN_CODESET
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-# endif
- textdomain (GETTEXT_PACKAGE);
-#endif
-
- if (! g_thread_supported ())
+ GError* error = NULL;
+ char* nolock_reason = NULL;
+
+ #ifdef ENABLE_NLS
+ bindtextdomain(GETTEXT_PACKAGE, MATELOCALEDIR);
+ #ifdef HAVE_BIND_TEXTDOMAIN_CODESET
+ bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
+ #endif
+ textdomain(GETTEXT_PACKAGE);
+ #endif
+
+ if (!g_thread_supported())
{
- g_thread_init (NULL);
+ g_thread_init(NULL);
}
- g_type_init ();
+ g_type_init();
- gs_profile_start (NULL);
+ gs_profile_start(NULL);
- if (! privileged_initialization (&argc, argv, verbose))
+ if (!privileged_initialization(&argc, argv, verbose))
{
- response_lock_init_failed ();
- exit (1);
+ response_lock_init_failed();
+ exit(1);
}
error = NULL;
- if (! gtk_init_with_args (&argc, &argv, NULL, entries, NULL, &error))
+
+ if (!gtk_init_with_args(&argc, &argv, NULL, entries, NULL, &error))
{
if (error != NULL)
{
- fprintf (stderr, "%s", error->message);
- g_error_free (error);
+ fprintf(stderr, "%s", error->message);
+ g_error_free(error);
}
- exit (1);
+
+ exit(1);
}
if (show_version)
{
- g_print ("%s %s\n", argv [0], VERSION);
- exit (1);
+ g_print("%s %s\n", argv[0], VERSION);
+ exit(1);
}
- if (! lock_initialization (&argc, argv, &nolock_reason, verbose))
+ if (!lock_initialization(&argc, argv, &nolock_reason, verbose))
{
if (nolock_reason != NULL)
{
g_debug ("Screen locking disabled: %s", nolock_reason);
g_free (nolock_reason);
}
- response_lock_init_failed ();
+
+ response_lock_init_failed();
exit (1);
}
- gs_debug_init (verbose, FALSE);
+ gs_debug_init(verbose, FALSE);
- g_idle_add ((GSourceFunc)popup_dialog_idle, NULL);
+ g_idle_add((GSourceFunc) popup_dialog_idle, NULL);
- gtk_main ();
+ gtk_main();
- gs_profile_end (NULL);
- gs_debug_shutdown ();
+ gs_profile_end(NULL);
+ gs_debug_shutdown();
return 0;
}