efl

Форк
0
/
ef_data_dirs.c 
339 строк · 8.0 Кб
1
#ifdef HAVE_CONFIG_H
2
# include <config.h>
3
#endif
4

5
#include <stdlib.h>
6
#include <stdio.h>
7
#include <string.h>
8

9
#ifdef _WIN32
10
# include <evil_private.h> /* setenv unsetenv */
11
#endif
12

13
#include <Ecore_File.h>
14
#include <Efreet.h>
15

16
int
17
ef_cb_efreet_data_home(void)
18
{
19
   const char *tmp;
20
   int ret = 1;
21

22
   efreet_shutdown();
23
   setenv("XDG_DATA_HOME", "/var/tmp", 1);
24
   efreet_init();
25

26
   tmp = efreet_data_home_get();
27
   if (strcmp(tmp, "/var/tmp"))
28
     {
29
        printf("efreet_data_home_get() returned incorrect "
30
               "value (%s) on XDG_DATA_HOME=/var/tmp\n", tmp);
31
        ret = 0;
32
     }
33

34
   /* reset efreet here so we can set a new home dir */
35
   efreet_shutdown();
36
   unsetenv("XDG_DATA_HOME");
37
   setenv("HOME", "/home/tmp", 1);
38
   efreet_init();
39

40
   tmp = efreet_data_home_get();
41
   if (strcmp(tmp, "/home/tmp/.local/share"))
42
     {
43
        printf("efreet_data_home_get() returned incorrect "
44
               "value (%s) on blank XDG_DATA_HOME\n", tmp);
45
        ret = 0;
46
     }
47

48
   /* reset efreet here so we can set a new home dir */
49
   efreet_shutdown();
50
   unsetenv("XDG_DATA_HOME");
51
   unsetenv("HOME");
52
#ifdef _WIN32
53
   unsetenv("USERPROFILE");
54
#endif
55
   efreet_init();
56

57
   tmp = efreet_data_home_get();
58
   if (strcmp(tmp, "/tmp/.local/share"))
59
     {
60
        printf("efreet_data_home_get() returned incorrect "
61
               "value (%s) on blank XDG_DATA_HOME and blank HOME\n", tmp);
62
        ret = 0;
63
     }
64

65
   return ret;
66
}
67

68
int
69
ef_cb_efreet_config_home(void)
70
{
71
   const char *tmp;
72
   int ret = 1;
73

74
   efreet_shutdown();
75
   setenv("XDG_CONFIG_HOME", "/var/tmp", 1);
76
   efreet_init();
77

78
   tmp = efreet_config_home_get();
79
   if (strcmp(tmp, "/var/tmp"))
80
     {
81
        printf("efreet_config_home_get() returned incorrect "
82
               "value (%s) on XDG_CONFIG_HOME=/var/tmp\n", tmp);
83
        ret = 0;
84
     }
85

86
   /* reset efreet here so we can set a new home dir */
87
   efreet_shutdown();
88
   unsetenv("XDG_CONFIG_HOME");
89
   setenv("HOME", "/home/tmp", 1);
90
   efreet_init();
91

92
   tmp = efreet_config_home_get();
93
   if (strcmp(tmp, "/home/tmp/.config"))
94
     {
95
        printf("efreet_config_home_get() returned incorrect "
96
               "value (%s) on blank XDG_CONFIG_HOME\n", tmp);
97
        ret = 0;
98
     }
99

100
   /* reset efreet here so we can set a new home dir */
101
   efreet_shutdown();
102
   unsetenv("XDG_CONFIG_HOME");
103
   unsetenv("HOME");
104
#ifdef _WIN32
105
   unsetenv("USERPROFILE");
106
#endif
107
   efreet_init();
108

109
   tmp = efreet_config_home_get();
110
   if (strcmp(tmp, "/tmp/.config"))
111
     {
112
        printf("efreet_config_home_get() returned incorrect "
113
               "value (%s) on blank XDG_CONFIG_HOME and blank HOME\n", tmp);
114
        ret = 0;
115
     }
116

117
   return ret;
118
}
119

120
int
121
ef_cb_efreet_cache_home(void)
122
{
123
   const char *tmp;
124
   int ret = 1;
125

126
   efreet_shutdown();
127
   setenv("XDG_CACHE_HOME", "/var/tmp", 1);
128
   efreet_init();
129

130
   tmp = efreet_cache_home_get();
131
   if (strcmp(tmp, "/var/tmp"))
132
     {
133
        printf("efreet_cache_home_get() returned incorrect "
134
               "value (%s) on XDG_CACHE_HOME=/var/tmp\n", tmp);
135
        ret = 0;
136
     }
137

138
   /* reset efreet here so we can set a new home dir */
139
   efreet_shutdown();
140
   unsetenv("XDG_CACHE_HOME");
141
   setenv("HOME", "/home/tmp", 1);
142
   efreet_init();
143

144
   tmp = efreet_cache_home_get();
145
   if (strcmp(tmp, "/home/tmp/.cache"))
146
     {
147
        printf("efreet_cache_home_get() returned incorrect "
148
               "value (%s) on blank XDG_CACHE_HOME\n", tmp);
149
        ret = 0;
150
     }
151

152
   /* reset efreet here so we can set a new home dir */
153
   efreet_shutdown();
154
   unsetenv("XDG_CACHE_HOME");
155
   unsetenv("HOME");
156
#ifdef _WIN32
157
   unsetenv("USERPROFILE");
158
#endif
159
   efreet_init();
160

161
   tmp = efreet_cache_home_get();
162
   if (strcmp(tmp, "/tmp/.cache"))
163
     {
164
        printf("efreet_cache_home_get() returned incorrect "
165
               "value (%s) on blank XDG_CACHE_HOME and blank HOME\n", tmp);
166
        ret = 0;
167
     }
168

169
   return ret;
170
}
171

172
int
173
ef_cb_efreet_data_dirs(void)
174
{
175
   Eina_List *tmp, *l;
176
   int ret = 1;
177
   unsigned int i;
178
   unsigned int ok;
179
   char dirs[128], *val;
180
   char *vals[] = {"/var/tmp/a", "/tmp/b", "/usr/local/share", "/etc", NULL};
181
   char *def_vals[] = {DATA_DIR, "/usr/share", "/usr/local/share", NULL};
182

183
   dirs[0] = '\0';
184
   for (i = 0; vals[i]; i++)
185
     {
186
        if (i > 0) strcat(dirs, ":");
187
        strcat(dirs, vals[i]);
188
     }
189

190
   efreet_shutdown();
191
   setenv("XDG_DATA_DIRS", dirs, 1);
192
   efreet_init();
193

194
   ok = 0;
195
   tmp = efreet_data_dirs_get();
196
   for (i = 0; vals[i]; i++)
197
     {
198
        char *found;
199

200
        found = eina_list_search_unsorted(tmp, EINA_COMPARE_CB(strcmp), vals[i]);
201
        if (!ecore_file_exists(vals[i]) && found)
202
          {
203
             printf("efreet_data_dirs_get() includes non-existing dir (%s) when "
204
                    "%s set\n", vals[i], dirs);
205
             ret = 0;
206
             continue;
207
          }
208
        if (ecore_file_exists(vals[i]) && !found)
209
          {
210
             printf("efreet_data_dirs_get() is missing dir (%s) when "
211
                    "%s set\n", vals[i], dirs);
212
             ret = 0;
213
             continue;
214
          }
215
        if (ecore_file_exists(vals[i]) && found)
216
          ok++;
217
     }
218
   if (eina_list_count(tmp) != ok)
219
     {
220
        printf("efreet_data_dirs_get() returned more values then it "
221
               "should have given %s as input\n", dirs);
222
        ret = 0;
223
     }
224

225
   efreet_shutdown();
226
   unsetenv("XDG_DATA_DIRS");
227
   efreet_init();
228

229
   i = 0;
230
   tmp = efreet_data_dirs_get();
231
   if (eina_list_count(tmp) != 3)
232
     {
233
        printf("efreet_data_dirs_get() nodes is differnet from expected default\n");
234
        ret = 0;
235
     }
236

237
   EINA_LIST_FOREACH(tmp, l, val)
238
     {
239
        if (!def_vals[i])
240
          {
241
             printf("efreet_data_dirs_get() returned more values then it "
242
                    "should have given %s as input\n", dirs);
243
             ret = 0;
244
             break;
245
          }
246

247
        if (strcmp(val, def_vals[i]))
248
          {
249
             printf("efreet_data_dirs_get() returned incorrect value (%s) when "
250
                    "XDG_DATA_DIRS= is set %s\n", val, def_vals[i]);
251
             ret = 0;
252
          }
253

254
        i++;
255
     }
256
   return ret;
257
}
258

259
int
260
ef_cb_efreet_config_dirs(void)
261
{
262
   Eina_List *tmp, *l;
263
   int ret = 1;
264
   unsigned int i;
265
   unsigned int ok;
266
   char dirs[128], *val;
267
   char *vals[] = {"/var/tmp/a", "/tmp/b", "/usr/local/share", "/etc", NULL};
268
   char *def_vals[] = {"/etc/xdg", NULL};
269

270
   dirs[0] = '\0';
271

272
   for (i = 0; vals[i]; i++)
273
     {
274
        if (i > 0) strcat(dirs, ":");
275
        strcat(dirs, vals[i]);
276
     }
277

278
   efreet_shutdown();
279
   setenv("XDG_CONFIG_DIRS", dirs, 1);
280
   efreet_init();
281

282
   ok = 0;
283
   tmp = efreet_config_dirs_get();
284
   for (i = 0; vals[i]; i++)
285
     {
286
        char *found;
287

288
        found = eina_list_search_unsorted(tmp, EINA_COMPARE_CB(strcmp), vals[i]);
289
        if (!ecore_file_exists(vals[i]) && found)
290
          {
291
             printf("efreet_data_dirs_get() includes non-existing dir (%s) when "
292
                    "%s set\n", vals[i], dirs);
293
             ret = 0;
294
             continue;
295
          }
296
        if (ecore_file_exists(vals[i]) && !found)
297
          {
298
             printf("efreet_data_dirs_get() is missing dir (%s) when "
299
                    "%s set\n", vals[i], dirs);
300
             ret = 0;
301
             continue;
302
          }
303
        if (ecore_file_exists(vals[i]) && found)
304
          ok++;
305
     }
306
   if (eina_list_count(tmp) != ok)
307
     {
308
        printf("efreet_data_dirs_get() returned more values then it "
309
               "should have given %s as input\n", dirs);
310
        ret = 0;
311
     }
312

313
   efreet_shutdown();
314
   unsetenv("XDG_CONFIG_DIRS");
315
   efreet_init();
316

317
   i = 0;
318
   tmp = efreet_config_dirs_get();
319
   EINA_LIST_FOREACH(tmp, l, val)
320
     {
321
        if (!def_vals[i])
322
          {
323
             printf("efreet_config_dirs_get() returned more values then it "
324
                    "should have given %s as input\n", dirs);
325
             ret = 0;
326
             break;
327
          }
328

329
        if (strcmp(val, def_vals[i]))
330
          {
331
             printf("efreet_config_dirs_get() returned incorrect value (%s) when "
332
                    "XDG_CONFIG_DIRS= is set\n", val);
333
             ret = 0;
334
          }
335

336
        i++;
337
     }
338
   return ret;
339
}
340

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.