forked from yo8192/fcron
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexe_list_test.c
More file actions
157 lines (137 loc) · 3.77 KB
/
Copy pathexe_list_test.c
File metadata and controls
157 lines (137 loc) · 3.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include "exe_list.h"
#include "global.h"
#include "fcron.h"
/* required by log.c */
char debug_opt = 1;
char *prog_name = NULL;
char foreground = 1;
pid_t daemon_pid = 0;
uid_t rootuid = 0;
void
print_cur(exe_t * e)
{
printf("Current entry's shell command: %s\n",
e ? e->e_line->cl_shell : "NULL");
}
void
print_list(exe_list_t * list)
{
exe_t *e = NULL;
printf("Current list:\n");
for (e = exe_list_first(list); e != NULL; e = exe_list_next(list))
printf(" Shell command: %s\n", e ? e->e_line->cl_shell : "NULL");
}
int
main(int argc, char *argv[])
{
exe_list_t *list = NULL;
exe_t *e = NULL;
cl_t l1, l2, l3, l4, l5, l6, l7;
l1.cl_shell = "line 1";
l2.cl_shell = "line 2";
l3.cl_shell = "line 3";
l4.cl_shell = "line 4";
l5.cl_shell = "line 5";
l6.cl_shell = "line 6";
l7.cl_shell = "line 7";
list = exe_list_init();
/* trigger a resize of the list during an iteration */
printf("Adding l1...\n");
exe_list_add_line(list, &l1);
printf("Adding l2...\n");
exe_list_add_line(list, &l2);
printf("Adding l3...\n");
exe_list_add_line(list, &l3);
e = exe_list_first(list);
print_cur(e);
e = exe_list_next(list);
print_cur(e);
printf("Adding l4...\n");
exe_list_add_line(list, &l4);
printf("Adding l5...\n");
exe_list_add_line(list, &l5);
printf("Adding l6...\n");
exe_list_add_line(list, &l6);
printf("Adding l7...\n");
exe_list_add_line(list, &l7);
e = exe_list_next(list);
print_cur(e);
e = exe_list_next(list);
print_cur(e);
e = exe_list_next(list);
print_cur(e);
e = exe_list_next(list);
print_cur(e);
e = exe_list_next(list);
print_cur(e);
e = exe_list_next(list);
print_cur(e);
/* "standard" iteration: */
print_list(list);
/* remove item at the beginning and middle of the list + add an item which is already in there */
printf("removing l1, l3, adding l2\n");
e = exe_list_first(list);
print_cur(e);
printf("Removing l1...\n");
exe_list_remove_cur(list);
e = exe_list_next(list);
print_cur(e); /* this one will be the item replacing l1 */
e = exe_list_next(list);
print_cur(e);
e = exe_list_next(list);
print_cur(e);
printf("Removing l3...\n");
exe_list_remove_cur(list);
exe_list_end_iteration(list);
printf("Adding l2...\n");
exe_list_add_line(list, &l2); /* we suppose the list array won't be reallocated() */
print_list(list);
/* remove an item at the end of the list: */
printf("removing l5, l2\n");
e = exe_list_first(list);
print_cur(e);
e = exe_list_next(list);
print_cur(e);
e = exe_list_next(list);
print_cur(e);
e = exe_list_next(list);
print_cur(e);
e = exe_list_next(list);
print_cur(e);
printf("Removing l5...\n");
exe_list_remove_cur(list);
exe_list_end_iteration(list);
e = exe_list_first(list);
print_cur(e);
e = exe_list_next(list);
print_cur(e);
printf("Removing l2...\n");
exe_list_remove_cur(list);
exe_list_end_iteration(list);
print_list(list);
printf("Adding l1...\n");
exe_list_add_line(list, &l1);
print_list(list);
printf("empty the list\n");
e = exe_list_first(list);
print_cur(e);
exe_list_remove_cur(list);
e = exe_list_next(list);
print_cur(e);
exe_list_remove_cur(list);
e = exe_list_next(list);
print_cur(e);
exe_list_remove_cur(list);
e = exe_list_next(list);
print_cur(e);
exe_list_remove_cur(list);
e = exe_list_next(list);
print_cur(e);
exe_list_remove_cur(list);
e = exe_list_next(list);
print_cur(e);
print_list(list);
printf("Destroying the list...\n");
list = exe_list_destroy(list);
return 0;
}