📄 ecuphdir.c
字号:
return; wmove(dirw,1,1); wstandout(dirw);#if defined(SVR4) waddstr(dirw," entry name | telephone number | tty | baud P | description " );#else waddstr(dirw," entry name "); waddch(dirw,(unsigned)sVR); waddstr(dirw," telephone number "); waddch(dirw,(unsigned)sVR); waddstr(dirw," tty "); waddch(dirw,(unsigned)sVR); waddstr(dirw," baud P "); waddch(dirw,(unsigned)sVR); waddstr(dirw," description ");#endif wstandend(dirw); dirw_display_phonedir_name(); dirw_display_config();#if 0 touchwin(stdscr); wrefresh(stdscr);#endif wrefresh(dirw);} /* end of dirw_display *//*+------------------------------------------------------------------------- dirw_bot_msg(msg)--------------------------------------------------------------------------*/voiddirw_bot_msg(msg)char *msg;{ register itmp; register itmp2; static last_msglen = 0;#define DIRW_BOT_LINE_TLX 2#define DIRW_BOT_LINE_MAX_MSGLEN (DIRW_COLS - DIRW_BOT_LINE_TLX - 8) char msg2[80]; if(!dirw || (!last_msglen && !strlen(msg))) return; wmove(dirw,DIRW_LINES - 1,DIRW_BOT_LINE_TLX); if((itmp = strlen(msg)) == 0) { itmp2 = last_msglen + 2;#if defined(SVR4) whline(dirw, (unsigned long)(sHR & 0x00ff), itmp2);#else for(itmp = 0; itmp < itmp2; itmp++) waddch(dirw,(unsigned)sHR);#endif last_msglen = 0; } else { waddch(dirw,' '); if(itmp > DIRW_BOT_LINE_MAX_MSGLEN) { strncpy(msg2,msg,DIRW_BOT_LINE_MAX_MSGLEN); msg2[DIRW_BOT_LINE_MAX_MSGLEN + 1] = 0; waddstr(dirw,msg2); itmp = strlen(msg2); } else { waddstr(dirw,msg); itmp = strlen(msg); } waddch(dirw,' '); if((itmp2 = last_msglen - itmp) > 0) {#if defined(SVR4) whline(dirw, (unsigned long)(sHR & 0x00ff), itmp2);#else while(itmp2--) waddch(dirw,(unsigned)sHR);#endif } last_msglen = itmp; /* remember last message length */ } wrefresh(dirw);} /* end of dirw_bot_msg *//*+------------------------------------------------------------------------- phdir_display_logical(line,tpde,stand_out)--------------------------------------------------------------------------*/voidphdir_display_logical(line,tpde,stand_out)int line;PDE *tpde;int stand_out;{ wmove(scrw,line,0);#if defined(SVR4) wvline(scrw, (unsigned long)(sVR & 0x00ff), 1); wmove(scrw,line,1);#else waddch(scrw,(unsigned)sVR);#endif if(tpde->redial) { wstandout(scrw); waddch(scrw,'>'); wstandend(scrw); } else waddch(scrw,' '); if(stand_out) wstandout(scrw); wprintw(scrw,"%-10.10s",tpde->logical); if(stand_out) wstandend(scrw);} /* end of phdir_display_logical *//*+----------------------------------------------------------------------- phdir_display(win,line,tpde,stand_out)0000000000111111111122222222223333333333444444444455555555556666666666777777777701234567890123456789012345678901234567890123456789012345678901234567890123456789| entry name | telephone number | tty | baud P | description || 0123456789 | 0123456789012345 | 01 | baud P | 01234567890123456789012345678 |--------------------------------------------------------------------------*/phdir_display(line,tpde,stand_out)int line;PDE *tpde;int stand_out;{ phdir_display_logical(line,tpde,stand_out); waddch(scrw,' ');#if defined(SVR4) wmove(scrw, line, 13); waddch(scrw,'|');#else waddch(scrw,(unsigned)sVR);#endif waddch(scrw,' ');#if defined(SVR4) wprintw(scrw,"%-16.16s |",tpde->telno); if(tpde->tty[0]) wprintw(scrw,"%-5.5s|",tpde->tty); else waddstr(scrw,"Any |"); wprintw(scrw,"%5u %c | ",tpde->baud, (tpde->parity) ? to_upper(tpde->parity) : 'N'); wprintw(scrw,"%-29.29s",tpde->descr);#else wprintw(scrw,"%-16.16s ",tpde->telno); waddch(scrw,(unsigned)sVR); if(tpde->tty[0]) wprintw(scrw,"%-5.5s",tpde->tty); else waddstr(scrw,"Any "); waddch(scrw,(unsigned)sVR); wprintw(scrw,"%5u %c ",tpde->baud, (tpde->parity) ? to_upper(tpde->parity) : 'N'); waddch(scrw,(unsigned)sVR); wprintw(scrw," %-29.29s ",tpde->descr); waddch(scrw,(unsigned)sVR);#endif return(0);} /* end of phdir_display *//*+----------------------------------------------------------------------- scrw_fill(first_pde,curr_pde_line)------------------------------------------------------------------------*/voidscrw_fill(tpde,curr_pde_line)register PDE *tpde;int *curr_pde_line;{ register line; register is_curr_pde; *curr_pde_line = -1; for(line = 0; line < SCRW_LINES; line++) { if(tpde) { if(is_curr_pde = (tpde == curr_pde)) *curr_pde_line = line; phdir_display(line,tpde,is_curr_pde); tpde = tpde->next; } else { wmove(scrw,line,0);#if defined(SVR4) wvline(scrw, (unsigned long)(sVR & 0x00ff), 1); wmove(scrw,line,1);#else waddch(scrw,(unsigned)sVR);#endif wclrtoeol(scrw); wmove(scrw,line,SCRW_COLS - 1);#if defined(SVR4) wvline(scrw, (unsigned long)(sVR & 0x00ff), 1);#else waddch(scrw,(unsigned)sVR);#endif } } wrefresh(scrw);} /* end of scrw_fill *//*+------------------------------------------------------------------------- scrw_fill_at(line_num,first_pde,curr_pde_line)--------------------------------------------------------------------------*/voidscrw_fill_at(line_num,tpde,curr_pde_line)int line_num;register PDE *tpde;int *curr_pde_line;{ register itmp; if(!tpde) { scrw_fill(tpde,curr_pde_line); return; } for(itmp = 0; itmp < line_num; itmp++) { if(!tpde->prev) break; tpde = tpde->prev; } scrw_fill(tpde,curr_pde_line);} /* end of scrw_fill_at *//*+------------------------------------------------------------------------- dirw_cmd_line_setup(prompt1,prompt2)--------------------------------------------------------------------------*/voiddirw_cmd_line_setup(prompt1,prompt2)char *prompt1;char *prompt2;{ register icol; int y; int x; char *cptr; int standout_mode; wmove(dirw,DIRW_CMD_LINE - 1,1); wstandend(dirw); standout_mode = 0; waddch(dirw,' '); cptr = prompt1; while(*cptr) { if(*cptr == '~') { if(standout_mode) wstandend(dirw); else wstandout(dirw); standout_mode = !standout_mode; cptr++; } else waddch(dirw,*cptr++); } wstandend(dirw); standout_mode = 0; waddch(dirw,' '); getyx(dirw,y,x); for(icol = x; icol < DIRW_COLS - 1; icol++) waddch(dirw,' '); wmove(dirw,DIRW_CMD_LINE,1); waddch(dirw,' '); cptr = prompt2; while(*cptr) { if(*cptr == '~') { if(standout_mode) wstandend(dirw); else wstandout(dirw); standout_mode = !standout_mode; cptr++; } else waddch(dirw,*cptr++); } wstandend(dirw); waddch(dirw,' '); getyx(dirw,y,x); for(icol = x; icol < DIRW_COLS - 1; icol++) waddch(dirw,' '); wmove(dirw,y,x); wrefresh(scrw); wrefresh(dirw);} /* end of dirw_cmd_line_setup *//*+------------------------------------------------------------------------- dirw_get_cmd()--------------------------------------------------------------------------*/uchardirw_get_cmd(){ register uchar cmd; char setupline1[128]; /* yetch ... avoid source line > 80 chars */ char *setupline1_1 = "~d~own ~u~p ~e~dit ~a~dd ~r~emove ~s~ave ~f~ind "; char *setupline1_2 = "~c~hange dial dir ~ENTER~:dial ~ESC,q~uit"; strcpy(setupline1,setupline1_1); strcat(setupline1,setupline1_2); dirw_cmd_line_setup( setupline1, "redial: ~m~ark un~M~ark ~U~nmark all ~w~ait between dial"); cmd = ttygetc(1); dirw_bot_msg(""); return(cmd);} /* end of dirw_get_cmd *//*+------------------------------------------------------------------------- phdir_cmd_save()--------------------------------------------------------------------------*/voidphdir_cmd_save(){ FILE *fpold; FILE *fpnew; PDE *tpde; char *cptr; char phonedir_ntmp[256]; /* temp phone directory name */ char iobuf[128]; int count = 0; if(!phdir_list_dirty) { dirw_bot_msg("directory has not been modified"); return; } strcpy(phonedir_ntmp,phonedir_name); strcat(phonedir_ntmp,".t"); if(!(fpnew = fopen(phonedir_ntmp,"w"))) /* open old file */ { sprintf(iobuf,"cannot open %s",phonedir_ntmp); dirw_bot_msg(iobuf); return; }/* write trigger */ fputs(phonedir_trigger,fpnew);/* retain commented entries */ if((fpold = fopen(phonedir_name,"r"))) /* open old file */ { while(fgets(iobuf,sizeof(iobuf),fpold)) { if((iobuf[0] == '#') && strcmp(iobuf,phonedir_trigger)) fputs(iobuf,fpnew); } fclose(fpold); }/* write new entries */ tpde = phdir_list_head; while(tpde) { cptr = tpde->descr; while(*cptr) /* cannot have ':' in description */ { /* should have picked another separator, ... */ if(*cptr == ':') /* ... but compatibility is important */ *cptr = '-'; cptr++; } sprintf(iobuf,"%d",count+1); dirw_bot_msg(iobuf); sprintf(iobuf,"%s:%s:%s:%u:%c:%s:%d:%c\n",tpde->logical,tpde->telno, tpde->tty,tpde->baud, (tpde->parity) ? to_upper(tpde->parity) : 'N', tpde->descr,tpde->debug_level,to_upper(tpde->dcdwatch)); fputs(iobuf,fpnew); tpde = tpde->next; count++; } fclose(fpnew); unlink(phonedir_name); rename(phonedir_ntmp,phonedir_name); sprintf(iobuf,"saved %d entries",count); dirw_bot_msg(iobuf); phdir_list_set_dirty(0);} /* end of phdir_cmd_save *//*+------------------------------------------------------------------------- phdir_list_save_if_dirty()--------------------------------------------------------------------------*/voidphdir_list_save_if_dirty(){ uint cmd = 0; if(phdir_list_dirty) { dirw_bot_msg("type 'y' or 'n'"); while(!cmd) { ring_bell(); dirw_cmd_line_setup("","current directory modified: save?"); cmd = ttygetc(0); if(isupper(cmd)) cmd = tolower(cmd); switch(cmd) { case 'y': phdir_cmd_save(); break; case 'n': break; default: cmd = 0; break; } } dirw_bot_msg(""); }} /* end of phdir_list_save_if_dirty *//*+------------------------------------------------------------------------- phdir_cmd_up()--------------------------------------------------------------------------*/voidphdir_cmd_up(){ register PDE *tpde; if((!curr_pde) || (curr_pde->prev == (PDE *)0)) { ring_bell(); return; } if(scrw_curr_pde_line) { phdir_display_logical(scrw_curr_pde_line,curr_pde,0); scrw_curr_pde_line--; curr_pde = curr_pde->prev; phdir_display_logical(scrw_curr_pde_line,curr_pde,1); } else { tpde = curr_pde; curr_pde = curr_pde->prev; scrw_fill_at(10,tpde,&scrw_curr_pde_line); }} /* end of phdir_cmd_up *//*+------------------------------------------------------------------------- phdir_cmd_down()--------------------------------------------------------------------------*/voidphdir_cmd_down(){ register PDE *tpde; if((!curr_pde) || (curr_pde->next == (PDE *)0)) { ring_bell(); return; } if(scrw_curr_pde_line < (SCRW_LINES - 1)) { phdir_display_logical(scrw_curr_pde_line,curr_pde,0); scrw_curr_pde_line++; curr_pde = curr_pde->next; phdir_display_logical(scrw_curr_pde_line,curr_pde,1); } else { tpde = curr_pde; curr_pde = curr_pde->next; scrw_fill_at(SCRW_LINES - 10,tpde,&scrw_curr_pde_line); }} /* end of phdir_cmd_down */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -