⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config.c

📁 在MAC OS下的一个可以直接调试modem的工具minicom,类似于是在windows下的超级终端.
💻 C
📖 第 1 页 / 共 4 页
字号:
 * Ask user for Baudrate, Bits and Parity */void get_bbp(char *ba, char *bi, char *pa, char *stopb, int curr_ok){  int c;  WIN *w;  int x, y;  w = mc_wopen(23, 4, 58, 18, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);  mc_wtitle(w, TMID, _("Comm Parameters"));  dirflush = 0;  mc_wlocate(w, 0, 3);  mc_wputs(w, _(" Speed            Parity      Data\n"));  mc_wputs(w, _(" A: <next>        L: None     S: 5\n"));  mc_wputs(w, _(" B: <prev>        M: Even     T: 6\n"));  mc_wputs(w, _(" C:   9600        N: Odd      U: 7\n"));  mc_wputs(w, _(" D:  38400        O: Mark     V: 8\n"));  mc_wputs(w, _(" E: 115200        P: Space\n"));  mc_wputs(w, "\n");  mc_wputs(w, _(" Stopbits\n"));  mc_wputs(w, _(" W: 1             Q: 8-N-1\n"));  mc_wputs(w, _(" X: 2             R: 7-E-1\n"));  if (curr_ok)    mc_wputs(w, _(" K: Current\n"));  else    mc_wputs(w, "\n");  mc_wputs(w, _("\n Choice, or <Enter> to exit? "));  x = w->curx;  y = w->cury;  mc_wredraw(w, 1);  while (1) {    mc_wlocate(w, 5, 1);    mc_wprintf(w, _("Current: %5s %s%s%s  "), ba, bi, pa, stopb);    mc_wlocate(w, x, y);    mc_wflush();    c = wxgetch();    switch(c) {      case 27:      case '\n':      case '\r':        dirflush = 1;        mc_wclose(w, 1);        return;      default:	update_bbp_from_char(c, ba, bi, pa, stopb, curr_ok);        break;    }  }}/* Update the baud rate variables using the given character as the menu * option selected. */int update_bbp_from_char(char c, char *ba, char *bi, char *pa, char *stopb,                         int curr_ok){  int characterRecognised = 1;  unsigned i;  int speed_idx = 0; /* Default value is the first value of the speeds array */  int delta = -1;  unsigned max_speed = m_getmaxspd();  char tmps[15];  int update_ba = 0;  /* We have strings for the baud rate, find the index in the speeds array */  for (i = 0; !speed_idx && i < NR_SPEEDS; i++) {    snprintf(tmps, sizeof(tmps), "%d", speeds[i]);    tmps[sizeof(tmps) - 1] = 0;    if (!strcmp(tmps, ba))      speed_idx = i;  }  bi[1] = 0;  pa[1] = 0;  switch(c = toupper(c)) {    case 'A':      delta = 1;    case 'B':      speed_idx += delta;      if (speed_idx < 0)	speed_idx = NR_SPEEDS - 1;      else if (speed_idx > (int)NR_SPEEDS - 1               || max_speed < speeds[speed_idx])	speed_idx = 0;    case 'C':    case 'D':    case 'E':      if (c == 'C')	speed_idx = 4;      else if (c == 'D')	speed_idx = 6;      else if (c == 'E')        speed_idx = 8;    case 'K':      if (c == 'K' && !curr_ok)        break;      update_ba = 1;      break;    case 'L':      pa[0] = 'N';      break;    case 'M':      pa[0] = 'E';      break;    case 'N':      pa[0] = 'O';      break;    case 'O':      pa[0] = 'M';      break;    case 'P':      pa[0] = 'S';      break;    case 'Q':      pa[0] = 'N';      bi[0] = '8';      stopb[0] = '1';      break;    case 'R':      pa[0] = 'E';      bi[0] = '7';      stopb[0] = '1';      break;    case 'S':      bi[0] = '5';      break;    case 'T':      bi[0] = '6';      break;    case 'U':      bi[0] = '7';      break;    case 'V':      bi[0] = '8';      break;    case 'W':      stopb[0] = '1';      break;    case 'X':      stopb[0] = '2';      break;   default:      characterRecognised = 0;      break;  }  if (update_ba)    sprintf(ba, "%d", speeds[speed_idx]); /* XXX: uff, how long is 'ba' ? */  return characterRecognised;}/* * fmg - part of the Macros menu, "[none]" beats (null) :-) */static void out_mac(WIN *w, char *s, char n){  mc_wprintf(w, " %c : %.67s\n", n, s ? s : "[none]");}/* * fmg - Macros editing window */void domacros(void){  WIN   *w;  int   clr = 1;  int   Jch = '1', Jm = 0; /* fmg - ok, so I was lazy.. */  char* question = _("Change which setting?  (Esc to exit)");  w = mc_wopen(3, 6, 75, 24, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);  mc_wtitle(w, TMID, _("F1 to F10 Macros"));  mc_wprintf(w, "\n");  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  out_mac(w,mmacs[Jm++].value, Jch++);  Jch = 'A'; /* fmg - ran out of single digits... */  out_mac(w,mmacs[Jm++].value, Jch++);  mc_wredraw(w, 1);  while(1) {    mc_wlocate(w, 1, 14);    mc_wputs(w, _(" (LEGEND: ^M = C-M, ^L = C-L, ^G = C-G, ^R = C-R, ^~ = pause 1 second,"));    mc_wlocate(w, 1, 15);    mc_wputs(w, _("  \\u = username, \\p = password, \\\\ = \\, \\e = toggle echo, "));    mc_wlocate(w, 1, 16);    mc_wputs(w, _("  \\l = toggle LF, \\bX1..Xn<sp> = change baud rate. Example: \"\\bfq \""));    mc_wlocate(w, 1, 17);    mc_wputs(w, _("  = 19200 8N1. (See the \"Comm Parameters\" menu for valid values of X.))"));    if (clr) {      mc_wlocate(w, 1, 12);      mc_wprintf(w, "%s ", question);      mc_wclreol(w);      clr = 0;    } else      mc_wlocate(w, mbslen (question) + 2, 12);    switch (rwxgetch()) {      case '\n':        mc_wclose(w, 1);        return;      case '1':        mgets(w, 5, 1, P_MAC1, 72, MAC_LEN);        strcpy(P_MACCHG,_("CHANGED")); /* fmg - ...I'm ashamed */        mc_wlocate(w, 0, 1);        out_mac(w,P_MAC1, '1');        break;      case '2':        mgets(w, 5, 2, P_MAC2, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... really, I am */        mc_wlocate(w, 0, 2);        out_mac(w,P_MAC2, '2');        break;      case '3':        mgets(w, 5, 3, P_MAC3, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... this is the */        mc_wlocate(w, 0, 3);        out_mac(w,P_MAC3, '3');        break;      case '4':        mgets(w, 5, 4, P_MAC4, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... first entry on */        mc_wlocate(w, 0, 4);        out_mac(w,P_MAC4, '4');        break;      case '5':        mgets(w, 5, 5, P_MAC5, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... my TODO list. */        mc_wlocate(w, 0, 5);        out_mac(w,P_MAC5, '5');        break;      case '6':        mgets(w, 5, 6, P_MAC6, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... and, come to think */        mc_wlocate(w, 0, 6);        out_mac(w,P_MAC6, '6');        break;      case '7':        mgets(w, 5, 7, P_MAC7, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... of it, I no longer */        mc_wlocate(w, 0, 7);        out_mac(w,P_MAC7, '7');        break;      case '8':        mgets(w, 5, 8, P_MAC8, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... even use this... */        mc_wlocate(w, 0, 8);        out_mac(w,P_MAC8, '8');        break;      case '9':        mgets(w, 5, 9, P_MAC9, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... [sigh] */        mc_wlocate(w, 0, 9);        out_mac(w,P_MAC9, '9');        break;      case 'A':        mgets(w, 5, 10, P_MAC10, 72, MAC_LEN);        strcpy(P_MACCHG,"CHANGED"); /* fmg - ... [sigh] */        mc_wlocate(w, 0, 10);        out_mac(w,P_MAC10, 'A');        break;    }  }}/* is this *REALLY* a printable or non-printable character? * the isprint() function seems to consider all chars > 127d non-printable.. * jl 10.03.1998 */int prch(int c){  if (c < 32 || c == 127 || c == 155)    return (' ');  else    return (c);}/* Edit the character conversion tables. jl 04.09.97 */void doconv(void){  WIN *w;  int i, j, k, l, h,      offs = 32,      ymax = 22,      redraw = 1;  char buf[64];  char *prompt;  h = 16;  w = mc_wopen (1, 1, 77, ymax, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1);  mc_wtitle(w, TMID, _("Character conversion"));  while (1) {    if (redraw) {      mc_winclr(w);      mc_wprintf(w,              _(" char    in out    char    in out    char    in out    char    in out\n"));      for (i = offs, j = i+h, k = j+h, l = k+h;           i < offs+h && i < 256;           i++, j++, k++, l++) {        mc_wprintf(w, "%3d (%c) %3d %3d   ",                i, prch(i), (int) vt_inmap[i], (int) vt_outmap[i]);        if (j < 256)          mc_wprintf(w, "%3d (%c) %3d %3d   ",                  j, prch(j), (int) vt_inmap[j], (int) vt_outmap[j]);        else          mc_wprintf(w, "                  ");        if (k < 256)          mc_wprintf(w, "%3d (%c) %3d %3d   ",                  k, prch(k), (int) vt_inmap[k], (int) vt_outmap[k]);        else          mc_wprintf(w, "                  ");        if (l < 256)          mc_wprintf(w, "%3d (%c) %3d %3d\n",                  l, prch(l), (int) vt_inmap[l], (int) vt_outmap[l]);        else          mc_wprintf(w, "               \n");      }      mc_wprintf(w, _("\n A - load table\tB - save table"));      if (P_CONVF[0])        mc_wprintf(w, _("\tfile:%s"),P_CONVF);      mc_wprintf(w, _("\n C - edit char\tD - next screen\tE - prev screen\n"));      mc_wprintf(w, _(" F - convert capture: %s\n"), _(P_CONVCAP));      mc_wredraw(w, 1);      redraw = 0;    }    mc_wlocate(w, 1, ymax - 1);    mc_wclreol(w);    mc_wflush();    switch (toupper(rwxgetch())) {      case '\n':        mc_wclose(w, 1); return;        break;      case 'A':        strcpy(buf,P_CONVF);        prompt=_("Load file: %s");        mc_wprintf(w, prompt, buf);        pgets(w, mbslen(prompt) - 1, ymax - 1, P_CONVF, 64, 64);        if (loadconv(P_CONVF) == 0) {          if (strcmp(P_CONVF,buf))            markch(P_CONVF);          redraw = 1;        } else          strcpy(P_CONVF,buf);        break;      case 'B':        strcpy(buf,P_CONVF);        prompt=_("Save as file: %s");        mc_wprintf(w, prompt, buf);        pgets(w, mbslen(prompt) - 1, ymax - 1, P_CONVF, 64, 64);        if (saveconv(P_CONVF) == 0) {          if (strcmp(P_CONVF,buf))            markch(P_CONVF);          redraw = 1;        } else          strcpy(P_CONVF,buf);        break;      case 'C':        prompt = _("Character to be edited: ");        mc_wprintf(w, prompt);        buf[0] = 0;        i = -1;        mc_wlocate(w, mbslen(prompt), ymax - 1);        mc_wgets(w, buf, 4, 4);        sscanf(buf, "%d", &i);        if (i > 255 || i < 0) {          werror(_("Input character ascii value 0-255"));          break;        }        sprintf(buf, "%u",(unsigned int) vt_inmap[i]);        mc_wlocate(w, 30, ymax - 1);        prompt=_("Change input to: %s");        mc_wprintf(w, prompt,buf);        mc_wlocate(w, mbslen(prompt) + 28, ymax - 1);        mc_wgets(w, buf, 4, 4);        sscanf(buf, "%d", &j);        if (j > 255 || j < 0) {          werror(_("Input character ascii value 0-255"));          break;        }        else vt_inmap[i] = j;        sprintf(buf, "%u",(unsigned int) vt_outmap[i]);        mc_wlocate(w, 54, ymax - 1);        prompt = _("Change output to: %s");        mc_wprintf(w, prompt, buf);        mc_wlocate(w, mbslen(prompt) + 52, ymax - 1);        mc_wgets(w, buf, 4, 4);        sscanf(buf, "%d", &j);        if (j > 255 || j < 0) {          werror(_("Input character ascii value 0-255"));          break;        }        else vt_outmap[i] = j;        redraw = 1;        break;      case 'D':        offs += 4 * h;        if (offs > 255)          offs = 0;        redraw = 1;        break;      case 'E':        offs -= 4 * h;        if (offs < 0)          offs = 0;        redraw = 1;        break;      case 'F':        strcpy(P_CONVCAP, yesno(P_CONVCAP[0] == 'N'));        markch(P_CONVCAP);        redraw = 1;        break;    }  }}int loadconv(char *buf){  FILE *fp;  if ((fp = sfopen(pfix_home(buf), "rb")) == (FILE *)NULL) {    werror(_("Cannot open conversion table %s"), pfix_home(buf));    return 1;  }  fread(vt_inmap, sizeof(vt_inmap), (size_t)1, fp);  fread(vt_outmap, sizeof(vt_outmap), (size_t)1, fp);  fclose(fp);  return 0;}int saveconv(char *buf){  FILE *fp;  if ((fp = sfopen(pfix_home(buf), "wb")) == (FILE *)NULL) {    werror(_("Cannot write conversion table %s"), pfix_home(buf));    return 1;  }  fwrite(vt_inmap, sizeof(vt_inmap), (size_t)1, fp);  fwrite(vt_outmap, sizeof(vt_outmap), (size_t)1, fp);  fclose(fp);  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -