Changeset 6480ae14408dabfad215b4f1369579f864f4b558

Show
Ignore:
Timestamp:
03/12/09 20:08:51 (6 years ago)
Author:
Theo Schlossnagle <jesus@omniti.com>
git-committer:
Theo Schlossnagle <jesus@omniti.com> 1236888531 +0000
git-parent:

[7c400ba6b80290ad1c0c8c72b3f437ebcd6bc972]

git-author:
Theo Schlossnagle <jesus@omniti.com> 1236888531 +0000
Message:

fixes #105... it's a hack, but it appears to work... loses invalid sequences, but I think that's the desired outcome... luckily

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/noit_console.c

    r84d6f13 r6480ae1  
    337337      ncct->el = el_init("noitd", ncct->pty_master, NULL, 
    338338                         e->fd, e, e->fd, e); 
    339       el_set(ncct->el, EL_USERDATA, ncct); 
    340       el_set(ncct->el, EL_EDITOR, "emacs"); 
    341       el_set(ncct->el, EL_HIST, history, ncct->hist); 
     339      if(el_set(ncct->el, EL_USERDATA, ncct)) { 
     340        noitL(noit_error, "Cannot set userdata on noitedit session\n"); 
     341        goto socket_error; 
     342      } 
     343      if(el_set(ncct->el, EL_EDITOR, "emacs"))  
     344        noitL(noit_error, "Cannot set emacs mode on console\n"); 
     345      if(el_set(ncct->el, EL_HIST, history, ncct->hist)) 
     346        noitL(noit_error, "Cannot set history on console\n"); 
    342347      if(!noit_hash_retrieve(ac->config, 
    343348                             "line_protocol", strlen("line_protocol"), 
  • src/noitedit/common.c

    r2c4eb5b r6480ae1  
    161161#ifdef notdef                   /* XXX */ 
    162162#define EL      el->el_line 
    163         (void) fprintf(el->el_errlfile
    164             "\nD(b: %x(%s)  c: %x(%s) last: %x(%s) limit: %x(%s)\n", 
     163        (void) el->el_err_printf(el
     164            "\r\nD(b: %x(%s)  c: %x(%s) last: %x(%s) limit: %x(%s)\r\n", 
    165165            EL.buffer, EL.buffer, EL.cursor, EL.cursor, EL.lastchar, 
    166166            EL.lastchar, EL.limit, EL.limit); 
     
    736736        if (el->el_history.eventno < 0) { 
    737737#ifdef DEBUG_EDIT 
    738                 (void) fprintf(el->el_errfile
     738                (void) el->el_err_printf(el
    739739                    "e_prev_search_hist(): eventno < 0;\n"); 
    740740#endif 
     
    762762        while (hp != NULL) { 
    763763#ifdef SDEBUG 
    764                 (void) fprintf(el->el_errfile, "Comparing with \"%s\"\n", hp); 
     764                (void) el->el_err_printf(el, "Comparing with \"%s\"\n", hp); 
    765765#endif 
    766766                if ((strncmp(hp, el->el_line.buffer, (size_t) 
     
    776776 
    777777        if (!found) { 
    778 #ifdef SDEBUG 
     778#ifdef SDEBUG} 
    779779                (void) fprintf(el->el_errfile, "not found\n"); 
    780780#endif 
  • src/noitedit/el.h

    re06b23e r6480ae1  
    136136        char            **el_display;   /* Real screen image = what is there */ 
    137137        char            **el_vdisplay;  /* Virtual screen image = what we see */ 
     138        key_node_t       *el_keystate;  /* last char keystate progression */ 
    138139        el_line_t         el_line;      /* The current line information */ 
    139140        el_state_t        el_state;     /* Current editor state         */ 
  • src/noitedit/key.c

    r2c4eb5b r6480ae1  
    7070#include <string.h> 
    7171#include <stdlib.h> 
     72#include <errno.h> 
    7273 
    7374#include "noitedit/el.h" 
     
    180181key_get(EditLine *el, char *ch, key_value_t *val) 
    181182{ 
    182  
    183         return (node_trav(el, el->el_key.map, ch, val)); 
     183#ifdef DEBUG_KEY 
     184        (void) el->el_err_printf(el, "key_get (%p) [%02x]\r\n", 
     185                                 el->el_keystate, *ch); 
     186#endif 
     187        return (node_trav(el, el->el_keystate ? el->el_keystate : el->el_key.map, ch, val)); 
    184188} 
    185189 
     
    197201        if (key[0] == '\0') { 
    198202                (void) el->el_err_printf(el, 
    199                     "key_add: Null extended-key not allowed.\n"); 
     203                    "key_add: Null extended-key not allowed.\r\n"); 
    200204                return; 
    201205        } 
    202206        if (ntype == XK_CMD && val->cmd == ED_SEQUENCE_LEAD_IN) { 
    203207                (void) el->el_err_printf(el, 
    204                     "key_add: sequence-lead-in command not allowed\n"); 
     208                    "key_add: sequence-lead-in command not allowed\r\n"); 
    205209                return; 
    206210        } 
     
    242246        if (key[0] == '\0') { 
    243247                (void) el->el_err_printf(el, 
    244                     "key_delete: Null extended-key not allowed.\n"); 
     248                    "key_delete: Null extended-key not allowed.\r\n"); 
    245249                return (-1); 
    246250        } 
     
    268272        if (node_lookup(el, key, el->el_key.map, 1) <= -1) 
    269273                /* key is not bound */ 
    270                 (void) el->el_err_printf(el, "Unbound extended key \"%s\"\n", 
     274                (void) el->el_err_printf(el, "Unbound extended key \"%s\"\r\n", 
    271275                    key); 
    272276        return; 
     
    281285node_trav(EditLine *el, key_node_t *ptr, char *ch, key_value_t *val) 
    282286{ 
    283  
     287        el->el_keystate = NULL; 
    284288        if (ptr->ch == *ch) { 
    285289                /* match found */ 
     
    287291                        /* key not complete so get next char */ 
    288292                        if (el_getc(el, ch) != 1) {     /* if EOF or error */ 
     293                                if(errno == EAGAIN) { 
     294                                        el->el_keystate = ptr; 
     295                                        val->cmd = ED_UNASSIGNED; 
     296                                        return (XK_CMD); 
     297                                } 
    289298                                val->cmd = ED_END_OF_FILE; 
    290299                                return (XK_CMD); 
     
    537546                (void) el->el_err_printf(el, 
    538547                    "Some extended keys too long for internal print buffer"); 
    539                 (void) el->el_err_printf(el, " \"%s...\"\n", el->el_key.buf); 
     548                (void) el->el_err_printf(el, " \"%s...\"\r\n", el->el_key.buf); 
    540549                return (0); 
    541550        } 
     
    543552#ifdef DEBUG_EDIT 
    544553                (void) el->el_err_printf(el, 
    545                     "node_enum: BUG!! Null ptr passed\n!"); 
     554                    "node_enum: BUG!! Null ptr passed\r\n!"); 
    546555#endif 
    547556                return (-1); 
  • src/noitedit/read.c

    r04662ba r6480ae1  
    7575 
    7676        if (el->el_line.cursor > el->el_line.lastchar) 
    77                 (void) fprintf(el->el_errfile, "cursor > lastchar\r\n"); 
     77                (void) el->el_err_printf(el, "cursor > lastchar\r\n"); 
    7878        if (el->el_line.cursor < el->el_line.buffer) 
    79                 (void) fprintf(el->el_errfile, "cursor < buffer\r\n"); 
     79                (void) el->el_err_printf(el, "cursor < buffer\r\n"); 
    8080        if (el->el_line.cursor > el->el_line.limit) 
    81                 (void) fprintf(el->el_errfile, "cursor > limit\r\n"); 
     81                (void) el->el_err_printf(el, "cursor > limit\r\n"); 
    8282        if (el->el_line.lastchar > el->el_line.limit) 
    83                 (void) fprintf(el->el_errfile, "lastchar > limit\r\n"); 
     83                (void) el->el_err_printf(el, "lastchar > limit\r\n"); 
    8484        if (el->el_line.limit != &el->el_line.buffer[EL_BUFSIZ - 2]) 
    85                 (void) fprintf(el->el_errfile, "limit != &buffer[EL_BUFSIZ-2]\r\n"); 
     85                (void) el->el_err_printf(el, "limit != &buffer[EL_BUFSIZ-2]\r\n"); 
    8686} 
    8787#endif /* DEBUG_EDIT */ 
     
    364364 
    365365#ifdef DEBUG_READ 
    366         (void) fprintf(el->el_errfile, "Turning raw mode on\n"); 
     366        (void) el->el_err_printf(el, "Turning raw mode on\r\n"); 
    367367#endif /* DEBUG_READ */ 
    368368        if (tty_rawmode(el) < 0)/* make sure the tty is set up correctly */ 
     
    370370 
    371371#ifdef DEBUG_READ 
    372         (void) fprintf(el->el_errfile, "Reading a character\n"); 
     372        (void) el->el_err_printf(el, "Reading a character\r\n"); 
    373373#endif /* DEBUG_READ */ 
    374374        num_read = read_char(el, cp); 
    375375#ifdef DEBUG_READ 
    376         (void) fprintf(el->el_errfile, "Got it [%02x]\n", (unsigned char)*cp); 
     376        (void) el->el_err_printf(el, "Got it(%d) [%02x]\r\n", 
     377                                 (int)num_read, (unsigned char)*cp); 
    377378#endif /* DEBUG_READ */ 
    378379        return (num_read); 
     
    385386        if ((int) cmdnum >= el->el_map.nfunc) { /* BUG CHECK command */ 
    386387#ifdef DEBUG_EDIT 
    387                 (void) fprintf(el->el_errfile
     388                (void) el->el_err_printf(el
    388389                                           "ERROR: illegal command from key 0%o\r\n", ch); 
    389390#endif /* DEBUG_EDIT */ 
     
    398399                                break; 
    399400                if (b->name) 
    400                         (void) fprintf(el->el_errfile
    401                                                    "Executing %s\n", b->name); 
     401                        (void) el->el_err_printf(el
     402                                                   "Executing %s\r\n", b->name); 
    402403                else 
    403                         (void) fprintf(el->el_errfile
    404                                                    "Error command = %d\n", cmdnum); 
     404                        (void) el->el_err_printf(el
     405                                                   "Error command = %d\r\n", cmdnum); 
    405406        } 
    406407#endif /* DEBUG_READ */ 
     
    455456                case CC_FATAL:  /* fatal error, reset to known state */ 
    456457#ifdef DEBUG_READ 
    457                         (void) fprintf(el->el_errfile
    458                                                    "*** editor fatal ERROR ***\r\n\n"); 
     458                        (void) el->el_err_printf(el
     459                                                   "*** editor fatal ERROR ***\r\n\r\n"); 
    459460#endif /* DEBUG_READ */ 
    460461                        /* put (real) cursor in a known place */ 
     
    469470                default:        /* functions we don't know about */ 
    470471#ifdef DEBUG_READ 
    471                         (void) fprintf(el->el_errfile
    472                                                    "*** editor ERROR ***\r\n\n"); 
     472                        (void) el->el_err_printf(el
     473                                                   "*** editor ERROR ***\r\n\r\n"); 
    473474#endif /* DEBUG_READ */ 
    474475                        el->el_state.argument = 1; 
     
    589590                if ((num = read_getcmd(el, &cmdnum, &ch)) != OKCMD) { 
    590591#ifdef DEBUG_READ 
    591                         (void) fprintf(el->el_errfile
    592                             "Returning from el_gets %d\n", num); 
     592                        (void) el->el_err_printf(el
     593                            "Returning from el_gets %d\r\n", num); 
    593594#endif /* DEBUG_READ */ 
    594595                        if(num == EAGAINCMD) { 
  • src/noitedit/term.c

    rd5a973a r6480ae1  
    313313        if (!EL_CAN_UP) { 
    314314                (void) el->el_err_printf(el, 
    315                     "WARNING: Your terminal cannot move up.\n"); 
     315                    "WARNING: Your terminal cannot move up.\r\n"); 
    316316                (void) el->el_err_printf(el, 
    317                     "Editing may be odd for long lines.\n"); 
     317                    "Editing may be odd for long lines.\r\n"); 
    318318        } 
    319319        if (!EL_CAN_CEOL) 
    320                 (void) el->el_err_printf(el, "no clear EOL capability.\n"); 
     320                (void) el->el_err_printf(el, "no clear EOL capability.\r\n"); 
    321321        if (!EL_CAN_DELETE) 
    322                 (void) el->el_err_printf(el, "no delete char capability.\n"); 
     322                (void) el->el_err_printf(el, "no delete char capability.\r\n"); 
    323323        if (!EL_CAN_INSERT) 
    324                 (void) el->el_err_printf(el, "no insert char capability.\n"); 
     324                (void) el->el_err_printf(el, "no insert char capability.\r\n"); 
    325325#endif /* DEBUG_SCREEN */ 
    326326} 
     
    431431        if (el->el_term.t_loc + 3 >= TC_BUFSIZE) { 
    432432                (void) el->el_err_printf(el, 
    433                     "Out of termcap string space.\n"); 
     433                    "Out of termcap string space.\r\n"); 
    434434                return; 
    435435        } 
     
    724724        if (!EL_CAN_DELETE) { 
    725725#ifdef DEBUG_EDIT 
    726                 (void) el->el_err_printf(el, "   ERROR: cannot delete   \n"); 
     726                (void) el->el_err_printf(el, "   ERROR: cannot delete   \r\n"); 
    727727#endif /* DEBUG_EDIT */ 
    728728                return; 
     
    766766        if (!EL_CAN_INSERT) { 
    767767#ifdef DEBUG_EDIT 
    768                 (void) el->el_err_printf(el, "   ERROR: cannot insert   \n"); 
     768                (void) el->el_err_printf(el, "   ERROR: cannot insert   \r\n"); 
    769769#endif /* DEBUG_EDIT */ 
    770770                return; 
     
    926926                if (i == -1) 
    927927                        (void) el->el_err_printf(el, 
    928                             "Cannot read termcap database;\n"); 
     928                            "Cannot read termcap database;\r\n"); 
    929929                else if (i == 0) 
    930930                        (void) el->el_err_printf(el, 
    931                             "No entry for terminal type \"%s\";\n", term); 
     931                            "No entry for terminal type \"%s\";\r\n", term); 
    932932                (void) el->el_err_printf(el, 
    933                     "using dumb terminal settings.\n"); 
     933                    "using dumb terminal settings.\r\n"); 
    934934                Val(T_co) = 80; /* do a dumb terminal */ 
    935935                Val(T_pt) = Val(T_km) = Val(T_li) = 0; 
     
    13581358                        else { 
    13591359                                (void) el->el_err_printf(el, 
    1360                                     "settc: Bad value `%s'.\n", how); 
     1360                                    "settc: Bad value `%s'.\r\n", how); 
    13611361                                return (-1); 
    13621362                        } 
     
    13721372                        if (*ep != '\0') { 
    13731373                                (void) el->el_err_printf(el, 
    1374                                     "settc: Bad value `%s'.\n", how); 
     1374                                    "settc: Bad value `%s'.\r\n", how); 
    13751375                                return (-1); 
    13761376                        } 
     
    14781478                if (!silent) 
    14791479                        (void) el->el_err_printf(el, 
    1480                             "echotc: Termcap parameter `%s' not found.\n", 
     1480                            "echotc: Termcap parameter `%s' not found.\r\n", 
    14811481                            *argv); 
    14821482                return (-1); 
     
    15091509                                if (verbose) 
    15101510                                        (void) el->el_err_printf(el, 
    1511                                 "echotc: Warning: unknown termcap %% `%c'.\n", 
     1511                                "echotc: Warning: unknown termcap %% `%c'.\r\n", 
    15121512                                            *cap); 
    15131513                                /* This is bad, but I won't complain */ 
     
    15211521                        if (!silent) 
    15221522                                (void) el->el_err_printf(el, 
    1523                                     "echotc: Warning: Extra argument `%s'.\n", 
     1523                                    "echotc: Warning: Extra argument `%s'.\r\n", 
    15241524                                    *argv); 
    15251525                        return (-1); 
     
    15321532                        if (!silent) 
    15331533                                (void) el->el_err_printf(el, 
    1534                                     "echotc: Warning: Missing argument.\n"); 
     1534                                    "echotc: Warning: Missing argument.\r\n"); 
    15351535                        return (-1); 
    15361536                } 
     
    15401540                        if (!silent) 
    15411541                                (void) el->el_err_printf(el, 
    1542                                     "echotc: Bad value `%s' for rows.\n", 
     1542                                    "echotc: Bad value `%s' for rows.\r\n", 
    15431543                                    *argv); 
    15441544                        return (-1); 
     
    15491549                        if (!silent) 
    15501550                                (void) el->el_err_printf(el, 
    1551                                     "echotc: Warning: Extra argument `%s'.\n", 
     1551                                    "echotc: Warning: Extra argument `%s'.\r\n", 
    15521552                                    *argv); 
    15531553                        return (-1); 
     
    15591559                if (verbose) 
    15601560                        (void) el->el_err_printf(el, 
    1561                          "echotc: Warning: Too many required arguments (%d).\n", 
     1561                         "echotc: Warning: Too many required arguments (%d).\r\n", 
    15621562                            arg_need); 
    15631563                /* FALLTHROUGH */ 
     
    15741574                        if (!silent) 
    15751575                                (void) el->el_err_printf(el, 
    1576                                     "echotc: Bad value `%s' for cols.\n", 
     1576                                    "echotc: Bad value `%s' for cols.\r\n", 
    15771577                                    *argv); 
    15781578                        return (-1); 
     
    15831583                        if (!silent) 
    15841584                                (void) el->el_err_printf(el, 
    1585                                     "echotc: Warning: Missing argument.\n"); 
     1585                                    "echotc: Warning: Missing argument.\r\n"); 
    15861586                        return (-1); 
    15871587                } 
     
    15901590                        if (!silent) 
    15911591                                (void) el->el_err_printf(el, 
    1592                                     "echotc: Bad value `%s' for rows.\n", 
     1592                                    "echotc: Bad value `%s' for rows.\r\n", 
    15931593                                    *argv); 
    15941594                        return (-1); 
     
    15981598                        if (!silent) 
    15991599                                (void) el->el_err_printf(el, 
    1600                                     "echotc: Bad value `%s'.\n", *argv); 
     1600                                    "echotc: Bad value `%s'.\r\n", *argv); 
    16011601                        return (-1); 
    16021602                } 
     
    16051605                        if (!silent) 
    16061606                                (void) el->el_err_printf(el, 
    1607                                     "echotc: Warning: Extra argument `%s'.\n", 
     1607                                    "echotc: Warning: Extra argument `%s'.\r\n", 
    16081608                                    *argv); 
    16091609                        return (-1); 
  • src/noitedit/tty.c

    r9cd7979 r6480ae1  
    480480#ifdef DEBUG_TTY 
    481481                (void) el->el_err_printf(el, 
    482                     "tty_setup: tty_getty: %s\n", strerror(errno)); 
     482                    "tty_setup: tty_getty: %s\r\n", strerror(errno)); 
    483483#endif /* DEBUG_TTY */ 
    484484                return (-1); 
     
    529529#ifdef DEBUG_TTY 
    530530                        (void) el->el_err_printf(el, 
    531                             "tty_setup: tty_setty: %s\n", 
     531                            "tty_setup: tty_setty: %s\r\n", 
    532532                            strerror(errno)); 
    533533#endif /* DEBUG_TTY */ 
     
    816816        if (tty_getty(el, &el->el_tty.t_ts) == -1) { 
    817817#ifdef DEBUG_TTY 
    818                 (void) el->el_err_printf(el, "tty_rawmode: tty_getty: %s\n", 
     818                (void) el->el_err_printf(el, "tty_rawmode: tty_getty: %s\r\n", 
    819819                    strerror(errno)); 
    820820#endif /* DEBUG_TTY */ 
     
    946946        if (tty_setty(el, &el->el_tty.t_ed) == -1) { 
    947947#ifdef DEBUG_TTY 
    948                 (void) el->el_err_printf(el, "tty_rawmode: tty_setty: %s\n", 
     948                (void) el->el_err_printf(el, "tty_rawmode: tty_setty: %s\r\n", 
    949949                    strerror(errno)); 
    950950#endif /* DEBUG_TTY */ 
     
    972972#ifdef DEBUG_TTY 
    973973                (void) el->el_err_printf(el, 
    974                     "tty_cookedmode: tty_setty: %s\n", 
     974                    "tty_cookedmode: tty_setty: %s\r\n", 
    975975                    strerror(errno)); 
    976976#endif /* DEBUG_TTY */ 
     
    10071007        if (tty_setty(el, &el->el_tty.t_qu) == -1) { 
    10081008#ifdef DEBUG_TTY 
    1009                 (void) el_err_printf(el, "QuoteModeOn: tty_setty: %s\n", 
     1009                (void) el_err_printf(el, "QuoteModeOn: tty_setty: %s\r\n", 
    10101010                    strerror(errno)); 
    10111011#endif /* DEBUG_TTY */ 
     
    10281028        if (tty_setty(el, &el->el_tty.t_ed) == -1) { 
    10291029#ifdef DEBUG_TTY 
    1030                 (void) el->el_err_printf(el, "QuoteModeOff: tty_setty: %s\n", 
     1030                (void) el->el_err_printf(el, "QuoteModeOff: tty_setty: %s\r\n", 
    10311031                    strerror(errno)); 
    10321032#endif /* DEBUG_TTY */ 
     
    10761076                default: 
    10771077                        (void) el->el_err_printf(el, 
    1078                             "%s: Unknown switch `%c'.\n", 
     1078                            "%s: Unknown switch `%c'.\r\n", 
    10791079                            name, argv[0][1]); 
    10801080                        return (-1); 
     
    11371137                if (!m->m_name) { 
    11381138                        (void) el->el_err_printf(el, 
    1139                             "%s: Invalid argument `%s'.\n", name, d); 
     1139                            "%s: Invalid argument `%s'.\r\n", name, d); 
    11401140                        return (-1); 
    11411141                } 
     
    11771177                            m->m_name, s[i] + 'A' - 1); 
    11781178                if (i % 5 == 0) 
    1179                         (void) el->el_err_printf(el, "\n"); 
    1180         } 
    1181         (void) el->el_err_printf(el, "\n"); 
     1179                        (void) el->el_err_printf(el, "\r\n"); 
     1180        } 
     1181        (void) el->el_err_printf(el, "\r\n"); 
    11821182} 
    11831183#endif /* notyet */