rem: int c = *cp++;
context: static int rc_read_old (const char *const buf, RCF_t *rc) {   const char std[] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZzJj......";   const char old[] = "AaBb..CcDd..GgHhIiYyEeWw..FfMmOoTtKkLlPpJjSsVvXxUuZz[{QqNnRr";   unsigned u;   const char *cp;   unsigned c_show = 0;   int badchar = 0;     // allow a limited number of duplicates and junk   char scoreboard[256];   memset(scoreboard, '\0', sizeof scoreboard);   cp = buf+2;  // skip the "\n\n" we stuck at the beginning   u = 0;   for (;;) {      const char *tmp;      if (u+1 >= sizeof rc->win[0].fieldscur) return -1;      int c = *cp++;      if (c == '\0') return -2;      if (c == '\n') break;      if (c & ~0x7f) return -3;      if (~c & 0x20) c_show |= 1 << (c & 0x1f); // 0x20 means lowercase means hidden      if (scoreboard[c|0xe0u]) badchar++;       // duplicates not allowed      scoreboard[c|0xe0u]++;      tmp = strchr(old,c);      if (!tmp) continue;      c = *((tmp-old)+std);      if (c == '.') continue;      if (scoreboard[c&0x1fu]) badchar++;       // duplicates not allowed      scoreboard[c&0x1fu]++;      rc->win[0].fieldscur[u++] = c;   }   rc->win[0].fieldscur[u++] = '\0';   if (u < 21) return -6;  // catch junk, not good files (had 23 chars in one)   if (u > 33) return -7;  // catch junk, not good files (had 29 chars in one)// fprintf(stderr, "badchar: %d\n", badchar); sleep(2);   if (badchar > 8) return -8;          // too much junk   if (!c_show) return -9;              // nothing was shown   // rest of file is optional, but better look right if it exists   if (!*cp) return 12;   if (*cp < '2' || *cp > '9') return -13; // stupid, and why isn't '1' valid?   rc->delay_time = *cp - '0';   memset(scoreboard, '\0', sizeof(scoreboard));   for (;;) {      int c = *++cp & 0xffu;    // protect scoreboard[] from negative char      if (!c) return -14;       // not OK to hit EOL w/o '\n'      if (c == '\n') break;      switch (c) {         case ' ':         case '.':         case '0' ... '9':            return -15;                 // not supposed to have digits here//       case 's':                      // mostly for global rcfile//          rc->mode_secure = 1;//          break;         case 'S':            rc->win[0].winflags |= Show_CTIMES;            break;         case 'c':            rc->win[0].winflags |= Show_CMDLIN;            break;         case 'i':            rc->win[0].winflags &= ~Show_IDLEPS;            break;         case 'H':                      // 'H' = show threads (yea, sure)            //rc->win[0].winflags |= ;            break;         case 'm':            rc->win[0].winflags &= ~View_MEMORY;            break;         case 'l':            rc->win[0].winflags &= ~View_LOADAV;            break;         case 't':            rc->win[0].winflags &= ~View_STATES;            break;         case 'I':            rc->mode_irixps = 0;            break;         case 'M':            c = 0; // for scoreboard            rc->win[0].sortindx = P_MEM;            break;         case 'P':            c = 0; // for scoreboard            rc->win[0].sortindx = P_CPU;            break;         case 'A':                      // supposed to be start_time            c = 0; // for scoreboard            rc->win[0].sortindx = P_PID;            break;         case 'T':            c = 0; // for scoreboard            rc->win[0].sortindx = P_TM2;            break;         case 'N':            c = 0; // for scoreboard            rc->win[0].sortindx = P_PID;            break;         default:            // just ignore it, except for the scoreboard of course            break;      }      if (scoreboard[c]) return -16;    // duplicates not allowed      scoreboard[c] = 1;   }   return 17;}