static void edit_ok(int msg) { if(item<=envs_local) { strcpy(myline,envp_local[item-1]); if(menu[item].arg)free(menu[item].arg); __cprint(INFO_Y,0,INFO_W,0x7,myline); edit_cmdline1(myline); __cprint(INFO_Y,0,INFO_W,0x70,myline); envp_local[item-1]=menu[item].arg=malloc(strlen(myline)+1); strcpy(menu[item].arg,myline); selectitem(); } else if(item<items_edit) //run { if(msg=='e') { strcpy(myline,menu[item].arg); free(menu[item].arg); __cprint(INFO_Y,0,INFO_W,0x7,myline); edit_cmdline2(myline); menu[item].arg=malloc(strlen(myline)+1); strcpy(menu[item].arg,myline); __cprint(INFO_Y,0,INFO_W,0x70,expand(menu[item].arg)); } else { __popdown(POP_Y,POP_X,POP_H,popwidth); do_cmd(expand(menu[item].arg)); __popup(POP_Y,POP_X,POP_H,popwidth); printmenu(); } } }
static void popupfb(int y, int x,int height,int width) { video_cls(); #if 0 for(;height;height--,y++) __cprint(y,x,width,0x17,0); __cprint(INFO_Y,0,80,0x70,0); #endif }
static int pause() { char cmd[20]; struct termio tbuf; printf("\n"); __cprint(INFO_Y,0,INFO_W,0x70,"press enter to continue"); ioctl (STDIN, SETNCNE, &tbuf); gets(cmd); ioctl (STDIN, TCSETAW, &tbuf); __cprint(INFO_Y,0,INFO_W,0x7,0); return 0; }
static int default_update(void) { switch(menu[item].type) { case TYPE_CMD: getItemCmd(menu[item].msg); __cprint(menu[item].y,menu[item].x,popwidth,0x17,expand(ItemName)); default: __cprint(menu[item].y,menu[item].x,popwidth,0x17,expand(getItemName(menu[item].msg)));break; } return 1; }
static int edit_update(void) { if(item>0 && item<=envs_local) { __cprint(menu[item].y,menu[item].x,popwidth,0x17,envp_local[item-1]); } else if(item>envs_local && item<items_edit) { char *p; p=strchr(menu[item].msg,'='); *p=0; __cprint(menu[item].y,menu[item].x,popwidth,0x17,expand(menu[item].msg)); *p='='; } else __cprint(menu[item].y,menu[item].x,popwidth,0x17,expand(getItemName(menu[item].msg))); return 1; }
static int edit_digital(int msg) { char *p; if(ischoice(menu[item].msg)) { p=getchoice(menu[item].msg,msg-'0'); if(p)strcpy(strchr(envp_local[item-1],'=')+1,p); __cprint(menu[item].y,menu[item].x,popwidth,0x70,envp_local[item-1]); } return 1; }
static int default_update1(void) { char *str=myline; char *cmd; switch(menu[item].type) { case TYPE_CMD: cmd=getItemCmd(menu[item].msg); __cprint(menu[item].y,menu[item].x,popwidth,0x70,expand(ItemName)); if(ischoice(menu[item].msg)) { int i; str=myline; for(i=1;i<=9;i++) { cmd=getchoice(menu[item].msg,i); if(!cmd)break; getItemCmd(cmd); str +=sprintf(str,"%d:%s ",i,expand(ItemName)); } str=myline; __cprint(INFO_Y,0,INFO_W,0x70,str); } else { cmd=getItemCmd(cmd); __cprint(INFO_Y,0,INFO_W,0x70,expand(ItemName)); } break; default: __cprint(menu[item].y,menu[item].x,popwidth,0x70,expand(getItemName(menu[item].msg))); __cprint(INFO_Y,0,INFO_W,0x70,0); break; } return 1; }
static int edit_update1(void) { char *p; char *penv=0; if(item>0 && item<=envs_local) { __cprint(menu[item].y,menu[item].x,popwidth,0x70,envp_local[item-1]); } else if(item<items_edit) { char *p; p=strchr(menu[item].msg,'='); *p=0; __cprint(menu[item].y,menu[item].x,popwidth,0x70,expand(menu[item].msg)); *p='='; } else __cprint(menu[item].y,menu[item].x,popwidth,0x70,menu[item].msg); if(menu[item].type==TYPE_CHOICE) { int i; penv=myline; for(i=1;i<=9;i++) { p=getchoice(menu[item].msg,i); if(!p)break; penv +=sprintf(penv,"%d:%s ",i,p); } penv=myline; } else if(item<=envs_local) penv=envp_local[item-1]; else if(item<items_edit) penv=expand(menu[item].arg); else penv=0; __cprint(INFO_Y,0,INFO_W,0x70,penv); return 1; }