~ubuntu-branches/ubuntu/raring/vice/raring

« back to all changes in this revision

Viewing changes to src/arch/unix/readline/editline2.c

  • Committer: Bazaar Package Importer
  • Author(s): Laszlo Boszormenyi (GCS)
  • Date: 2009-03-31 00:37:15 UTC
  • mfrom: (1.2.2 upstream)
  • mto: This revision was merged to the branch mainline in revision 17.
  • Revision ID: james.westby@ubuntu.com-20090331003715-mzclchtl0dp7fcl0
Tags: upstream-2.1.dfsg
ImportĀ upstreamĀ versionĀ 2.1.dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
88
88
 *  Removed FORWARD addressing ...
89
89
 */
90
90
 
91
 
STATIC STATUS accept_line();
92
 
STATIC STATUS beg_line();
93
 
STATIC STATUS bk_char();
94
 
STATIC STATUS bk_del_char();
95
 
STATIC STATUS bk_kill_word();
96
 
STATIC STATUS mk_set();
97
 
STATIC STATUS bk_word();
98
 
STATIC STATUS fd_kill_word();
99
 
STATIC STATUS fd_word();
100
 
STATIC STATUS fd_char();
101
 
STATIC STATUS case_down_word();
102
 
STATIC STATUS case_up_word();
103
 
STATIC STATUS copy_region();
104
 
STATIC STATUS del_char();
105
 
STATIC STATUS end_line();
106
 
STATIC STATUS exchange();
107
 
STATIC STATUS kill_line();
108
 
STATIC STATUS last_argument();
109
 
STATIC STATUS c_possible();
110
 
STATIC STATUS c_complete();
111
 
STATIC STATUS meta();
112
 
STATIC STATUS move_to_char();
113
 
STATIC STATUS h_first();
114
 
STATIC STATUS h_last();
115
 
STATIC STATUS h_next();
116
 
STATIC STATUS h_prev();
117
 
STATIC STATUS h_search();
118
 
STATIC STATUS quote();
119
 
STATIC STATUS transpose();
120
 
STATIC STATUS redisplay();
121
 
STATIC STATUS ring_bell();
122
 
STATIC STATUS wipe();
123
 
STATIC STATUS yank();
 
91
STATIC STATUS accept_line(void);
 
92
STATIC STATUS beg_line(void);
 
93
STATIC STATUS bk_char(void);
 
94
STATIC STATUS bk_del_char(void);
 
95
STATIC STATUS bk_kill_word(void);
 
96
STATIC STATUS mk_set(void);
 
97
STATIC STATUS bk_word(void);
 
98
STATIC STATUS fd_kill_word(void);
 
99
STATIC STATUS fd_word(void);
 
100
STATIC STATUS fd_char(void);
 
101
STATIC STATUS case_down_word(void);
 
102
STATIC STATUS case_up_word(void);
 
103
STATIC STATUS copy_region(void);
 
104
STATIC STATUS del_char(void);
 
105
STATIC STATUS end_line(void);
 
106
STATIC STATUS exchange(void);
 
107
STATIC STATUS kill_line(void);
 
108
STATIC STATUS last_argument(void);
 
109
STATIC STATUS c_possible(void);
 
110
STATIC STATUS c_complete(void);
 
111
STATIC STATUS meta(void);
 
112
STATIC STATUS move_to_char(void);
 
113
STATIC STATUS h_first(void);
 
114
STATIC STATUS h_last(void);
 
115
STATIC STATUS h_next(void);
 
116
STATIC STATUS h_prev(void);
 
117
STATIC STATUS h_search(void);
 
118
STATIC STATUS quote(void);
 
119
STATIC STATUS transpose(void);
 
120
STATIC STATUS redisplay(void);
 
121
STATIC STATUS ring_bell(void);
 
122
STATIC STATUS wipe(void);
 
123
STATIC STATUS yank(void);
124
124
 
125
125
 
126
126
STATIC KEYMAP   Map[33] = {
183
183
/*
184
184
**  Declarations.
185
185
*/
186
 
STATIC CHAR     *editinput();
 
186
STATIC CHAR *editinput(void);
 
187
#if 0
187
188
extern int      read();
188
189
extern int      write();
189
190
#if     defined(USE_TERMCAP)
191
192
extern char     *tgetstr();
192
193
extern int      tgetent();
193
194
#endif  /* defined(USE_TERMCAP) */
 
195
#endif
194
196
 
195
197
/*
196
198
**  TTY input/output functions.
197
199
*/
198
200
 
199
 
STATIC void
200
 
TTYflush()
 
201
STATIC void TTYflush(void)
201
202
{
202
203
    if (ScreenCount) {
203
204
        (void)write(1, Screen, ScreenCount);
205
206
    }
206
207
}
207
208
 
208
 
STATIC void
209
 
TTYput(c)
210
 
    CHAR        c;
 
209
STATIC void TTYput(CHAR c)
211
210
{
212
211
    Screen[ScreenCount] = c;
213
212
    if (++ScreenCount >= ScreenSize - 1) {
216
215
    }
217
216
}
218
217
 
219
 
STATIC void
220
 
TTYputs(p)
221
 
    CHAR        *p;
 
218
STATIC void TTYputs(CHAR *p)
222
219
{
223
220
    while (*p)
224
221
        TTYput(*p++);
225
222
}
226
223
 
227
 
STATIC void
228
 
TTYshow(c)
229
 
    CHAR        c;
 
224
STATIC void TTYshow(CHAR c)
230
225
{
231
226
    if (c == DEL) {
232
227
        TTYput('^');
245
240
        TTYput(c);
246
241
}
247
242
 
248
 
STATIC void
249
 
TTYstring(p)
250
 
    CHAR        *p;
 
243
STATIC void TTYstring(CHAR *p)
251
244
{
252
245
    while (*p)
253
246
        TTYshow(*p++);
254
247
}
255
248
 
256
 
STATIC unsigned int
257
 
TTYget()
 
249
STATIC unsigned int TTYget(void)
258
250
{
259
251
    CHAR        c;
260
252
 
270
262
 
271
263
#define TTYback()       (backspace ? TTYputs((CHAR *)backspace) : TTYput('\b'))
272
264
 
273
 
STATIC void
274
 
TTYbackn(n)
275
 
    int         n;
 
265
STATIC void TTYbackn(int n)
276
266
{
277
267
    while (--n >= 0)
278
268
        TTYback();
279
269
}
280
270
 
281
 
STATIC void
282
 
TTYinfo()
 
271
STATIC void TTYinfo(void)
283
272
{
284
273
    static int          init;
285
274
#if     defined(USE_TERMCAP)
335
324
/*
336
325
**  Print an array of words in columns.
337
326
*/
338
 
STATIC void
339
 
columns(ac, av)
340
 
    int         ac;
341
 
    CHAR        **av;
 
327
STATIC void columns(int ac, CHAR **av)
342
328
{
343
329
    CHAR        *p;
344
330
    int         i;
368
354
    }
369
355
}
370
356
 
371
 
STATIC void
372
 
reposition()
 
357
STATIC void reposition(void)
373
358
{
374
359
    int         i;
375
360
    CHAR        *p;
380
365
        TTYshow(*p);
381
366
}
382
367
 
383
 
STATIC void
384
 
left(Change)
385
 
    STATUS      Change;
 
368
STATIC void left(STATUS Change)
386
369
{
387
370
    TTYback();
388
371
    if (Point) {
397
380
        Point--;
398
381
}
399
382
 
400
 
STATIC void
401
 
right(Change)
402
 
    STATUS      Change;
 
383
STATIC void right(STATUS Change)
403
384
{
404
385
    TTYshow(Line[Point]);
405
386
    if (Change == CSmove)
406
387
        Point++;
407
388
}
408
389
 
409
 
STATIC STATUS
410
 
ring_bell()
 
390
STATIC STATUS ring_bell(void)
411
391
{
412
392
    TTYput('\07');
413
393
    TTYflush();
414
394
    return CSstay;
415
395
}
416
396
 
417
 
STATIC STATUS
418
 
do_macro(c)
419
 
    unsigned int        c;
 
397
STATIC STATUS do_macro(unsigned int c)
420
398
{
421
399
    CHAR                name[4];
422
400
 
432
410
    return CSstay;
433
411
}
434
412
 
435
 
STATIC STATUS
436
 
do_forward(move)
437
 
    STATUS      move;
 
413
STATIC STATUS do_forward(STATUS move)
438
414
{
439
415
    int         i;
440
416
    CHAR        *p;
457
433
    return CSstay;
458
434
}
459
435
 
460
 
STATIC STATUS
461
 
do_case(type)
462
 
    CASE        type;
 
436
STATIC STATUS do_case(CASE type)
463
437
{
464
438
    int         i;
465
439
    int         end;
486
460
    return CSstay;
487
461
}
488
462
 
489
 
STATIC STATUS
490
 
case_down_word()
 
463
STATIC STATUS case_down_word(void)
491
464
{
492
465
    return do_case(TOlower);
493
466
}
494
467
 
495
 
STATIC STATUS
496
 
case_up_word()
 
468
STATIC STATUS case_up_word(void)
497
469
{
498
470
    return do_case(TOupper);
499
471
}
500
472
 
501
 
STATIC void
502
 
ceol()
 
473
STATIC void ceol(void)
503
474
{
504
475
    int         extras;
505
476
    int         i;
522
493
        TTYback();
523
494
}
524
495
 
525
 
STATIC void
526
 
clear_line()
 
496
STATIC void clear_line(void)
527
497
{
528
498
    Point = -strlen(Prompt);
529
499
    TTYput('\r');
533
503
    Line[0] = '\0';
534
504
}
535
505
 
536
 
STATIC STATUS
537
 
insert_string(p)
538
 
    CHAR        *p;
 
506
STATIC STATUS insert_string(CHAR *p)
539
507
{
540
508
    SIZE_T      len;
541
509
    int         i;
565
533
    return Point == End ? CSstay : CSmove;
566
534
}
567
535
 
568
 
STATIC CHAR *
569
 
next_hist()
 
536
STATIC CHAR *next_hist(void)
570
537
{
571
538
    return H.Pos >= H.Size - 1 ? NULL : H.Lines[++H.Pos];
572
539
}
573
540
 
574
 
STATIC CHAR *
575
 
prev_hist()
 
541
STATIC CHAR *prev_hist(void)
576
542
{
577
543
    return H.Pos == 0 ? NULL : H.Lines[--H.Pos];
578
544
}
579
545
 
580
 
STATIC STATUS
581
 
do_insert_hist(p)
582
 
    CHAR        *p;
 
546
STATIC STATUS do_insert_hist(CHAR *p)
583
547
{
584
548
    if (p == NULL)
585
549
        return ring_bell();
590
554
    return insert_string(p);
591
555
}
592
556
 
593
 
STATIC STATUS
594
 
do_hist(move)
595
 
    CHAR        *(*move)();
 
557
STATIC STATUS do_hist(CHAR *(*move)(void))
596
558
{
597
559
    CHAR        *p;
598
560
    int         i;
605
567
    return do_insert_hist(p);
606
568
}
607
569
 
608
 
STATIC STATUS
609
 
h_next()
 
570
STATIC STATUS h_next(void)
610
571
{
611
572
    return do_hist(next_hist);
612
573
}
613
574
 
614
 
STATIC STATUS
615
 
h_prev()
 
575
STATIC STATUS h_prev(void)
616
576
{
617
577
    return do_hist(prev_hist);
618
578
}
619
579
 
620
 
STATIC STATUS
621
 
h_first()
 
580
STATIC STATUS h_first(void)
622
581
{
623
582
    return do_insert_hist(H.Lines[H.Pos = 0]);
624
583
}
625
584
 
626
 
STATIC STATUS
627
 
h_last()
 
585
STATIC STATUS h_last(void)
628
586
{
629
587
    return do_insert_hist(H.Lines[H.Pos = H.Size - 1]);
630
588
}
632
590
/*
633
591
**  Return zero if pat appears as a substring in text.
634
592
*/
635
 
STATIC int
636
 
substrcmp(text, pat, len)
637
 
    char        *text;
638
 
    char        *pat;
639
 
    int         len;
 
593
STATIC int substrcmp(char *text, char *pat, int len)
640
594
{
641
595
    CHAR        c;
642
596
 
648
602
    return 1;
649
603
}
650
604
 
651
 
STATIC CHAR *
652
 
search_hist(search, move)
653
 
    CHAR        *search;
654
 
    CHAR        *(*move)();
 
605
STATIC CHAR *search_hist(CHAR *search, CHAR *(*move)(void))
655
606
{
656
607
    static CHAR *old_search;
657
608
    int         len;
658
609
    int         pos;
659
 
    int         (*match)();
 
610
    int         (*match)(char *, char *, int);
660
611
    char        *pat;
661
612
 
662
613
    /* Save or get remembered search pattern. */
689
640
    return NULL;
690
641
}
691
642
 
692
 
STATIC STATUS
693
 
h_search()
 
643
STATIC STATUS h_search(void)
694
644
{
695
645
    static int  Searching;
696
646
    CONST char  *old_prompt;
697
 
    CHAR        *(*move)();
 
647
    CHAR        *(*move)(void);
698
648
    CHAR        *p;
699
649
 
700
650
    if (Searching)
715
665
    return do_insert_hist(p);
716
666
}
717
667
 
718
 
STATIC STATUS
719
 
fd_char()
 
668
STATIC STATUS fd_char(void)
720
669
{
721
670
    int         i;
722
671
 
729
678
    return CSstay;
730
679
}
731
680
 
732
 
STATIC void
733
 
save_yank(begin, i)
734
 
    int         begin;
735
 
    int         i;
 
681
STATIC void save_yank(int begin, int i)
736
682
{
737
683
    if (Yanked) {
738
684
        DISPOSE(Yanked);
748
694
    }
749
695
}
750
696
 
751
 
STATIC STATUS
752
 
delete_string(count)
753
 
    int         count;
 
697
STATIC STATUS delete_string(int count)
754
698
{
755
699
    int         i;
756
700
    CHAR        *p;
791
735
    return CSmove;
792
736
}
793
737
 
794
 
STATIC STATUS
795
 
bk_char()
 
738
STATIC STATUS bk_char(void)
796
739
{
797
740
    int         i;
798
741
 
806
749
    return CSstay;
807
750
}
808
751
 
809
 
STATIC STATUS
810
 
bk_del_char()
 
752
STATIC STATUS bk_del_char(void)
811
753
{
812
754
    int         i;
813
755
 
821
763
    return delete_string(i);
822
764
}
823
765
 
824
 
STATIC STATUS
825
 
redisplay()
 
766
STATIC STATUS redisplay(void)
826
767
{
827
768
    TTYputs((CHAR *)NEWLINE);
828
769
    TTYputs((CHAR *)Prompt);
830
771
    return CSmove;
831
772
}
832
773
 
833
 
STATIC STATUS
834
 
kill_line()
 
774
STATIC STATUS kill_line(void)
835
775
{
836
776
    int         i;
837
777
 
856
796
    return CSstay;
857
797
}
858
798
 
859
 
STATIC STATUS
860
 
insert_char(c)
861
 
    int         c;
 
799
STATIC STATUS insert_char(int c)
862
800
{
863
801
    STATUS      s;
864
802
    CHAR        buff[2];
883
821
    return s;
884
822
}
885
823
 
886
 
STATIC STATUS
887
 
meta()
 
824
STATIC STATUS meta(void)
888
825
{
889
826
    unsigned int        c;
890
827
    KEYMAP              *kp;
921
858
    return ring_bell();
922
859
}
923
860
 
924
 
STATIC STATUS
925
 
emacs(c)
926
 
    unsigned int        c;
 
861
STATIC STATUS emacs(unsigned int c)
927
862
{
928
863
    STATUS              s;
929
864
    KEYMAP              *kp;
943
878
    return s;
944
879
}
945
880
 
946
 
STATIC STATUS
947
 
TTYspecial(c)
948
 
    unsigned int        c;
 
881
STATIC STATUS TTYspecial(unsigned int c)
949
882
{
950
883
    if (ISMETA(c))
951
884
        return CSdispatch;
971
904
    return CSdispatch;
972
905
}
973
906
 
974
 
STATIC CHAR *
975
 
editinput()
 
907
STATIC CHAR *editinput(void)
976
908
{
977
909
    unsigned int        c;
978
910
 
1009
941
    return NULL;
1010
942
}
1011
943
 
1012
 
STATIC void
1013
 
hist_add(p)
1014
 
    CHAR        *p;
 
944
STATIC void hist_add(CHAR *p)
1015
945
{
1016
946
    int         i;
1017
947
 
1032
962
**  For compatibility with FSF readline.
1033
963
*/
1034
964
/* ARGSUSED0 */
1035
 
void
1036
 
rl_reset_terminal(p)
1037
 
    char        *p;
1038
 
{
1039
 
}
1040
 
 
1041
 
void
1042
 
rl_initialize()
1043
 
{
1044
 
}
1045
 
 
1046
 
char *
1047
 
readline(prompt)
1048
 
    CONST char  *prompt;
 
965
void rl_reset_terminal(char *p)
 
966
{
 
967
}
 
968
 
 
969
void rl_initialize(void)
 
970
{
 
971
}
 
972
 
 
973
char *readline(CONST char *prompt)
1049
974
{
1050
975
    CHAR        *line;
1051
976
 
1073
998
    return (char *)line;
1074
999
}
1075
1000
 
1076
 
void
1077
 
add_history(p)
1078
 
    char        *p;
 
1001
void add_history(char *p)
1079
1002
{
1080
1003
    if (p == NULL || *p == '\0')
1081
1004
        return;
1087
1010
    hist_add((CHAR *)p);
1088
1011
}
1089
1012
 
1090
 
STATIC STATUS
1091
 
beg_line()
 
1013
STATIC STATUS beg_line(void)
1092
1014
{
1093
1015
    if (Point) {
1094
1016
        Point = 0;
1097
1019
    return CSstay;
1098
1020
}
1099
1021
 
1100
 
STATIC STATUS
1101
 
del_char()
 
1022
STATIC STATUS del_char(void)
1102
1023
{
1103
1024
    return delete_string(Repeat == NO_ARG ? 1 : Repeat);
1104
1025
}
1105
1026
 
1106
 
STATIC STATUS
1107
 
end_line()
 
1027
STATIC STATUS end_line(void)
1108
1028
{
1109
1029
    if (Point != End) {
1110
1030
        Point = End;
1117
1037
**  Move back to the beginning of the current word and return an
1118
1038
**  allocated copy of it.
1119
1039
*/
1120
 
STATIC CHAR *
1121
 
find_word()
 
1040
STATIC CHAR *find_word(void)
1122
1041
{
1123
1042
    static char SEPS[] = "#;&|^$=`'{}()<>\n\t ";
1124
1043
    CHAR        *p;
1135
1054
    return new;
1136
1055
}
1137
1056
 
1138
 
STATIC STATUS
1139
 
c_complete()
 
1057
STATIC STATUS c_complete(void)
1140
1058
{
1141
1059
    CHAR        *p;
1142
1060
    CHAR        *word;
1157
1075
    return ring_bell();
1158
1076
}
1159
1077
 
1160
 
STATIC STATUS
1161
 
c_possible()
 
1078
STATIC STATUS c_possible(void)
1162
1079
{
1163
1080
    CHAR        **av;
1164
1081
    CHAR        *word;
1178
1095
    return ring_bell();
1179
1096
}
1180
1097
 
1181
 
STATIC STATUS
1182
 
accept_line()
 
1098
STATIC STATUS accept_line(void)
1183
1099
{
1184
1100
    Line[End] = '\0';
1185
1101
    return CSdone;
1186
1102
}
1187
1103
 
1188
 
STATIC STATUS
1189
 
transpose()
 
1104
STATIC STATUS transpose(void)
1190
1105
{
1191
1106
    CHAR        c;
1192
1107
 
1203
1118
    return CSstay;
1204
1119
}
1205
1120
 
1206
 
STATIC STATUS
1207
 
quote()
 
1121
STATIC STATUS quote(void)
1208
1122
{
1209
1123
    unsigned int        c;
1210
1124
 
1211
1125
    return (c = TTYget()) == EOF ? CSeof : insert_char((int)c);
1212
1126
}
1213
1127
 
1214
 
STATIC STATUS
1215
 
wipe()
 
1128
STATIC STATUS wipe(void)
1216
1129
{
1217
1130
    int         i;
1218
1131
 
1229
1142
    return delete_string(Mark - Point);
1230
1143
}
1231
1144
 
1232
 
STATIC STATUS
1233
 
mk_set()
 
1145
STATIC STATUS mk_set(void)
1234
1146
{
1235
1147
    Mark = Point;
1236
1148
    return CSstay;
1237
1149
}
1238
1150
 
1239
 
STATIC STATUS
1240
 
exchange()
 
1151
STATIC STATUS exchange(void)
1241
1152
{
1242
1153
    unsigned int        c;
1243
1154
 
1252
1163
    return CSstay;
1253
1164
}
1254
1165
 
1255
 
STATIC STATUS
1256
 
yank()
 
1166
STATIC STATUS yank(void)
1257
1167
{
1258
1168
    if (Yanked && *Yanked)
1259
1169
        return insert_string(Yanked);
1260
1170
    return CSstay;
1261
1171
}
1262
1172
 
1263
 
STATIC STATUS
1264
 
copy_region()
 
1173
STATIC STATUS copy_region(void)
1265
1174
{
1266
1175
    if (Mark > End)
1267
1176
        return ring_bell();
1274
1183
    return CSstay;
1275
1184
}
1276
1185
 
1277
 
STATIC STATUS
1278
 
move_to_char()
 
1186
STATIC STATUS move_to_char(void)
1279
1187
{
1280
1188
    unsigned int        c;
1281
1189
    int                 i;
1291
1199
    return CSstay;
1292
1200
}
1293
1201
 
1294
 
STATIC STATUS
1295
 
fd_word()
 
1202
STATIC STATUS fd_word(void)
1296
1203
{
1297
1204
    return do_forward(CSmove);
1298
1205
}
1299
1206
 
1300
 
STATIC STATUS
1301
 
fd_kill_word()
 
1207
STATIC STATUS fd_kill_word(void)
1302
1208
{
1303
1209
    int         i;
1304
1210
 
1311
1217
    return CSstay;
1312
1218
}
1313
1219
 
1314
 
STATIC STATUS
1315
 
bk_word()
 
1220
STATIC STATUS bk_word(void)
1316
1221
{
1317
1222
    int         i;
1318
1223
    CHAR        *p;
1332
1237
    return CSstay;
1333
1238
}
1334
1239
 
1335
 
STATIC STATUS
1336
 
bk_kill_word()
 
1240
STATIC STATUS bk_kill_word(void)
1337
1241
{
1338
1242
    (void)bk_word();
1339
1243
    if (OldPoint != Point)
1341
1245
    return CSstay;
1342
1246
}
1343
1247
 
1344
 
STATIC int
1345
 
argify(line, avp)
1346
 
    CHAR        *line;
1347
 
    CHAR        ***avp;
 
1248
STATIC int argify(CHAR *line, CHAR ***avp)
1348
1249
{
1349
1250
    CHAR        *c;
1350
1251
    CHAR        **p;
1387
1288
    return ac;
1388
1289
}
1389
1290
 
1390
 
STATIC STATUS
1391
 
last_argument()
 
1291
STATIC STATUS last_argument(void)
1392
1292
{
1393
1293
    CHAR        **av;
1394
1294
    CHAR        *p;
1412
1312
    DISPOSE(p);
1413
1313
    return s;
1414
1314
}
1415