OpenCoverage

undo.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/bash/src/lib/readline/undo.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9-
10-
11-
12-
13-
14-
15-
16-
17-
18extern void _hs_replace_history_data (int, histdata_t *, histdata_t *);-
19-
20-
21-
22int _rl_doing_an_undo = 0;-
23-
24-
25int _rl_undo_group_level = 0;-
26-
27-
28UNDO_LIST *rl_undo_list = (UNDO_LIST *)-
29 ((void *)0)-
30 ;-
31-
32-
33-
34-
35-
36-
37-
38static UNDO_LIST *-
39alloc_undo_entry (enum undo_code what, int start, int end, char *text)-
40{-
41 UNDO_LIST *temp;-
42-
43 temp = (UNDO_LIST *)xmalloc (sizeof (UNDO_LIST));-
44 temp->what = what;-
45 temp->start = start;-
46 temp->end = end;-
47 temp->text = text;-
48-
49 temp->next = (UNDO_LIST *)-
50 ((void *)0)-
51 ;-
52 return
never executed: return temp;
temp;
never executed: return temp;
0
53}-
54-
55-
56-
57void-
58rl_add_undo (enum undo_code what, int start, int end, char *text)-
59{-
60 UNDO_LIST *temp;-
61-
62 temp = alloc_undo_entry (what, start, end, text);-
63 temp->next = rl_undo_list;-
64 rl_undo_list = temp;-
65}
never executed: end of block
0
66-
67-
68void-
69_rl_free_undo_list (UNDO_LIST *ul)-
70{-
71 UNDO_LIST *release;-
72-
73 while (ul
ulDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
74 {-
75 release = ul;-
76 ul = ul->next;-
77-
78 if (release->what == UNDO_DELETE
release->what == UNDO_DELETEDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
79 xfree (release->text);
never executed: xfree (release->text);
0
80-
81 xfree (release);-
82 }
never executed: end of block
0
83}
never executed: end of block
0
84-
85-
86void-
87rl_free_undo_list (void)-
88{-
89 UNDO_LIST *release, *orig_list;-
90-
91 orig_list = rl_undo_list;-
92 _rl_free_undo_list (rl_undo_list);-
93 rl_undo_list = (UNDO_LIST *)-
94 ((void *)0)-
95 ;-
96 _hs_replace_history_data (-1, (histdata_t *)orig_list, (histdata_t *)-
97 ((void *)0)-
98 );-
99}
never executed: end of block
0
100-
101UNDO_LIST *-
102_rl_copy_undo_entry (UNDO_LIST *entry)-
103{-
104 UNDO_LIST *new;-
105-
106 new = alloc_undo_entry (entry->what, entry->start, entry->end, (char *)-
107 ((void *)0)-
108 );-
109 new->text = entry->text
entry->textDescription
TRUEnever evaluated
FALSEnever evaluated
? strcpy ((char *)xmalloc (1 + strlen (entry->text)), (entry->text)) : 0;
0
110 return
never executed: return new;
new;
never executed: return new;
0
111}-
112-
113UNDO_LIST *-
114_rl_copy_undo_list (UNDO_LIST *head)-
115{-
116 UNDO_LIST *list, *new, *roving, *c;-
117-
118 if (head == 0
head == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
119 return
never executed: return head;
head;
never executed: return head;
0
120-
121 list = head;-
122 new = 0;-
123 while (list
listDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
124 {-
125 c = _rl_copy_undo_entry (list);-
126 if (new
new == 0Description
TRUEnever evaluated
FALSEnever evaluated
== 0
new == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
127 roving = new = c;
never executed: roving = new = c;
0
128 else-
129 {-
130 roving->next = c;-
131 roving = roving->next;-
132 }
never executed: end of block
0
133 list = list->next;-
134 }
never executed: end of block
0
135-
136 roving->next = 0;-
137 return
never executed: return new;
new;
never executed: return new;
0
138}-
139-
140-
141-
142int-
143rl_do_undo (void)-
144{-
145 UNDO_LIST *release;-
146 int waiting_for_begin, start, end;-
147 HIST_ENTRY *cur, *temp;-
148-
149-
150-
151 start = end = waiting_for_begin = 0;-
152 do-
153 {-
154 if (rl_undo_list == 0
rl_undo_list == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
155 return
never executed: return (0);
(0);
never executed: return (0);
0
156-
157 _rl_doing_an_undo = 1;-
158 (rl_readline_state |= (0x0010000));-
159-
160-
161-
162 if (rl_undo_list->what == UNDO_DELETE
rl_undo_list->...== UNDO_DELETEDescription
TRUEnever evaluated
FALSEnever evaluated
|| rl_undo_list->what == UNDO_INSERT
rl_undo_list->...== UNDO_INSERTDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
163 {-
164 start = ((
(rl_undo_list->start) == -1Description
TRUEnever evaluated
FALSEnever evaluated
rl_undo_list->start) == -1
(rl_undo_list->start) == -1Description
TRUEnever evaluated
FALSEnever evaluated
? rl_point : ((
(rl_undo_list->start) == -2Description
TRUEnever evaluated
FALSEnever evaluated
rl_undo_list->start) == -2
(rl_undo_list->start) == -2Description
TRUEnever evaluated
FALSEnever evaluated
? rl_end : (rl_undo_list->start)));
0
165 end = ((
(rl_undo_list->end) == -1Description
TRUEnever evaluated
FALSEnever evaluated
rl_undo_list->end) == -1
(rl_undo_list->end) == -1Description
TRUEnever evaluated
FALSEnever evaluated
? rl_point : ((
(rl_undo_list->end) == -2Description
TRUEnever evaluated
FALSEnever evaluated
rl_undo_list->end) == -2
(rl_undo_list->end) == -2Description
TRUEnever evaluated
FALSEnever evaluated
? rl_end : (rl_undo_list->end)));
0
166 }
never executed: end of block
0
167-
168 switch (rl_undo_list->what)-
169 {-
170-
171 case
never executed: case UNDO_DELETE:
UNDO_DELETE:
never executed: case UNDO_DELETE:
0
172 rl_point = start;-
173 rl_insert_text (rl_undo_list->text);-
174 xfree (rl_undo_list->text);-
175 break;
never executed: break;
0
176-
177-
178 case
never executed: case UNDO_INSERT:
UNDO_INSERT:
never executed: case UNDO_INSERT:
0
179 rl_delete_text (start, end);-
180 rl_point = start;-
181 break;
never executed: break;
0
182-
183-
184 case
never executed: case UNDO_END:
UNDO_END:
never executed: case UNDO_END:
0
185 waiting_for_begin++;-
186 break;
never executed: break;
0
187-
188-
189 case
never executed: case UNDO_BEGIN:
UNDO_BEGIN:
never executed: case UNDO_BEGIN:
0
190 if (waiting_for_begin
waiting_for_beginDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
191 waiting_for_begin--;
never executed: waiting_for_begin--;
0
192 else-
193 rl_ding ();
never executed: rl_ding ();
0
194 break;
never executed: break;
0
195 }-
196-
197 _rl_doing_an_undo = 0;-
198 (rl_readline_state &= ~(0x0010000));-
199-
200 release = rl_undo_list;-
201 rl_undo_list = rl_undo_list->next;-
202-
203-
204-
205 cur = current_history ();-
206 if (cur
curDescription
TRUEnever evaluated
FALSEnever evaluated
&& cur->data
cur->dataDescription
TRUEnever evaluated
FALSEnever evaluated
&& (
(UNDO_LIST *)c...ata == releaseDescription
TRUEnever evaluated
FALSEnever evaluated
UNDO_LIST *)cur->data == release
(UNDO_LIST *)c...ata == releaseDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
207 {-
208 temp = replace_history_entry (where_history (), rl_line_buffer, (histdata_t)rl_undo_list);-
209 xfree (temp->line);-
210 if (temp->timestamp
temp->timestampDescription
TRUEnever evaluated
FALSEnever evaluated
) free (temp->timestamp);
never executed: free (temp->timestamp);
0
211 xfree (temp);-
212 }
never executed: end of block
0
213-
214 _hs_replace_history_data (-1, (histdata_t *)release, (histdata_t *)rl_undo_list);-
215-
216 xfree (release);-
217 }
never executed: end of block
0
218 while (waiting_for_begin
waiting_for_beginDescription
TRUEnever evaluated
FALSEnever evaluated
);
0
219-
220 return
never executed: return (1);
(1);
never executed: return (1);
0
221}-
222-
223-
224int-
225_rl_fix_last_undo_of_type (int type, int start, int end)-
226{-
227 UNDO_LIST *rl;-
228-
229 for (rl = rl_undo_list; rl
rlDescription
TRUEnever evaluated
FALSEnever evaluated
; rl = rl->next)
0
230 {-
231 if (rl->what == type
rl->what == typeDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
232 {-
233 rl->start = start;-
234 rl->end = end;-
235 return
never executed: return 0;
0;
never executed: return 0;
0
236 }-
237 }
never executed: end of block
0
238 return
never executed: return 1;
1;
never executed: return 1;
0
239}-
240-
241-
242int-
243rl_begin_undo_group (void)-
244{-
245 rl_add_undo (UNDO_BEGIN, 0, 0, 0);-
246 _rl_undo_group_level++;-
247 return
never executed: return 0;
0;
never executed: return 0;
0
248}-
249-
250-
251int-
252rl_end_undo_group (void)-
253{-
254 rl_add_undo (UNDO_END, 0, 0, 0);-
255 _rl_undo_group_level--;-
256 return
never executed: return 0;
0;
never executed: return 0;
0
257}-
258-
259-
260int-
261rl_modifying (int start, int end)-
262{-
263 if (start > end
start > endDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
264 {-
265 do { int t; t = start; start = end; end = t; } while (0);-
266 }
never executed: end of block
0
267-
268 if (start != end
start != endDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
269 {-
270 char *temp = rl_copy_text (start, end);-
271 rl_begin_undo_group ();-
272 rl_add_undo (UNDO_DELETE, start, end, temp);-
273 rl_add_undo (UNDO_INSERT, start, end, (char *)-
274 ((void *)0)-
275 );-
276 rl_end_undo_group ();-
277 }
never executed: end of block
0
278 return
never executed: return 0;
0;
never executed: return 0;
0
279}-
280-
281-
282int-
283rl_revert_line (int count, int key)-
284{-
285 if (rl_undo_list == 0
rl_undo_list == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
286 rl_ding ();
never executed: rl_ding ();
0
287 else-
288 {-
289 while (rl_undo_list
rl_undo_listDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
290 rl_do_undo ();
never executed: rl_do_undo ();
0
291-
292 if (rl_editing_mode == 0
rl_editing_mode == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
293 rl_point = rl_mark = 0;
never executed: rl_point = rl_mark = 0;
0
294-
295 }
never executed: end of block
0
296-
297 return
never executed: return 0;
0;
never executed: return 0;
0
298}-
299-
300-
301int-
302rl_undo_command (int count, int key)-
303{-
304 if (count < 0
count < 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
305 return
never executed: return 0;
0;
never executed: return 0;
0
306-
307 while (count
countDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
308 {-
309 if (rl_do_undo ()
rl_do_undo ()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
310 count--;
never executed: count--;
0
311 else-
312 {-
313 rl_ding ();-
314 break;
never executed: break;
0
315 }-
316 }-
317 return
never executed: return 0;
0;
never executed: return 0;
0
318}-
Switch to Source codePreprocessed file

Generated by Squish Coco 4.1.2