annotate liboctave/oct-rl-hist.c @ 5100:5a92c3177fc6 before-gnuplot-split

[project @ 2004-12-27 17:20:38 by jwe]
author jwe
date Mon, 27 Dec 2004 17:20:38 +0000
parents 7b957b442818
children 4c8a2e4e0717
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>
4587
7b957b442818 [project @ 2003-11-10 15:50:39 by jwe]
jwe
parents: 3598
diff changeset
31 #include <string.h>
3519
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
32
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
33 #include <readline/history.h>
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
34
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
35 void
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
36 octave_add_history (const char *line)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
37 {
3520
b153b9fa7f1a [project @ 2000-02-02 06:04:27 by jwe]
jwe
parents: 3519
diff changeset
38 add_history (line);
3519
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
41 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
42 octave_where_history (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
43 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
44 return where_history ();
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
47 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
48 octave_history_length (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
49 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
50 return history_length;
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
53 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
54 octave_max_input_history (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
55 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
56 return max_input_history;
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
59 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
60 octave_history_base (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
61 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
62 return history_base;
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
65 void
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
66 octave_stifle_history (int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
67 {
3520
b153b9fa7f1a [project @ 2000-02-02 06:04:27 by jwe]
jwe
parents: 3519
diff changeset
68 stifle_history (n);
3519
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
71 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
72 octave_unstifle_history (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
73 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
74 return unstifle_history ();
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
77 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
78 octave_history_is_stifled (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
79 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
80 return history_is_stifled ();
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
83 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
84 octave_history_set_pos (int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
85 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
86 return history_set_pos (n);
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
89 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
90 octave_read_history (const char *f)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
91 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
92 return read_history (f);
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
95 void
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
96 octave_using_history (void)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
97 {
3520
b153b9fa7f1a [project @ 2000-02-02 06:04:27 by jwe]
jwe
parents: 3519
diff changeset
98 using_history ();
3519
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
101 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
102 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
103 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
104 return read_history_range (f, b, e);
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
107 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
108 octave_write_history (const char *f)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
109 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
110 return write_history (f);
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
113 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
114 octave_append_history (int n, const char *f)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
115 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
116 return append_history (n, f);
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
119 int
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
120 octave_history_truncate_file (const char *f, int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
121 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
122 return history_truncate_file (f, n);
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
125 void
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
126 octave_remove_history (int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
127 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
128 HIST_ENTRY *discard = remove_history (n);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
129
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
130 if (discard)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
131 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
132 if (discard->line)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
133 free (discard->line);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
134
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
135 free (discard);
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
139 char *
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
140 octave_history_goto_mark (int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
141 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
142 HIST_ENTRY *h;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
143
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
144 char *retval = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
145
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
146 if (history_set_pos (n))
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
147 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
148 h = current_history ();
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
149
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
150 if (h)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
151 retval = h->line;
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
154 return retval;
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
157 char *
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
158 octave_history_get (int n)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
159 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
160 char *retval = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
161
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
162 HIST_ENTRY *h = history_get (n);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
163
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
164 if (h)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
165 retval = h->line;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
166
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
167 return retval;
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
170 char **
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
171 octave_history_list (int limit, int number_lines)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
172 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
173 static char **retval = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
174
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
175 HIST_ENTRY **hlist = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
176
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
177 if (retval)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
178 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
179 char **p = retval;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
180
3598
0ae310231c46 [project @ 2000-02-19 08:07:08 by jwe]
jwe
parents: 3541
diff changeset
181 while (*p)
0ae310231c46 [project @ 2000-02-19 08:07:08 by jwe]
jwe
parents: 3541
diff changeset
182 free (*p++);
3519
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
183
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
184 free (retval);
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 retval = 0;
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
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
189 hlist = history_list ();
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 if (hlist)
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 int i, k;
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 beg = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
196 int end = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
197 while (hlist[end])
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
198 end++;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
199
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
200 beg = (limit < 0 || end < limit) ? 0 : (end - limit);
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 retval = malloc ((end - beg + 1) * sizeof (char **));
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 k = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
205 for (i = beg; i < end; i++)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
206 {
3524
ee1eea24f078 [project @ 2000-02-02 10:31:05 by jwe]
jwe
parents: 3520
diff changeset
207 char *line = hlist[i]->line;
ee1eea24f078 [project @ 2000-02-02 10:31:05 by jwe]
jwe
parents: 3520
diff changeset
208 int len = line ? strlen (line) : 0;
ee1eea24f078 [project @ 2000-02-02 10:31:05 by jwe]
jwe
parents: 3520
diff changeset
209 char *tmp = malloc (len + 64);
3519
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
210
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
211 if (number_lines)
3524
ee1eea24f078 [project @ 2000-02-02 10:31:05 by jwe]
jwe
parents: 3520
diff changeset
212 sprintf (tmp, "%5d%c%s", i + history_base,
3541
9a91ef403952 [project @ 2000-02-02 20:02:08 by jwe]
jwe
parents: 3524
diff changeset
213 hlist[i]->data ? '*' : ' ',
3524
ee1eea24f078 [project @ 2000-02-02 10:31:05 by jwe]
jwe
parents: 3520
diff changeset
214 line ? line : "");
3598
0ae310231c46 [project @ 2000-02-19 08:07:08 by jwe]
jwe
parents: 3541
diff changeset
215 else
0ae310231c46 [project @ 2000-02-19 08:07:08 by jwe]
jwe
parents: 3541
diff changeset
216 sprintf (tmp, "%c%s", hlist[i]->data ? '*' : ' ',
0ae310231c46 [project @ 2000-02-19 08:07:08 by jwe]
jwe
parents: 3541
diff changeset
217 line ? line : "");
3519
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
218
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
219 retval[k++] = tmp;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
220 }
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 retval[k] = 0;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
223 }
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 return retval;
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
226 }
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 void
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
229 octave_replace_history_entry (int which, const char *line)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
230 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
231 HIST_ENTRY *discard = replace_history_entry (which, line, 0);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
232
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
233 if (discard)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
234 {
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
235 if (discard->line)
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
236 free (discard->line);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
237
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
238 free (discard);
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
239 }
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 #endif
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
243
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 ;;; Local Variables: ***
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
246 ;;; mode: C++ ***
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
247 ;;; End: ***
957d7d6ab0e0 [project @ 2000-02-02 06:00:09 by jwe]
jwe
parents:
diff changeset
248 */