annotate liboctave/oct-rl-hist.c @ 6469:a848b846cb3a ss-2-9-10

[project @ 2007-03-27 18:42:11 by jwe]
author jwe
date Tue, 27 Mar 2007 18:42:11 +0000
parents 4c8a2e4e0717
children 93c65f2a5668
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3519
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
1 /*
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
2
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
3 Copyright (C) 2000 John W. Eaton
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
4
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
6
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
10 later version.
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
11
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
15 for more details.
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
16
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
5307
4c8a2e4e0717 [project @ 2005-04-26 19:24:27 by jwe]
jwe
parents: 4587
diff changeset
19 Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
4c8a2e4e0717 [project @ 2005-04-26 19:24:27 by jwe]
jwe
parents: 4587
diff changeset
20 02110-1301, USA.
3519
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
21
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
22 */
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
23
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
24 #ifdef HAVE_CONFIG_H
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
25 #include <config.h>
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
26 #endif
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
27
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
28 #if defined (USE_READLINE)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
29
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
30 #include <stdio.h>
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
31 #include <stdlib.h>
4587
7b957b442818 [project @ 2003-11-10 15:50:39 by jwe]
jwe
parents: 3598
diff changeset
32 #include <string.h>
3519
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
33
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
34 #include <readline/history.h>
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
35
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
36 void
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
37 octave_add_history (const char *line)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
38 {
3520
b153b9fa7f1a [project @ 2000-02-02 06:04:27 by jwe]
jwe
parents: 3519
diff changeset
39 add_history (line);
3519
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
40 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
41
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
42 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
43 octave_where_history (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
44 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
45 return where_history ();
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
46 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
47
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
48 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
49 octave_history_length (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
50 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
51 return history_length;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
52 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
53
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
54 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
55 octave_max_input_history (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
56 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
57 return max_input_history;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
58 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
59
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
60 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
61 octave_history_base (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
62 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
63 return history_base;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
64 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
65
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
66 void
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
67 octave_stifle_history (int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
68 {
3520
b153b9fa7f1a [project @ 2000-02-02 06:04:27 by jwe]
jwe
parents: 3519
diff changeset
69 stifle_history (n);
3519
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
70 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
71
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
72 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
73 octave_unstifle_history (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
74 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
75 return unstifle_history ();
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
76 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
77
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
78 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
79 octave_history_is_stifled (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
80 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
81 return history_is_stifled ();
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
82 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
83
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
84 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
85 octave_history_set_pos (int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
86 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
87 return history_set_pos (n);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
88 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
89
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
90 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
91 octave_read_history (const char *f)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
92 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
93 return read_history (f);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
94 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
95
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
96 void
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
97 octave_using_history (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
98 {
3520
b153b9fa7f1a [project @ 2000-02-02 06:04:27 by jwe]
jwe
parents: 3519
diff changeset
99 using_history ();
3519
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
100 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
101
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
102 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
103 octave_read_history_range (const char *f, int b, int e)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
104 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
105 return read_history_range (f, b, e);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
106 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
107
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
108 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
109 octave_write_history (const char *f)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
110 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
111 return write_history (f);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
112 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
113
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
114 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
115 octave_append_history (int n, const char *f)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
116 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
117 return append_history (n, f);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
118 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
119
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
120 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
121 octave_history_truncate_file (const char *f, int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
122 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
123 return history_truncate_file (f, n);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
124 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
125
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
126 void
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
127 octave_remove_history (int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
128 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
129 HIST_ENTRY *discard = remove_history (n);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
130
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
131 if (discard)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
132 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
133 if (discard->line)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
134 free (discard->line);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
135
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
136 free (discard);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
137 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
138 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
139
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
140 char *
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
141 octave_history_goto_mark (int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
142 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
143 HIST_ENTRY *h;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
144
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
145 char *retval = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
146
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
147 if (history_set_pos (n))
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
148 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
149 h = current_history ();
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
150
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
151 if (h)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
152 retval = h->line;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
153 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
154
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
155 return retval;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
156 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
157
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
158 char *
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
159 octave_history_get (int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
160 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
161 char *retval = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
162
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
163 HIST_ENTRY *h = history_get (n);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
164
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
165 if (h)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
166 retval = h->line;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
167
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
168 return retval;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
169 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
170
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
171 char **
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
172 octave_history_list (int limit, int number_lines)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
173 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
174 static char **retval = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
175
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
176 HIST_ENTRY **hlist = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
177
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
178 if (retval)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
179 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
180 char **p = retval;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
181
3598
0ae310231c46 [project @ 2000-02-19 08:07:08 by jwe]
jwe
parents: 3541
diff changeset
182 while (*p)
0ae310231c46 [project @ 2000-02-19 08:07:08 by jwe]
jwe
parents: 3541
diff changeset
183 free (*p++);
3519
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
184
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
185 free (retval);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
186
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
187 retval = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
188 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
189
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
190 hlist = history_list ();
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
191
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
192 if (hlist)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
193 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
194 int i, k;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
195
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
196 int beg = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
197 int end = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
198 while (hlist[end])
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
199 end++;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
200
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
201 beg = (limit < 0 || end < limit) ? 0 : (end - limit);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
202
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
203 retval = malloc ((end - beg + 1) * sizeof (char **));
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
204
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
205 k = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
206 for (i = beg; i < end; i++)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
207 {
3524
ee1eea24f078 [project @ 2000-02-02 10:31:05 by jwe]
jwe
parents: 3520
diff changeset
208 char *line = hlist[i]->line;
ee1eea24f078 [project @ 2000-02-02 10:31:05 by jwe]
jwe
parents: 3520
diff changeset
209 int len = line ? strlen (line) : 0;
ee1eea24f078 [project @ 2000-02-02 10:31:05 by jwe]
jwe
parents: 3520
diff changeset
210 char *tmp = malloc (len + 64);
3519
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
211
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
212 if (number_lines)
3524
ee1eea24f078 [project @ 2000-02-02 10:31:05 by jwe]
jwe
parents: 3520
diff changeset
213 sprintf (tmp, "%5d%c%s", i + history_base,
3541
9a91ef403952 [project @ 2000-02-02 20:02:08 by jwe]
jwe
parents: 3524
diff changeset
214 hlist[i]->data ? '*' : ' ',
3524
ee1eea24f078 [project @ 2000-02-02 10:31:05 by jwe]
jwe
parents: 3520
diff changeset
215 line ? line : "");
3598
0ae310231c46 [project @ 2000-02-19 08:07:08 by jwe]
jwe
parents: 3541
diff changeset
216 else
0ae310231c46 [project @ 2000-02-19 08:07:08 by jwe]
jwe
parents: 3541
diff changeset
217 sprintf (tmp, "%c%s", hlist[i]->data ? '*' : ' ',
0ae310231c46 [project @ 2000-02-19 08:07:08 by jwe]
jwe
parents: 3541
diff changeset
218 line ? line : "");
3519
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
219
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
220 retval[k++] = tmp;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
221 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
222
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
223 retval[k] = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
224 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
225
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
226 return retval;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
227 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
228
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
229 void
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
230 octave_replace_history_entry (int which, const char *line)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
231 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
232 HIST_ENTRY *discard = replace_history_entry (which, line, 0);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
233
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
234 if (discard)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
235 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
236 if (discard->line)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
237 free (discard->line);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
238
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
239 free (discard);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
240 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
241 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
242
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
243 #endif
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
244
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
245 /*
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
246 ;;; Local Variables: ***
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
247 ;;; mode: C++ ***
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
248 ;;; End: ***
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
249 */