/* mode 0 new file * mode 1 edit file */ int wama_file(int mode) { char path[128]; clean_screen(); printf("Ruta del archivo: "); gets_s(path, 128); clean_screen(); if (path[0] != '/') { char dev_path[128] = "/dev/"; strcat(dev_path, path); strcpy(path, dev_path); } /* creamos el archivo 'path' */ if ((touch(path, S_IRUSR | S_IWUSR)) < 0 && mode == NEW_FILE_MODE) { return -1; } int line_count = 1; char line[128]; int fd; if ((fd = open(path, O_WRONLY)) < 0) { return -1; } if (mode == EDIT_FILE_MODE) { char *ch = read_file(path); write(fd, ch, strlen(ch)); line_count = linecounter(ch); line_count++; } printf("\n\n\n %d ", line_count); char *data; while ( 1 ) { setwindow(); subwindow(line_count); gets_s(line, 128); switch (checkWamaCommand(line)) { case 0: write(fd, line, strlen(line)); write(fd, "\n", 1); break; case 1: close(fd); if (goto_wama_command(path, line_count) < 0) { return -1; } data = read_file(path); if ((fd = open(path, O_WRONLY)) < 0) { return -1; } write(fd, data, strlen(data)); line_count--; break; case 2: close(fd); return 0; break; } line_count++; printf(" %d ", line_count); } }
void load_scrfile() { unsigned char *videomem,*filename,value; int ancho,retorno,loop; FILE *fichero; unsigned char paleta_tmp[64]; videomem=screen->pixels; ancho=screen->w; clean_screen(); print_string(videomem,"Choose the SCR snapshot file to load",-1,32,13,0,ancho); filename=select_file(load_path_scr1,FILETYPE_SCR); if(filename==NULL) { // Aborted clean_screen(); return; } ordenador.osd_text[0]=0; fichero=fopen(filename,"rb"); retorno=0; if (!fichero) { retorno=-1; } else { for(loop=0;loop<6912;loop++) { if (1==fread(&value,1,1,fichero)) { *(ordenador.block1 + 0x04000 + loop) = value; } else { retorno=-1; break; } } if (1==fread(paleta_tmp,64,1,fichero)) { memcpy(ordenador.ulaplus_palete,paleta_tmp,64); ordenador.ulaplus=1; } else { ordenador.ulaplus=0; } fclose(fichero); } free(filename); clean_screen(); switch(retorno) { case 0: // all right break; default: print_string(videomem,"Error: Can't load that file",-1,232,10,0,ancho); print_string(videomem,"Press any key",-1,248,10,0,ancho); wait_key(); break; } clean_screen(); }
void snapshots_menu() { unsigned char *fbuffer,fin; int ancho=screen->w; fbuffer=screen->pixels; clean_screen(); print_string(fbuffer,"SNAPSHOTS",-1,30,15,0,ancho); print_string(fbuffer,"1:",14,100,12,0,ancho); print_string(fbuffer,"load a Z80/SNA snapshot",62,100,15,0,ancho); if(ordenador.mode128k!=3) { // not in +3 mode print_string(fbuffer,"2:",14,160,12,0,ancho); print_string(fbuffer,"make a Z80 snapshot",62,160,15,0,ancho); } else { print_string(fbuffer,"Can't make snapshots in +3 mode",14,160,15,0,ancho); } print_string(fbuffer,"3: \001\017load a SCR snapshot",14,220,12,0,ancho); print_string(fbuffer,"4: \001\017save a SCR snapshot",14,280,12,0,ancho); print_string(fbuffer,"ESC: \001\017return to emulator",-1,400,12,0,ancho); //print_copy(fbuffer,ancho); fin=1; do { switch(wait_key()) { case SDLK_ESCAPE: // to exit the help fin=0; break; case SDLK_1: fin=0; load_z80file(); break; case SDLK_2: fin=0; if(ordenador.mode128k!=3) // not in +3 mode save_z80file(); break; case SDLK_3: fin=0; load_scrfile(); break; case SDLK_4: fin=0; create_scrfile(); break; default: break; } } while(fin); clean_screen(); }
void select_mdrfile() { unsigned char *videomem,*filename; int ancho,retorno,retval; // unsigned char char_id[11]; videomem=screen->pixels; ancho=screen->w; clean_screen(); print_string(videomem,"Choose the MICRODRIVE file to load",-1,32,13,0,ancho); filename=select_file(path_mdrs,FILETYPE_MDR); // MDR files if(filename==NULL) { // Aborted clean_screen(); return; } ordenador.mdr_file=fopen(filename,"rb"); // read if(ordenador.mdr_file==NULL) retorno=-1; else { retorno=0; retval=fread(ordenador.mdr_cartridge,137923,1,ordenador.mdr_file); // read the cartridge in memory ordenador.mdr_modified=0; // not modified fclose(ordenador.mdr_file); ordenador.mdr_tapehead=0; } clean_screen(); strcpy(ordenador.mdr_current_mdr,filename); free(filename); switch(retorno) { case 0: // all right break; case -1: print_string(videomem,"Error: Can't load that file",-1,232,10,0,ancho); print_string(videomem,"Press any key",-1,248,10,0,ancho); ordenador.mdr_current_mdr[0]=0; wait_key(); break; } clean_screen(); }
void save_z80file() { unsigned char *videomem; int ancho,retorno; unsigned char nombre2[MAX_PATH_LENGTH]; char *name; videomem=screen->pixels; ancho=screen->w; clean_screen(); print_string(videomem,"Choose a name for the Z80 snapshot",-1,32,14,0,ancho); print_string(videomem,"(up to 30 characters)",-1,52,14,0,ancho); print_string(videomem,"Snapshot will be saved in:",-1,132,12,0,ancho); print_string(videomem,path_snaps,0,152,12,0,ancho); if (strlen(ordenador.current_tap)) { name=strrchr(ordenador.current_tap,'/'); if (name) name++; else name = ordenador.current_tap; } else name=NULL; retorno=ask_filename(nombre2,84,"z80", path_snaps, name); clean_screen(); if(retorno==2) // abort return; retorno=save_z80(nombre2,0); switch(retorno) { case 0: break; case -1: print_string(videomem,"File already exists",-1,80,10,0,ancho); wait_key(); break; case -2: print_string(videomem,"Can't create file",-1,80,10,0,ancho); wait_key(); break; } clean_screen(); }
int exit_program(char *buffer) { if (buffer[0] == 27 && buffer[1] == 0) { clean_screen(); my_putstr("Echap pressed.\n"); return (0); } else if (buffer[0] == 4) { clean_screen(); my_putstr("Ctrl+d EXIT\n"); return (0); } return (1); }
void key_handler(unsigned int key, t_entlist *l, int *running) { if (key == K_ENT) { clean_screen(l); *running = 0; } else { if (key == K_ESC) quit(l); else if (key == K_DOWN) go_down(l); else if (key == K_UP) go_up(l); else if (key == K_RIGHT) go_right(l); else if (key == K_LEFT) go_left(l); else if (key == K_DEL || key == K_BKSPC) delete_key(l); else special_keys(key, l); } }
void boucle_move_list(t_list *list, char *term, t_pars *pars, t_list *tmp) { pars->buf = my_malloc(4); pars->j = 0; pars->pos = pars->size; tmp = list; message_nb_allum(list, tmp, pars); while (my_strcpy(pars->buf, save(pars))) { tmp = limitation(pars, term, tmp, list); message_nb_allum(list, tmp, pars); if (pars->buf[0] == 10 && pars->j == 0) { pars->i = 0; pars->j = 1; tmp = bot_player(list, tmp, pars); clean_screen(term); disp_allum(list, pars->size, pars->pos); message_nb_allum(list, tmp, pars); } free(pars->buf); pars->buf = my_malloc(4); } free(pars->buf); }
void abort_handler(int signal) { static char crashed = FALSE; if (crashed) { exit(-1); } crashed = TRUE; restore_terminal(); clean_screen(gtd->ses); dump_stack(); fflush(NULL); exit(-1); if (gtd->ses->connect_retry > utime()) { gtd->ses->connect_retry = 0; } else if (HAS_BIT(gtd->ses->telopts, TELOPT_FLAG_SGA) && !HAS_BIT(gtd->ses->telopts, TELOPT_FLAG_ECHO)) { socket_printf(gtd->ses, 1, "%c", 3); } else { do_zap(gtd->ses, ""); } }
int main(int argc, char **argv) { t_list *list; char *term; char *bp; int tty; struct termios t; struct termios save; init_main(&bp, &list); tty = get_tty_fd(); if (argc < 2) { my_printf("[*] Usage : %s [arg:]\n", argv[0]); return (0); } if (my_params_to_list(&list, argc, argv)) return (1); if (catch_error(&term, bp, &t, &save)) return (1); raw_mode(&t); clean_screen(tty); my_select(&list, tty); default_mode(&save); return (0); }
void isr(u8int idt_num, u8int errno, u32int eip, u32int sel) { u8int num = 16; if(idt_num < num) num = idt_num; clean_screen(); kprintf("%s: errorno[%x] sel[0x%x] eip[0x%x]\n", exception_msg[num], errno, sel, eip); while(1); }
void tools_menu() { unsigned char *fbuffer,fin; int ancho=screen->w; fbuffer=screen->pixels; fin=1; do { clean_screen(); print_string(fbuffer,"Tools",-1,20,15,0,ancho); print_string(fbuffer,"1:",14,60,12,0,ancho); print_string(fbuffer,"show keyboard template",62,60,15,0,ancho); print_string(fbuffer,"2:",14,100,12,0,ancho); print_string(fbuffer,"insert POKEs",62,100,15,0,ancho); print_string(fbuffer,"ESC:",14,250,12,0,ancho); print_string(fbuffer,"return emulator",78,250,15,0,ancho); //print_copy(fbuffer,ancho); switch(wait_key()) { case SDLK_ESCAPE: // to exit the help fin=0; break; case SDLK_1: fin=0; keyboard_menu(); break; case SDLK_2: fin=0; do_poke(); break; default: break; } } while(fin); clean_screen(); }
void pipe_handler(int signal) { restore_terminal(); clean_screen(gtd->ses); tintin_printf(NULL, "broken_pipe: dumping stack"); dump_stack(); }
void kernel(){ setup_idt(); clean_screen(); print_mem_info(); mm_init(); init_8259A(); *(int*)0xf0000000 = 0; //cause pf interrupt //asm volatile("int $0xff"); while(1); }
void load_z80file() { unsigned char *videomem,*filename; int ancho,retorno; videomem=screen->pixels; ancho=screen->w; clean_screen(); print_string(videomem,"Choose the Z80 snapshot file to load",-1,32,13,0,ancho); filename=select_file(load_path_snaps,FILETYPE_Z80); if(filename==NULL) { // Aborted clean_screen(); return; } retorno=load_z80(filename); free(filename); clean_screen(); switch(retorno) { case 0: // all right break; case -1: print_string(videomem,"Error: Can't load that file",-1,232,10,0,ancho); print_string(videomem,"Press any key",-1,248,10,0,ancho); wait_key(); break; case -2: case -3: print_string(videomem,"Error: unsupported snap file",-1,232,10,0,ancho); print_string(videomem,"Press any key",-1,248,10,0,ancho); wait_key(); break; } clean_screen(); }
void keyboard_menu() { FILE *fichero; int bucle1,bucle2,retval; unsigned char *buffer,*buffer2,valor; buffer=screen->pixels; clean_screen(); fichero=myfopen("fbzx/keymap.bmp","rb"); if (fichero==NULL) { strcpy(ordenador.osd_text,"Keymap picture not found"); ordenador.osd_time=100; return; } if (ordenador.zaurus_mini==0) { for (bucle1=0;bucle1<344;bucle1++) for(bucle2=0;bucle2<640;bucle2++) { retval=fscanf(fichero,"%c",&valor); paint_one_pixel((unsigned char *)(colors+valor),buffer); buffer+=ordenador.bpp; } } else { buffer+=(479*ordenador.bpp); for(bucle1=0;bucle1<344;bucle1++) { buffer2=buffer; for(bucle2=0;bucle2<640;bucle2++) { retval=fscanf(fichero,"%c",&valor); paint_one_pixel((unsigned char *)(colors+valor),buffer); buffer+=(480*ordenador.bpp); } buffer=buffer2-ordenador.bpp; } } //print_copy(screen->pixels,screen->w); wait_key(); clean_screen(); }
int send_selection(t_list *list) { t_list *it; clean_screen(); it = list; it = list->prev; while (it != list) { if (it->i == 1) { my_putstr(it->data); my_putchar(' '); } it = it->prev; } return (1); }
void Apep::run(){ assert("You must initialize engine before run!" && back_buffer != nullptr); clean_screen(); if (!game_setup()) return; while (game_update()) { while (_kbhit()) key(_getch()); game_draw(); flush(); Sleep(10); } game_cleanup(); }
void show_func_menu() { clean_screen(CURRENT_OS_TYPE); puts("-----------------| MAIN MENU |-----------------"); puts("<1> List All Contacts"); puts("<2> Search a Contact By Name"); puts("<3> Search a Contact By Phone"); puts("<4> Add a New Contact"); puts("<5> Update a Contact By Index"); puts("<6> Update a Contact By Name"); puts("<7> Update a Contact By Phone"); puts("<8> Delete a Contact By Index"); puts("<9> Delete a Contact By Name"); puts("<10> Delete a Contact By Phone"); puts("<11> About Developer"); puts("<12> List addresses of all nodes"); puts("<13> Exit"); puts("-----------------------------------------------"); }
void quitmsg(char *message) { struct session *ses; SET_BIT(gtd->flags, TINTIN_FLAG_TERMINATE); while ((ses = gts->next) != NULL) { cleanup_session(ses); } if (gtd->chat) { close(gtd->chat->fd); } check_all_events(gts, SUB_ARG|SUB_SEC, 0, 0, "PROGRAM TERMINATION"); /* if (gtd->history_size) { char filename[BUFFER_SIZE]; sprintf(filename, "%s/%s", getenv("HOME"), HISTORY_FILE); history_write(gts, filename); } */ restore_terminal(); clean_screen(gts); if (message) { printf("\n%s\n", message); } printf("\nGoodbye from TinTin++\n\n"); fflush(NULL); exit(0); }
int main(void) { grid = init_sokoban(); if(!init_gamepad()) exit(-1); init_screen(); grid2screen(grid); while(do_button_action() != 0) { pause(); } delete_sokoban(grid); close_gamepad(); fill_screen(0x0000); clean_screen(); return 0; }
void trap_handler(int signal) { static char crashed = FALSE; if (crashed) { exit(-1); } crashed = TRUE; restore_terminal(); clean_screen(gtd->ses); dump_stack(); fflush(NULL); exit(-1); }
struct pa_simple *pulseaudio_begin(void) { int error; struct pa_simple *s; static const pa_sample_spec ss = { .format = PA_SAMPLE_FLOAT32LE, .rate = RATE, .channels = 1 }; static const pa_buffer_attr sb = { .maxlength = N * 2, .fragsize = N * 2 }; if(!(s = pa_simple_new(NULL, "paSpec", PA_STREAM_RECORD, NULL, "input stream", &ss, NULL, &sb, &error))) { printf("Error: pulseaudio: pa_simple_new() failed: %s\n", pa_strerror(error)); clean_screen(); exit(1); } return s; } void pulseaudio_end(struct pa_simple *s) { if(s != NULL) { pa_simple_free(s); } } void pulseaudio_read(struct pa_simple *s, float *buf, int sampnum) { int error; if(pa_simple_read(s, buf, sampnum * sizeof(float), &error) < 0) { printf("Error: pa_simple_read() failed: %s\n", pa_strerror(error)); pulseaudio_end(s); exit(1); } } void prnt(char hah, unsigned int cnt, unsigned int s, unsigned int sh) { while(cnt--) { printf("\e[%i;%iH%c", sh - cnt, s, hah); } }
bool print_substr_in_directory(t_prompt *prompt, DIR *dir) { struct dirent *entry; char flag; clean_screen(prompt); flag = 0; while ((entry = readdir(dir))) { if ((!prompt->count_char || !strncmp(entry->d_name, prompt->line + prompt->offset, prompt->count_char - prompt->offset))) { write(1, entry->d_name, strlen(entry->d_name)); write(1, "\n", 1); flag = 1; } } update_local_prompt(prompt); return (flag); }
int load_menu() { bool exit = false; clean_screen(); while(!exit) { print_meny(); printf("What do you want to do?: "); char input; input = ask_for_char("Choice: ", "AaRrEePpUuLlQq"); exit = handle_menu_input(input); } printf("Exiting warehouse..."); return 0; }
int main() { Contact *head=NULL; Contact *tail=NULL; srand(time(0)); CURRENT_OS_TYPE = OS_TYPE_WINDOWS; puts("-----------------| INITIALIZING CONTACTS |-----------------"); puts("Please wait while initializing your contacts..."); initialize_contacts(&head, &tail); puts("Done !"); puts("-----------------------------------------------------------"); int ch = -1, keep = 1; while(keep == 1) { show_func_menu(); printf("SELECT : "); scanf("%d", &ch); switch(ch) { clean_screen(CURRENT_OS_TYPE); case 1: { clean_screen(CURRENT_OS_TYPE); puts("-----------------| LIST ALL CONTACTS |-----------------"); list_all_contacts(head); puts("-------------------------------------------------------"); break; } case 2: { clean_screen(CURRENT_OS_TYPE); puts("-----------------| SEARCH CONTACT BY NAME |-----------------"); char *tmp_fn = (char *)malloc(20); char *tmp_ln = (char *)malloc(20); printf("Enter First_Name Last_Name: "); scanf("%s %s", tmp_fn, tmp_ln); Contact *temp = search_contact_by_name(head, tmp_fn, tmp_ln); if(temp == NULL) puts("No results !"); else printf("%s %s\t\t%s\t\t%s\n", temp->name->first_name, temp->name->last_name, temp->gender == FEMALE ? "Female" : "Male", temp->phone); puts("------------------------------------------------------------"); break; } case 3: { clean_screen(CURRENT_OS_TYPE); puts("-----------------| SEARCH CONTACT BY PHONE |-----------------"); char *tmp_phone = (char *)malloc(10); printf("Enter Phone: "); scanf("%s", tmp_phone); Contact *temp = search_contact_by_phone(head, tmp_phone); if(temp == NULL) puts("No results !"); else printf("%s %s\t\t%s\t\t%s\n", temp->name->first_name, temp->name->last_name, temp->gender == FEMALE ? "Female" : "Male", temp->phone); puts("-------------------------------------------------------------"); break; } case 4: { clean_screen(CURRENT_OS_TYPE); puts("-----------------| ADD CONTACT |-----------------"); char *tmp_fn = (char *)malloc(20); char *tmp_ln = (char *)malloc(20); char *tmp_phone = (char *)malloc(11); int tmp_gender; printf("Enter First_Name Last_Name: "); scanf("%s %s", tmp_fn, tmp_ln); printf("Enter Phone: "); scanf("%s", tmp_phone); printf("Enter Gender(1 for Male, 0 for Female): "); scanf("%d", &tmp_gender); Name *tmp_name = (struct Name *)malloc(sizeof(struct Name)); tmp_name->first_name = tmp_fn; tmp_name->last_name = tmp_ln; add_contact(&head, &tail, tmp_name, tmp_gender, tmp_phone); puts("-------------------------------------------------"); break; } case 5: { clean_screen(CURRENT_OS_TYPE); puts("-----------------| UPDATE CONTACT BY INDEX |-----------------"); int index; printf("Enter The Index: "); scanf("%d",&index); if((index<=0)||(index>CSIZE)) { printf("Cannot Found This Data\n"); break; } else { Contact *current=head; int i; for(i=1;i<=CSIZE;i++) { if(index==1) { break; } else if((i==index)&&(i<CSIZE)) { break; } else if((i==index)&&(i==CSIZE)) { break; } current=current->next; } puts("------------------------------------------------------------"); printf("%s %s\t\t%s\t\t%s\n", current->name->first_name, current->name->last_name, current->gender == FEMALE ? "Female" : "Male", current->phone); puts("------------------------------------------------------------"); } printf("Would you like to update it? (Y/N) "); char *tmp_fn = (char *)malloc(20); char *tmp_ln = (char *)malloc(20); char *tmp_phone = (char *)malloc(10); int tmp_gender; if(toupper(getche())=='Y') { printf("\nEnter First_Name Last_Name: "); scanf("%s %s", tmp_fn, tmp_ln); printf("Enter Phone: "); scanf("%s", tmp_phone); printf("Enter Gender(1 for Male, 0 for Female): "); scanf("%d", &tmp_gender); Name *tmp_name = (struct Name *)malloc(sizeof(struct Name)); tmp_name->first_name = tmp_fn; tmp_name->last_name = tmp_ln; update_contact_by_index(&head,index, tmp_name, tmp_gender, tmp_phone); puts("------------------------------------------------------------"); } else { printf("\n"); } break; } case 6: { clean_screen(CURRENT_OS_TYPE); puts("-----------------| UPDATE CONTACT BY NAME |-----------------"); char *tmp_o_fn = (char *)malloc(20); char *tmp_o_ln = (char *)malloc(20); printf("Enter First_Name Last_Name: "); scanf("%s %s", tmp_o_fn, tmp_o_ln); Name *tmp_o_name = (struct Name *)malloc(sizeof(struct Name)); tmp_o_name->first_name = tmp_o_fn; tmp_o_name->last_name = tmp_o_ln; Contact *temp = search_contact_by_name(head, tmp_o_fn, tmp_o_ln); if(temp == NULL) printf("Cannot locate %s %s.\n",tmp_o_fn, tmp_o_ln); else{ puts("------------------------------------------------------------"); printf("%s %s\t\t%s\t\t%s\n", temp->name->first_name, temp->name->last_name, temp->gender == FEMALE ? "Female" : "Male", temp->phone); puts("------------------------------------------------------------"); } printf("Would you like to continue the update? (Y/N) "); char *tmp_fn = (char *)malloc(20); char *tmp_ln = (char *)malloc(20); char *tmp_phone = (char *)malloc(10); int tmp_gender; if(toupper(getche())=='Y') { printf("\nEnter First_Name Last_Name: "); scanf("%s %s", tmp_fn, tmp_ln); printf("Enter Phone: "); scanf("%s", tmp_phone); printf("Enter Gender(1 for Male, 0 for Female): "); scanf("%d", &tmp_gender); Name *tmp_name = (struct Name *)malloc(sizeof(struct Name)); tmp_name->first_name = tmp_fn; tmp_name->last_name = tmp_ln; update_contact_by_name(&head, tmp_o_name, tmp_name, tmp_gender, tmp_phone); puts("------------------------------------------------------------"); } else { printf("\n"); } break; } case 7: { clean_screen(CURRENT_OS_TYPE); puts("-----------------| UPDATE CONTACT BY PHONE |-----------------"); char *temp_o_phone=(char *)malloc(11); printf("Enter The Phone: "); scanf("%s", temp_o_phone); Contact *temp=search_contact_by_phone(head,temp_o_phone); if(temp==NULL) { printf("Cannot Found %s",temp_o_phone); } else { puts("------------------------------------------------------------"); printf("%s %s\t\t%s\t\t%s\n", temp->name->first_name, temp->name->last_name, temp->gender == FEMALE ? "Female" : "Male", temp->phone); puts("------------------------------------------------------------"); } printf("Would you like to continue the update? (Y/N) "); char *tmp_fn = (char *)malloc(20); char *tmp_ln = (char *)malloc(20); char *tmp_phone = (char *)malloc(10); int tmp_gender; if(toupper(getche())=='Y') { printf("\nEnter First_Name Last_Name: "); scanf("%s %s", tmp_fn, tmp_ln); printf("Enter Phone: "); scanf("%s", tmp_phone); printf("Enter Gender(1 for Male, 0 for Female): "); scanf("%d", &tmp_gender); Name *tmp_name = (struct Name *)malloc(sizeof(struct Name)); tmp_name->first_name = tmp_fn; tmp_name->last_name = tmp_ln; update_contact_by_phone(&head, temp_o_phone, tmp_name, tmp_gender, tmp_phone); puts("------------------------------------------------------------"); }else { printf("\n"); } break; } case 8: { clean_screen(CURRENT_OS_TYPE); puts("-----------------| DELETE CONTACT BY INDEX |-----------------"); int index; printf("Enter Index[1:%d]: ", CSIZE); scanf("%d", &index); int success=0; success = delete_contact_by_index(&head, &tail, index); if(success) printf("Deletion successful\n"); else printf("No such index %d\n",index); puts("-------------------------------------------------------------"); break; } case 9: { clean_screen(CURRENT_OS_TYPE); puts("-----------------| DELETE CONTACT BY NAME |-----------------"); char *tmp_o_fn = (char *)malloc(20); char *tmp_o_ln = (char *)malloc(20); printf("Enter First_Name Last_Name: "); scanf("%s %s", tmp_o_fn, tmp_o_ln); Name *tmp_o_name = (struct Name *)malloc(sizeof(struct Name)); tmp_o_name->first_name = tmp_o_fn; tmp_o_name->last_name = tmp_o_ln; int success=0; success = delete_contact_by_name(&head, &tail, tmp_o_name); if(success) printf("Deletion successful\n"); else printf("%s %s cannot be found!\n", tmp_o_fn, tmp_o_ln); puts("------------------------------------------------------------"); break; } case 10: { clean_screen(CURRENT_OS_TYPE); puts("-----------------| DELETE CONTACT BY PHONE |-----------------"); char *tmp_phone=(char *)malloc(11); printf("Enter The Phone: "); scanf("%s",tmp_phone); int success=0; success=delete_contact_by_phone(&head,&tail,tmp_phone); if(success) { printf("Deletion successful\n"); } else { printf("%s cannot be found!\n",tmp_phone); } puts("------------------------------------------------------------"); break; } case 11: { clean_screen(CURRENT_OS_TYPE); puts("-----------------| ABOUT DEVELOPER |-----------------"); about_developer(); puts("-----------------------------------------------------"); break; } case 12: { clean_screen(CURRENT_OS_TYPE); list_all_nodes_address(head, tail); break; } case 13: { clean_screen(CURRENT_OS_TYPE); puts("BYE-BYE !"); keep = 0; break; } default: puts("Bad choice"); } pause(CURRENT_OS_TYPE); } return 0; }
void microdrive_menu() { unsigned char *fbuffer,fin; int retval,ancho=screen->w; fbuffer=screen->pixels; fin=1; do { clean_screen(); print_string(fbuffer,"MICRODRIVE files",-1,20,15,0,ancho); print_string(fbuffer,"1:",14,60,12,0,ancho); print_string(fbuffer,"select a MDR file",62,60,15,0,ancho); print_string(fbuffer,"2:",14,100,12,0,ancho); print_string(fbuffer,"create a MDR file",62,100,15,0,ancho); print_string(fbuffer,"3:",14,140,12,0,ancho); print_string(fbuffer,"write protection",62,140,15,0,ancho); print_string(fbuffer,"ESC:",14,180,12,0,ancho); print_string(fbuffer,"return emulator",78,180,15,0,ancho); print_string(fbuffer,"Current MDR file is:",-1,300,12,0,ancho); print_string(fbuffer,ordenador.mdr_current_mdr,-1,320,12,0,ancho); //print_copy(fbuffer,ancho); if(!ordenador.mdr_cartridge[137922]) print_string(fbuffer,"Write enabled",-1,420,14,0,ancho); else print_string(fbuffer,"Write disabled",-1,420,14,0,ancho); switch(wait_key()) { case SDLK_ESCAPE: // to exit the help fin=0; break; case SDLK_1: select_mdrfile(); break; case SDLK_2: create_mdrfile(); break; case SDLK_3: if(ordenador.mdr_cartridge[137922]) ordenador.mdr_cartridge[137922]=0; else ordenador.mdr_cartridge[137922]=1; ordenador.mdr_file=fopen(ordenador.mdr_current_mdr,"wb"); // create for write if(ordenador.mdr_file!=NULL) { retval=fwrite(ordenador.mdr_cartridge,137923,1,ordenador.mdr_file); // save cartridge fclose(ordenador.mdr_file); ordenador.mdr_file=NULL; ordenador.mdr_modified=0; } break; default: break; } } while(fin); clean_screen(); }
// you may want to have a look into /usr/src/linux/drivers/char/console.c void parse_character(termstate_t * term, l4_uint8_t c) { int i; // these must be handled independetly of state switch (c) { case 0: // ignore return; case 7: // bell // todo: impl. me return; case 8: // backspace if (term->cur_x > 0) term->cur_x--; return; case 9: // tab cursor_tab(term); return; case 10: // newline (lf) case 11: // ? case 12: // ? cursor_nl(term); return; case 13: // do a cr here, maybe a smart one (+ lf) cursor_cr(term); return; case 27: // ESC term->esc_state = ESesc; return; } // now check for the state-dependant characters switch (term->esc_state) { case ESnormal: // normal character if ((c >= 0x20 && c <= 0x7e) || (c >= 0xa1 && c <= 0xfe)) { if (term->insert_mode == VT100_INSMODE_REPLACE) { set_char(term, c); //vt100_redraw_xy(term, term->cur_x, term->cur_y); cursor_next(term); } else // VT100_INSMODE_INSERT { insert_char(term, c); //vt100_redraw(term); } return; } // switch (c) // { // } break; case ESesc: // normal ESC found term->esc_state = ESnormal; switch (c) { case '[': term->esc_state = ESsquare; return; case 'D': // lf cursor_lf(term); //vt100_redraw(term); return; case 'E': // cr + lf cursor_nl(term); //vt100_redraw(term); return; case 'H': // set tab at current position set_tab( term, term->cur_x ); return; case 'M': rev_scroll(term); //vt100_redraw(term); return; case '7': // save cursor position and attributes term->cur_stored_x = term->cur_x; term->cur_stored_y = term->cur_y; term->cur_stored_attr = term->attrib_mode; return; case '8': // restore saved cursor position and attributes term->cur_x = term->cur_stored_x; term->cur_y = term->cur_stored_y; term->attrib_mode = term->cur_stored_attr; return; case '#': term->esc_state = EShash; return; case 'c': // reset vt to default settings init_termstate(term, term->w, term->phys_h, term->virt_h); return; } case ESsquare: for(i = 0; i < NUM_PAR; i++) term->par[i] = 0; term->used_par = 0; term->esc_state = ESgetpars; term->ques = (c=='?'); if (term->ques) return; // fall-through case ESgetpars: if (c == ';' && term->used_par < NUM_PAR - 1) { term->used_par++; return; } else if (c >= '0' && c <= '9') { term->par[term->used_par] *= 10; term->par[term->used_par] += c - '0'; return; } else term->esc_state = ESgotpars; // fall-through case ESgotpars: term->esc_state = ESnormal; switch (c) { case 'h': if (term->ques) { // handle question commands ending with h for (i = 0; i <= term->used_par; i++) { switch( term->par[i] ) { case 5: // activate inverse screen if (set_mode(term, 1)) //vt100_redraw(term); break; case 6: // origin mode = scroll region term->origin_mode = VT100_ORIGIN_SCROLL; break; case 7: // autowrap mode on term->autowrap = 1; break; case 8: // autorepeat on term->autorepeat = 1; break; case 25: // activate cursor term->cursor_vis = 1; return; default: break; } } return; } else // handle commands without question mark { for(i = 0; i <= term->used_par; i++) { switch( term->par[i] ) { case 4: // insert mode on term->insert_mode = VT100_INSMODE_INSERT; break; case 12: // echo on term->echo = 1; break; case 20: // line feed mode term->newline = 1; break; default: break; } } return; } case 'l': if (term->ques) { for(i = 0; i <= term->used_par; i++) { // handle question commands ending with l switch( term->par[i] ) { case 3: // set 80 column mode, clear screen // todo: impl. resize and use it here break; case 5: // deactivate inverse screen if(set_mode(term, 0)) //vt100_redraw(term); break; case 6: // origin mode = whole screen term->origin_mode = VT100_ORIGIN_GLOBAL; case 7: // autowrap mode off term->autowrap = 0; break; case 8: // autorepeat off term->autorepeat = 0; break; case 25: // deactivate cursor term->cursor_vis = 0; return; default: break; } return; } } else // handle commands without question mark { for( i=0; i <= term->used_par; i++ ) { switch( term->par[i] ) { case 4: // insert mode off term->insert_mode = VT100_INSMODE_REPLACE; break; case 12: // echo off term->echo = 0; break; case 20: // carriage return mode term->newline = 0; break; default: break; } return; } } } if (term->ques) { term->ques = 0; return; } switch (c) { case 'F': // CR + up term->cur_x = 0; // fall through case 'A': // up if (! term->par[0]) term->par[0]++; cursor_up(term); return; case 'E': // CR + down term->cur_x = 0; // fall through case 'B': // down if (! term->par[0]) term->par[0]++; cursor_down(term); return; case 'C': // right // no parameter -> set parameter to default (=1) if (! term->par[0]) term->par[0]++; cursor_right(term); return; case 'D': // left if (! term->par[0]) term->par[0]++; cursor_left(term); return; case 'G': // cursor position horizontal absolute if ( (term->par[0] > 0) && (term->par[0] < term->w) ) term->cur_x = term->par[0]; return; case 'H': // absolute position (x,y) case 'f': // f is the same as H (correct me, if I'm wrong) // well it is the same in the Linux kernel, in theorie the // 'f' commands depend on the PUM (Position unit mode), // which can be characters (seems to be default) or inch if (term->par[0] > 0) // convert to (0, 0) based coords term->par[0]--; if (term->par[1] > 0) term->par[1]--; cursor_move_abs(term, term->par[1], term->par[0]); return; case 'I': // insert tabs ('\t', term->par[0] times) if (!term->par[0]) term->par[0]++; for (i=0;i<term->par[0];i++) cursor_tab(term); return; case 'J': switch(term->par[0]) { case 0: // kill to end of screen clean_to_eos(term); //vt100_redraw(term); return; case 1: // kill from start of screen clean_from_sos(term); //vt100_redraw(term); return; case 2: // kill whole screen clean_screen(term, ' '); //vt100_redraw(term); return; } case 'K': // kill to end of line switch(term->par[0]) { case 0: // clean to end of line clean_to_eol(term); //vt100_redraw(term); return; case 1: // clean from start of line clean_from_sol(term); return; case 2: // erase whole line clean_line(term, term->cur_y); return; } case 'L': // insert lines if (!term->par[0]) term->par[0] = 1; for (i=0; i<term->par[0]; i++) insert_line(term); //vt100_redraw(term); return; case 'M': // erase lines if (!term->par[0]) term->par[0] = 1; for (i=0; i<term->par[0]; i++) erase_line(term); //vt100_redraw(term); return; case 'c': // we were asked to identify the terminal type identify(term); return; case 'g': // erase tab(s) switch(term->par[0]) { case 0: remove_tab( term, term->cur_x ); break; case 3: clear_tabs( term ); break; default: break; } return; case 'm': csi_m(term); return; case 'r': // set scrolling region if (term->par[0] == 0) term->par[0]++; if (term->par[1] == 0) term->par[1] = term->phys_h; /* Minimum allowed region is 2 lines */ if (term->par[0] < term->par[1] && term->par[1] <= term->phys_h) { term->scroll_top = term->par[0] - 1; term->scroll_bottom = term->par[1]; // this line is excluded // if in origin mode, make sure that the cursor is placed // inside the scrolling region immediately if (term->origin_mode == VT100_ORIGIN_SCROLL) { term->cur_x = 0; term->cur_y = term->scroll_top; } } return; } case EShash: term->esc_state = ESnormal; switch(c) { case '8': // fill the screen with 'E' clean_screen(term, 'E'); //vt100_redraw(term); break; } break; } }
void create_mdrfile() { unsigned char *videomem; int ancho,retorno,bucle,retval; unsigned char nombre2[MAX_PATH_LENGTH]; videomem=screen->pixels; ancho=screen->w; clean_screen(); print_string(videomem,"Choose a name for the MDR file",-1,32,14,0,ancho); print_string(videomem,"(up to 30 characters)",-1,52,14,0,ancho); print_string(videomem,"MDR file will be saved in:",-1,132,12,0,ancho); print_string(videomem,path_mdrs,0,152,12,0,ancho); retorno=ask_filename(nombre2,84,"mdr",path_mdrs, NULL); clean_screen(); if(retorno==2) // abort return; ordenador.mdr_file=fopen(nombre2,"r"); // test if it exists if(ordenador.mdr_file==NULL) retorno=0; else retorno=-1; if(!retorno) { ordenador.mdr_file=fopen(nombre2,"wb"); // create for write if(ordenador.mdr_file==NULL) retorno=-2; else { for(bucle=0;bucle<137921;bucle++) ordenador.mdr_cartridge[bucle]=0xFF; // erase cartridge ordenador.mdr_cartridge[137922]=0; retval=fwrite(ordenador.mdr_cartridge,137923,1,ordenador.mdr_file); // save cartridge fclose(ordenador.mdr_file); ordenador.mdr_file=NULL; ordenador.mdr_modified=0; retorno=0; } } strcpy(ordenador.mdr_current_mdr,nombre2); switch(retorno) { case 0: break; case -1: print_string(videomem,"File already exists",-1,80,10,0,ancho); ordenador.mdr_current_mdr[0]=0; wait_key(); break; case -2: print_string(videomem,"Can't create file",-1,80,10,0,ancho); ordenador.mdr_current_mdr[0]=0; wait_key(); break; } clean_screen(); }
int line_navigator(char *path, char *doc_page) { int ret = 0; char *data = read_file(path); int n_lines = linecounter(data); int act_line = 0; char **lines; lines = new char *[n_lines]; lines[0] = &data[0]; int data_len = strlen(data); if (data_len > 0) { for (int i = 1, x = 0; data[x] != '\0'; x++) { if (data[x] == '\n') { data[x] = '\0'; if (i < n_lines) { lines[i] = &data[x+1]; } i++; } } if (n_lines > 0) { ret = 1; char char_read[2]; do { clean_screen(); int start_line = act_line; if (start_line > (n_lines-22) && n_lines >= 22) { start_line = (n_lines-22); } if (n_lines < 22) { start_line = 0; } for (int i = start_line; i < (start_line+22) && i < n_lines; i++) { printf("%s\n", lines[i]); } printf("\n\nManual page for %s line %d " "(press 'h' for help or 'q' to exit)", doc_page, act_line+1); read(0, char_read, 1); if (char_read[0] == 'e' && act_line < n_lines) { act_line++; } if (char_read[0] == 'y' && act_line > 0) { act_line--; } if (char_read[0] == 'm') { char line[8]; clean_screen(); printf("Move to line: "); gets_s(line, 8); int line_to_move = atoi(line); if (line_to_move > 0 && line_to_move < n_lines) { act_line = (line_to_move-1); } } if (char_read[0] == 'h') { clean_screen(); printf("\e[9;32HSUMMARY OF LESS COMMANDS\n"); printf("\e[10;30Hh\t\tDisplay this help\n"); printf("\e[11;30Hq\t\tExit\n"); printf("\e[12;40HMOVING\n"); printf("\e[13;30He\t\tForward one line\n"); printf("\e[14;30Hy\t\tBackward one line\n"); printf("\e[15;30Hm\t\tMove to 'n' line\n"); printf("\e[17;35HPress 'q' when done\e[1;1H"); while (getchar() != 'q'); } } while(char_read[0] != 'q'); clean_screen(); } }