~ubuntu-branches/debian/sid/ncurses/sid-200908151543

« back to all changes in this revision

Viewing changes to ncurses/base/lib_getstr.c

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Baumann
  • Date: 2008-12-14 21:06:00 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20081214210600-2rdjwvpplgvh3zeb
Tags: 5.7+20081213-1
MergingĀ upstreamĀ versionĀ 5.7+20081213.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/****************************************************************************
2
 
 * Copyright (c) 1998-2000,2002 Free Software Foundation, Inc.              *
 
2
 * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.              *
3
3
 *                                                                          *
4
4
 * Permission is hereby granted, free of charge, to any person obtaining a  *
5
5
 * copy of this software and associated documentation files (the            *
41
41
#include <curses.priv.h>
42
42
#include <term.h>
43
43
 
44
 
MODULE_ID("$Id: lib_getstr.c,v 1.24 2002/09/01 17:31:12 tom Exp $")
 
44
MODULE_ID("$Id: lib_getstr.c,v 1.27 2008/08/16 19:20:04 tom Exp $")
45
45
 
46
46
/*
47
47
 * This wipes out the last character, no matter whether it was a tab, control
75
75
                int maxlen,
76
76
                EVENTLIST_1st(_nc_eventlist * evl))
77
77
{
 
78
    SCREEN *sp = _nc_screen_of(win);
78
79
    TTY buf;
79
80
    bool oldnl, oldecho, oldraw, oldcbreak;
80
81
    char erasec;
90
91
 
91
92
    _nc_get_tty_mode(&buf);
92
93
 
93
 
    oldnl = SP->_nl;
94
 
    oldecho = SP->_echo;
95
 
    oldraw = SP->_raw;
96
 
    oldcbreak = SP->_cbreak;
 
94
    oldnl = sp->_nl;
 
95
    oldecho = sp->_echo;
 
96
    oldraw = sp->_raw;
 
97
    oldcbreak = sp->_cbreak;
97
98
    nl();
98
99
    noecho();
99
100
    noraw();
129
130
        if (ch == KEY_EVENT)
130
131
            break;
131
132
#endif
 
133
#ifdef KEY_RESIZE
 
134
        if (ch == KEY_RESIZE)
 
135
            break;
 
136
#endif
132
137
        if (ch == erasec || ch == KEY_LEFT || ch == KEY_BACKSPACE) {
133
138
            if (str > oldstr) {
134
139
                str = WipeOut(win, y, x, oldstr, str, oldecho);
141
146
                   || (maxlen >= 0 && str - oldstr >= maxlen)) {
142
147
            beep();
143
148
        } else {
144
 
            *str++ = ch;
 
149
            *str++ = (char) ch;
145
150
            if (oldecho == TRUE) {
146
151
                int oldy = win->_cury;
147
152
                if (waddch(win, (chtype) ch) == ERR) {
183
188
    /* Restore with a single I/O call, to fix minor asymmetry between
184
189
     * raw/noraw, etc.
185
190
     */
186
 
    SP->_nl = oldnl;
187
 
    SP->_echo = oldecho;
188
 
    SP->_raw = oldraw;
189
 
    SP->_cbreak = oldcbreak;
 
191
    sp->_nl = oldnl;
 
192
    sp->_echo = oldecho;
 
193
    sp->_raw = oldraw;
 
194
    sp->_cbreak = oldcbreak;
190
195
 
191
196
    _nc_set_tty_mode(&buf);
192
197
 
193
198
    *str = '\0';
194
199
    if (ch == ERR)
195
200
        returnCode(ch);
 
201
 
 
202
    T(("wgetnstr returns %s", _nc_visbuf(oldstr)));
 
203
 
196
204
#ifdef KEY_EVENT
197
205
    if (ch == KEY_EVENT)
198
206
        returnCode(ch);
199
207
#endif
200
 
 
201
 
    T(("wgetnstr returns %s", _nc_visbuf(oldstr)));
 
208
#ifdef KEY_RESIZE
 
209
    if (ch == KEY_RESIZE)
 
210
        returnCode(ch);
 
211
#endif
202
212
 
203
213
    returnCode(OK);
204
214
}