From e370e80c7dd84f70c1e8b7a552e037cb0fe6a72d Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 14 Jun 2012 13:16:28 +0000 Subject: [PATCH] formatting SVN revision: 72132 --- src/bin/e_desklock.c | 875 ++++++++++++++++++++++--------------------- 1 file changed, 441 insertions(+), 434 deletions(-) diff --git a/src/bin/e_desklock.c b/src/bin/e_desklock.c index 9000c8c07..f5ee1c8a2 100644 --- a/src/bin/e_desklock.c +++ b/src/bin/e_desklock.c @@ -4,15 +4,15 @@ # include #endif -#define E_DESKLOCK_STATE_DEFAULT 0 +#define E_DESKLOCK_STATE_DEFAULT 0 #define E_DESKLOCK_STATE_CHECKING 1 -#define E_DESKLOCK_STATE_INVALID 2 +#define E_DESKLOCK_STATE_INVALID 2 -#define ELOCK_POPUP_LAYER 10000 -#define PASSWD_LEN 256 +#define ELOCK_POPUP_LAYER 10000 +#define PASSWD_LEN 256 /**************************** private data ******************************/ -typedef struct _E_Desklock_Data E_Desklock_Data; +typedef struct _E_Desklock_Data E_Desklock_Data; typedef struct _E_Desklock_Popup_Data E_Desklock_Popup_Data; #ifdef HAVE_PAM typedef struct _E_Desklock_Auth E_Desklock_Auth; @@ -27,22 +27,22 @@ struct _E_Desklock_Popup_Data struct _E_Desklock_Data { - Eina_List *elock_wnd_list; - Ecore_X_Window elock_wnd; - Eina_List *handlers; - Ecore_X_Window elock_grab_break_wnd; - char passwd[PASSWD_LEN]; - int state; + Eina_List *elock_wnd_list; + Ecore_X_Window elock_wnd; + Eina_List *handlers; + Ecore_X_Window elock_grab_break_wnd; + char passwd[PASSWD_LEN]; + int state; }; #ifdef HAVE_PAM struct _E_Desklock_Auth { - struct - { - struct pam_conv conv; - pam_handle_t *handle; - } pam; + struct + { + struct pam_conv conv; + pam_handle_t *handle; + } pam; char user[PATH_MAX]; char passwd[PATH_MAX]; @@ -74,24 +74,24 @@ static Eina_Bool _e_desklock_cb_zone_add(void *data, int type, void *event); static Eina_Bool _e_desklock_cb_zone_del(void *data, int type, void *event); static Eina_Bool _e_desklock_cb_zone_move_resize(void *data, int type, void *event); -static void _e_desklock_null(void); -static void _e_desklock_passwd_update(void); -static void _e_desklock_backspace(void); -static void _e_desklock_delete(void); -static int _e_desklock_zone_num_get(void); -static int _e_desklock_check_auth(void); -static void _e_desklock_state_set(int state); +static void _e_desklock_null(void); +static void _e_desklock_passwd_update(void); +static void _e_desklock_backspace(void); +static void _e_desklock_delete(void); +static int _e_desklock_zone_num_get(void); +static int _e_desklock_check_auth(void); +static void _e_desklock_state_set(int state); #ifdef HAVE_PAM static Eina_Bool _e_desklock_cb_exit(void *data, int type, void *event); -static int _desklock_auth(char *passwd); -static int _desklock_pam_init(E_Desklock_Auth *da); -static int _desklock_auth_pam_conv(int num_msg, const struct pam_message **msg, struct pam_response **resp, void *appdata_ptr); -static char *_desklock_auth_get_current_user(void); -static char *_desklock_auth_get_current_host(void); +static int _desklock_auth(char *passwd); +static int _desklock_pam_init(E_Desklock_Auth *da); +static int _desklock_auth_pam_conv(int num_msg, const struct pam_message **msg, struct pam_response **resp, void *appdata_ptr); +static char *_desklock_auth_get_current_user(void); +static char *_desklock_auth_get_current_host(void); #endif -static void _e_desklock_ask_presentation_mode(void); +static void _e_desklock_ask_presentation_mode(void); EAPI int E_EVENT_DESKLOCK = 0; @@ -100,7 +100,7 @@ e_desklock_init(void) { /* A poller to tick every 256 ticks, watching for an idle user */ _e_desklock_idle_poller = ecore_poller_add(ECORE_POLLER_CORE, 256, - _e_desklock_cb_idle_poller, NULL); + _e_desklock_cb_idle_poller, NULL); if (e_config->desklock_background) e_filereg_register(e_config->desklock_background); @@ -114,13 +114,13 @@ EINTERN int e_desklock_shutdown(void) { Eina_Bool waslocked = EINA_FALSE; - + if (edd) waslocked = EINA_TRUE; if (!x_fatal) - e_desklock_hide(); + e_desklock_hide(); if (e_config->desklock_background) e_filereg_deregister(e_config->desklock_background); - + if (waslocked) e_util_env_set("E_DESKLOCK_LOCKED", "locked"); return 1; } @@ -164,20 +164,20 @@ e_desklock_show(void) if (e_config->desklock_use_custom_desklock && e_config->desklock_custom_desklock_cmd && e_config->desklock_custom_desklock_cmd[0]) { - _e_custom_desklock_exe_handler = - ecore_event_handler_add(ECORE_EXE_EVENT_DEL, - _e_desklock_cb_custom_desklock_exit, NULL); + _e_custom_desklock_exe_handler = + ecore_event_handler_add(ECORE_EXE_EVENT_DEL, + _e_desklock_cb_custom_desklock_exit, NULL); e_util_library_path_strip(); - _e_custom_desklock_exe = - ecore_exe_run(e_config->desklock_custom_desklock_cmd, NULL); + _e_custom_desklock_exe = + ecore_exe_run(e_config->desklock_custom_desklock_cmd, NULL); e_util_library_path_restore(); - return 1; + return 1; } #ifndef HAVE_PAM e_util_dialog_show(_("Error - no PAM support"), - _("No PAM support was built into Enlightenment, so
" - "desk locking is disabled.")); + _("No PAM support was built into Enlightenment, so
" + "desk locking is disabled.")); return 0; #endif @@ -187,221 +187,222 @@ e_desklock_show(void) if (e_config->desklock_auth_method == 1) { #endif - if (!e_config->desklock_personal_passwd) - { - E_Zone *zone; + if (!e_config->desklock_personal_passwd) + { + E_Zone *zone; - zone = e_util_zone_current_get(e_manager_current_get()); - if (zone) - e_configure_registry_call("screen/screen_lock", zone->container, NULL); - return 0; - } -#ifdef HAVE_PAM + zone = e_util_zone_current_get(e_manager_current_get()); + if (zone) + e_configure_registry_call("screen/screen_lock", zone->container, NULL); + return 0; } +#ifdef HAVE_PAM +} + #endif edd = E_NEW(E_Desklock_Data, 1); if (!edd) return 0; - edd->elock_wnd = + edd->elock_wnd = ecore_x_window_input_new(e_manager_current_get()->root, 0, 0, 1, 1); ecore_x_window_show(edd->elock_wnd); managers = e_manager_list(); if (!e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd)) { - EINA_LIST_FOREACH(managers, l, man) - { - Ecore_X_Window *windows; - int wnum; + EINA_LIST_FOREACH(managers, l, man) + { + Ecore_X_Window *windows; + int wnum; - windows = ecore_x_window_children_get(man->root, &wnum); - if (windows) - { - int i; + windows = ecore_x_window_children_get(man->root, &wnum); + if (windows) + { + int i; - for (i = 0; i < wnum; i++) - { - Ecore_X_Window_Attributes att; + for (i = 0; i < wnum; i++) + { + Ecore_X_Window_Attributes att; - memset(&att, 0, sizeof(Ecore_X_Window_Attributes)); - ecore_x_window_attributes_get(windows[i], &att); - if (att.visible) - { - ecore_x_window_hide(windows[i]); - if (e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd)) - { - edd->elock_grab_break_wnd = windows[i]; - free(windows); - goto works; - } - ecore_x_window_show(windows[i]); - } - } - free(windows); - } - } - /* everything failed - can't lock */ - e_util_dialog_show(_("Lock Failed"), - _("Locking the desktop failed because some application
" - "has grabbed either the keyboard or the mouse or both
" - "and their grab is unable to be broken.")); - ecore_x_window_free(edd->elock_wnd); - E_FREE(edd); - return 0; + memset(&att, 0, sizeof(Ecore_X_Window_Attributes)); + ecore_x_window_attributes_get(windows[i], &att); + if (att.visible) + { + ecore_x_window_hide(windows[i]); + if (e_grabinput_get(edd->elock_wnd, 0, edd->elock_wnd)) + { + edd->elock_grab_break_wnd = windows[i]; + free(windows); + goto works; + } + ecore_x_window_show(windows[i]); + } + } + free(windows); + } + } + /* everything failed - can't lock */ + e_util_dialog_show(_("Lock Failed"), + _("Locking the desktop failed because some application
" + "has grabbed either the keyboard or the mouse or both
" + "and their grab is unable to be broken.")); + ecore_x_window_free(edd->elock_wnd); + E_FREE(edd); + return 0; } - works: +works: last_active_zone = current_zone = - e_zone_current_get(e_container_current_get(e_manager_current_get())); + e_zone_current_get(e_container_current_get(e_manager_current_get())); zone_counter = 0; total_zone_num = _e_desklock_zone_num_get(); EINA_LIST_FOREACH(managers, l, man) { - E_Container *con; + E_Container *con; - EINA_LIST_FOREACH(man->containers, l2, con) - { - E_Zone *zone; + EINA_LIST_FOREACH(man->containers, l2, con) + { + E_Zone *zone; - EINA_LIST_FOREACH(con->zones, l3, zone) - { - edp = E_NEW(E_Desklock_Popup_Data, 1); - if (edp) - { - edp->popup_wnd = e_popup_new(zone, 0, 0, zone->w, zone->h); - evas_event_feed_mouse_move(edp->popup_wnd->evas, -1000000, -1000000, - ecore_x_current_time_get(), NULL); + EINA_LIST_FOREACH(con->zones, l3, zone) + { + edp = E_NEW(E_Desklock_Popup_Data, 1); + if (edp) + { + edp->popup_wnd = e_popup_new(zone, 0, 0, zone->w, zone->h); + evas_event_feed_mouse_move(edp->popup_wnd->evas, -1000000, -1000000, + ecore_x_current_time_get(), NULL); - e_popup_layer_set(edp->popup_wnd, ELOCK_POPUP_LAYER); - ecore_evas_raise(edp->popup_wnd->ecore_evas); + e_popup_layer_set(edp->popup_wnd, ELOCK_POPUP_LAYER); + ecore_evas_raise(edp->popup_wnd->ecore_evas); - evas_event_freeze(edp->popup_wnd->evas); - edp->bg_object = edje_object_add(edp->popup_wnd->evas); + evas_event_freeze(edp->popup_wnd->evas); + edp->bg_object = edje_object_add(edp->popup_wnd->evas); - if ((!e_config->desklock_background) || - (!strcmp(e_config->desklock_background, "theme_desklock_background"))) - { - e_theme_edje_object_set(edp->bg_object, - "base/theme/desklock", - "e/desklock/background"); - } - else if (!strcmp(e_config->desklock_background, "theme_background")) - { - e_theme_edje_object_set(edp->bg_object, - "base/theme/backgrounds", - "e/desktop/background"); - } - else - { - const char *f; + if ((!e_config->desklock_background) || + (!strcmp(e_config->desklock_background, "theme_desklock_background"))) + { + e_theme_edje_object_set(edp->bg_object, + "base/theme/desklock", + "e/desklock/background"); + } + else if (!strcmp(e_config->desklock_background, "theme_background")) + { + e_theme_edje_object_set(edp->bg_object, + "base/theme/backgrounds", + "e/desktop/background"); + } + else + { + const char *f; - if (!strcmp(e_config->desklock_background, "user_background")) - f = _user_wallpaper_get(); - else - f = e_config->desklock_background; + if (!strcmp(e_config->desklock_background, "user_background")) + f = _user_wallpaper_get(); + else + f = e_config->desklock_background; - if (e_util_edje_collection_exists(f, "e/desklock/background")) - { - edje_object_file_set(edp->bg_object, f, - "e/desklock/background"); - } - else - { - if (!edje_object_file_set(edp->bg_object, - f, "e/desktop/background")) - { - edje_object_file_set(edp->bg_object, - e_theme_edje_file_get("base/theme/desklock", - "e/desklock/background"), - "e/desklock/background"); - } - } - } + if (e_util_edje_collection_exists(f, "e/desklock/background")) + { + edje_object_file_set(edp->bg_object, f, + "e/desklock/background"); + } + else + { + if (!edje_object_file_set(edp->bg_object, + f, "e/desktop/background")) + { + edje_object_file_set(edp->bg_object, + e_theme_edje_file_get("base/theme/desklock", + "e/desklock/background"), + "e/desklock/background"); + } + } + } - evas_object_move(edp->bg_object, 0, 0); - evas_object_resize(edp->bg_object, zone->w, zone->h); - evas_object_show(edp->bg_object); - edp->login_box = edje_object_add(edp->popup_wnd->evas); - e_theme_edje_object_set(edp->login_box, - "base/theme/desklock", - "e/desklock/login_box"); - edje_object_part_text_set(edp->login_box, "e.text.title", - _("Please enter your unlock password")); - edje_object_size_min_calc(edp->login_box, &mw, &mh); - if (edje_object_part_exists(edp->bg_object, "e.swallow.login_box")) - { - edje_extern_object_min_size_set(edp->login_box, mw, mh); - edje_object_part_swallow(edp->bg_object, "e.swallow.login_box", edp->login_box); - } - else - { - evas_object_resize(edp->login_box, mw, mh); - evas_object_move(edp->login_box, - ((zone->w - mw) / 2), - ((zone->h - mh) / 2)); - } - if (total_zone_num > 1) - { - if (e_config->desklock_login_box_zone == -1) - evas_object_show(edp->login_box); - else if ((e_config->desklock_login_box_zone == -2) && - (zone == current_zone)) - evas_object_show(edp->login_box); - else if (e_config->desklock_login_box_zone == zone_counter) - evas_object_show(edp->login_box); - } - else - evas_object_show(edp->login_box); + evas_object_move(edp->bg_object, 0, 0); + evas_object_resize(edp->bg_object, zone->w, zone->h); + evas_object_show(edp->bg_object); + edp->login_box = edje_object_add(edp->popup_wnd->evas); + e_theme_edje_object_set(edp->login_box, + "base/theme/desklock", + "e/desklock/login_box"); + edje_object_part_text_set(edp->login_box, "e.text.title", + _("Please enter your unlock password")); + edje_object_size_min_calc(edp->login_box, &mw, &mh); + if (edje_object_part_exists(edp->bg_object, "e.swallow.login_box")) + { + edje_extern_object_min_size_set(edp->login_box, mw, mh); + edje_object_part_swallow(edp->bg_object, "e.swallow.login_box", edp->login_box); + } + else + { + evas_object_resize(edp->login_box, mw, mh); + evas_object_move(edp->login_box, + ((zone->w - mw) / 2), + ((zone->h - mh) / 2)); + } + if (total_zone_num > 1) + { + if (e_config->desklock_login_box_zone == -1) + evas_object_show(edp->login_box); + else if ((e_config->desklock_login_box_zone == -2) && + (zone == current_zone)) + evas_object_show(edp->login_box); + else if (e_config->desklock_login_box_zone == zone_counter) + evas_object_show(edp->login_box); + } + else + evas_object_show(edp->login_box); - e_popup_edje_bg_object_set(edp->popup_wnd, edp->bg_object); - evas_event_thaw(edp->popup_wnd->evas); + e_popup_edje_bg_object_set(edp->popup_wnd, edp->bg_object); + evas_event_thaw(edp->popup_wnd->evas); - e_popup_show(edp->popup_wnd); + e_popup_show(edp->popup_wnd); - edd->elock_wnd_list = eina_list_append(edd->elock_wnd_list, edp); - } - zone_counter++; - } - } + edd->elock_wnd_list = eina_list_append(edd->elock_wnd_list, edp); + } + zone_counter++; + } + } } /* handlers */ - edd->handlers = - eina_list_append(edd->handlers, - ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, - _e_desklock_cb_key_down, NULL)); edd->handlers = eina_list_append(edd->handlers, - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_STACK, - _e_desklock_cb_window_stack, NULL)); + ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, + _e_desklock_cb_key_down, NULL)); edd->handlers = eina_list_append(edd->handlers, - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CONFIGURE, - _e_desklock_cb_window_stack, NULL)); + ecore_event_handler_add(ECORE_X_EVENT_WINDOW_STACK, + _e_desklock_cb_window_stack, NULL)); edd->handlers = eina_list_append(edd->handlers, - ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CREATE, - _e_desklock_cb_window_stack, NULL)); + ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CONFIGURE, + _e_desklock_cb_window_stack, NULL)); edd->handlers = eina_list_append(edd->handlers, - ecore_event_handler_add(E_EVENT_ZONE_ADD, - _e_desklock_cb_zone_add, NULL)); + ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CREATE, + _e_desklock_cb_window_stack, NULL)); edd->handlers = eina_list_append(edd->handlers, - ecore_event_handler_add(E_EVENT_ZONE_DEL, - _e_desklock_cb_zone_del, NULL)); + ecore_event_handler_add(E_EVENT_ZONE_ADD, + _e_desklock_cb_zone_add, NULL)); edd->handlers = eina_list_append(edd->handlers, - ecore_event_handler_add(E_EVENT_ZONE_MOVE_RESIZE, - _e_desklock_cb_zone_move_resize, NULL)); + ecore_event_handler_add(E_EVENT_ZONE_DEL, + _e_desklock_cb_zone_del, NULL)); + edd->handlers = + eina_list_append(edd->handlers, + ecore_event_handler_add(E_EVENT_ZONE_MOVE_RESIZE, + _e_desklock_cb_zone_move_resize, NULL)); - if ((total_zone_num > 1) && (e_config->desklock_login_box_zone == -2)) + if ((total_zone_num > 1) && (e_config->desklock_login_box_zone == -2)) { - edd->handlers = - eina_list_append(edd->handlers, - ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE, - _e_desklock_cb_mouse_move, - NULL)); + edd->handlers = + eina_list_append(edd->handlers, + ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE, + _e_desklock_cb_mouse_move, + NULL)); } _e_desklock_passwd_update(); @@ -409,7 +410,7 @@ e_desklock_show(void) ev = E_NEW(E_Event_Desklock, 1); ev->on = 1; ecore_event_add(E_EVENT_DESKLOCK, ev, NULL, NULL); - + e_util_env_set("E_DESKLOCK_LOCKED", "locked"); return 1; } @@ -424,8 +425,8 @@ e_desklock_hide(void) if (e_config->desklock_use_custom_desklock) { - _e_custom_desklock_exe = NULL; - return; + _e_custom_desklock_exe = NULL; + return; } if (edd->elock_grab_break_wnd) @@ -433,18 +434,18 @@ e_desklock_hide(void) EINA_LIST_FREE(edd->elock_wnd_list, edp) { - if (edp) - { - e_popup_hide(edp->popup_wnd); + if (edp) + { + e_popup_hide(edp->popup_wnd); - evas_event_freeze(edp->popup_wnd->evas); - evas_object_del(edp->bg_object); - evas_object_del(edp->login_box); - evas_event_thaw(edp->popup_wnd->evas); + evas_event_freeze(edp->popup_wnd->evas); + evas_object_del(edp->bg_object); + evas_object_del(edp->login_box); + evas_event_thaw(edp->popup_wnd->evas); - e_util_defer_object_del(E_OBJECT(edp->popup_wnd)); - E_FREE(edp); - } + e_util_defer_object_del(E_OBJECT(edp->popup_wnd)); + E_FREE(edp); + } } E_FREE_LIST(edd->handlers, ecore_event_handler_del); @@ -461,28 +462,28 @@ e_desklock_hide(void) if (_e_desklock_autolock_time > 0.0) { - if ((e_config->desklock_ask_presentation) && - (e_config->desklock_ask_presentation_timeout > 0.0)) - { - double max, now; + if ((e_config->desklock_ask_presentation) && + (e_config->desklock_ask_presentation_timeout > 0.0)) + { + double max, now; - now = ecore_loop_time_get(); - max = _e_desklock_autolock_time + e_config->desklock_ask_presentation_timeout; - if (now <= max) - _e_desklock_ask_presentation_mode(); - } - else - _e_desklock_ask_presentation_count = 0; + now = ecore_loop_time_get(); + max = _e_desklock_autolock_time + e_config->desklock_ask_presentation_timeout; + if (now <= max) + _e_desklock_ask_presentation_mode(); + } + else + _e_desklock_ask_presentation_count = 0; - _e_desklock_autolock_time = 0.0; + _e_desklock_autolock_time = 0.0; } e_util_env_set("E_DESKLOCK_LOCKED", "freefreefree"); } static Eina_Bool _e_desklock_cb_window_stack(void *data __UNUSED__, - int type, - void *event) + int type, + void *event) { Ecore_X_Window win, win2 = 0; E_Desklock_Popup_Data *edp; @@ -490,33 +491,33 @@ _e_desklock_cb_window_stack(void *data __UNUSED__, Eina_Bool raise_win = EINA_TRUE; if (!edd) return ECORE_CALLBACK_PASS_ON; - + if (type == ECORE_X_EVENT_WINDOW_STACK) - win = ((Ecore_X_Event_Window_Stack*) event)->event_win; + win = ((Ecore_X_Event_Window_Stack *)event)->event_win; else if (type == ECORE_X_EVENT_WINDOW_CONFIGURE) { - win = ((Ecore_X_Event_Window_Configure*) event)->event_win; - win2 = ((Ecore_X_Event_Window_Configure*) event)->win; + win = ((Ecore_X_Event_Window_Configure *)event)->event_win; + win2 = ((Ecore_X_Event_Window_Configure *)event)->win; } else if (type == ECORE_X_EVENT_WINDOW_CREATE) - win = ((Ecore_X_Event_Window_Create*) event)->win; - else + win = ((Ecore_X_Event_Window_Create *)event)->win; + else return ECORE_CALLBACK_PASS_ON; - + EINA_LIST_FOREACH(edd->elock_wnd_list, l, edp) { - if ((win == edp->popup_wnd->evas_win) || + if ((win == edp->popup_wnd->evas_win) || ((win2) && (win2 == edp->popup_wnd->evas_win))) - { - raise_win = EINA_FALSE; - break; - } + { + raise_win = EINA_FALSE; + break; + } } if (raise_win) { - EINA_LIST_FOREACH(edd->elock_wnd_list, l, edp) - ecore_evas_raise(edp->popup_wnd->ecore_evas); + EINA_LIST_FOREACH(edd->elock_wnd_list, l, edp) + ecore_evas_raise(edp->popup_wnd->ecore_evas); } return ECORE_CALLBACK_PASS_ON; @@ -534,7 +535,7 @@ _e_desklock_relock_cb(void *data __UNUSED__) static Eina_Bool _e_desklock_cb_zone_add(void *data __UNUSED__, - int type __UNUSED__, + int type __UNUSED__, void *event __UNUSED__) { if (!edd) return ECORE_CALLBACK_PASS_ON; @@ -545,7 +546,7 @@ _e_desklock_cb_zone_add(void *data __UNUSED__, static Eina_Bool _e_desklock_cb_zone_del(void *data __UNUSED__, - int type __UNUSED__, + int type __UNUSED__, void *event __UNUSED__) { if (!edd) return ECORE_CALLBACK_PASS_ON; @@ -556,7 +557,7 @@ _e_desklock_cb_zone_del(void *data __UNUSED__, static Eina_Bool _e_desklock_cb_zone_move_resize(void *data __UNUSED__, - int type __UNUSED__, + int type __UNUSED__, void *event __UNUSED__) { if (!edd) return ECORE_CALLBACK_PASS_ON; @@ -570,7 +571,7 @@ _e_desklock_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event) { Ecore_Event_Key *ev = event; - if ((ev->window != edd->elock_wnd) || + if ((ev->window != edd->elock_wnd) || (edd->state == E_DESKLOCK_STATE_CHECKING)) return 1; if (!strcmp(ev->key, "Escape")) @@ -583,20 +584,20 @@ _e_desklock_cb_key_down(void *data __UNUSED__, int type __UNUSED__, void *event) _e_desklock_backspace(); else if (!strcmp(ev->key, "Delete")) _e_desklock_delete(); - else if ((!strcmp(ev->key, "u") && - (ev->modifiers & ECORE_EVENT_MODIFIER_CTRL))) + else if ((!strcmp(ev->key, "u") && + (ev->modifiers & ECORE_EVENT_MODIFIER_CTRL))) _e_desklock_null(); else { - /* here we have to grab a password */ - if (ev->compose) - { - if ((strlen(edd->passwd) < (PASSWD_LEN - strlen(ev->compose)))) - { - strcat(edd->passwd, ev->compose); - _e_desklock_passwd_update(); - } - } + /* here we have to grab a password */ + if (ev->compose) + { + if ((strlen(edd->passwd) < (PASSWD_LEN - strlen(ev->compose)))) + { + strcat(edd->passwd, ev->compose); + _e_desklock_passwd_update(); + } + } } return ECORE_CALLBACK_PASS_ON; @@ -616,12 +617,12 @@ _e_desklock_cb_mouse_move(void *data __UNUSED__, int type __UNUSED__, void *even EINA_LIST_FOREACH(edd->elock_wnd_list, l, edp) { - if (!edp) continue; + if (!edp) continue; - if (edp->popup_wnd->zone == last_active_zone) - evas_object_hide(edp->login_box); - else if (edp->popup_wnd->zone == current_zone) - evas_object_show(edp->login_box); + if (edp->popup_wnd->zone == last_active_zone) + evas_object_hide(edp->login_box); + else if (edp->popup_wnd->zone == current_zone) + evas_object_show(edp->login_box); } last_active_zone = current_zone; return ECORE_CALLBACK_PASS_ON; @@ -638,13 +639,13 @@ _e_desklock_passwd_update(void) if (!edd) return; len = eina_unicode_utf8_get_len(edd->passwd); - for (i = 0, pp = passwd_hidden ; i < len ; i++, pp++) + for (i = 0, pp = passwd_hidden; i < len; i++, pp++) *pp = '*'; *pp = 0; EINA_LIST_FOREACH(edd->elock_wnd_list, l, edp) edje_object_part_text_set(edp->login_box, "e.text.password", - passwd_hidden); + passwd_hidden); } static void @@ -664,12 +665,12 @@ _e_desklock_backspace(void) len = strlen(edd->passwd); if (len > 0) { - pos = evas_string_char_prev_get(edd->passwd, len, &val); - if ((pos < len) && (pos >= 0)) - { - edd->passwd[pos] = 0; - _e_desklock_passwd_update(); - } + pos = evas_string_char_prev_get(edd->passwd, len, &val); + if ((pos < len) && (pos >= 0)) + { + edd->passwd[pos] = 0; + _e_desklock_passwd_update(); + } } } @@ -689,9 +690,9 @@ _e_desklock_zone_num_get(void) num = 0; EINA_LIST_FOREACH(e_manager_list(), l, man) { - E_Container *con; - EINA_LIST_FOREACH(man->containers, l2, con) - num += eina_list_count(con->zones); + E_Container *con; + EINA_LIST_FOREACH(man->containers, l2, con) + num += eina_list_count(con->zones); } return num; @@ -707,19 +708,20 @@ _e_desklock_check_auth(void) else if (e_config->desklock_auth_method == 1) { #endif - if ((e_config->desklock_personal_passwd) && - (!strcmp(!edd->passwd ? "" : edd->passwd, - !e_config->desklock_personal_passwd ? "" : - e_config->desklock_personal_passwd))) - { - /* password ok */ - /* security - null out passwd string once we are done with it */ - memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN); - e_desklock_hide(); - return 1; - } -#ifdef HAVE_PAM + if ((e_config->desklock_personal_passwd) && + (!strcmp(!edd->passwd ? "" : edd->passwd, + !e_config->desklock_personal_passwd ? "" : + e_config->desklock_personal_passwd))) + { + /* password ok */ + /* security - null out passwd string once we are done with it */ + memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN); + e_desklock_hide(); + return 1; } +#ifdef HAVE_PAM +} + #endif /* password is definitely wrong */ _e_desklock_state_set(E_DESKLOCK_STATE_INVALID); @@ -738,26 +740,25 @@ _e_desklock_state_set(int state) edd->state = state; if (state == E_DESKLOCK_STATE_CHECKING) { - signal_desklock = "e,state,checking"; - text = "Authenticating..."; + signal_desklock = "e,state,checking"; + text = "Authenticating..."; } else if (state == E_DESKLOCK_STATE_INVALID) { - signal_desklock = "e,state,invalid"; - text = "The password you entered is invalid. Try again."; + signal_desklock = "e,state,invalid"; + text = "The password you entered is invalid. Try again."; } else return; EINA_LIST_FOREACH(edd->elock_wnd_list, l, edp) { - edje_object_signal_emit(edp->login_box, signal_desklock, "e.desklock"); - edje_object_signal_emit(edp->bg_object, signal_desklock, "e.desklock"); - edje_object_part_text_set(edp->login_box, "e.text.title", text); + edje_object_signal_emit(edp->login_box, signal_desklock, "e.desklock"); + edje_object_signal_emit(edp->bg_object, signal_desklock, "e.desklock"); + edje_object_part_text_set(edp->login_box, "e.text.title", text); } } - #ifdef HAVE_PAM static Eina_Bool _e_desklock_cb_exit(void *data __UNUSED__, int type __UNUSED__, void *event) @@ -766,36 +767,36 @@ _e_desklock_cb_exit(void *data __UNUSED__, int type __UNUSED__, void *event) if (ev->pid == _e_desklock_child_pid) { - _e_desklock_child_pid = -1; - /* ok */ - if (ev->exit_code == 0) - { - /* security - null out passwd string once we are done with it */ - memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN); - e_desklock_hide(); - } - /* error */ - else if (ev->exit_code < 128) - { - /* security - null out passwd string once we are done with it */ - memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN); - e_desklock_hide(); - e_util_dialog_show(_("Authentication System Error"), - _("Authentication via PAM had errors setting up the
" - "authentication session. The error code was %i.
" - "This is bad and should not be happening. Please report this bug.") - , ev->exit_code); - } - /* failed auth */ - else - { - _e_desklock_state_set(E_DESKLOCK_STATE_INVALID); - /* security - null out passwd string once we are done with it */ - _e_desklock_null(); - } - if (_e_desklock_exit_handler) - ecore_event_handler_del(_e_desklock_exit_handler); - _e_desklock_exit_handler = NULL; + _e_desklock_child_pid = -1; + /* ok */ + if (ev->exit_code == 0) + { + /* security - null out passwd string once we are done with it */ + memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN); + e_desklock_hide(); + } + /* error */ + else if (ev->exit_code < 128) + { + /* security - null out passwd string once we are done with it */ + memset(edd->passwd, 0, sizeof(char) * PASSWD_LEN); + e_desklock_hide(); + e_util_dialog_show(_("Authentication System Error"), + _("Authentication via PAM had errors setting up the
" + "authentication session. The error code was %i.
" + "This is bad and should not be happening. Please report this bug.") + , ev->exit_code); + } + /* failed auth */ + else + { + _e_desklock_state_set(E_DESKLOCK_STATE_INVALID); + /* security - null out passwd string once we are done with it */ + _e_desklock_null(); + } + if (_e_desklock_exit_handler) + ecore_event_handler_del(_e_desklock_exit_handler); + _e_desklock_exit_handler = NULL; } return ECORE_CALLBACK_PASS_ON; } @@ -807,59 +808,60 @@ _desklock_auth(char *passwd) _e_desklock_child_pid = fork(); if (_e_desklock_child_pid > 0) { - /* parent */ - _e_desklock_exit_handler = - ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _e_desklock_cb_exit, - NULL); + /* parent */ + _e_desklock_exit_handler = + ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _e_desklock_cb_exit, + NULL); } else if (_e_desklock_child_pid == 0) { - /* child */ - int pamerr; - E_Desklock_Auth da; + /* child */ + int pamerr; + E_Desklock_Auth da; char *current_user, *p; - struct sigaction action; + struct sigaction action; - action.sa_handler = SIG_DFL; - action.sa_flags = SA_ONSTACK | SA_NODEFER | SA_RESETHAND | SA_SIGINFO; - sigemptyset(&action.sa_mask); - sigaction(SIGSEGV, &action, NULL); - sigaction(SIGILL, &action, NULL); - sigaction(SIGFPE, &action, NULL); - sigaction(SIGBUS, &action, NULL); - sigaction(SIGABRT, &action, NULL); + action.sa_handler = SIG_DFL; + action.sa_flags = SA_ONSTACK | SA_NODEFER | SA_RESETHAND | SA_SIGINFO; + sigemptyset(&action.sa_mask); + sigaction(SIGSEGV, &action, NULL); + sigaction(SIGILL, &action, NULL); + sigaction(SIGFPE, &action, NULL); + sigaction(SIGBUS, &action, NULL); + sigaction(SIGABRT, &action, NULL); - current_user = _desklock_auth_get_current_user(); - eina_strlcpy(da.user, current_user, sizeof(da.user)); - eina_strlcpy(da.passwd, passwd, sizeof(da.passwd)); - /* security - null out passwd string once we are done with it */ - for (p = passwd; *p; p++) *p = 0; - da.pam.handle = NULL; - da.pam.conv.conv = NULL; - da.pam.conv.appdata_ptr = NULL; + current_user = _desklock_auth_get_current_user(); + eina_strlcpy(da.user, current_user, sizeof(da.user)); + eina_strlcpy(da.passwd, passwd, sizeof(da.passwd)); + /* security - null out passwd string once we are done with it */ + for (p = passwd; *p; p++) + *p = 0; + da.pam.handle = NULL; + da.pam.conv.conv = NULL; + da.pam.conv.appdata_ptr = NULL; - pamerr = _desklock_pam_init(&da); - if (pamerr != PAM_SUCCESS) - { - free(current_user); - exit(1); - } - pamerr = pam_authenticate(da.pam.handle, 0); - pam_end(da.pam.handle, pamerr); - /* security - null out passwd string once we are done with it */ - memset(da.passwd, 0, sizeof(da.passwd)); - if (pamerr == PAM_SUCCESS) - { - free(current_user); - exit(0); - } - free(current_user); - exit(-1); + pamerr = _desklock_pam_init(&da); + if (pamerr != PAM_SUCCESS) + { + free(current_user); + exit(1); + } + pamerr = pam_authenticate(da.pam.handle, 0); + pam_end(da.pam.handle, pamerr); + /* security - null out passwd string once we are done with it */ + memset(da.passwd, 0, sizeof(da.passwd)); + if (pamerr == PAM_SUCCESS) + { + free(current_user); + exit(0); + } + free(current_user); + exit(-1); } else { - _e_desklock_state_set(E_DESKLOCK_STATE_INVALID); - return 0; + _e_desklock_state_set(E_DESKLOCK_STATE_INVALID); + return 0; } return 1; } @@ -909,23 +911,23 @@ _desklock_pam_init(E_Desklock_Auth *da) pam_prof = "kdm"; if ((pamerr = pam_start(pam_prof, da->user, &(da->pam.conv), - &(da->pam.handle))) != PAM_SUCCESS) + &(da->pam.handle))) != PAM_SUCCESS) return pamerr; current_user = _desklock_auth_get_current_user(); if ((pamerr = pam_set_item(da->pam.handle, PAM_USER, current_user)) != PAM_SUCCESS) { - free(current_user); - return pamerr; + free(current_user); + return pamerr; } current_host = _desklock_auth_get_current_host(); if ((pamerr = pam_set_item(da->pam.handle, PAM_RHOST, current_host)) != PAM_SUCCESS) { - free(current_user); - free(current_host); - return pamerr; + free(current_user); + free(current_host); + return pamerr; } free(current_user); @@ -940,31 +942,34 @@ _desklock_auth_pam_conv(int num_msg, const struct pam_message **msg, struct pam_ E_Desklock_Auth *da = (E_Desklock_Auth *)appdata_ptr; struct pam_response *reply = NULL; - reply = (struct pam_response *)malloc(sizeof(struct pam_response) *num_msg); + reply = (struct pam_response *)malloc(sizeof(struct pam_response) * num_msg); if (!reply) return PAM_CONV_ERR; for (replies = 0; replies < num_msg; replies++) { - switch (msg[replies]->msg_style) - { - case PAM_PROMPT_ECHO_ON: - reply[replies].resp_retcode = PAM_SUCCESS; - reply[replies].resp = strdup(da->user); - break; - case PAM_PROMPT_ECHO_OFF: - reply[replies].resp_retcode = PAM_SUCCESS; - reply[replies].resp = strdup(da->passwd); - break; - case PAM_ERROR_MSG: - case PAM_TEXT_INFO: - reply[replies].resp_retcode = PAM_SUCCESS; - reply[replies].resp = NULL; - break; - default: - free(reply); - return PAM_CONV_ERR; - } + switch (msg[replies]->msg_style) + { + case PAM_PROMPT_ECHO_ON: + reply[replies].resp_retcode = PAM_SUCCESS; + reply[replies].resp = strdup(da->user); + break; + + case PAM_PROMPT_ECHO_OFF: + reply[replies].resp_retcode = PAM_SUCCESS; + reply[replies].resp = strdup(da->passwd); + break; + + case PAM_ERROR_MSG: + case PAM_TEXT_INFO: + reply[replies].resp_retcode = PAM_SUCCESS; + reply[replies].resp = NULL; + break; + + default: + free(reply); + return PAM_CONV_ERR; + } } *resp = reply; return PAM_SUCCESS; @@ -975,6 +980,7 @@ _desklock_auth_get_current_host(void) { return strdup("localhost"); } + #endif static Eina_Bool @@ -986,7 +992,7 @@ _e_desklock_cb_custom_desklock_exit(void *data __UNUSED__, int type __UNUSED__, if (ev->exit_code != 0) { - /* do something profound here... like notify someone */ + /* do something profound here... like notify someone */ } e_desklock_hide(); @@ -1000,36 +1006,36 @@ _e_desklock_cb_idle_poller(void *data __UNUSED__) if ((e_config->desklock_autolock_idle) && (!e_config->mode.presentation) && (!e_util_fullscreen_curreny_any())) { - double idle, max; + double idle, max; - /* If a desklock is already up, bail */ + /* If a desklock is already up, bail */ if ((_e_custom_desklock_exe) || (edd)) return ECORE_CALLBACK_RENEW; - idle = ecore_x_screensaver_idle_time_get(); - max = e_config->desklock_autolock_idle_timeout; - if (_e_desklock_ask_presentation_count > 0) - max *= (1 + _e_desklock_ask_presentation_count); + idle = ecore_x_screensaver_idle_time_get(); + max = e_config->desklock_autolock_idle_timeout; + if (_e_desklock_ask_presentation_count > 0) + max *= (1 + _e_desklock_ask_presentation_count); - /* If we have exceeded our idle time... */ + /* If we have exceeded our idle time... */ if (idle >= max) - { - /* - * Unfortunately, not all "desklocks" stay up for as long as - * the user is idle or until it is unlocked. - * - * 'xscreensaver-command -lock' for example sends a command - * to xscreensaver and then terminates. So, we have another - * check (_e_desklock_user_idle) which lets us know that we - * have locked the screen due to idleness. - */ - if (!_e_desklock_user_idle) - { - _e_desklock_user_idle = 1; + { + /* + * Unfortunately, not all "desklocks" stay up for as long as + * the user is idle or until it is unlocked. + * + * 'xscreensaver-command -lock' for example sends a command + * to xscreensaver and then terminates. So, we have another + * check (_e_desklock_user_idle) which lets us know that we + * have locked the screen due to idleness. + */ + if (!_e_desklock_user_idle) + { + _e_desklock_user_idle = 1; e_desklock_show_autolocked(); - } - } - else - _e_desklock_user_idle = 0; + } + } + else + _e_desklock_user_idle = 0; } /* Make sure our poller persists. */ @@ -1112,20 +1118,20 @@ _e_desklock_ask_presentation_mode(void) e_dialog_title_set(dia, _("Activate Presentation Mode?")); e_dialog_icon_set(dia, "dialog-ask", 64); e_dialog_text_set(dia, - _("You unlocked desktop too fast.

" - "Would you like to enable presentation mode and " - "temporarily disable screen saver, lock and power saving?")); + _("You unlocked desktop too fast.

" + "Would you like to enable presentation mode and " + "temporarily disable screen saver, lock and power saving?")); - e_object_del_attach_func_set(E_OBJECT(dia), - _e_desklock_ask_presentation_del); - e_dialog_button_add(dia, _("Yes"), NULL, - _e_desklock_ask_presentation_yes, NULL); - e_dialog_button_add(dia, _("No"), NULL, - _e_desklock_ask_presentation_no, NULL); + e_object_del_attach_func_set(E_OBJECT(dia), + _e_desklock_ask_presentation_del); + e_dialog_button_add(dia, _("Yes"), NULL, + _e_desklock_ask_presentation_yes, NULL); + e_dialog_button_add(dia, _("No"), NULL, + _e_desklock_ask_presentation_no, NULL); e_dialog_button_add(dia, _("No, but increase timeout"), NULL, - _e_desklock_ask_presentation_no_increase, NULL); + _e_desklock_ask_presentation_no_increase, NULL); e_dialog_button_add(dia, _("No, and stop asking"), NULL, - _e_desklock_ask_presentation_no_forever, NULL); + _e_desklock_ask_presentation_no_forever, NULL); e_dialog_button_focus_num(dia, 0); e_widget_list_homogeneous_set(dia->box_object, 0); @@ -1133,7 +1139,8 @@ _e_desklock_ask_presentation_mode(void) e_dialog_show(dia); evas_object_event_callback_add(dia->bg_object, EVAS_CALLBACK_KEY_DOWN, - _e_desklock_ask_presentation_key_down, dia); + _e_desklock_ask_presentation_key_down, dia); _e_desklock_ask_presentation_dia = dia; } +