Esempio n. 1
0
File: auth.c Progetto: firejox/mils
void auth_once (auth_t *au) {
    int res;

    res = pam_start (au->name, NULL, &au->pconv, &au->pamh);

    if (res != PAM_SUCCESS)
        goto pam_start_failed;

    au->ist = input_state_create (au->epfd);


    res = pam_authenticate (au->pamh, 0);
    if (res != PAM_SUCCESS)
        goto pam_auth_failed;

    res = pam_acct_mgmt (au->pamh, 0);
    if (res != PAM_SUCCESS)
        goto pam_auth_failed;

    fprintf (stderr, "Authenticated.\n");


    goto pam_auth_clean;

pam_auth_failed:
    fprintf (stderr, "Not Authenticated.\n");

pam_auth_clean:
    input_state_destroy (au->ist);

pam_start_failed:
    pam_end (au->pamh, res);
}
Esempio n. 2
0
void remove_input_state_hook(void)
{
   if (input_state_callback_original)
   {
      retro_ctx.state_cb            = input_state_callback_original;
      current_core.retro_set_input_state(retro_ctx.state_cb);
      input_state_callback_original = NULL;
      input_state_destroy();
   }

   if (retro_reset_callback_original)
   {
      current_core.retro_reset      = retro_reset_callback_original;
      retro_reset_callback_original = NULL;
   }

   if (retro_unserialize_callback_original)
   {
      current_core.retro_unserialize      = retro_unserialize_callback_original;
      retro_unserialize_callback_original = NULL;
   }
}
Esempio n. 3
0
File: main.c Progetto: firejox/mils
int main(void) {
    int epfd, ret;
    struct epoll_event tmp;
    input_state_t *ist;
    data_handler_t *dht;
    view_t *v;
    line_text_t *lt;
    int timeout = -1;
    keysym_t sym;

    epfd = epoll_create1(0);
    if (epfd == -1) {
        perror ("epoll create failed");
        exit(-1);
    }

    screen_enter (epfd);
    ist = input_state_create (epfd);
    v = view_create ();
    lt = view_user_input_ref (v);

    view_update (v, VIEW_USER);
    while ((ret = epoll_wait (epfd, &tmp, 1, timeout)) > -1) {
        if (ret) {
            dht = tmp.data.ptr;
            dht->handler (dht->fd, dht->data);
        }

        
       sym = get_input_state_info (ist, &timeout);
       switch (sym) {
           case XKB_KEY_NoSymbol:
               break;
           case XKB_KEY_Return:
               goto input_end;
           case XKB_KEY_BackSpace:
               line_text_handle_event (lt, DELETE_LEFT_CH);
               break;
           case XKB_KEY_Delete:
               line_text_handle_event (lt, DELETE_RIGHT_CH);
               break;
           case XKB_KEY_Left:
               line_text_handle_event (lt, CURSOR_MOVE_LEFT);
               break;
           case XKB_KEY_Right:
               line_text_handle_event (lt, CURSOR_MOVE_RIGHT);
               break;
           default:
               line_text_handle_event (lt, APPEND_CH, keysym_to_utf32(sym));
               break;
       }
       if (sym != XKB_KEY_NoSymbol)
           view_update (v, VIEW_USER);
    
    }

input_end:

    line_text_unref (lt);

    view_destory (v);
    input_state_destroy (ist);
    screen_leave (epfd);
    return 0;
}