Mercurial > molko
annotate libcore/core/script.c @ 121:789b23e01f52
misc: reorganize hierarchy, closes #2490
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 05 Oct 2020 13:25:06 +0200 |
parents | src/core/script.c@b49d8475a611 |
children | 30b68089ae70 |
rev | line source |
---|---|
65
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * script.c -- convenient sequence of actions |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr> |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <assert.h> |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #include <stdlib.h> |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 #include <string.h> |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 #include "script.h" |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 #include "util.h" |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 static void |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 script_action_finish(struct action *a) |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 { |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 assert(a); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 script_finish(a->data); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 free(a->data); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 } |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 static void |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 script_action_handle(struct action *a, const union event *ev) |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 { |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 assert(a); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 assert(ev); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 script_handle(a->data, ev); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 } |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 static bool |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 script_action_update(struct action *a, unsigned int ticks) |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 { |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 assert(a); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 return script_update(a->data, ticks); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 } |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 static void |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 script_action_draw(struct action *a) |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 { |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 assert(a); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 script_draw(a->data); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 } |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 void |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 script_init(struct script *s) |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 { |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 assert(s); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 memset(s, 0, sizeof (struct script)); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 s->tail = &s->head; |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 } |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 void |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 script_start(struct script *s) |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 { |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 assert(s); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 s->iter = s->head; |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 } |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 void |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 script_append(struct script *s, const struct action *a) |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 { |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 assert(s); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 assert(a); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 assert(a->update); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 struct script_action *iter = ecalloc(1, sizeof (struct script_action)); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 memcpy(&iter->action, a, sizeof (struct action)); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 *s->tail = iter; |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 s->tail = &iter->next; |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 } |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 void |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 script_handle(struct script *s, const union event *ev) |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 { |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 assert(s); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 assert(ev); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 |
73
b49d8475a611
molko: avoid double painter_present call
David Demelier <markand@malikania.fr>
parents:
69
diff
changeset
|
97 if (s->iter && s->iter->action.handle) |
65
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 s->iter->action.handle(&s->iter->action, ev); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 } |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 bool |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 script_update(struct script *s, unsigned int ticks) |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 { |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 assert(s); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 |
69
5da49274e5fb
core: add new action.end callback for user
David Demelier <markand@malikania.fr>
parents:
65
diff
changeset
|
106 if (!s->iter) |
5da49274e5fb
core: add new action.end callback for user
David Demelier <markand@malikania.fr>
parents:
65
diff
changeset
|
107 return true; |
5da49274e5fb
core: add new action.end callback for user
David Demelier <markand@malikania.fr>
parents:
65
diff
changeset
|
108 |
5da49274e5fb
core: add new action.end callback for user
David Demelier <markand@malikania.fr>
parents:
65
diff
changeset
|
109 struct action *a = &s->iter->action; |
5da49274e5fb
core: add new action.end callback for user
David Demelier <markand@malikania.fr>
parents:
65
diff
changeset
|
110 |
5da49274e5fb
core: add new action.end callback for user
David Demelier <markand@malikania.fr>
parents:
65
diff
changeset
|
111 if (a->update(a, ticks)) { |
5da49274e5fb
core: add new action.end callback for user
David Demelier <markand@malikania.fr>
parents:
65
diff
changeset
|
112 if (a->end) |
5da49274e5fb
core: add new action.end callback for user
David Demelier <markand@malikania.fr>
parents:
65
diff
changeset
|
113 a->end(a); |
5da49274e5fb
core: add new action.end callback for user
David Demelier <markand@malikania.fr>
parents:
65
diff
changeset
|
114 if (a->finish) |
5da49274e5fb
core: add new action.end callback for user
David Demelier <markand@malikania.fr>
parents:
65
diff
changeset
|
115 a->finish(a); |
65
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 s->iter = s->iter->next; |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 } |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
119 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 return s->iter == NULL; |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
121 } |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
123 void |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 script_draw(struct script *s) |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
125 { |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 assert(s); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
127 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
128 if (s->iter && s->iter->action.draw) |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
129 s->iter->action.draw(&s->iter->action); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
130 } |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 void |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
133 script_action(const struct script *s, struct action *action) |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
134 { |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
135 assert(s); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
136 assert(action); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
137 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
138 memset(action, 0, sizeof (struct action)); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
139 action->data = ememdup(s, sizeof (struct script)); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
140 action->handle = script_action_handle; |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
141 action->update = script_action_update; |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 action->draw = script_action_draw; |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
143 action->finish = script_action_finish; |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
144 } |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
145 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
146 void |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
147 script_finish(struct script *s) |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
148 { |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
149 assert(s); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
150 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
151 struct script_action *iter, *next; |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
152 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
153 for (iter = s->head; iter; iter = next) { |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
154 next = iter->next; |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
155 free(iter); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
156 } |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
157 |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
158 memset(s, 0, sizeof (struct script)); |
80a913d25aa9
core: implement script, closes #2465 @2h
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
159 } |