annotate liboctave/oct-rl-hist.c @ 3519:957d7d6ab0e0

[project @ 2000-02-02 06:00:09 by jwe]
author jwe
date Wed, 02 Feb 2000 06:00:59 +0000
parents
children b153b9fa7f1a
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
20
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 #ifdef HAVE_CONFIG_H
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
24 #include <config.h>
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
25 #endif
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
26
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
27 #if defined (USE_READLINE)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
28
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
29 #include <stdio.h>
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
30 #include <stdlib.h>
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
31
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
32 #include <readline/history.h>
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 void
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
35 octave_add_history (const char *line)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
36 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
37 return add_history (line);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
38 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
39
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
40 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
41 octave_where_history (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
42 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
43 return where_history ();
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
46 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
47 octave_history_length (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
48 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
49 return history_length;
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
52 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
53 octave_max_input_history (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
54 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
55 return max_input_history;
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
58 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
59 octave_history_base (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
60 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
61 return history_base;
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
64 void
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
65 octave_stifle_history (int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
66 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
67 return stifle_history (n);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
68 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
69
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
70 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
71 octave_unstifle_history (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
72 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
73 return unstifle_history ();
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
76 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
77 octave_history_is_stifled (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
78 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
79 return history_is_stifled ();
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
82 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
83 octave_history_set_pos (int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
84 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
85 return history_set_pos (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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
88 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
89 octave_read_history (const char *f)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
90 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
91 return read_history (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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
94 void
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
95 octave_using_history (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
96 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
97 return using_history ();
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
98 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
99
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
100 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
101 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
102 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
103 return read_history_range (f, b, 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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
106 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
107 octave_write_history (const char *f)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
108 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
109 return write_history (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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
112 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
113 octave_append_history (int n, const char *f)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
114 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
115 return append_history (n, 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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
118 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
119 octave_history_truncate_file (const char *f, int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
120 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
121 return history_truncate_file (f, 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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
124 void
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
125 octave_remove_history (int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
126 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
127 HIST_ENTRY *discard = remove_history (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 if (discard)
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->line)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
132 free (discard->line);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
133
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
134 free (discard);
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 }
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 char *
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
139 octave_history_goto_mark (int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
140 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
141 HIST_ENTRY *h;
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 char *retval = 0;
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 if (history_set_pos (n))
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 h = current_history ();
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 if (h)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
150 retval = h->line;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
151 }
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
152
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
153 return retval;
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
156 char *
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
157 octave_history_get (int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
158 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
159 char *retval = 0;
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 HIST_ENTRY *h = history_get (n);
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 if (h)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
164 retval = h->line;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
165
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
166 return retval;
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
169 char **
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
170 octave_history_list (int limit, int number_lines)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
171 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
172 static char **retval = 0;
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 HIST_ENTRY **hlist = 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 if (retval)
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 char **p = 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 while (p)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
181 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
182 if (*p)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
183 free (*p++);
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
186 free (retval);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
187
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
188 retval = 0;
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
191 hlist = history_list ();
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
192
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
193 if (hlist)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
194 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
195 int i, k;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
196
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
197 int beg = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
198 int end = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
199 while (hlist[end])
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
200 end++;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
201
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
202 beg = (limit < 0 || end < limit) ? 0 : (end - limit);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
203
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
204 retval = malloc ((end - beg + 1) * sizeof (char **));
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
205
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
206 k = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
207 for (i = beg; i < end; i++)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
208 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
209 char *tmp = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
210 char buf[64];
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)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
213 sprintf (buf, "%5d%c", i + history_base,
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
214 hlist[i]->data ? '*' : ' ');
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
215
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
216 tmp = malloc (strlen (buf) + 1);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
217
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
218 strcpy (tmp, buf);
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 */