void make_commands (FILE* filename, int (*get_next_byte) (void *), command_t* res) { Separation_t m_sp[MAXLINE]; makeSeparation(filename, m_sp, get_next_byte); if (!validate_all(m_sp)) return; else { int i = 0; while (m_sp[i]->m_line != -1) { // command_t cmd = checked_malloc(sizeof(struct command)); command_t cmd[1]; token_t *token_array = checked_malloc(sizeof(struct token)*128); tokenize(m_sp[i]->m_cmd, token_array, m_sp[i]->m_line); make_command(token_array, cmd); cmd[0]->line = m_sp[i]->m_line; res[i] = cmd[0]; i++; } res[i] = NULL; } }
/* Handle "state changed" elements */ static void newstate(enum eid_vwr_states s) { GObject *open, *savexml, *savecsv, *print, *close, *pintest, *pinchg, *validate; #define want_verify (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "validate_always")))) open = gtk_builder_get_object(builder, "mi_file_open"); savexml = gtk_builder_get_object(builder, "mi_file_saveas_xml"); savecsv = gtk_builder_get_object(builder, "mi_file_saveas_csv"); print = gtk_builder_get_object(builder, "mi_file_print"); close = gtk_builder_get_object(builder, "mi_file_close"); pintest = gtk_builder_get_object(builder, "pintestbut"); pinchg = gtk_builder_get_object(builder, "pinchangebut"); validate = gtk_builder_get_object(builder, "validate_now"); g_object_set_threaded(open, "sensitive", (void*)FALSE, NULL); g_object_set_threaded(close, "sensitive", (void*)FALSE, NULL); g_object_set_threaded(print, "sensitive", (void*)FALSE, NULL); g_object_set_threaded(savexml, "sensitive", (void*)FALSE, NULL); g_object_set_threaded(savecsv, "sensitive", (void*)FALSE, NULL); g_object_set_threaded(pintest, "sensitive", (void*)FALSE, NULL); g_object_set_threaded(pinchg, "sensitive", (void*)FALSE, NULL); g_object_set_threaded(validate, "sensitive", (void*)FALSE, NULL); g_object_set_data_threaded(validate, "want_active", (void*)FALSE, NULL); switch(s) { case STATE_LIBOPEN: case STATE_CALLBACKS: uistatus(TRUE, _("Initializing")); return; case STATE_READY: uistatus(FALSE, _("Ready to read identity card.")); g_object_set_threaded(open, "sensitive", (void*)TRUE, NULL); disable_dnd(); return; case STATE_NO_READER: uistatus(FALSE, _("No cardreader found.")); return; case STATE_TOKEN: uistatus(TRUE, _("Card available")); return; case STATE_TOKEN_WAIT: uistatus(FALSE, ""); g_object_set_threaded(print, "sensitive", (void*)TRUE, NULL); g_object_set_threaded(savexml, "sensitive", (void*)TRUE, NULL); g_object_set_threaded(savecsv, "sensitive", (void*)TRUE, NULL); g_object_set_threaded(pintest, "sensitive", (void*)TRUE, NULL); g_object_set_threaded(pinchg, "sensitive", (void*)TRUE, NULL); if(!data_verifies()) { uilog(EID_VWR_LOG_COARSE, "Cannot load card: data signature invalid!"); eid_vwr_be_set_invalid(); } g_object_set_data_threaded(validate, "want_active", (void*)TRUE, NULL); if(want_verify) { validate_all(NULL, NULL); } else { g_object_set_threaded(validate, "sensitive", (void*)TRUE, NULL); } setup_dnd(); return; case STATE_TOKEN_ID: uistatus(TRUE, _("Reading identity.")); return; case STATE_TOKEN_CERTS: uistatus(TRUE, _("Reading certificates from card")); return; case STATE_TOKEN_ERROR: uistatus(FALSE, _("Failed to read identity data.")); return; case STATE_TOKEN_PINOP: uistatus(TRUE, _("Performing a PIN operation")); return; case STATE_FILE: uistatus(FALSE, ""); g_object_set_threaded(print, "sensitive", (void*)TRUE, NULL); g_object_set_threaded(close, "sensitive", (void*)TRUE, NULL); g_object_set_data_threaded(validate, "want_active", (void*)TRUE, NULL); if(want_verify) { validate_all(NULL, NULL); } else { g_object_set_threaded(validate, "sensitive", (void*)TRUE, NULL); } setup_dnd(); default: return; } }