INT_PTR dialog_proc(int msg, int param1, void* param2) { if (msg == DN_CLOSE && param1 >= 0 && param1 != cancel_ctrl_id) { options = read_controls(); } else if (msg == DN_INITDIALOG) { set_control_state(); } else if (msg == DN_BTNCLICK) { set_control_state(); } else if (msg == DN_EDITCHANGE && param1 == module_ctrl_id) { set_control_state(); } else if (msg == DN_EDITCHANGE && param1 == profile_ctrl_id) { unsigned profile_idx = get_list_pos(profile_ctrl_id); if (profile_idx != -1 && profile_idx < profiles.size()) { write_controls(profiles[profile_idx].options); set_control_state(); } } if (msg == DN_EDITCHANGE || msg == DN_BTNCLICK) { unsigned profile_idx = static_cast<unsigned>(profiles.size()); SfxOptions options; bool valid_options = true; try { options = read_controls(); } catch (const Error&) { valid_options = false; } if (valid_options) { for (unsigned i = 0; i < profiles.size(); i++) { if (options == profiles[i].options) { profile_idx = i; break; } } } if (profile_idx != get_list_pos(profile_ctrl_id)) { DisableEvents de(*this); set_list_pos(profile_ctrl_id, profile_idx); set_control_state(); } } return default_dialog_proc(msg, param1, param2); }
/** * Generally, prints current value, and possible range of values for each * control then provides option to change the current value of controls. */ int main() { fd = open("/dev/video0", O_RDWR); if(fd < 0){ perror("/dev/video0"); exit (EXIT_FAILURE); } print_input(); read_controls(); disable_autos(); change_input(); print_input(); while(1){ read_controls(); change_controls(); } return 0; }
void TIM4_IRQHandler() { if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET) { readKeyState(); read_controls(Preset.sliders, Calibration.calibr); read_buttons_state(); TIM_ClearITPendingBit(TIM4, TIM_IT_Update); } }
void show_help() { LCD_rectangle(0, 0, 132, 132, 1, BLACK); LCD_print_string("/// OSEater \\\\", 4, 4, BIG_FONT, WHITE, BLACK); LCD_print_string("Help", 24, 48, BIG_FONT, WHITE, BLACK); LCD_print_string("Just move the", 44, 8, BIG_FONT, WHITE, BLACK); LCD_print_string("joystick", 64, 8, BIG_FONT, WHITE, BLACK); LCD_print_string("to move around", 84, 8, BIG_FONT, WHITE, BLACK); while(!read_controls()); }
void playable_custom_object::process(level& lvl) { if(player_info_.current_level() != lvl.id()) { player_info_.set_current_level(lvl.id()); } if(can_interact_ > 0) { --can_interact_; } iphone_controls::set_underwater(underwater_controls_); iphone_controls::set_can_interact(can_interact_ != 0); iphone_controls::set_on_platform(on_platform()); iphone_controls::set_standing(is_standing(level::current())); float underwater_x, underwater_y; if(underwater_controls_ && iphone_controls::water_dir(&underwater_x, &underwater_y)) { underwater_ctrl_x_ = underwater_x*1000; underwater_ctrl_y_ = underwater_y*1000; } else { underwater_ctrl_x_ = 0; underwater_ctrl_y_ = 0; } reverse_ab_ = preferences::reverse_ab(); bool controls[controls::NUM_CONTROLS]; for(int n = 0; n != controls::NUM_CONTROLS; ++n) { controls[n] = control_status(static_cast<controls::CONTROL_ITEM>(n)); } clear_control_status(); read_controls(lvl.cycle()); static const std::string keys[] = { "up", "down", "left", "right", "attack", "jump", "tongue" }; for(int n = 0; n != controls::NUM_CONTROLS; ++n) { if(controls[n] != control_status(static_cast<controls::CONTROL_ITEM>(n))) { if(controls[n]) { handle_event("end_ctrl_" + keys[n]); } else { handle_event("ctrl_" + keys[n]); } } } custom_object::process(lvl); }
void show_credits() { LCD_rectangle(0, 0, 132, 132, 1, BLACK); LCD_print_string("/// OSEater \\\\", 4, 4, BIG_FONT, WHITE, BLACK); LCD_print_string("Credits", 24, 36, BIG_FONT, WHITE, BLACK); LCD_print_string("A game by", 44, 8, MEDIUM_FONT, WHITE, BLACK); LCD_print_string("Diego Barrios", 56, 8, MEDIUM_FONT, WHITE, BLACK); LCD_print_string("Romero.", 68, 8, MEDIUM_FONT, WHITE, BLACK); LCD_print_string("Developed for", 80, 8, SMALL_FONT, WHITE, BLACK); LCD_print_string("Microprocessors", 90, 8, SMALL_FONT, WHITE, BLACK); LCD_print_string("& Micro-", 100, 8, SMALL_FONT, WHITE, BLACK); LCD_print_string("controllers", 110, 8, SMALL_FONT, WHITE, BLACK); LCD_print_string("subject.", 120, 8, SMALL_FONT, WHITE, BLACK); while(!read_controls()); }
void menu_game_over() { unsigned char selected = 1; LCD_rectangle(0, 0, 132, 132, 1, BLACK); LCD_print_string("/// OSEater \\\\\\", 4, 4, BIG_FONT, WHITE, BLACK); LCD_print_string("Game over", 24, 30, BIG_FONT, WHITE, BLACK); LCD_print_string("Play again", 48, 26, MEDIUM_FONT, RED, BLACK); LCD_print_string("Yes", 68, 57, SMALL_FONT, RED, BLACK); LCD_print_string("No", 88, 60, SMALL_FONT, WHITE, BLACK); while (1){ unsigned int buttons = read_controls(); if (buttons & BUTTON_CENTRAL){ switch(selected){ case 1: return; case 2: off(); break; } } if (buttons & BUTTON_DOWN){ if (selected == 1){ LCD_print_string("Yes", 68, 57, SMALL_FONT, WHITE, BLACK); LCD_print_string("No", 88, 60, SMALL_FONT, RED, BLACK); selected++; } } else if (buttons & BUTTON_UP){ if (selected == 2){ LCD_print_string("Yes", 68, 57, SMALL_FONT, RED, BLACK); LCD_print_string("No", 88, 60, SMALL_FONT, WHITE, BLACK); selected--; } } } }
void menu () { unsigned char selected = 1; LCD_rectangle(0, 0, 132, 132, 1, BLACK); LCD_print_string("/// OSEater \\\\\\", 4, 4, BIG_FONT, WHITE, BLACK); LCD_print_string("Main Menu", 24, 28, BIG_FONT, WHITE, BLACK); LCD_print_string("Play", 48, 48, BIG_FONT, RED, BLACK); LCD_print_string("Credits", 68, 36, BIG_FONT, WHITE, BLACK); LCD_print_string("Help", 88, 48, BIG_FONT, WHITE, BLACK); while (1){ unsigned int buttons = read_controls(); if (buttons & BUTTON_CENTRAL){ switch(selected){ case 1: return; case 2: show_credits(); selected = 1; LCD_rectangle(0, 0, 132, 132, 1, BLACK); LCD_print_string("/// OSEater \\\\\\", 4, 4, BIG_FONT, WHITE, BLACK); LCD_print_string("Main Menu", 24, 28, BIG_FONT, WHITE, BLACK); LCD_print_string("Play", 48, 48, BIG_FONT, RED, BLACK); LCD_print_string("Credits", 68, 36, BIG_FONT, WHITE, BLACK); LCD_print_string("Help", 88, 48, BIG_FONT, WHITE, BLACK); break; case 3: show_help(); selected = 1; LCD_rectangle(0, 0, 132, 132, 1, BLACK); LCD_print_string("/// OSEater \\\\\\", 4, 4, BIG_FONT, WHITE, BLACK); LCD_print_string("Main Menu", 24, 28, BIG_FONT, WHITE, BLACK); LCD_print_string("Play", 48, 48, BIG_FONT, RED, BLACK); LCD_print_string("Credits", 68, 36, BIG_FONT, WHITE, BLACK); LCD_print_string("Help", 88, 48, BIG_FONT, WHITE, BLACK); break; } } if (buttons & BUTTON_DOWN){ switch(selected){ case 1: LCD_print_string("Play", 48, 48, BIG_FONT, WHITE, BLACK); LCD_print_string("Credits", 68, 36, BIG_FONT, RED, BLACK); break; case 2: LCD_print_string("Credits", 68, 36, BIG_FONT, WHITE, BLACK); LCD_print_string("Help", 88, 48, BIG_FONT, RED, BLACK); break; default: selected--; } selected++; } else if (buttons & BUTTON_UP){ switch(selected){ case 2: LCD_print_string("Play", 48, 48, BIG_FONT, RED, BLACK); LCD_print_string("Credits", 68, 36, BIG_FONT, WHITE, BLACK); break; case 3: LCD_print_string("Credits", 68, 36, BIG_FONT, RED, BLACK); LCD_print_string("Help", 88, 48, BIG_FONT, WHITE, BLACK); break; default: selected++; } selected--; } delay(300000); } }
int main(int argc, char **argv) { int match; unsigned int at; log_init(STDERR, ~256, 0); if (read_controls(ctrls) == -1) die_control(); q = 0; do { if (getln(&ssin, &line, &match, '\0') != 0) { if (errno != error_timeout) die_read(); cleanup(); continue; } if (!match) { cleanup(); /* other side closed pipe */ break; } logit(32, "qmail-verfiy: verifying %S\n", &line); at = byte_rchr(line.s,line.len,'@'); if (at >= line.len) { if (substdio_puts(subfdout, "DSorry, address must " "include host name. (#5.1.3)") == -1) die_write(); if (substdio_putflush(subfdout, "", 1) == -1) die_write(); continue; } switch (lookup(&line)) { case 0: if (localdelivery()) { /* * Do the local address lookup. */ line.s[at] = '\0'; if (lookup_cdb(line.s) == 1) break; if (lookup_passwd(line.s) == 1) break; } /* Sorry, no mailbox here by that name. */ if (substdio_puts(subfdout, "DSorry, no mailbox here by that name. " "(#5.1.1)") == -1) die_write(); if (substdio_putflush(subfdout, "", 1) == -1) die_write(); break; case 1: default: break; } } while (1); return 0; }
int main(int argc, char **argv) { enum { unset, uid, mail, filter } mode = unset; qldap *q, *qpw; struct passwd *pw; char *passwd = 0, *value = 0; char *bindpw = 0, *binddn = 0; char *f, *s; int opt, r, done, status, id; unsigned int j, slen; unsigned long size, count, maxsize; const char *attrs[] = { LDAP_MAIL, LDAP_MAILALTERNATE, LDAP_UID, LDAP_QMAILUID, LDAP_QMAILGID, LDAP_ISACTIVE, LDAP_MAILHOST, LDAP_MAILSTORE, LDAP_HOMEDIR, LDAP_QUOTA_SIZE, LDAP_QUOTA_COUNT, LDAP_FORWARDS, LDAP_PROGRAM, LDAP_MODE, LDAP_REPLYTEXT, LDAP_DOTMODE, LDAP_MAXMSIZE, LDAP_OBJECTCLASS, #if 0 LDAP_GROUPCONFIRM, LDAP_GROUPMEMONLY, LDAP_GROUPCONFRIMTEXT, LDAP_GROUPMODERATTEXT, LDAP_GROUPMODERATDN, LDAP_GROUPMODERAT822, LDAP_GROUPMEMBERDN, LDAP_GROUPMEMBER822, LDAP_GROUPMEMBERFILTER, #endif LDAP_PASSWD, 0}; while ((opt = getopt(argc, argv, "d:D:u:m:p:f:w:")) != opteof) switch (opt) { case 'd': if (env_put2("LOGLEVEL", optarg) == 0) strerr_die2sys(1, FATAL, "setting loglevel: "); break; case 'D': binddn = optarg; break; case 'u': if (value != 0) usage(); value = optarg; mode = uid; break; case 'm': if (value != 0) usage(); value = optarg; mode = mail; break; case 'f': if (value != 0) usage(); value = optarg; mode = filter; break; case 'p': if (geteuid() != 0) strerr_die2x(1, FATAL, "only the superuser may comapre passwords"); passwd = optarg; break; case 'w': bindpw = optarg; break; default: usage(); } if (argc != optind) usage(); if (bindpw && !binddn) usage(); log_init(STDERR, -1, 0); if (read_controls(ctrls) != 0) strerr_die2sys(111, FATAL, "unable to read controls: "); q = qldap_new(); if (q == 0) strerr_die2sys(111, FATAL, "qldap_new failed: "); qpw = qldap_new(); if (qpw == 0) strerr_die2sys(111, FATAL, "qldap_new failed: "); r = qldap_open(q); if (r != OK) fail(q, "qldap_open", r); r = qldap_open(qpw); if (r != OK) fail(qpw, "qldap_open", r); r = qldap_bind(q, binddn, bindpw); if (r != OK) fail(q, "qldap_bind", r); if (passwd == 0 || mode != uid || qldap_need_rebind() != 0) attrs[sizeof(attrs)/4 - 2] = 0; /* password */ done = 0; f = 0; do { switch (mode) { case mail: f = filter_mail(value, &done); if (value == 0) strerr_die2sys(1, FATAL, "building filter: "); break; case uid: f = filter_uid(value); done = 1; if (value == 0) strerr_die2sys(1, FATAL, "building filter: "); break; case filter: f = value; break; default: usage(); } output(subfdout, "Searching ldap for: %s\nunder dn: %s\n", f, qldap_basedn()); r = qldap_filter(q, f, attrs, qldap_basedn(), SCOPE_SUBTREE); if (r != OK) fail(q, "qldap_filter", r); r = qldap_count(q); switch (r) { case -1: fail(q, "qldap_count", FAILED); case 0: output(subfdout, "No entries found.\n"); qldap_free(q); /* TODO hook for local lookups. */ return 0; case 1: output(subfdout, "Found %i entry:\n", r); break; default: output(subfdout, "Found %i entries:\n", r); if (mode == uid || mode == uid) { output(subfdout, "Uh-oh: multiple entries found but " "should be unique!\n"); passwd = 0; } break; } output(subfdout, "\n"); } while (r == 0 && !done); r = qldap_first(q); if (r != OK) fail(q, "qldap_first", r);; do { r = qldap_get_dn(q, &dn); if (r != OK) fail(q, "qldap_get_dn", r); output(subfdout, "dn: %s\n" "-------------------------------------------------------\n", dn.s); r = qldap_get_attr(q, LDAP_OBJECTCLASS, &foo, MULTI_VALUE); if (r != OK) fail(q, "qldap_get_attr(" LDAP_OBJECTCLASS ")", r); unescape(foo.s, &bar); s = bar.s; slen = bar.len-1; for(;;) { output(subfdout, "%s: %s\n",LDAP_OBJECTCLASS ,s); j = byte_chr(s,slen,0); if (j++ >= slen) break; s += j; slen -= j; } r = qldap_get_attr(q, LDAP_MAIL, &foo, SINGLE_VALUE); if (r != OK) fail(q, "qldap_get_attr(" LDAP_MAIL ")", r); output(subfdout, "%s: %s\n", LDAP_MAIL, foo.s); r = qldap_get_attr(q, LDAP_MAILALTERNATE, &foo, MULTI_VALUE); if (r != OK && r != NOSUCH) fail(q, "qldap_get_attr(" LDAP_MAILALTERNATE ")", r); if (r == OK) { unescape(foo.s, &bar); s = bar.s; slen = bar.len-1; for(;;) { output(subfdout, "%s: %s\n", LDAP_MAILALTERNATE, s); j = byte_chr(s,slen,0); if (j++ >= slen) break; s += j; slen -= j; } } r = qldap_get_user(q, &foo); if (r != OK && r != NOSUCH) fail(q, "qldap_get_user", r); if (r == OK) output(subfdout, "%s: %s\n", LDAP_UID, foo.s); else output(subfdout, "%s: undefined " "(forward only account required)\n", LDAP_UID); r = qldap_get_status(q, &status); if (r != OK) fail(q, "qldap_get_status", r); switch (status) { case STATUS_BOUNCE: output(subfdout, "%s: %s\n", LDAP_ISACTIVE, ISACTIVE_BOUNCE); break; case STATUS_NOACCESS: output(subfdout, "%s: %s\n", LDAP_ISACTIVE, ISACTIVE_NOACCESS); break; case STATUS_OK: output(subfdout, "%s: %s\n", LDAP_ISACTIVE, ISACTIVE_ACTIVE); break; case STATUS_UNDEF: output(subfdout, "%s: %s\n", LDAP_ISACTIVE, "undefined -> active"); break; default: strerr_warn2(WARN, "qldap_get_status returned unknown status", 0); } r = qldap_get_attr(q, LDAP_MAILHOST, &foo, SINGLE_VALUE); if (r != OK && r != NOSUCH) fail(q, "qldap_get_attr(" LDAP_MAILHOST ")", r); if (r == OK) { output(subfdout, "%s: %s\n", LDAP_MAILHOST, foo.s); /* * TODO we could check if we are in cluster mode and * if we would redirect to a differnet host */ } else output(subfdout, "%s: undefined\n", LDAP_MAILHOST); /* get the path of the maildir or mbox */ r = qldap_get_mailstore(q, &foo, &bar); switch (r) { case OK: output(subfdout, "homeDirectory: %s\n", foo.s); if (bar.len > 0) output(subfdout, "aliasEmpty: %s\n", bar.s); else output(subfdout, "aliasEmpty: using default\n"); break; case NEEDED: output(subfdout, "forward only delivery via alias user\n"); pw = getpwnam(auto_usera); if (!pw) strerr_die4x(100, FATAL, "Aiiieeeee, now alias user '", auto_usera, "'found in /etc/passwd."); output(subfdout, "alias user: %s\n", pw->pw_name); output(subfdout, "alias user uid: %i\n", pw->pw_uid); output(subfdout, "alias user gid: %i\n", pw->pw_gid); output(subfdout, "alias user home: %s\n", pw->pw_dir); output(subfdout, "alias user aliasempty: %s\n", ALIASDEVNULL); /* get the forwarding addresses */ r = qldap_get_attr(q, LDAP_FORWARDS, &foo, MULTI_VALUE); if (r != OK) fail(q, "qldap_get_attr(" LDAP_FORWARDS ") for forward only user", r); unescape(foo.s, &bar); s = bar.s; slen = bar.len-1; for(;;) { output(subfdout, "%s: %s\n", LDAP_FORWARDS, s); j = byte_chr(s,slen,0); if (j++ >= slen) break; s += j; slen -= j; } goto next; default: fail(q, "qldap_get_mailstore", r); } r = qldap_get_dotmode(q, &foo); if (r != OK) fail(q, "qldap_get_dotmode", r); output(subfdout, "%s: %s\n", LDAP_DOTMODE, foo.s); r = qldap_get_uid(q, &id); if (r != OK) fail(q, "qldap_get_uid", r); output(subfdout, "%s: %i\n", LDAP_QMAILUID, id); r = qldap_get_gid(q, &id); if (r != OK) fail(q, "qldap_get_gid", r); output(subfdout, "%s: %i\n", LDAP_QMAILGID, id); r = qldap_get_quota(q, &size, &count, &maxsize); if (r != OK) fail(q, "qldap_get_quota", r); output(subfdout, "%s: %u%s\n", LDAP_QUOTA_SIZE, size, size==0?" (unlimited)":""); output(subfdout, "%s: %u%s\n", LDAP_QUOTA_COUNT, count, count==0?" (unlimited)":""); output(subfdout, "%s: %u%s\n", LDAP_MAXMSIZE, maxsize, maxsize==0?" (unlimited)":""); r = qldap_get_attr(q, LDAP_MODE, &foo, MULTI_VALUE); if (r != OK && r != NOSUCH) fail(q, "qldap_get_attr(" LDAP_MODE ")", r); if (r == OK) { unescape(foo.s, &bar); s = bar.s; slen = bar.len-1; for(;;) { if (case_diffs(MODE_FORWARD, s) && case_diffs(MODE_REPLY, s) && case_diffs(MODE_NOLOCAL, s) && case_diffs(MODE_NOMBOX, s) && case_diffs(MODE_NOFORWARD, s) && case_diffs(MODE_NOPROG, s) && case_diffs(MODE_LOCAL, s) && case_diffs(MODE_FORWARD, s) && case_diffs(MODE_PROG, s) && case_diffs(MODE_NOREPLY, s)) strerr_warn4(WARN, "undefined mail delivery mode: ", s," (ignored).", 0); else if (!case_diffs(MODE_FORWARD, s)) strerr_warn4(WARN, "mail delivery mode: ", s," should not be used " "(used internally).", 0); output(subfdout, "%s: %s\n", LDAP_MODE, s); j = byte_chr(s,slen,0); if (j++ >= slen) break; s += j; slen -= j; } } r = qldap_get_attr(q, LDAP_FORWARDS, &foo, MULTI_VALUE); if (r != OK && r != NOSUCH) fail(q, "qldap_get_attr(" LDAP_FORWARDS ")", r); if (r == OK) { unescape(foo.s, &bar); s = bar.s; slen = bar.len-1; for(;;) { output(subfdout, "%s: %s\n", LDAP_FORWARDS, s); j = byte_chr(s,slen,0); if (j++ >= slen) break; s += j; slen -= j; } } r = qldap_get_attr(q, LDAP_PROGRAM, &foo, MULTI_VALUE); if (r != OK && r != NOSUCH) fail(q, "qldap_get_attr(" LDAP_PROGRAM ")", r); if (r == OK) { unescape(foo.s, &bar); s = bar.s; slen = bar.len-1; for(;;) { output(subfdout, "%s: %s\n", LDAP_PROGRAM, s); j = byte_chr(s,slen,0); if (j++ >= slen) break; s += j; slen -= j; } } r = qldap_get_attr(q, LDAP_REPLYTEXT, &foo, SINGLE_VALUE); if (r != OK && r != NOSUCH) fail(q, "qldap_get_attr(" LDAP_REPLYTEXT ")", r); if (r == OK) output(subfdout, "%s:\n=== begin ===\n%s\n" "=== end ===\n", LDAP_REPLYTEXT, foo.s); else output(subfdout, "%s: undefined\n", LDAP_REPLYTEXT); if (mode == uid && passwd != 0) { if (qldap_need_rebind() == 0) { r = qldap_get_attr(q, LDAP_PASSWD, &foo, SINGLE_VALUE); if (r != OK) fail(q, "qldap_get_attr(" LDAP_PASSWD ")", r); r = cmp_passwd(passwd, foo.s); } else { r = qldap_rebind(qpw, dn.s, passwd); switch (r) { case OK: r = OK; break; case LDAP_BIND_AUTH: r = BADPASS; break; default: break; } } output(subfdout, "\nPASSWORD COMPARE was %s.\n", r == OK?"successful":"NOT successful"); if (r != OK) output(subfdout, "\terror was: %s\n", qldap_err_str(r)); } next: r = qldap_next(q); output(subfdout, "\n\n"); } while (r == OK); if (r != NOSUCH) fail(q, "qldap_next", r); qldap_free(q); return 0; }