summaryrefslogtreecommitdiff
path: root/legacy/efreet
diff options
context:
space:
mode:
authorningerso <ningerso>2007-02-03 13:05:30 +0000
committerningerso <ningerso@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>2007-02-03 13:05:30 +0000
commit9e363d07e9f92d5f8fd3ef717e1327268155a5b8 (patch)
tree4b22acade6a48264543f536b7d067329ac97b90e /legacy/efreet
parent5bcce9f86b30b502fa909e3249cf838d2952f9b5 (diff)
Initial import of efreet, an implementation of the freedesktop icon and menu
specs. SVN revision: 28214
Diffstat (limited to 'legacy/efreet')
-rw-r--r--legacy/efreet/AUTHORS4
-rw-r--r--legacy/efreet/COPYING20
-rw-r--r--legacy/efreet/Doxyfile1252
-rw-r--r--legacy/efreet/NOTES48
-rw-r--r--legacy/efreet/TODO20
-rwxr-xr-xlegacy/efreet/autogen.sh16
-rw-r--r--legacy/efreet/configure.in80
-rw-r--r--legacy/efreet/efreet-config.in59
-rw-r--r--legacy/efreet/m4/ac_attribute.m415
-rw-r--r--legacy/efreet/m4/ac_define_dir.m447
-rw-r--r--legacy/efreet/m4/ac_path_generic.m4138
-rw-r--r--legacy/efreet/src/Makefile.am4
-rw-r--r--legacy/efreet/src/bin/Makefile.am25
-rw-r--r--legacy/efreet/src/bin/compare/Makefile.am29
-rw-r--r--legacy/efreet/src/bin/compare/comp.h528
-rw-r--r--legacy/efreet/src/bin/compare/compare_results.c43
-rw-r--r--legacy/efreet/src/bin/compare/ecore_alloc.c29
-rw-r--r--legacy/efreet/src/bin/compare/efreet_alloc.c26
-rw-r--r--legacy/efreet/src/bin/compare/efreet_menu_alloc.c23
-rw-r--r--legacy/efreet/src/bin/ef_data_dirs.c297
-rw-r--r--legacy/efreet/src/bin/ef_desktop.c346
-rw-r--r--legacy/efreet/src/bin/ef_icon_theme.c602
-rw-r--r--legacy/efreet/src/bin/ef_ini.c157
-rw-r--r--legacy/efreet/src/bin/ef_locale.c83
-rw-r--r--legacy/efreet/src/bin/ef_menu.c75
-rw-r--r--legacy/efreet/src/bin/efreet_spec_test.c58
-rw-r--r--legacy/efreet/src/bin/main.c142
-rw-r--r--legacy/efreet/src/lib/Efreet.h44
-rw-r--r--legacy/efreet/src/lib/Makefile.am37
-rw-r--r--legacy/efreet/src/lib/efreet.c191
-rw-r--r--legacy/efreet/src/lib/efreet_base.c212
-rw-r--r--legacy/efreet/src/lib/efreet_base.h31
-rw-r--r--legacy/efreet/src/lib/efreet_desktop.c1469
-rw-r--r--legacy/efreet/src/lib/efreet_desktop.h120
-rw-r--r--legacy/efreet/src/lib/efreet_icon.c1365
-rw-r--r--legacy/efreet/src/lib/efreet_icon.h178
-rw-r--r--legacy/efreet/src/lib/efreet_icon_new.c1464
-rw-r--r--legacy/efreet/src/lib/efreet_ini.c651
-rw-r--r--legacy/efreet/src/lib/efreet_ini.h60
-rw-r--r--legacy/efreet/src/lib/efreet_menu.c3946
-rw-r--r--legacy/efreet/src/lib/efreet_menu.h69
-rw-r--r--legacy/efreet/src/lib/efreet_private.h183
-rw-r--r--legacy/efreet/src/lib/efreet_xml.c579
-rw-r--r--legacy/efreet/src/lib/efreet_xml.h61
44 files changed, 14826 insertions, 0 deletions
diff --git a/legacy/efreet/AUTHORS b/legacy/efreet/AUTHORS
new file mode 100644
index 0000000000..83fd9e4734
--- /dev/null
+++ b/legacy/efreet/AUTHORS
@@ -0,0 +1,4 @@
1dan 'dj2' sinclair
2Brian 'rephorm' Mattern
3Sebastian 'englebass' Dransfeld
4Nathan 'RbdPngn' Ingersoll
diff --git a/legacy/efreet/COPYING b/legacy/efreet/COPYING
new file mode 100644
index 0000000000..376a24a2c7
--- /dev/null
+++ b/legacy/efreet/COPYING
@@ -0,0 +1,20 @@
1Copyright (C) 2006 dan sinclair and various contributors (see AUTHORS)
2
3Permission is hereby granted, free of charge, to any person obtaining a copy
4of this software and associated documentation files (the "Software"), to
5deal in the Software without restriction, including without limitation the
6rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7sell copies of the Software, and to permit persons to whom the Software is
8furnished to do so, subject to the following conditions:
9
10The above copyright notice and this permission notice shall be included in
11all copies of the Software, its documentation and marketing & publicity
12materials, and acknowledgment shall be given in the documentation, materials
13and software packages that this Software was used.
14
15THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/legacy/efreet/Doxyfile b/legacy/efreet/Doxyfile
new file mode 100644
index 0000000000..6905a9ab47
--- /dev/null
+++ b/legacy/efreet/Doxyfile
@@ -0,0 +1,1252 @@
1# Doxyfile 1.4.7
2
3# This file describes the settings to be used by the documentation system
4# doxygen (www.doxygen.org) for a project
5#
6# All text after a hash (#) is considered a comment and will be ignored
7# The format is:
8# TAG = value [value, ...]
9# For lists items can also be appended using:
10# TAG += value [value, ...]
11# Values that contain spaces should be placed between quotes (" ")
12
13#---------------------------------------------------------------------------
14# Project related configuration options
15#---------------------------------------------------------------------------
16
17# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
18# by quotes) that should identify the project.
19
20PROJECT_NAME = Efreet
21
22# The PROJECT_NUMBER tag can be used to enter a project or revision number.
23# This could be handy for archiving the generated documentation or
24# if some version control system is used.
25
26PROJECT_NUMBER = 0.0.3
27
28# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
29# base path where the generated documentation will be put.
30# If a relative path is entered, it will be relative to the location
31# where doxygen was started. If left blank the current directory will be used.
32
33OUTPUT_DIRECTORY = docs
34
35# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
36# 4096 sub-directories (in 2 levels) under the output directory of each output
37# format and will distribute the generated files over these directories.
38# Enabling this option can be useful when feeding doxygen a huge amount of
39# source files, where putting all generated files in the same directory would
40# otherwise cause performance problems for the file system.
41
42CREATE_SUBDIRS = NO
43
44# The OUTPUT_LANGUAGE tag is used to specify the language in which all
45# documentation generated by doxygen is written. Doxygen will use this
46# information to generate all constant output in the proper language.
47# The default language is English, other supported languages are:
48# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
49# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
50# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
51# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
52# Swedish, and Ukrainian.
53
54OUTPUT_LANGUAGE = English
55
56# This tag can be used to specify the encoding used in the generated output.
57# The encoding is not always determined by the language that is chosen,
58# but also whether or not the output is meant for Windows or non-Windows users.
59# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
60# forces the Windows encoding (this is the default for the Windows binary),
61# whereas setting the tag to NO uses a Unix-style encoding (the default for
62# all platforms other than Windows).
63
64USE_WINDOWS_ENCODING = NO
65
66# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
67# include brief member descriptions after the members that are listed in
68# the file and class documentation (similar to JavaDoc).
69# Set to NO to disable this.
70
71BRIEF_MEMBER_DESC = YES
72
73# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
74# the brief description of a member or function before the detailed description.
75# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
76# brief descriptions will be completely suppressed.
77
78REPEAT_BRIEF = YES
79
80# This tag implements a quasi-intelligent brief description abbreviator
81# that is used to form the text in various listings. Each string
82# in this list, if found as the leading text of the brief description, will be
83# stripped from the text and the result after processing the whole list, is
84# used as the annotated text. Otherwise, the brief description is used as-is.
85# If left blank, the following values are used ("$name" is automatically
86# replaced with the name of the entity): "The $name class" "The $name widget"
87# "The $name file" "is" "provides" "specifies" "contains"
88# "represents" "a" "an" "the"
89
90ABBREVIATE_BRIEF =
91
92# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
93# Doxygen will generate a detailed section even if there is only a brief
94# description.
95
96ALWAYS_DETAILED_SEC = YES
97
98# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
99# inherited members of a class in the documentation of that class as if those
100# members were ordinary class members. Constructors, destructors and assignment
101# operators of the base classes will not be shown.
102
103INLINE_INHERITED_MEMB = NO
104
105# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
106# path before files name in the file list and in the header files. If set
107# to NO the shortest path that makes the file name unique will be used.
108
109FULL_PATH_NAMES = YES
110
111# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
112# can be used to strip a user-defined part of the path. Stripping is
113# only done if one of the specified strings matches the left-hand part of
114# the path. The tag can be used to show relative paths in the file list.
115# If left blank the directory from which doxygen is run is used as the
116# path to strip.
117
118STRIP_FROM_PATH =
119
120# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
121# the path mentioned in the documentation of a class, which tells
122# the reader which header file to include in order to use a class.
123# If left blank only the name of the header file containing the class
124# definition is used. Otherwise one should specify the include paths that
125# are normally passed to the compiler using the -I flag.
126
127STRIP_FROM_INC_PATH =
128
129# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
130# (but less readable) file names. This can be useful is your file systems
131# doesn't support long names like on DOS, Mac, or CD-ROM.
132
133SHORT_NAMES = NO
134
135# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
136# will interpret the first line (until the first dot) of a JavaDoc-style
137# comment as the brief description. If set to NO, the JavaDoc
138# comments will behave just like the Qt-style comments (thus requiring an
139# explicit @brief command for a brief description.
140
141JAVADOC_AUTOBRIEF = NO
142
143# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
144# treat a multi-line C++ special comment block (i.e. a block of //! or ///
145# comments) as a brief description. This used to be the default behaviour.
146# The new default is to treat a multi-line C++ comment block as a detailed
147# description. Set this tag to YES if you prefer the old behaviour instead.
148
149MULTILINE_CPP_IS_BRIEF = NO
150
151# If the DETAILS_AT_TOP tag is set to YES then Doxygen
152# will output the detailed description near the top, like JavaDoc.
153# If set to NO, the detailed description appears after the member
154# documentation.
155
156DETAILS_AT_TOP = YES
157
158# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
159# member inherits the documentation from any documented member that it
160# re-implements.
161
162INHERIT_DOCS = YES
163
164# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
165# a new page for each member. If set to NO, the documentation of a member will
166# be part of the file/class/namespace that contains it.
167
168SEPARATE_MEMBER_PAGES = NO
169
170# The TAB_SIZE tag can be used to set the number of spaces in a tab.
171# Doxygen uses this value to replace tabs by spaces in code fragments.
172
173TAB_SIZE = 4
174
175# This tag can be used to specify a number of aliases that acts
176# as commands in the documentation. An alias has the form "name=value".
177# For example adding "sideeffect=\par Side Effects:\n" will allow you to
178# put the command \sideeffect (or @sideeffect) in the documentation, which
179# will result in a user-defined paragraph with heading "Side Effects:".
180# You can put \n's in the value part of an alias to insert newlines.
181
182ALIASES =
183
184# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
185# sources only. Doxygen will then generate output that is more tailored for C.
186# For instance, some of the names that are used will be different. The list
187# of all members will be omitted, etc.
188
189OPTIMIZE_OUTPUT_FOR_C = YES
190
191# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
192# sources only. Doxygen will then generate output that is more tailored for Java.
193# For instance, namespaces will be presented as packages, qualified scopes
194# will look different, etc.
195
196OPTIMIZE_OUTPUT_JAVA = NO
197
198# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
199# include (a tag file for) the STL sources as input, then you should
200# set this tag to YES in order to let doxygen match functions declarations and
201# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
202# func(std::string) {}). This also make the inheritance and collaboration
203# diagrams that involve STL classes more complete and accurate.
204
205BUILTIN_STL_SUPPORT = NO
206
207# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
208# tag is set to YES, then doxygen will reuse the documentation of the first
209# member in the group (if any) for the other members of the group. By default
210# all members of a group must be documented explicitly.
211
212DISTRIBUTE_GROUP_DOC = NO
213
214# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
215# the same type (for instance a group of public functions) to be put as a
216# subgroup of that type (e.g. under the Public Functions section). Set it to
217# NO to prevent subgrouping. Alternatively, this can be done per class using
218# the \nosubgrouping command.
219
220SUBGROUPING = YES
221
222#---------------------------------------------------------------------------
223# Build related configuration options
224#---------------------------------------------------------------------------
225
226# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
227# documentation are documented, even if no documentation was available.
228# Private class members and static file members will be hidden unless
229# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
230
231EXTRACT_ALL = YES
232
233# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
234# will be included in the documentation.
235
236EXTRACT_PRIVATE = NO
237
238# If the EXTRACT_STATIC tag is set to YES all static members of a file
239# will be included in the documentation.
240
241EXTRACT_STATIC = YES
242
243# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
244# defined locally in source files will be included in the documentation.
245# If set to NO only classes defined in header files are included.
246
247EXTRACT_LOCAL_CLASSES = YES
248
249# This flag is only useful for Objective-C code. When set to YES local
250# methods, which are defined in the implementation section but not in
251# the interface are included in the documentation.
252# If set to NO (the default) only methods in the interface are included.
253
254EXTRACT_LOCAL_METHODS = NO
255
256# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
257# undocumented members of documented classes, files or namespaces.
258# If set to NO (the default) these members will be included in the
259# various overviews, but no documentation section is generated.
260# This option has no effect if EXTRACT_ALL is enabled.
261
262HIDE_UNDOC_MEMBERS = NO
263
264# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
265# undocumented classes that are normally visible in the class hierarchy.
266# If set to NO (the default) these classes will be included in the various
267# overviews. This option has no effect if EXTRACT_ALL is enabled.
268
269HIDE_UNDOC_CLASSES = NO
270
271# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
272# friend (class|struct|union) declarations.
273# If set to NO (the default) these declarations will be included in the
274# documentation.
275
276HIDE_FRIEND_COMPOUNDS = NO
277
278# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
279# documentation blocks found inside the body of a function.
280# If set to NO (the default) these blocks will be appended to the
281# function's detailed documentation block.
282
283HIDE_IN_BODY_DOCS = YES
284
285# The INTERNAL_DOCS tag determines if documentation
286# that is typed after a \internal command is included. If the tag is set
287# to NO (the default) then the documentation will be excluded.
288# Set it to YES to include the internal documentation.
289
290INTERNAL_DOCS = YES
291
292# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
293# file names in lower-case letters. If set to YES upper-case letters are also
294# allowed. This is useful if you have classes or files whose names only differ
295# in case and if your file system supports case sensitive file names. Windows
296# and Mac users are advised to set this option to NO.
297
298CASE_SENSE_NAMES = YES
299
300# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
301# will show members with their full class and namespace scopes in the
302# documentation. If set to YES the scope will be hidden.
303
304HIDE_SCOPE_NAMES = NO
305
306# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
307# will put a list of the files that are included by a file in the documentation
308# of that file.
309
310SHOW_INCLUDE_FILES = YES
311
312# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
313# is inserted in the documentation for inline members.
314
315INLINE_INFO = YES
316
317# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
318# will sort the (detailed) documentation of file and class members
319# alphabetically by member name. If set to NO the members will appear in
320# declaration order.
321
322SORT_MEMBER_DOCS = YES
323
324# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
325# brief documentation of file, namespace and class members alphabetically
326# by member name. If set to NO (the default) the members will appear in
327# declaration order.
328
329SORT_BRIEF_DOCS = NO
330
331# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
332# sorted by fully-qualified names, including namespaces. If set to
333# NO (the default), the class list will be sorted only by class name,
334# not including the namespace part.
335# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
336# Note: This option applies only to the class list, not to the
337# alphabetical list.
338
339SORT_BY_SCOPE_NAME = NO
340
341# The GENERATE_TODOLIST tag can be used to enable (YES) or
342# disable (NO) the todo list. This list is created by putting \todo
343# commands in the documentation.
344
345GENERATE_TODOLIST = YES
346
347# The GENERATE_TESTLIST tag can be used to enable (YES) or
348# disable (NO) the test list. This list is created by putting \test
349# commands in the documentation.
350
351GENERATE_TESTLIST = YES
352
353# The GENERATE_BUGLIST tag can be used to enable (YES) or
354# disable (NO) the bug list. This list is created by putting \bug
355# commands in the documentation.
356
357GENERATE_BUGLIST = YES
358
359# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
360# disable (NO) the deprecated list. This list is created by putting
361# \deprecated commands in the documentation.
362
363GENERATE_DEPRECATEDLIST= YES
364
365# The ENABLED_SECTIONS tag can be used to enable conditional
366# documentation sections, marked by \if sectionname ... \endif.
367
368ENABLED_SECTIONS =
369
370# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
371# the initial value of a variable or define consists of for it to appear in
372# the documentation. If the initializer consists of more lines than specified
373# here it will be hidden. Use a value of 0 to hide initializers completely.
374# The appearance of the initializer of individual variables and defines in the
375# documentation can be controlled using \showinitializer or \hideinitializer
376# command in the documentation regardless of this setting.
377
378MAX_INITIALIZER_LINES = 30
379
380# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
381# at the bottom of the documentation of classes and structs. If set to YES the
382# list will mention the files that were used to generate the documentation.
383
384SHOW_USED_FILES = YES
385
386# If the sources in your project are distributed over multiple directories
387# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
388# in the documentation. The default is NO.
389
390SHOW_DIRECTORIES = NO
391
392# The FILE_VERSION_FILTER tag can be used to specify a program or script that
393# doxygen should invoke to get the current version for each file (typically from the
394# version control system). Doxygen will invoke the program by executing (via
395# popen()) the command <command> <input-file>, where <command> is the value of
396# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
397# provided by doxygen. Whatever the program writes to standard output
398# is used as the file version. See the manual for examples.
399
400FILE_VERSION_FILTER =
401
402#---------------------------------------------------------------------------
403# configuration options related to warning and progress messages
404#---------------------------------------------------------------------------
405
406# The QUIET tag can be used to turn on/off the messages that are generated
407# by doxygen. Possible values are YES and NO. If left blank NO is used.
408
409QUIET = NO
410
411# The WARNINGS tag can be used to turn on/off the warning messages that are
412# generated by doxygen. Possible values are YES and NO. If left blank
413# NO is used.
414
415WARNINGS = YES
416
417# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
418# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
419# automatically be disabled.
420
421WARN_IF_UNDOCUMENTED = YES
422
423# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
424# potential errors in the documentation, such as not documenting some
425# parameters in a documented function, or documenting parameters that
426# don't exist or using markup commands wrongly.
427
428WARN_IF_DOC_ERROR = YES
429
430# This WARN_NO_PARAMDOC option can be abled to get warnings for
431# functions that are documented, but have no documentation for their parameters
432# or return value. If set to NO (the default) doxygen will only warn about
433# wrong or incomplete parameter documentation, but not about the absence of
434# documentation.
435
436WARN_NO_PARAMDOC = YES
437
438# The WARN_FORMAT tag determines the format of the warning messages that
439# doxygen can produce. The string should contain the $file, $line, and $text
440# tags, which will be replaced by the file and line number from which the
441# warning originated and the warning text. Optionally the format may contain
442# $version, which will be replaced by the version of the file (if it could
443# be obtained via FILE_VERSION_FILTER)
444
445WARN_FORMAT = "$file:$line: $text"
446
447# The WARN_LOGFILE tag can be used to specify a file to which warning
448# and error messages should be written. If left blank the output is written
449# to stderr.
450
451WARN_LOGFILE = efreet_doxy_warnings.txt
452
453#---------------------------------------------------------------------------
454# configuration options related to the input files
455#---------------------------------------------------------------------------
456
457# The INPUT tag can be used to specify the files and/or directories that contain
458# documented source files. You may enter file names like "myfile.cpp" or
459# directories like "/usr/src/myproject". Separate the files or directories
460# with spaces.
461
462INPUT = src/lib
463
464# If the value of the INPUT tag contains directories, you can use the
465# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
466# and *.h) to filter out the source-files in the directories. If left
467# blank the following patterns are tested:
468# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
469# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
470
471FILE_PATTERNS =
472
473# The RECURSIVE tag can be used to turn specify whether or not subdirectories
474# should be searched for input files as well. Possible values are YES and NO.
475# If left blank NO is used.
476
477RECURSIVE = NO
478
479# The EXCLUDE tag can be used to specify files and/or directories that should
480# excluded from the INPUT source files. This way you can easily exclude a
481# subdirectory from a directory tree whose root is specified with the INPUT tag.
482
483EXCLUDE =
484
485# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
486# directories that are symbolic links (a Unix filesystem feature) are excluded
487# from the input.
488
489EXCLUDE_SYMLINKS = NO
490
491# If the value of the INPUT tag contains directories, you can use the
492# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
493# certain files from those directories. Note that the wildcards are matched
494# against the file with absolute path, so to exclude all test directories
495# for example use the pattern */test/*
496
497EXCLUDE_PATTERNS =
498
499# The EXAMPLE_PATH tag can be used to specify one or more files or
500# directories that contain example code fragments that are included (see
501# the \include command).
502
503EXAMPLE_PATH =
504
505# If the value of the EXAMPLE_PATH tag contains directories, you can use the
506# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
507# and *.h) to filter out the source-files in the directories. If left
508# blank all files are included.
509
510EXAMPLE_PATTERNS =
511
512# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
513# searched for input files to be used with the \include or \dontinclude
514# commands irrespective of the value of the RECURSIVE tag.
515# Possible values are YES and NO. If left blank NO is used.
516
517EXAMPLE_RECURSIVE = NO
518
519# The IMAGE_PATH tag can be used to specify one or more files or
520# directories that contain image that are included in the documentation (see
521# the \image command).
522
523IMAGE_PATH =
524
525# The INPUT_FILTER tag can be used to specify a program that doxygen should
526# invoke to filter for each input file. Doxygen will invoke the filter program
527# by executing (via popen()) the command <filter> <input-file>, where <filter>
528# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
529# input file. Doxygen will then use the output that the filter program writes
530# to standard output. If FILTER_PATTERNS is specified, this tag will be
531# ignored.
532
533INPUT_FILTER =
534
535# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
536# basis. Doxygen will compare the file name with each pattern and apply the
537# filter if there is a match. The filters are a list of the form:
538# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
539# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
540# is applied to all files.
541
542FILTER_PATTERNS =
543
544# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
545# INPUT_FILTER) will be used to filter the input files when producing source
546# files to browse (i.e. when SOURCE_BROWSER is set to YES).
547
548FILTER_SOURCE_FILES = NO
549
550#---------------------------------------------------------------------------
551# configuration options related to source browsing
552#---------------------------------------------------------------------------
553
554# If the SOURCE_BROWSER tag is set to YES then a list of source files will
555# be generated. Documented entities will be cross-referenced with these sources.
556# Note: To get rid of all source code in the generated output, make sure also
557# VERBATIM_HEADERS is set to NO.
558
559SOURCE_BROWSER = YES
560
561# Setting the INLINE_SOURCES tag to YES will include the body
562# of functions and classes directly in the documentation.
563
564INLINE_SOURCES = NO
565
566# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
567# doxygen to hide any special comment blocks from generated source code
568# fragments. Normal C and C++ comments will always remain visible.
569
570STRIP_CODE_COMMENTS = YES
571
572# If the REFERENCED_BY_RELATION tag is set to YES (the default)
573# then for each documented function all documented
574# functions referencing it will be listed.
575
576REFERENCED_BY_RELATION = YES
577
578# If the REFERENCES_RELATION tag is set to YES (the default)
579# then for each documented function all documented entities
580# called/used by that function will be listed.
581
582REFERENCES_RELATION = YES
583
584# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
585# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
586# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
587# link to the source code. Otherwise they will link to the documentstion.
588
589REFERENCES_LINK_SOURCE = YES
590
591# If the USE_HTAGS tag is set to YES then the references to source code
592# will point to the HTML generated by the htags(1) tool instead of doxygen
593# built-in source browser. The htags tool is part of GNU's global source
594# tagging system (see http://www.gnu.org/software/global/global.html). You
595# will need version 4.8.6 or higher.
596
597USE_HTAGS = NO
598
599# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
600# will generate a verbatim copy of the header file for each class for
601# which an include is specified. Set to NO to disable this.
602
603VERBATIM_HEADERS = YES
604
605#---------------------------------------------------------------------------
606# configuration options related to the alphabetical class index
607#---------------------------------------------------------------------------
608
609# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
610# of all compounds will be generated. Enable this if the project
611# contains a lot of classes, structs, unions or interfaces.
612
613ALPHABETICAL_INDEX = YES
614
615# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
616# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
617# in which this list will be split (can be a number in the range [1..20])
618
619COLS_IN_ALPHA_INDEX = 5
620
621# In case all classes in a project start with a common prefix, all
622# classes will be put under the same header in the alphabetical index.
623# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
624# should be ignored while generating the index headers.
625
626IGNORE_PREFIX = efreet_ Efreet_
627
628#---------------------------------------------------------------------------
629# configuration options related to the HTML output
630#---------------------------------------------------------------------------
631
632# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
633# generate HTML output.
634
635GENERATE_HTML = YES
636
637# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
638# If a relative path is entered the value of OUTPUT_DIRECTORY will be
639# put in front of it. If left blank `html' will be used as the default path.
640
641HTML_OUTPUT = html
642
643# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
644# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
645# doxygen will generate files with .html extension.
646
647HTML_FILE_EXTENSION = .html
648
649# The HTML_HEADER tag can be used to specify a personal HTML header for
650# each generated HTML page. If it is left blank doxygen will generate a
651# standard header.
652
653HTML_HEADER =
654
655# The HTML_FOOTER tag can be used to specify a personal HTML footer for
656# each generated HTML page. If it is left blank doxygen will generate a
657# standard footer.
658
659HTML_FOOTER =
660
661# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
662# style sheet that is used by each HTML page. It can be used to
663# fine-tune the look of the HTML output. If the tag is left blank doxygen
664# will generate a default style sheet. Note that doxygen will try to copy
665# the style sheet file to the HTML output directory, so don't put your own
666# stylesheet in the HTML output directory as well, or it will be erased!
667
668HTML_STYLESHEET =
669
670# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
671# files or namespaces will be aligned in HTML using tables. If set to
672# NO a bullet list will be used.
673
674HTML_ALIGN_MEMBERS = YES
675
676# If the GENERATE_HTMLHELP tag is set to YES, additional index files
677# will be generated that can be used as input for tools like the
678# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
679# of the generated HTML documentation.
680
681GENERATE_HTMLHELP = NO
682
683# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
684# be used to specify the file name of the resulting .chm file. You
685# can add a path in front of the file if the result should not be
686# written to the html output directory.
687
688CHM_FILE =
689
690# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
691# be used to specify the location (absolute path including file name) of
692# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
693# the HTML help compiler on the generated index.hhp.
694
695HHC_LOCATION =
696
697# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
698# controls if a separate .chi index file is generated (YES) or that
699# it should be included in the master .chm file (NO).
700
701GENERATE_CHI = NO
702
703# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
704# controls whether a binary table of contents is generated (YES) or a
705# normal table of contents (NO) in the .chm file.
706
707BINARY_TOC = NO
708
709# The TOC_EXPAND flag can be set to YES to add extra items for group members
710# to the contents of the HTML help documentation and to the tree view.
711
712TOC_EXPAND = NO
713
714# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
715# top of each HTML page. The value NO (the default) enables the index and
716# the value YES disables it.
717
718DISABLE_INDEX = NO
719
720# This tag can be used to set the number of enum values (range [1..20])
721# that doxygen will group on one line in the generated HTML documentation.
722
723ENUM_VALUES_PER_LINE = 4
724
725# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
726# generated containing a tree-like index structure (just like the one that
727# is generated for HTML Help). For this to work a browser that supports
728# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
729# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
730# probably better off using the HTML help feature.
731
732GENERATE_TREEVIEW = NO
733
734# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
735# used to set the initial width (in pixels) of the frame in which the tree
736# is shown.
737
738TREEVIEW_WIDTH = 250
739
740#---------------------------------------------------------------------------
741# configuration options related to the LaTeX output
742#---------------------------------------------------------------------------
743
744# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
745# generate Latex output.
746
747GENERATE_LATEX = YES
748
749# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
750# If a relative path is entered the value of OUTPUT_DIRECTORY will be
751# put in front of it. If left blank `latex' will be used as the default path.
752
753LATEX_OUTPUT = latex
754
755# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
756# invoked. If left blank `latex' will be used as the default command name.
757
758LATEX_CMD_NAME = latex
759
760# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
761# generate index for LaTeX. If left blank `makeindex' will be used as the
762# default command name.
763
764MAKEINDEX_CMD_NAME = makeindex
765
766# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
767# LaTeX documents. This may be useful for small projects and may help to
768# save some trees in general.
769
770COMPACT_LATEX = NO
771
772# The PAPER_TYPE tag can be used to set the paper type that is used
773# by the printer. Possible values are: a4, a4wide, letter, legal and
774# executive. If left blank a4wide will be used.
775
776PAPER_TYPE = a4wide
777
778# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
779# packages that should be included in the LaTeX output.
780
781EXTRA_PACKAGES =
782
783# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
784# the generated latex document. The header should contain everything until
785# the first chapter. If it is left blank doxygen will generate a
786# standard header. Notice: only use this tag if you know what you are doing!
787
788LATEX_HEADER =
789
790# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
791# is prepared for conversion to pdf (using ps2pdf). The pdf file will
792# contain links (just like the HTML output) instead of page references
793# This makes the output suitable for online browsing using a pdf viewer.
794
795PDF_HYPERLINKS = YES
796
797# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
798# plain latex in the generated Makefile. Set this option to YES to get a
799# higher quality PDF documentation.
800
801USE_PDFLATEX = YES
802
803# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
804# command to the generated LaTeX files. This will instruct LaTeX to keep
805# running if errors occur, instead of asking the user for help.
806# This option is also used when generating formulas in HTML.
807
808LATEX_BATCHMODE = NO
809
810# If LATEX_HIDE_INDICES is set to YES then doxygen will not
811# include the index chapters (such as File Index, Compound Index, etc.)
812# in the output.
813
814LATEX_HIDE_INDICES = NO
815
816#---------------------------------------------------------------------------
817# configuration options related to the RTF output
818#---------------------------------------------------------------------------
819
820# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
821# The RTF output is optimized for Word 97 and may not look very pretty with
822# other RTF readers or editors.
823
824GENERATE_RTF = NO
825
826# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
827# If a relative path is entered the value of OUTPUT_DIRECTORY will be
828# put in front of it. If left blank `rtf' will be used as the default path.
829
830RTF_OUTPUT = rtf
831
832# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
833# RTF documents. This may be useful for small projects and may help to
834# save some trees in general.
835
836COMPACT_RTF = NO
837
838# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
839# will contain hyperlink fields. The RTF file will
840# contain links (just like the HTML output) instead of page references.
841# This makes the output suitable for online browsing using WORD or other
842# programs which support those fields.
843# Note: wordpad (write) and others do not support links.
844
845RTF_HYPERLINKS = NO
846
847# Load stylesheet definitions from file. Syntax is similar to doxygen's
848# config file, i.e. a series of assignments. You only have to provide
849# replacements, missing definitions are set to their default value.
850
851RTF_STYLESHEET_FILE =
852
853# Set optional variables used in the generation of an rtf document.
854# Syntax is similar to doxygen's config file.
855
856RTF_EXTENSIONS_FILE =
857
858#---------------------------------------------------------------------------
859# configuration options related to the man page output
860#---------------------------------------------------------------------------
861
862# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
863# generate man pages
864
865GENERATE_MAN = NO
866
867# The MAN_OUTPUT tag is used to specify where the man pages will be put.
868# If a relative path is entered the value of OUTPUT_DIRECTORY will be
869# put in front of it. If left blank `man' will be used as the default path.
870
871MAN_OUTPUT = man
872
873# The MAN_EXTENSION tag determines the extension that is added to
874# the generated man pages (default is the subroutine's section .3)
875
876MAN_EXTENSION = .3
877
878# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
879# then it will generate one additional man file for each entity
880# documented in the real man page(s). These additional files
881# only source the real man page, but without them the man command
882# would be unable to find the correct page. The default is NO.
883
884MAN_LINKS = NO
885
886#---------------------------------------------------------------------------
887# configuration options related to the XML output
888#---------------------------------------------------------------------------
889
890# If the GENERATE_XML tag is set to YES Doxygen will
891# generate an XML file that captures the structure of
892# the code including all documentation.
893
894GENERATE_XML = NO
895
896# The XML_OUTPUT tag is used to specify where the XML pages will be put.
897# If a relative path is entered the value of OUTPUT_DIRECTORY will be
898# put in front of it. If left blank `xml' will be used as the default path.
899
900XML_OUTPUT = xml
901
902# The XML_SCHEMA tag can be used to specify an XML schema,
903# which can be used by a validating XML parser to check the
904# syntax of the XML files.
905
906XML_SCHEMA =
907
908# The XML_DTD tag can be used to specify an XML DTD,
909# which can be used by a validating XML parser to check the
910# syntax of the XML files.
911
912XML_DTD =
913
914# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
915# dump the program listings (including syntax highlighting
916# and cross-referencing information) to the XML output. Note that
917# enabling this will significantly increase the size of the XML output.
918
919XML_PROGRAMLISTING = YES
920
921#---------------------------------------------------------------------------
922# configuration options for the AutoGen Definitions output
923#---------------------------------------------------------------------------
924
925# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
926# generate an AutoGen Definitions (see autogen.sf.net) file
927# that captures the structure of the code including all
928# documentation. Note that this feature is still experimental
929# and incomplete at the moment.
930
931GENERATE_AUTOGEN_DEF = NO
932
933#---------------------------------------------------------------------------
934# configuration options related to the Perl module output
935#---------------------------------------------------------------------------
936
937# If the GENERATE_PERLMOD tag is set to YES Doxygen will
938# generate a Perl module file that captures the structure of
939# the code including all documentation. Note that this
940# feature is still experimental and incomplete at the
941# moment.
942
943GENERATE_PERLMOD = NO
944
945# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
946# the necessary Makefile rules, Perl scripts and LaTeX code to be able
947# to generate PDF and DVI output from the Perl module output.
948
949PERLMOD_LATEX = NO
950
951# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
952# nicely formatted so it can be parsed by a human reader. This is useful
953# if you want to understand what is going on. On the other hand, if this
954# tag is set to NO the size of the Perl module output will be much smaller
955# and Perl will parse it just the same.
956
957PERLMOD_PRETTY = YES
958
959# The names of the make variables in the generated doxyrules.make file
960# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
961# This is useful so different doxyrules.make files included by the same
962# Makefile don't overwrite each other's variables.
963
964PERLMOD_MAKEVAR_PREFIX =
965
966#---------------------------------------------------------------------------
967# Configuration options related to the preprocessor
968#---------------------------------------------------------------------------
969
970# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
971# evaluate all C-preprocessor directives found in the sources and include
972# files.
973
974ENABLE_PREPROCESSING = YES
975
976# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
977# names in the source code. If set to NO (the default) only conditional
978# compilation will be performed. Macro expansion can be done in a controlled
979# way by setting EXPAND_ONLY_PREDEF to YES.
980
981MACRO_EXPANSION = NO
982
983# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
984# then the macro expansion is limited to the macros specified with the
985# PREDEFINED and EXPAND_AS_DEFINED tags.
986
987EXPAND_ONLY_PREDEF = NO
988
989# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
990# in the INCLUDE_PATH (see below) will be search if a #include is found.
991
992SEARCH_INCLUDES = YES
993
994# The INCLUDE_PATH tag can be used to specify one or more directories that
995# contain include files that are not input files but should be processed by
996# the preprocessor.
997
998INCLUDE_PATH =
999
1000# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
1001# patterns (like *.h and *.hpp) to filter out the header-files in the
1002# directories. If left blank, the patterns specified with FILE_PATTERNS will
1003# be used.
1004
1005INCLUDE_FILE_PATTERNS =
1006
1007# The PREDEFINED tag can be used to specify one or more macro names that
1008# are defined before the preprocessor is started (similar to the -D option of
1009# gcc). The argument of the tag is a list of macros of the form: name
1010# or name=definition (no spaces). If the definition and the = are
1011# omitted =1 is assumed. To prevent a macro definition from being
1012# undefined via #undef or recursively expanded use the := operator
1013# instead of the = operator.
1014
1015PREDEFINED =__UNUSED__=
1016
1017# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
1018# this tag can be used to specify a list of macro names that should be expanded.
1019# The macro definition that is found in the sources will be used.
1020# Use the PREDEFINED tag if you want to use a different macro definition.
1021
1022EXPAND_AS_DEFINED =
1023
1024# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
1025# doxygen's preprocessor will remove all function-like macros that are alone
1026# on a line, have an all uppercase name, and do not end with a semicolon. Such
1027# function macros are typically used for boiler-plate code, and will confuse
1028# the parser if not removed.
1029
1030SKIP_FUNCTION_MACROS = YES
1031
1032#---------------------------------------------------------------------------
1033# Configuration::additions related to external references
1034#---------------------------------------------------------------------------
1035
1036# The TAGFILES option can be used to specify one or more tagfiles.
1037# Optionally an initial location of the external documentation
1038# can be added for each tagfile. The format of a tag file without
1039# this location is as follows:
1040# TAGFILES = file1 file2 ...
1041# Adding location for the tag files is done as follows:
1042# TAGFILES = file1=loc1 "file2 = loc2" ...
1043# where "loc1" and "loc2" can be relative or absolute paths or
1044# URLs. If a location is present for each tag, the installdox tool
1045# does not have to be run to correct the links.
1046# Note that each tag file must have a unique name
1047# (where the name does NOT include the path)
1048# If a tag file is not located in the directory in which doxygen
1049# is run, you must also specify the path to the tagfile here.
1050
1051TAGFILES =
1052
1053# When a file name is specified after GENERATE_TAGFILE, doxygen will create
1054# a tag file that is based on the input files it reads.
1055
1056GENERATE_TAGFILE =
1057
1058# If the ALLEXTERNALS tag is set to YES all external classes will be listed
1059# in the class index. If set to NO only the inherited external classes
1060# will be listed.
1061
1062ALLEXTERNALS = NO
1063
1064# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
1065# in the modules index. If set to NO, only the current project's groups will
1066# be listed.
1067
1068EXTERNAL_GROUPS = YES
1069
1070# The PERL_PATH should be the absolute path and name of the perl script
1071# interpreter (i.e. the result of `which perl').
1072
1073PERL_PATH = /usr/bin/perl
1074
1075#---------------------------------------------------------------------------
1076# Configuration options related to the dot tool
1077#---------------------------------------------------------------------------
1078
1079# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
1080# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
1081# or super classes. Setting the tag to NO turns the diagrams off. Note that
1082# this option is superseded by the HAVE_DOT option below. This is only a
1083# fallback. It is recommended to install and use dot, since it yields more
1084# powerful graphs.
1085
1086CLASS_DIAGRAMS = YES
1087
1088# If set to YES, the inheritance and collaboration graphs will hide
1089# inheritance and usage relations if the target is undocumented
1090# or is not a class.
1091
1092HIDE_UNDOC_RELATIONS = NO
1093
1094# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
1095# available from the path. This tool is part of Graphviz, a graph visualization
1096# toolkit from AT&T and Lucent Bell Labs. The other options in this section
1097# have no effect if this option is set to NO (the default)
1098
1099HAVE_DOT = YES
1100
1101# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
1102# will generate a graph for each documented class showing the direct and
1103# indirect inheritance relations. Setting this tag to YES will force the
1104# the CLASS_DIAGRAMS tag to NO.
1105
1106CLASS_GRAPH = YES
1107
1108# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
1109# will generate a graph for each documented class showing the direct and
1110# indirect implementation dependencies (inheritance, containment, and
1111# class references variables) of the class with other documented classes.
1112
1113COLLABORATION_GRAPH = YES
1114
1115# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
1116# will generate a graph for groups, showing the direct groups dependencies
1117
1118GROUP_GRAPHS = YES
1119
1120# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
1121# collaboration diagrams in a style similar to the OMG's Unified Modeling
1122# Language.
1123
1124UML_LOOK = YES
1125
1126# If set to YES, the inheritance and collaboration graphs will show the
1127# relations between templates and their instances.
1128
1129TEMPLATE_RELATIONS = NO
1130
1131# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
1132# tags are set to YES then doxygen will generate a graph for each documented
1133# file showing the direct and indirect include dependencies of the file with
1134# other documented files.
1135
1136INCLUDE_GRAPH = YES
1137
1138# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
1139# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
1140# documented header file showing the documented files that directly or
1141# indirectly include this file.
1142
1143INCLUDED_BY_GRAPH = YES
1144
1145# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
1146# generate a call dependency graph for every global function or class method.
1147# Note that enabling this option will significantly increase the time of a run.
1148# So in most cases it will be better to enable call graphs for selected
1149# functions only using the \callgraph command.
1150
1151CALL_GRAPH = NO
1152
1153# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will
1154# generate a caller dependency graph for every global function or class method.
1155# Note that enabling this option will significantly increase the time of a run.
1156# So in most cases it will be better to enable caller graphs for selected
1157# functions only using the \callergraph command.
1158
1159CALLER_GRAPH = NO
1160
1161# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
1162# will graphical hierarchy of all classes instead of a textual one.
1163
1164GRAPHICAL_HIERARCHY = YES
1165
1166# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
1167# then doxygen will show the dependencies a directory has on other directories
1168# in a graphical way. The dependency relations are determined by the #include
1169# relations between the files in the directories.
1170
1171DIRECTORY_GRAPH = NO
1172
1173# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
1174# generated by dot. Possible values are png, jpg, or gif
1175# If left blank png will be used.
1176
1177DOT_IMAGE_FORMAT = png
1178
1179# The tag DOT_PATH can be used to specify the path where the dot tool can be
1180# found. If left blank, it is assumed the dot tool can be found in the path.
1181
1182DOT_PATH =
1183
1184# The DOTFILE_DIRS tag can be used to specify one or more directories that
1185# contain dot files that are included in the documentation (see the
1186# \dotfile command).
1187
1188DOTFILE_DIRS =
1189
1190# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
1191# (in pixels) of the graphs generated by dot. If a graph becomes larger than
1192# this value, doxygen will try to truncate the graph, so that it fits within
1193# the specified constraint. Beware that most browsers cannot cope with very
1194# large images.
1195
1196MAX_DOT_GRAPH_WIDTH = 1024
1197
1198# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
1199# (in pixels) of the graphs generated by dot. If a graph becomes larger than
1200# this value, doxygen will try to truncate the graph, so that it fits within
1201# the specified constraint. Beware that most browsers cannot cope with very
1202# large images.
1203
1204MAX_DOT_GRAPH_HEIGHT = 1024
1205
1206# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
1207# graphs generated by dot. A depth value of 3 means that only nodes reachable
1208# from the root by following a path via at most 3 edges will be shown. Nodes
1209# that lay further from the root node will be omitted. Note that setting this
1210# option to 1 or 2 may greatly reduce the computation time needed for large
1211# code bases. Also note that a graph may be further truncated if the graph's
1212# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
1213# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
1214# the graph is not depth-constrained.
1215
1216MAX_DOT_GRAPH_DEPTH = 0
1217
1218# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
1219# background. This is disabled by default, which results in a white background.
1220# Warning: Depending on the platform used, enabling this option may lead to
1221# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
1222# read).
1223
1224DOT_TRANSPARENT = NO
1225
1226# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
1227# files in one run (i.e. multiple -o and -T options on the command line). This
1228# makes dot run faster, but since only newer versions of dot (>1.8.10)
1229# support this, this feature is disabled by default.
1230
1231DOT_MULTI_TARGETS = NO
1232
1233# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
1234# generate a legend page explaining the meaning of the various boxes and
1235# arrows in the dot generated graphs.
1236
1237GENERATE_LEGEND = YES
1238
1239# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
1240# remove the intermediate dot files that are used to generate
1241# the various graphs.
1242
1243DOT_CLEANUP = YES
1244
1245#---------------------------------------------------------------------------
1246# Configuration::additions related to the search engine
1247#---------------------------------------------------------------------------
1248
1249# The SEARCHENGINE tag specifies whether or not a search engine should be
1250# used. If set to NO the values of all tags below this one will be ignored.
1251
1252SEARCHENGINE = NO
diff --git a/legacy/efreet/NOTES b/legacy/efreet/NOTES
new file mode 100644
index 0000000000..485be6666c
--- /dev/null
+++ b/legacy/efreet/NOTES
@@ -0,0 +1,48 @@
1
2rephorm one thing. if you plan to add .desktop editing, according to the
3spec you need to keep EVERYTHING around (even sections / keys you don't know
4/ care about)
5dj2 k
6rephorm but for most usage (read only) thats a waste of memory
7dj2 hm, i guess the best way to do that is keep everything in a hash
8dj2 and write accessor functions
9dj2 or pull the common stuff out to functions and leve the rest in the hash
10rephorm and maybe have a flag for 'readonly' to kill the hash
11dj2 yea, will have to put some tought into the api for that
12
13rephorm ooh. comments need to be preserved also in edits
14
15
16
17
18rephorm efreet_xml has one bug that i see
19rephorm if you have something like <tag>before<child />after</tag>, you
20can't get to the 'after' text
21dj2 hm, will have to look at that
22rephorm (it stores 'before' as the text on 'tag')
23rephorm it should probably create child nodes with the text
24rephorm so tag would have 3 children, text: before, tag: child and text: after
25
26
27efreet_desktop_string_list_parse() needs to optionally use comma (',') as
28the separator if the desktop version is < 1.0 (but, what if it isn't set??)
29
30
31desktop_command_get:
32 check for needed types (nNfFuU)
33
34 get lists of needed types (dirs, fullpaths, urls, etc)
35
36 if type in uU:
37 create Pending struct
38 start downloads, pass Pending in as data
39 else:
40 if tyep in UF...
41 exec
42
43download cb:
44 if type in fF
45
46
47
48
diff --git a/legacy/efreet/TODO b/legacy/efreet/TODO
new file mode 100644
index 0000000000..4173fcba01
--- /dev/null
+++ b/legacy/efreet/TODO
@@ -0,0 +1,20 @@
1TODO
2----
3- Efreet_Menu should setup an Ecore_File_Monitor on the .menu files and the
4 app_dir and reload the menu when needed
5
6- .desktop saving
7
8- We need a better system to distinguish between when a user wants to create a
9 new .desktop file and when he wants to parse an existing file.
10
11- The move handling is wrong when moving to a destination with /'s in the
12 name. We should be creating intermediate menus for each of the /'d items
13 instead of just making the name as we do now
14
15
16Notes from the Menu Spec test
17-----------------------------
18- We're appending the / to the menu names in the test case. We should
19 possibly be doing that in the efreet code itself.
20
diff --git a/legacy/efreet/autogen.sh b/legacy/efreet/autogen.sh
new file mode 100755
index 0000000000..995ff2fd31
--- /dev/null
+++ b/legacy/efreet/autogen.sh
@@ -0,0 +1,16 @@
1#!/bin/sh
2
3rm -rf autom4te.cache
4rm -f aclocal.m4 ltmain.sh
5
6touch README
7
8echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS -I m4 || exit 1
9echo "Running autoheader..." ; autoheader || exit 1
10echo "Running autoconf..." ; autoconf || exit 1
11echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize --automake) || exit 1
12echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1
13
14if [ -z "$NOCONFIGURE" ]; then
15 ./configure "$@"
16fi
diff --git a/legacy/efreet/configure.in b/legacy/efreet/configure.in
new file mode 100644
index 0000000000..9bbc067eec
--- /dev/null
+++ b/legacy/efreet/configure.in
@@ -0,0 +1,80 @@
1AC_INIT(configure.in)
2AC_CANONICAL_BUILD
3AC_CANONICAL_HOST
4AM_INIT_AUTOMAKE(efreet, 0.0.3)
5AM_CONFIG_HEADER(config.h)
6
7AC_ISC_POSIX
8AC_PROG_CC
9AM_PROG_CC_STDC
10AC_HEADER_STDC
11AC_C_CONST
12AM_ENABLE_SHARED
13AM_PROG_LIBTOOL
14AC_C___ATTRIBUTE__
15
16dnl Set PACKAGE_DATA_DIR in config.h.
17AC_DEFINE_DIR([PACKAGE_DATA_DIR], [datadir], [Shared Data Directory.])
18
19PCFLAGS=$CFLAGS
20
21AC_PATH_GENERIC(ecore, 0.9.9,
22 [ ],
23 [
24AC_MSG_ERROR([
25ERROR:
26The ecore-config development script was not found in your execute
27path. This may mean one of several things
281. You may not have installed the ecore-devel (or ecore-dev) packages.
292. You may have ecore installed somewhere not covered by your path.
30
31If this is the case make sure you have the packages installed, AND
32that the ecore-config script is in your execute path (see your
33shell's manual page on setting the \$PATH environment variable), OR
34alternatively, specify the script to use with --with-ecore-config.
35])
36 ]
37)
38CFLAGS=$ECORE_CFLAGS" "$CFLAGS
39
40requirements="ecore"
41
42AC_ARG_ENABLE(ecore-desktop,
43 [AC_HELP_STRING([--enable-ecore-desktop],[Enable Ecore_Desktop tests])],
44 [enable_ecore_desktop=$enableval], [enable_ecore_desktop="auto"])
45have_ecore_desktop=no
46if test "x$enable_ecore_desktop" != "xno" ; then
47 AC_CHECK_HEADER(Ecore_Desktop.h,
48 [have_ecore_desktop=yes],
49 [], [])
50 if test "x$have_ecore_desktop" = "xyes" ; then
51 AC_DEFINE(ENABLE_ECORE_DESKTOP, 1, [Enable Ecore_Desktop])
52 elif test "x$enable_ecore_desktop" = "xyes" ; then
53 AC_MSG_ERROR(No Ecore_Desktop found disabling comparison tests.)
54 fi
55fi
56AM_CONDITIONAL(HAVE_ECORE_DESKTOP, test "x$have_ecore_desktop" = xyes)
57
58AC_ARG_ENABLE(strict-spec,
59 [AC_HELP_STRING([--enable-strict-spec],[Enable strict spec compliance])],
60 [enable_strict_spec=$enableval], [enable_strict_spec="auto"])
61STRICT_SPEC=0
62if test "x$enable_strict_spec" = "xyes" ; then
63 STRICT_SPEC=1
64fi
65AC_DEFINE_UNQUOTED(STRICT_SPEC, $STRICT_SPEC, [Strict Spec Compliance])
66
67CFLAGS=$PCFLAGS
68
69AC_SUBST(requirements)
70AC_OUTPUT([
71efreet-config
72Makefile
73src/Makefile
74src/lib/Makefile
75src/bin/Makefile
76src/bin/data/Makefile
77src/bin/data/sub/Makefile
78src/bin/compare/Makefile
79], []
80)
diff --git a/legacy/efreet/efreet-config.in b/legacy/efreet/efreet-config.in
new file mode 100644
index 0000000000..e41861a5c1
--- /dev/null
+++ b/legacy/efreet/efreet-config.in
@@ -0,0 +1,59 @@
1#!/bin/sh
2
3prefix=@prefix@
4exec_prefix=@exec_prefix@
5exec_prefix_set=no
6
7usage="\
8Usage: efreet-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--libs] [--cflags]"
9
10if test $# -eq 0; then
11 echo "${usage}" 1>&2
12 exit 1
13fi
14
15while test $# -gt 0; do
16 case "$1" in
17 -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
18 *) optarg= ;;
19 esac
20
21 case $1 in
22 --prefix=*)
23 prefix=$optarg
24 if test $exec_prefix_set = no ; then
25 exec_prefix=$optarg
26 fi
27 ;;
28 --prefix)
29 echo $prefix
30 ;;
31 --exec-prefix=*)
32 exec_prefix=$optarg
33 exec_prefix_set=yes
34 ;;
35 --exec-prefix)
36 echo $exec_prefix
37 ;;
38 --version)
39 echo @VERSION@
40 ;;
41 --cflags)
42 if test @prefix@/include != /usr/include ; then
43 includes="-I@prefix@/include"
44 fi
45 echo $includes @ECORE_CFLAGS@ -I$prefix/include/efreet
46 ;;
47 --libs)
48 libdirs=-L@libdir@
49 echo $libdirs -lefreet @ECORE_LIBS@
50 ;;
51 *)
52 echo "${usage}" 1>&2
53 exit 1
54 ;;
55 esac
56 shift
57done
58
59exit 0
diff --git a/legacy/efreet/m4/ac_attribute.m4 b/legacy/efreet/m4/ac_attribute.m4
new file mode 100644
index 0000000000..9e4b6b38e1
--- /dev/null
+++ b/legacy/efreet/m4/ac_attribute.m4
@@ -0,0 +1,15 @@
1
2AC_DEFUN([AC_C___ATTRIBUTE__],
3[
4 AC_MSG_CHECKING(for __attribute__)
5 AC_CACHE_VAL(ac_cv___attribute__, [
6 AC_TRY_COMPILE([#include <stdlib.h>
7 int func(int x); int foo(int x __attribute__ ((unused))) { exit(1); }],
8 [],
9 ac_cv___attribute__=yes, ac_cv___attribute__=no)])
10 if test "$ac_cv___attribute__" = "yes"; then
11 AC_DEFINE(HAVE___ATTRIBUTE__, 1, [Define to 1 if your compiler has __attribute__])
12 fi
13 AC_MSG_RESULT($ac_cv___attribute__)
14])
15
diff --git a/legacy/efreet/m4/ac_define_dir.m4 b/legacy/efreet/m4/ac_define_dir.m4
new file mode 100644
index 0000000000..f3d8734f3e
--- /dev/null
+++ b/legacy/efreet/m4/ac_define_dir.m4
@@ -0,0 +1,47 @@
1##### http://autoconf-archive.cryp.to/ac_define_dir.html
2#
3# SYNOPSIS
4#
5# AC_DEFINE_DIR(VARNAME, DIR [, DESCRIPTION])
6#
7# DESCRIPTION
8#
9# This macro sets VARNAME to the expansion of the DIR variable,
10# taking care of fixing up ${prefix} and such.
11#
12# VARNAME is then offered as both an output variable and a C
13# preprocessor symbol.
14#
15# Example:
16#
17# AC_DEFINE_DIR([DATADIR], [datadir], [Where data are placed to.])
18#
19# LAST MODIFICATION
20#
21# 2006-10-13
22#
23# COPYLEFT
24#
25# Copyright (c) 2006 Stepan Kasal <kasal@ucw.cz>
26# Copyright (c) 2006 Andreas Schwab <schwab@suse.de>
27# Copyright (c) 2006 Guido U. Draheim <guidod@gmx.de>
28# Copyright (c) 2006 Alexandre Oliva
29#
30# Copying and distribution of this file, with or without
31# modification, are permitted in any medium without royalty provided
32# the copyright notice and this notice are preserved.
33
34AC_DEFUN([AC_DEFINE_DIR], [
35 prefix_NONE=
36 exec_prefix_NONE=
37 test "x$prefix" = xNONE && prefix_NONE=yes && prefix=$ac_default_prefix
38 test "x$exec_prefix" = xNONE && exec_prefix_NONE=yes && exec_prefix=$prefix
39dnl In Autoconf 2.60, ${datadir} refers to ${datarootdir}, which in turn
40dnl refers to ${prefix}. Thus we have to use `eval' twice.
41 eval ac_define_dir="\"[$]$2\""
42 eval ac_define_dir="\"$ac_define_dir\""
43 AC_SUBST($1, "$ac_define_dir")
44 AC_DEFINE_UNQUOTED($1, "$ac_define_dir", [$3])
45 test "$prefix_NONE" && prefix=NONE
46 test "$exec_prefix_NONE" && exec_prefix=NONE
47])
diff --git a/legacy/efreet/m4/ac_path_generic.m4 b/legacy/efreet/m4/ac_path_generic.m4
new file mode 100644
index 0000000000..b7a2c130dc
--- /dev/null
+++ b/legacy/efreet/m4/ac_path_generic.m4
@@ -0,0 +1,138 @@
1dnl @synopsis AC_PATH_GENERIC(LIBRARY [, MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
2dnl
3dnl Runs a LIBRARY-config script and defines LIBRARY_CFLAGS and LIBRARY_LIBS
4dnl
5dnl The script must support `--cflags' and `--libs' args.
6dnl If MINIMUM-VERSION is specified, the script must also support the
7dnl `--version' arg.
8dnl If the `--with-library-[exec-]prefix' arguments to ./configure are given,
9dnl it must also support `--prefix' and `--exec-prefix'.
10dnl (In other words, it must be like gtk-config.)
11dnl
12dnl For example:
13dnl
14dnl AC_PATH_GENERIC(Foo, 1.0.0)
15dnl
16dnl would run `foo-config --version' and check that it is at least 1.0.0
17dnl
18dnl If so, the following would then be defined:
19dnl
20dnl FOO_CFLAGS to `foo-config --cflags`
21dnl FOO_LIBS to `foo-config --libs`
22dnl
23dnl At present there is no support for additional "MODULES" (see AM_PATH_GTK)
24dnl (shamelessly stolen from gtk.m4 and then hacked around a fair amount)
25dnl
26dnl @author Angus Lees <gusl@cse.unsw.edu.au>
27
28AC_DEFUN([AC_PATH_GENERIC],
29[dnl
30dnl we're going to need uppercase, lowercase and user-friendly versions of the
31dnl string `LIBRARY'
32pushdef([UP], translit([$1], [a-z], [A-Z]))dnl
33pushdef([DOWN], translit([$1], [A-Z], [a-z]))dnl
34
35dnl
36dnl Get the cflags and libraries from the LIBRARY-config script
37dnl
38AC_ARG_WITH(DOWN-prefix,
39 [ --with-]DOWN[-prefix=PFX Prefix where $1 is installed (optional)],
40 DOWN[]_config_prefix="$withval", DOWN[]_config_prefix="")
41AC_ARG_WITH(DOWN-exec-prefix,
42 [ --with-]DOWN[-exec-prefix=PFX Exec prefix where $1 is installed (optional)],
43 DOWN[]_config_exec_prefix="$withval", DOWN[]_config_exec_prefix="")
44
45 if test x$DOWN[]_config_exec_prefix != x ; then
46 DOWN[]_config_args="$DOWN[]_config_args --exec-prefix=$DOWN[]_config_exec_prefix"
47 if test x${UP[]_CONFIG+set} != xset ; then
48 UP[]_CONFIG=$DOWN[]_config_exec_prefix/bin/DOWN-config
49 fi
50 fi
51 if test x$DOWN[]_config_prefix != x ; then
52 DOWN[]_config_args="$DOWN[]_config_args --prefix=$DOWN[]_config_prefix"
53 if test x${UP[]_CONFIG+set} != xset ; then
54 UP[]_CONFIG=$DOWN[]_config_prefix/bin/DOWN-config
55 fi
56 fi
57
58 AC_PATH_PROG(UP[]_CONFIG, DOWN-config, no)
59 ifelse([$2], ,
60 AC_MSG_CHECKING(for $1),
61 AC_MSG_CHECKING(for $1 - version >= $2)
62 )
63 no_[]DOWN=""
64 if test "$UP[]_CONFIG" = "no" ; then
65 no_[]DOWN=yes
66 else
67 UP[]_CFLAGS="`$UP[]_CONFIG $DOWN[]_config_args --cflags`"
68 UP[]_LIBS="`$UP[]_CONFIG $DOWN[]_config_args --libs`"
69 ifelse([$2], , ,[
70 DOWN[]_config_major_version=`$UP[]_CONFIG $DOWN[]_config_args \
71 --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\).*/\1/'`
72 DOWN[]_config_minor_version=`$UP[]_CONFIG $DOWN[]_config_args \
73 --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\).*/\2/'`
74 DOWN[]_config_micro_version=`$UP[]_CONFIG $DOWN[]_config_args \
75 --version | sed 's/[[^0-9]]*\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\).*/\3/'`
76 DOWN[]_wanted_major_version="regexp($2, [\<\([0-9]*\)], [\1])"
77 DOWN[]_wanted_minor_version="regexp($2, [\<\([0-9]*\)\.\([0-9]*\)], [\2])"
78 DOWN[]_wanted_micro_version="regexp($2, [\<\([0-9]*\).\([0-9]*\).\([0-9]*\)], [\3])"
79
80 # Compare wanted version to what config script returned.
81 # If I knew what library was being run, i'd probably also compile
82 # a test program at this point (which also extracted and tested
83 # the version in some library-specific way)
84 if test "$DOWN[]_config_major_version" -lt \
85 "$DOWN[]_wanted_major_version" \
86 -o \( "$DOWN[]_config_major_version" -eq \
87 "$DOWN[]_wanted_major_version" \
88 -a "$DOWN[]_config_minor_version" -lt \
89 "$DOWN[]_wanted_minor_version" \) \
90 -o \( "$DOWN[]_config_major_version" -eq \
91 "$DOWN[]_wanted_major_version" \
92 -a "$DOWN[]_config_minor_version" -eq \
93 "$DOWN[]_wanted_minor_version" \
94 -a "$DOWN[]_config_micro_version" -lt \
95 "$DOWN[]_wanted_micro_version" \) ; then
96 # older version found
97 no_[]DOWN=yes
98 echo -n "*** An old version of $1 "
99 echo -n "($DOWN[]_config_major_version"
100 echo -n ".$DOWN[]_config_minor_version"
101 echo ".$DOWN[]_config_micro_version) was found."
102 echo -n "*** You need a version of $1 newer than "
103 echo -n "$DOWN[]_wanted_major_version"
104 echo -n ".$DOWN[]_wanted_minor_version"
105 echo ".$DOWN[]_wanted_micro_version."
106 echo "***"
107 echo "*** If you have already installed a sufficiently new version, this error"
108 echo "*** probably means that the wrong copy of the DOWN-config shell script is"
109 echo "*** being found. The easiest way to fix this is to remove the old version"
110 echo "*** of $1, but you can also set the UP[]_CONFIG environment to point to the"
111 echo "*** correct copy of DOWN-config. (In this case, you will have to"
112 echo "*** modify your LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf"
113 echo "*** so that the correct libraries are found at run-time)"
114 fi
115 ])
116 fi
117 if test "x$no_[]DOWN" = x ; then
118 AC_MSG_RESULT(yes)
119 ifelse([$3], , :, [$3])
120 else
121 AC_MSG_RESULT(no)
122 if test "$UP[]_CONFIG" = "no" ; then
123 echo "*** The DOWN-config script installed by $1 could not be found"
124 echo "*** If $1 was installed in PREFIX, make sure PREFIX/bin is in"
125 echo "*** your path, or set the UP[]_CONFIG environment variable to the"
126 echo "*** full path to DOWN-config."
127 fi
128 UP[]_CFLAGS=""
129 UP[]_LIBS=""
130 ifelse([$4], , :, [$4])
131 fi
132 AC_SUBST(UP[]_CFLAGS)
133 AC_SUBST(UP[]_LIBS)
134
135 popdef([UP])
136 popdef([DOWN])
137])
138
diff --git a/legacy/efreet/src/Makefile.am b/legacy/efreet/src/Makefile.am
new file mode 100644
index 0000000000..ad292fa269
--- /dev/null
+++ b/legacy/efreet/src/Makefile.am
@@ -0,0 +1,4 @@
1
2SUBDIRS = lib bin
3
4MAINTAINERCLEANFILES = Makefile.in
diff --git a/legacy/efreet/src/bin/Makefile.am b/legacy/efreet/src/bin/Makefile.am
new file mode 100644
index 0000000000..46dbfbd5e0
--- /dev/null
+++ b/legacy/efreet/src/bin/Makefile.am
@@ -0,0 +1,25 @@
1SUBDIRS = data compare
2MAINTAINERCLEANFILES = Makefile.in
3
4INCLUDES = \
5-I. -I$(top_srcdir)/src/lib @ECORE_CFLAGS@
6
7bin_PROGRAMS = efreet_test efreet_spec_test
8
9efreet_test_DEPENDENCIES = $(top_builddir)/src/lib/libefreet.la
10efreet_test_LDADD = $(top_builddir)/src/lib/libefreet.la @ECORE_LIBS@
11efreet_test_SOURCES = \
12ef_data_dirs.c \
13ef_icon_theme.c \
14ef_ini.c \
15ef_locale.c \
16ef_desktop.c \
17ef_menu.c \
18main.c
19
20
21efreet_spec_test_DEPENDENCIES = $(top_builddir)/src/lib/libefreet.la
22efreet_spec_test_LDADD = $(top_builddir)/src/lib/libefreet.la
23efreet_spec_test_SOURCES = \
24efreet_spec_test.c
25
diff --git a/legacy/efreet/src/bin/compare/Makefile.am b/legacy/efreet/src/bin/compare/Makefile.am
new file mode 100644
index 0000000000..cffa31d204
--- /dev/null
+++ b/legacy/efreet/src/bin/compare/Makefile.am
@@ -0,0 +1,29 @@
1MAINTAINERCLEANFILES = Makefile.in
2
3INCLUDES = \
4-I. -I$(top_srcdir)/src/lib @ECORE_CFLAGS@
5
6if HAVE_ECORE_DESKTOP
7bin_PROGRAMS = efreet_alloc ecore_alloc compare_results efreet_menu_alloc
8else
9bin_PROGRAMS = efreet_alloc efreet_menu_alloc
10endif
11
12efreet_menu_alloc_DEPENDENCIES = $(top_builddir)/src/lib/libefreet.la
13efreet_menu_alloc_SOURCES = efreet_menu_alloc.c comp.h
14efreet_menu_alloc_LDADD = $(top_builddir)/src/lib/libefreet.la @ECORE_LIBS@
15
16efreet_alloc_DEPENDENCIES = $(top_builddir)/src/lib/libefreet.la
17efreet_alloc_SOURCES = efreet_alloc.c comp.h
18efreet_alloc_LDADD = $(top_builddir)/src/lib/libefreet.la @ECORE_LIBS@
19
20if HAVE_ECORE_DESKTOP
21ecore_alloc_DEPENDENCIES =
22ecore_alloc_SOURCES = ecore_alloc.c comp.h
23ecore_alloc_LDADD = @ECORE_LIBS@
24
25compare_results_DEPENDENCIES = $(top_builddir)/src/lib/libefreet.la
26compare_results_SOURCES = compare_results.c comp.h
27compare_results_LDADD = $(top_builddir)/src/lib/libefreet.la @ECORE_LIBS@
28endif
29
diff --git a/legacy/efreet/src/bin/compare/comp.h b/legacy/efreet/src/bin/compare/comp.h
new file mode 100644
index 0000000000..c5628bf063
--- /dev/null
+++ b/legacy/efreet/src/bin/compare/comp.h
@@ -0,0 +1,528 @@
1#ifndef COMP_H
2#define COMP_H
3
4#define LOOPS 1000
5#define THEME "Tango"
6#define SIZE "16x16"
7
8#define ADDRESS_BOOK_NEW "address-book-new"
9#define APPLICATION_EXIT "application-exit"
10#define APPOINTMENT_NEW "appointment-new"
11#define CONTACT_NEW "contact-new"
12#define DIALOG_APPLY "dialog-apply"
13#define DIALOG_CANCEL "dialog-cancel"
14#define DIALOG_CLOSE "dialog-close"
15#define DIALOG_OK "dialog-ok"
16#define DOCUMENT_NEW "document-new"
17#define DOCUMENT_OPEN "document-open"
18#define DOCUMENT_OPEN_RECENT "document-open-recent"
19#define DOCUMENT_PAGE_SETUP "document-page-setup"
20#define DOCUMENT_PRINT "document-print"
21#define DOCUMENT_PRINT_PREVIEW "document-print-preview"
22#define DOCUMENT_PROPERTIES "document-properties"
23#define DOCUMENT_REVERT "document-revert"
24#define DOCUMENT_SAVE "document-save"
25#define DOCUMENT_SAVE_AS "document-save-as"
26#define EDIT_COPY "edit-copy"
27#define EDIT_CUT "edit-cut"
28#define EDIT_DELETE "edit-delete"
29#define EDIT_FIND "edit-find"
30#define EDIT_FIND_REPLACE "edit-find-replace"
31#define EDIT_PASTE "edit-paste"
32#define EDIT_REDO "edit-redo"
33#define EDIT_SELECT_ALL "edit-select-all"
34#define EDIT_UNDO "edit-undo"
35#define FORMAT_INDENT_LESS "format-indent-less"
36#define FORMAT_INDENT_MORE "format-indent-more"
37#define FORMAT_JUSTIFY_CENTER "format-justify-center"
38#define FORMAT_JUSTIFY_FILL "format-justify-fill"
39#define FORMAT_JUSTIFY_LEFT "format-justify-left"
40#define FORMAT_JUSTIFY_RIGHT "format-justify-right"
41#define FORMAT_TEXT_DIRECTION_LTR "format-text-direction-ltr"
42#define FORMAT_TEXT_DIRECTION_RTL "format-text-direction-rtl"
43#define FORMAT_TEXT_BOLD "format-text-bold"
44#define FORMAT_TEXT_ITALIC "format-text-italic"
45#define FORMAT_TEXT_UNDERLINE "format-text-underline"
46#define FORMAT_TEXT_STRIKETHROUGH "format-text-strikethrough"
47#define GO_BOTTOM "go-bottom"
48#define GO_DOWN "go-down"
49#define GO_FIRST "go-first"
50#define GO_HOME "go-home"
51#define GO_JUMP "go-jump"
52#define GO_LAST "go-last"
53#define GO_NEXT "go-next"
54#define GO_PREVIOUS "go-previous"
55#define GO_TOP "go-top"
56#define GO_UP "go-up"
57#define HELP_ABOUT "help-about"
58#define HELP_CONTENTS "help-contents"
59#define HELP_FAQ "help-faq"
60#define INSERT_IMAGE "insert-image"
61#define INSERT_LINK "insert-link"
62#define INSERT_OBJECT "insert-object"
63#define INSERT_TEXT "insert-text"
64#define LIST_ADD "list-add"
65#define LIST_REMOVE "list-remove"
66#define MAIL_FORWARD "mail-forward"
67#define MAIL_MARK_IMPORTANT "mail-mark-important"
68#define MAIL_MARK_JUNK "mail-mark-junk"
69#define MAIL_MARK_NOTJUNK "mail-mark-notjunk"
70#define MAIL_MARK_READ "mail-mark-read"
71#define MAIL_MARK_UNREAD "mail-mark-unread"
72#define MAIL_MESSAGE_NEW "mail-message-new"
73#define MAIL_REPLY_ALL "mail-reply-all"
74#define MAIL_REPLY_SENDER "mail-reply-sender"
75#define MAIL_SEND_RECEIVE "mail-send-receive"
76#define MEDIA_EJECT "media-eject"
77#define MEDIA_PLAYBACK_PAUSE "media-playback-pause"
78#define MEDIA_PLAYBACK_START "media-playback-start"
79#define MEDIA_PLAYBACK_STOP "media-playback-stop"
80#define MEDIA_RECORD "media-record"
81#define MEDIA_SEEK_BACKWARD "media-seek-backward"
82#define MEDIA_SEEK_FORWARD "media-seek-forward"
83#define MEDIA_SKIP_BACKWARD "media-skip-backward"
84#define MEDIA_SKIP_FORWARD "media-skip-forward"
85#define SYSTEM_LOCK_SCREEN "system-lock-screen"
86#define SYSTEM_LOG_OUT "system-log-out"
87#define SYSTEM_RUN "system-run"
88#define SYSTEM_SEARCH "system-search"
89#define TOOLS_CHECK_SPELLING "tools-check-spelling"
90#define VIEW_FULLSCREEN "view-fullscreen"
91#define VIEW_REFRESH "view-refresh"
92#define VIEW_SORT_ASCENDING "view-sort-ascending"
93#define VIEW_SORT_DESCENDING "view-sort-descending"
94#define WINDOW_CLOSE "window-close"
95#define WINDOW_NEW "window-new"
96#define ZOOM_BEST_FIT "zoom-best-fit"
97#define ZOOM_IN "zoom-in"
98#define ZOOM_ORIGINAL "zoom-original"
99#define ZOOM_OUT "zoom-out"
100
101#define PROCESS_WORKING "process-working"
102
103#define ACCESSORIES_CALCULATOR "accessories-calculator"
104#define ACCESSORIES_CHARACTER_MAP "accessories-character-map"
105#define ACCESSORIES_DICTIONARY "accessories-dictionary"
106#define ACCESSORIES_TEXT_EDITOR "accessories-text-editor"
107#define HELP_BROWSER "help-browser"
108#define MULTIMEDIA_VOLUME_CONTROL "multimedia-volume-control"
109#define PREFERENCES_DESKTOP_ACCESSIBILITY "preferences-desktop-accessibility"
110#define PREFERENCES_DESKTOP_FONT "preferences-desktop-font"
111#define PREFERENCES_DESKTOP_KEYBOARD "preferences-desktop-keyboard"
112#define PREFERENCES_DESKTOP_LOCALE "preferences-desktop-locale"
113#define PREFERENCES_DESKTOP_MULTIMEDIA "preferences-desktop-multimedia"
114#define PREFERENCES_DESKTOP_SCREENSAVER "preferences-desktop-screensaver"
115#define PREFERENCES_DESKTOP_THEME "preferences-desktop-theme"
116#define PREFERENCES_DESKTOP_WALLPAPER "preferences-desktop-wallpaper"
117#define SYSTEM_FILE_MANAGER "system-file-manager"
118#define SYSTEM_SOFTWARE_UPDATE "system-software-update"
119#define UTILITIES_TERMINAL "utilities-terminal"
120
121#define APPLICATIONS_ACCESSORIES "applications-accessories"
122#define APPLICATIONS_DEVELOPMENT "applications-development"
123#define APPLICATIONS_GAMES "applications-games"
124#define APPLICATIONS_GRAPHICS "applications-graphics"
125#define APPLICATIONS_INTERNET "applications-internet"
126#define APPLICATIONS_MULTIMEDIA "applications-multimedia"
127#define APPLICATIONS_OFFICE "applications-office"
128#define APPLICATIONS_OTHER "applications-other"
129#define APPLICATIONS_SYSTEM "applications-system"
130#define APPLICATIONS_UTILITIES "applications-utilities"
131#define PREFERENCES_DESKTOP "preferences-desktop"
132#define PREFERENCES_DESKTOP_ACCESSIBILITY "preferences-desktop-accessibility"
133#define PREFERENCES_DESKTOP_PERIPHERALS "preferences-desktop-peripherals"
134#define PREFERENCES_DESKTOP_PERSONAL "preferences-desktop-personal"
135#define PREFERENCES_OTHER "preferences-other"
136#define PREFERENCES_SYSTEM "preferences-system"
137#define PREFERENCES_SYSTEM_NETWORK "preferences-system-network"
138#define SYSTEM_HELP "system-help"
139
140#define AUDIO_CARD "audio-card"
141#define AUDIO_INPUT_MICROPHONE "audio-input-microphone"
142#define BATTERY "battery"
143#define CAMERA_PHOTO "camera-photo"
144#define CAMERA_VIDEO "camera-video"
145#define COMPUTER "computer"
146#define DRIVE_CDROM "drive-cdrom"
147#define DRIVE_HARDDISK "drive-harddisk"
148#define DRIVE_REMOVABLE_MEDIA "drive-removable-media"
149#define INPUT_GAMING "input-gaming"
150#define INPUT_KEYBOARD "input-keyboard"
151#define INPUT_MOUSE "input-mouse"
152#define MEDIA_CDROM "media-cdrom"
153#define MEDIA_FLOPPY "media-floppy"
154#define MULTIMEDIA_PLAYER "multimedia-player"
155#define NETWORK_WIRED "network-wired"
156#define NETWORK_WIRELESS "network-wireless"
157#define PRINTER "printer"
158
159#define EMBLEM_DEFAULT "emblem-default"
160#define EMBLEM_DOCUMENTS "emblem-documents"
161#define EMBLEM_DOWNLOADS "emblem-downloads"
162#define EMBLEM_FAVORITE "emblem-favorite"
163#define EMBLEM_IMPORTANT "emblem-important"
164#define EMBLEM_MAIL "emblem-mail"
165#define EMBLEM_PHOTOS "emblem-photos"
166#define EMBLEM_READONLY "emblem-readonly"
167#define EMBLEM_SHARED "emblem-shared"
168#define EMBLEM_SYMBOLIC_LINK "emblem-symbolic-link"
169#define EMBLEM_SYNCHRONIZED "emblem-synchronized"
170#define EMBLEM_SYSTEM "emblem-system"
171#define EMBLEM_UNREADABLE "emblem-unreadable"
172
173#define FACE_ANGEL "face-angel"
174#define FACE_CRYING "face-crying"
175#define FACE_DEVIL_GRIN "face-devil-grin"
176#define FACE_DEVIL_SAD "face-devil-sad"
177#define FACE_GLASSES "face-glasses"
178#define FACE_KISS "face-kiss"
179#define FACE_MONKEY "face-monkey"
180#define FACE_PLAIN "face-plain"
181#define FACE_SAD "face-sad"
182#define FACE_SMILE "face-smile"
183#define FACE_SMILE_BIG "face-smile-big"
184#define FACE_SMIRK "face-smirk"
185#define FACE_SURPRISE "face-surprise"
186#define FACE_WINK "face-wink"
187
188#define APPLICATION_X_EXECUTABLE "application-x-executable"
189#define AUDIO_X_GENERIC "audio-x-generic"
190#define FONT_X_GENERIC "font-x-generic"
191#define IMAGE_X_GENERIC "image-x-generic"
192#define PACKAGE_X_GENERIC "package-x-generic"
193#define TEXT_HTML "text-html"
194#define TEXT_X_GENERIC "text-x-generic"
195#define TEXT_X_GENERIC_TEMPLATE "text-x-generic-template"
196#define TEXT_X_SCRIPT "text-x-script"
197#define VIDEO_X_GENERIC "video-x-generic"
198#define X_OFFICE_ADDRESS_BOOK "x-office-address-book"
199#define X_OFFICE_CALENDAR "x-office-calendar"
200#define X_OFFICE_DOCUMENT "x-office-document"
201#define X_OFFICE_PRESENTATION "x-office-presentation"
202#define X_OFFICE_SPREADSHEET "x-office-spreadsheet"
203
204#define FOLDER "folder"
205#define FOLDER_REMOTE "folder-remote"
206#define NETWORK_SERVER "network-server"
207#define NETWORK_WORKGROUP "network-workgroup"
208#define START_HERE "start-here"
209#define USER_DESKTOP "user-desktop"
210#define USER_HOME "user-home"
211#define USER_TRASH "user-trash"
212
213#define APPOINTMENT_MISSED "appointment-missed"
214#define APPOINTMENT_SOON "appointment-soon"
215#define AUDIO_VOLUME_HIGH "audio-volume-high"
216#define AUDIO_VOLUME_LOW "audio-volume-low"
217#define AUDIO_VOLUME_MEDIUM "audio-volume-medium"
218#define AUDIO_VOLUME_MUTED "audio-volume-muted"
219#define BATTERY_CAUTION "battery-caution"
220#define BATTERY_LOW "battery-low"
221#define DIALOG_ERROR "dialog-error"
222#define DIALOG_INFORMATION "dialog-information"
223#define DIALOG_PASSWORD "dialog-password"
224#define DIALOG_QUESTION "dialog-question"
225#define DIALOG_WARNING "dialog-warning"
226#define FOLDER_DRAG_ACCEPT "folder-drag-accept"
227#define FOLDER_OPEN "folder-open"
228#define FOLDER_VISITING "folder-visiting"
229#define IMAGE_LOADING "image-loading"
230#define IMAGE_MISSING "image-missing"
231#define MAIL_ATTACHMENT "mail-attachment"
232#define MAIL_UNREAD "mail-unread"
233#define MAIL_READ "mail-read"
234#define MAIL_REPLIED "mail-replied"
235#define MAIL_SIGNED "mail-signed"
236#define MAIL_SIGNED_VERIFIED "mail-signed-verified"
237#define MEDIA_PLAYLIST_REPEAT "media-playlist-repeat"
238#define MEDIA_PLAYLIST_SHUFFLE "media-playlist-shuffle"
239#define NETWORK_ERROR "network-error"
240#define NETWORK_IDLE "network-idle"
241
242#define NETWORK_OFFLINE "network-offline"
243#define NETWORK_RECEIVE "network-receive"
244#define NETWORK_TRANSMIT "network-transmit"
245#define NETWORK_TRANSMIT_RECEIVE "network-transmit-receive"
246#define PRINTER_ERROR "printer-error"
247#define PRINTER_PRINTING "printer-printing"
248#define SOFTWARE_UPDATE_AVAILABLE "software-update-available"
249#define SOFTWARE_UPDATE_URGENT "software-update-urgent"
250#define SYNC_ERROR "sync-error"
251#define SYNC_SYNCHRONIZING "sync-synchronizing"
252#define TASK_DUE "task-due"
253#define TASK_PASSED_DUE "task-passed-due"
254#define USER_AWAY "user-away"
255#define USER_IDLE "user-idle"
256#define USER_OFFLINE "user-offline"
257#define USER_ONLINE "user-online"
258#define USER_TRASH_FULL "user-trash-full"
259#define WEATHER_CLEAR "weather-clear"
260#define WEATHER_CLEAR_NIGHT "weather-clear-night"
261#define WEATHER_FEW_CLOUDS "weather-few-clouds"
262#define WEATHER_FEW_CLOUDS_NIGHT "weather-few-clouds-night"
263#define WEATHER_FOG "weather-fog"
264#define WEATHER_OVERCAST "weather-overcast"
265#define WEATHER_SEVERE_ALERT "weather-severe-alert"
266#define WEATHER_SHOWERS "weather-showers"
267#define WEATHER_SHOWERS_SCATTERED "weather-showers-scattered"
268#define WEATHER_SNOW "weather-snow"
269#define WEATHER_STORM "weather-storm"
270
271const char *icons[] = {
272 ADDRESS_BOOK_NEW,
273 APPLICATION_EXIT,
274 APPOINTMENT_NEW,
275 CONTACT_NEW,
276 DIALOG_APPLY,
277 DIALOG_CANCEL,
278 DIALOG_CLOSE,
279 DIALOG_OK,
280 DOCUMENT_NEW,
281 DOCUMENT_OPEN,
282 DOCUMENT_OPEN_RECENT,
283 DOCUMENT_PAGE_SETUP,
284 DOCUMENT_PRINT,
285 DOCUMENT_PRINT_PREVIEW,
286 DOCUMENT_PROPERTIES,
287 DOCUMENT_REVERT,
288 DOCUMENT_SAVE,
289 DOCUMENT_SAVE_AS,
290 EDIT_COPY,
291 EDIT_CUT,
292 EDIT_DELETE,
293 EDIT_FIND,
294 EDIT_FIND_REPLACE,
295 EDIT_PASTE,
296 EDIT_REDO,
297 EDIT_SELECT_ALL,
298 EDIT_UNDO,
299 FORMAT_INDENT_LESS,
300 FORMAT_INDENT_MORE,
301 FORMAT_JUSTIFY_CENTER,
302 FORMAT_JUSTIFY_FILL,
303 FORMAT_JUSTIFY_LEFT,
304 FORMAT_JUSTIFY_RIGHT,
305 FORMAT_TEXT_DIRECTION_LTR,
306 FORMAT_TEXT_DIRECTION_RTL,
307 FORMAT_TEXT_BOLD,
308 FORMAT_TEXT_ITALIC,
309 FORMAT_TEXT_UNDERLINE,
310 FORMAT_TEXT_STRIKETHROUGH,
311 GO_BOTTOM,
312 GO_DOWN,
313 GO_FIRST,
314 GO_HOME,
315 GO_JUMP,
316 GO_LAST,
317 GO_NEXT,
318 GO_PREVIOUS,
319 GO_TOP,
320 GO_UP,
321 HELP_ABOUT,
322 HELP_CONTENTS,
323 HELP_FAQ,
324 INSERT_IMAGE,
325 INSERT_LINK,
326 INSERT_OBJECT,
327 INSERT_TEXT,
328 LIST_ADD,
329 LIST_REMOVE,
330 MAIL_FORWARD,
331 MAIL_MARK_IMPORTANT,
332 MAIL_MARK_JUNK,
333 MAIL_MARK_NOTJUNK,
334 MAIL_MARK_READ,
335 MAIL_MARK_UNREAD,
336 MAIL_MESSAGE_NEW,
337 MAIL_REPLY_ALL,
338 MAIL_REPLY_SENDER,
339 MAIL_SEND_RECEIVE,
340 MEDIA_EJECT,
341 MEDIA_PLAYBACK_PAUSE,
342 MEDIA_PLAYBACK_START,
343 MEDIA_PLAYBACK_STOP,
344 MEDIA_RECORD,
345 MEDIA_SEEK_BACKWARD,
346 MEDIA_SEEK_FORWARD,
347 MEDIA_SKIP_BACKWARD,
348 MEDIA_SKIP_FORWARD,
349 SYSTEM_LOCK_SCREEN,
350 SYSTEM_LOG_OUT,
351 SYSTEM_RUN,
352 SYSTEM_SEARCH,
353 TOOLS_CHECK_SPELLING,
354 VIEW_FULLSCREEN,
355 VIEW_REFRESH,
356 VIEW_SORT_ASCENDING,
357 VIEW_SORT_DESCENDING,
358 WINDOW_CLOSE,
359 WINDOW_NEW,
360 ZOOM_BEST_FIT,
361 ZOOM_IN,
362 ZOOM_ORIGINAL,
363 ZOOM_OUT,
364 PROCESS_WORKING,
365 ACCESSORIES_CALCULATOR,
366 ACCESSORIES_CHARACTER_MAP,
367 ACCESSORIES_DICTIONARY,
368 ACCESSORIES_TEXT_EDITOR,
369 HELP_BROWSER,
370 MULTIMEDIA_VOLUME_CONTROL,
371 PREFERENCES_DESKTOP_ACCESSIBILITY,
372 PREFERENCES_DESKTOP_FONT,
373 PREFERENCES_DESKTOP_KEYBOARD,
374 PREFERENCES_DESKTOP_LOCALE,
375 PREFERENCES_DESKTOP_MULTIMEDIA,
376 PREFERENCES_DESKTOP_SCREENSAVER,
377 PREFERENCES_DESKTOP_THEME,
378 PREFERENCES_DESKTOP_WALLPAPER,
379 SYSTEM_FILE_MANAGER,
380 SYSTEM_SOFTWARE_UPDATE,
381 UTILITIES_TERMINAL,
382 APPLICATIONS_ACCESSORIES,
383 APPLICATIONS_DEVELOPMENT,
384 APPLICATIONS_GAMES,
385 APPLICATIONS_GRAPHICS,
386 APPLICATIONS_INTERNET,
387 APPLICATIONS_MULTIMEDIA,
388 APPLICATIONS_OFFICE,
389 APPLICATIONS_OTHER,
390 APPLICATIONS_SYSTEM,
391 APPLICATIONS_UTILITIES,
392 PREFERENCES_DESKTOP,
393 PREFERENCES_DESKTOP_ACCESSIBILITY,
394 PREFERENCES_DESKTOP_PERIPHERALS,
395 PREFERENCES_DESKTOP_PERSONAL,
396 PREFERENCES_OTHER,
397 PREFERENCES_SYSTEM,
398 PREFERENCES_SYSTEM_NETWORK,
399 SYSTEM_HELP,
400 AUDIO_CARD,
401 AUDIO_INPUT_MICROPHONE,
402 BATTERY,
403 CAMERA_PHOTO,
404 CAMERA_VIDEO,
405 COMPUTER,
406 DRIVE_CDROM,
407 DRIVE_HARDDISK,
408 DRIVE_REMOVABLE_MEDIA,
409 INPUT_GAMING,
410 INPUT_KEYBOARD,
411 INPUT_MOUSE,
412 MEDIA_CDROM,
413 MEDIA_FLOPPY,
414 MULTIMEDIA_PLAYER,
415 NETWORK_WIRED,
416 NETWORK_WIRELESS,
417 PRINTER,
418 EMBLEM_DEFAULT,
419 EMBLEM_DOCUMENTS,
420 EMBLEM_DOWNLOADS,
421 EMBLEM_FAVORITE,
422 EMBLEM_IMPORTANT,
423 EMBLEM_MAIL,
424 EMBLEM_PHOTOS,
425 EMBLEM_READONLY,
426 EMBLEM_SHARED,
427 EMBLEM_SYMBOLIC_LINK,
428 EMBLEM_SYNCHRONIZED,
429 EMBLEM_SYSTEM,
430 EMBLEM_UNREADABLE,
431 FACE_ANGEL,
432 FACE_CRYING,
433 FACE_DEVIL_GRIN,
434 FACE_DEVIL_SAD,
435 FACE_GLASSES,
436 FACE_KISS,
437 FACE_MONKEY,
438 FACE_PLAIN,
439 FACE_SAD,
440 FACE_SMILE,
441 FACE_SMILE_BIG,
442 FACE_SMIRK,
443 FACE_SURPRISE,
444 FACE_WINK,
445 APPLICATION_X_EXECUTABLE,
446 AUDIO_X_GENERIC,
447 FONT_X_GENERIC,
448 IMAGE_X_GENERIC,
449 PACKAGE_X_GENERIC,
450 TEXT_HTML,
451 TEXT_X_GENERIC,
452 TEXT_X_GENERIC_TEMPLATE,
453 TEXT_X_SCRIPT,
454 VIDEO_X_GENERIC,
455 X_OFFICE_ADDRESS_BOOK,
456 X_OFFICE_CALENDAR,
457 X_OFFICE_DOCUMENT,
458 X_OFFICE_PRESENTATION,
459 X_OFFICE_SPREADSHEET,
460 FOLDER,
461 FOLDER_REMOTE,
462 NETWORK_SERVER,
463 NETWORK_WORKGROUP,
464 START_HERE,
465 USER_DESKTOP,
466 USER_HOME,
467 USER_TRASH,
468 APPOINTMENT_MISSED,
469 APPOINTMENT_SOON,
470 AUDIO_VOLUME_HIGH,
471 AUDIO_VOLUME_LOW,
472 AUDIO_VOLUME_MEDIUM,
473 AUDIO_VOLUME_MUTED,
474 BATTERY_CAUTION,
475 BATTERY_LOW,
476 DIALOG_ERROR,
477 DIALOG_INFORMATION,
478 DIALOG_PASSWORD,
479 DIALOG_QUESTION,
480 DIALOG_WARNING,
481 FOLDER_DRAG_ACCEPT,
482 FOLDER_OPEN,
483 FOLDER_VISITING,
484 IMAGE_LOADING,
485 IMAGE_MISSING,
486 MAIL_ATTACHMENT,
487 MAIL_UNREAD,
488 MAIL_READ,
489 MAIL_REPLIED,
490 MAIL_SIGNED,
491 MAIL_SIGNED_VERIFIED,
492 MEDIA_PLAYLIST_REPEAT,
493 MEDIA_PLAYLIST_SHUFFLE,
494 NETWORK_ERROR,
495 NETWORK_IDLE,
496 NETWORK_OFFLINE,
497 NETWORK_RECEIVE,
498 NETWORK_TRANSMIT,
499 NETWORK_TRANSMIT_RECEIVE,
500 PRINTER_ERROR,
501 PRINTER_PRINTING,
502 SOFTWARE_UPDATE_AVAILABLE,
503 SOFTWARE_UPDATE_URGENT,
504 SYNC_ERROR,
505 SYNC_SYNCHRONIZING,
506 TASK_DUE,
507 TASK_PASSED_DUE,
508 USER_AWAY,
509 USER_IDLE,
510 USER_OFFLINE,
511 USER_ONLINE,
512 USER_TRASH_FULL,
513 WEATHER_CLEAR,
514 WEATHER_CLEAR_NIGHT,
515 WEATHER_FEW_CLOUDS,
516 WEATHER_FEW_CLOUDS_NIGHT,
517 WEATHER_FOG,
518 WEATHER_OVERCAST,
519 WEATHER_SEVERE_ALERT,
520 WEATHER_SHOWERS,
521 WEATHER_SHOWERS_SCATTERED,
522 WEATHER_SNOW,
523 WEATHER_STORM,
524 NULL
525 };
526
527#endif
528
diff --git a/legacy/efreet/src/bin/compare/compare_results.c b/legacy/efreet/src/bin/compare/compare_results.c
new file mode 100644
index 0000000000..471034354f
--- /dev/null
+++ b/legacy/efreet/src/bin/compare/compare_results.c
@@ -0,0 +1,43 @@
1#include <Ecore.h>
2#include <Ecore_Desktop.h>
3#include <Efreet.h>
4#include <stdio.h>
5#include <string.h>
6#include "comp.h"
7
8int
9main(int argc, char ** argv)
10{
11 int i;
12 const char *ef, *ed;
13
14 ecore_init();
15 ecore_desktop_init();
16 efreet_init();
17
18 efreet_icon_extension_add(".svg");
19
20 for (i = 0; icons[i] != NULL; i++)
21 {
22 ef = efreet_icon_path_find(THEME, icons[i], SIZE);
23 ed = ecore_desktop_icon_find(icons[i], SIZE, THEME);
24
25 if (!ef && !ed) continue;
26
27 if (!ef && ed)
28 printf("%s matched ecore (%s) but not efreet\n", icons[i], ed);
29
30 else if (ef && !ed)
31 printf("%s matched efreet (%s) but not ecore\n", icons[i], ef);
32
33 else if (strcmp(ef, ed))
34 printf("%s didn't match ef(%s) vs ed(%s)\n", icons[i], ef, ed);
35 }
36
37 efreet_shutdown();
38 ecore_desktop_shutdown();
39 ecore_shutdown();
40
41 return 0;
42}
43
diff --git a/legacy/efreet/src/bin/compare/ecore_alloc.c b/legacy/efreet/src/bin/compare/ecore_alloc.c
new file mode 100644
index 0000000000..b94731a05d
--- /dev/null
+++ b/legacy/efreet/src/bin/compare/ecore_alloc.c
@@ -0,0 +1,29 @@
1#include <Ecore.h>
2#include <Ecore_Desktop.h>
3#include <stdio.h>
4#include "comp.h"
5
6int
7main(int argc, char ** argv)
8{
9 int i = 0, k;
10 const char *path;
11
12 ecore_init();
13 ecore_desktop_init();
14
15 for (k = 0; k < LOOPS; k++)
16 {
17 for (i = 0; icons[i] != NULL; i++)
18 {
19 path = ecore_desktop_icon_find(icons[i], SIZE, THEME);
20// printf("%s: %s\n", icons[i], (path ? path : "NOT FOUND"));
21 }
22 }
23
24 ecore_desktop_shutdown();
25 ecore_shutdown();
26
27 return 0;
28}
29
diff --git a/legacy/efreet/src/bin/compare/efreet_alloc.c b/legacy/efreet/src/bin/compare/efreet_alloc.c
new file mode 100644
index 0000000000..ccf4060654
--- /dev/null
+++ b/legacy/efreet/src/bin/compare/efreet_alloc.c
@@ -0,0 +1,26 @@
1#include <Efreet.h>
2#include <stdio.h>
3#include "comp.h"
4
5int
6main(int argc, char **argv)
7{
8 int i = 0, k;
9 const char *path;
10
11 efreet_init();
12
13 for (k = 0; k < LOOPS; k++)
14 {
15 for (i = 0; icons[i] != NULL; i++)
16 {
17 path = efreet_icon_path_find(THEME, icons[i], SIZE);
18// printf("%s: %s\n", icons[i], (path ? path : "NOT FOUND"));
19 }
20 }
21
22 efreet_shutdown();
23
24 return 0;
25}
26
diff --git a/legacy/efreet/src/bin/compare/efreet_menu_alloc.c b/legacy/efreet/src/bin/compare/efreet_menu_alloc.c
new file mode 100644
index 0000000000..5a43a0c562
--- /dev/null
+++ b/legacy/efreet/src/bin/compare/efreet_menu_alloc.c
@@ -0,0 +1,23 @@
1#include <Efreet.h>
2#include <stdio.h>
3#include "comp.h"
4
5int
6main(int argc, char **argv)
7{
8 int k;
9
10 efreet_init();
11
12 for (k = 0; k < LOOPS; k++)
13 {
14 Efreet_Menu *menu;
15 menu = efreet_menu_get();
16 efreet_menu_free(menu);
17 }
18
19 efreet_shutdown();
20
21 return 0;
22}
23
diff --git a/legacy/efreet/src/bin/ef_data_dirs.c b/legacy/efreet/src/bin/ef_data_dirs.c
new file mode 100644
index 0000000000..c24dce75db
--- /dev/null
+++ b/legacy/efreet/src/bin/ef_data_dirs.c
@@ -0,0 +1,297 @@
1#include "Efreet.h"
2#include <stdio.h>
3#include <string.h>
4#include <stdlib.h>
5
6int
7ef_cb_efreet_data_home(void)
8{
9 const char *tmp;
10 int ret = 1;
11
12 putenv("XDG_DATA_HOME=/var/tmp");
13
14 tmp = efreet_data_home_get();
15 if (strcmp(tmp, "/var/tmp"))
16 {
17 printf("efreet_data_home_get() returned incorrect "
18 "value on XDG_DATA_HOME=/var/tmp\n");
19 ret = 0;
20 }
21
22 /* reset efreet here so we can set a new home dir */
23 efreet_shutdown();
24 efreet_init();
25
26 putenv("XDG_DATA_HOME=");
27 putenv("HOME=/home/tmp");
28
29 tmp = efreet_data_home_get();
30 if (strcmp(tmp, "/home/tmp/.local/share"))
31 {
32 printf("efreet_data_home_get() returned incorrect "
33 "value on blank XDG_DATA_HOME\n");
34 ret = 0;
35 }
36
37 /* reset efreet here so we can set a new home dir */
38 efreet_shutdown();
39 efreet_init();
40
41 putenv("XDG_DATA_HOME=");
42 putenv("HOME=");
43
44 tmp = efreet_data_home_get();
45 if (strcmp(tmp, "/tmp/.local/share"))
46 {
47 printf("efreet_data_home_get() returned incorrect "
48 "value (%s) on blank XDG_DATA_HOME and blank HOME\n", tmp);
49 ret = 0;
50 }
51
52 return ret;
53}
54
55int
56ef_cb_efreet_config_home(void)
57{
58 const char *tmp;
59 int ret = 1;
60
61 putenv("XDG_CONFIG_HOME=/var/tmp");
62
63 tmp = efreet_config_home_get();
64 if (strcmp(tmp, "/var/tmp"))
65 {
66 printf("efreet_config_home_get() returned incorrect "
67 "value on XDG_CONFIG_HOME=/var/tmp\n");
68 ret = 0;
69 }
70
71 /* reset efreet here so we can set a new home dir */
72 efreet_shutdown();
73 efreet_init();
74
75 putenv("XDG_CONFIG_HOME=");
76 putenv("HOME=/home/tmp");
77
78 tmp = efreet_config_home_get();
79 if (strcmp(tmp, "/home/tmp/.config"))
80 {
81 printf("efreet_config_home_get() returned incorrect "
82 "value on blank XDG_CONFIG_HOME\n");
83 ret = 0;
84 }
85
86 /* reset efreet here so we can set a new home dir */
87 efreet_shutdown();
88 efreet_init();
89
90 putenv("XDG_CONFIG_HOME=");
91 putenv("HOME=");
92
93 tmp = efreet_config_home_get();
94 if (strcmp(tmp, "/tmp/.config"))
95 {
96 printf("efreet_config_home_get() returned incorrect "
97 "value (%s) on blank XDG_CONFIG_HOME and blank HOME\n", tmp);
98 ret = 0;
99 }
100
101 return ret;
102}
103
104int
105ef_cb_efreet_cache_home(void)
106{
107 const char *tmp;
108 int ret = 1;
109
110 putenv("XDG_CACHE_HOME=/var/tmp");
111
112 tmp = efreet_cache_home_get();
113 if (strcmp(tmp, "/var/tmp"))
114 {
115 printf("efreet_cache_home_get() returned incorrect "
116 "value on XDG_CACHE_HOME=/var/tmp\n");
117 ret = 0;
118 }
119
120 /* reset efreet here so we can set a new home dir */
121 efreet_shutdown();
122 efreet_init();
123
124 putenv("XDG_CACHE_HOME=");
125 putenv("HOME=/home/tmp");
126
127 tmp = efreet_cache_home_get();
128 if (strcmp(tmp, "/home/tmp/.cache"))
129 {
130 printf("efreet_cache_home_get() returned incorrect "
131 "value on blank XDG_CACHE_HOME\n");
132 ret = 0;
133 }
134
135 /* reset efreet here so we can set a new home dir */
136 efreet_shutdown();
137 efreet_init();
138
139 putenv("XDG_CACHE_HOME=");
140 putenv("HOME=");
141
142 tmp = efreet_cache_home_get();
143 if (strcmp(tmp, "/tmp/.cache"))
144 {
145 printf("efreet_cache_home_get() returned incorrect "
146 "value (%s) on blank XDG_CACHE_HOME and blank HOME\n", tmp);
147 ret = 0;
148 }
149
150 return ret;
151}
152
153int
154ef_cb_efreet_data_dirs(void)
155{
156 Ecore_List *tmp;
157 int ret = 1, i;
158 char dirs[128], *val;
159 char *vals[] = {"/var/tmp/a", "/tmp/b", "/usr/local/share", "/etc", NULL};
160 char *def_vals[] = {"/usr/local/share", "/usr/share", NULL};
161
162 dirs[0] = '\0';
163 strcat(dirs, "XDG_DATA_DIRS=");
164 for (i = 0; vals[i] != NULL; i++)
165 {
166 if (i > 0) strcat(dirs, ":");
167 strcat(dirs, vals[i]);
168 }
169
170 putenv(dirs);
171
172 i = 0;
173 tmp = efreet_data_dirs_get();
174 ecore_list_goto_first(tmp);
175 while ((val = ecore_list_next(tmp)))
176 {
177 if (vals[i] == NULL)
178 {
179 printf("efreet_data_dirs_get() returned more values then it "
180 "should have given %s as input\n", dirs);
181 ret = 0;
182 break;
183 }
184
185 if (strcmp(val, vals[i]))
186 {
187 printf("efreet_data_dirs_get() returned incorrect value (%s) when "
188 "%s set\n", val, dirs);
189 ret = 0;
190 }
191
192 i++;
193 }
194
195 efreet_shutdown();
196 efreet_init();
197
198 putenv("XDG_DATA_DIRS=");
199
200 i = 0;
201 tmp = efreet_data_dirs_get();
202 ecore_list_goto_first(tmp);
203 while ((val = ecore_list_next(tmp)))
204 {
205 if (def_vals[i] == NULL)
206 {
207 printf("efreet_data_dirs_get() returned more values then it "
208 "should have given %s as input\n", dirs);
209 ret = 0;
210 break;
211 }
212
213 if (strcmp(val, def_vals[i]))
214 {
215 printf("efreet_data_dirs_get() returned incorrect value (%s) when "
216 "XDG_DATA_DIRS= is set\n", val);
217 ret = 0;
218 }
219
220 i++;
221 }
222 return ret;
223}
224
225int
226ef_cb_efreet_config_dirs(void)
227{
228 Ecore_List *tmp;
229 int ret = 1, i;
230 char dirs[128], *val;
231 char *vals[] = {"/var/tmp/a", "/tmp/b", "/usr/local/share", "/etc", NULL};
232 char *def_vals[] = {"/etc/xdg", NULL};
233
234 dirs[0] = '\0';
235
236 strcat(dirs, "XDG_CONFIG_DIRS=");
237 for (i = 0; vals[i] != NULL; i++)
238 {
239 if (i > 0) strcat(dirs, ":");
240 strcat(dirs, vals[i]);
241 }
242
243 putenv(dirs);
244
245 i = 0;
246 tmp = efreet_config_dirs_get();
247 ecore_list_goto_first(tmp);
248 while ((val = ecore_list_next(tmp)))
249 {
250 if (vals[i] == NULL)
251 {
252 printf("efreet_config_dirs_get() returned more values then it "
253 "should have given %s as input\n", dirs);
254 ret = 0;
255 break;
256 }
257
258 if (strcmp(val, vals[i]))
259 {
260 printf("efreet_config_dirs_get() returned incorrect value (%s) when "
261 "%s set\n", val, dirs);
262 ret = 0;
263 }
264
265 i++;
266 }
267
268 efreet_shutdown();
269 efreet_init();
270
271 putenv("XDG_CONFIG_DIRS=");
272
273 i = 0;
274 tmp = efreet_config_dirs_get();
275 ecore_list_goto_first(tmp);
276 while ((val = ecore_list_next(tmp)))
277 {
278 if (def_vals[i] == NULL)
279 {
280 printf("efreet_config_dirs_get() returned more values then it "
281 "should have given %s as input\n", dirs);
282 ret = 0;
283 break;
284 }
285
286 if (strcmp(val, def_vals[i]))
287 {
288 printf("efreet_config_dirs_get() returned incorrect value (%s) when "
289 "XDG_CONFIG_DIRS= is set\n", val);
290 ret = 0;
291 }
292
293 i++;
294 }
295 return ret;
296}
297
diff --git a/legacy/efreet/src/bin/ef_desktop.c b/legacy/efreet/src/bin/ef_desktop.c
new file mode 100644
index 0000000000..33e783d0b3
--- /dev/null
+++ b/legacy/efreet/src/bin/ef_desktop.c
@@ -0,0 +1,346 @@
1#include "Efreet.h"
2#include "config.h"
3#include <stdio.h>
4#include <string.h>
5#include <stdlib.h>
6#include <unistd.h>
7#include <limits.h>
8#include "../lib/efreet_private.h"
9
10static void _cb_command(void *data, Efreet_Desktop *desktop, char *exec, int remaining);
11
12
13int
14ef_cb_desktop_parse(void)
15{
16 Efreet_Desktop *desktop;
17 int ret = 1;
18
19 desktop = efreet_desktop_get(PACKAGE_DATA_DIR"/efreet/test/test.desktop");
20
21 if (!desktop)
22 {
23 printf("No desktop found.\n");
24 return 0;
25 }
26
27 if (!desktop->name || strcmp(desktop->name, "Efreet Test Application"))
28 {
29 printf("Invalid Name\n");
30 ret = 0;
31 }
32
33 if (!desktop->generic_name ||
34 strcmp(desktop->generic_name, "Test Application"))
35 {
36 printf("Incorrent GenericName\n");
37 ret = 0;
38 }
39
40 if (!desktop->exec || strcmp(desktop->exec, "efreet_test %F %i"))
41 {
42 printf("Incorrect Exec (%s)\n", (desktop->exec ? desktop->exec : "(null)"));
43 ret = 0;
44 }
45
46 if (desktop->categories)
47 {
48 const char *categories[] = {"Test", "Enlightenment"};
49 const char *cat;
50 int num_categories = 2, i = 0;
51
52 ecore_list_goto_first(desktop->categories);
53 while ((cat = ecore_list_next(desktop->categories)))
54 {
55 if (i >= num_categories)
56 {
57 printf("Too many categories found.\n");
58 ret = 0;
59 break;
60 }
61
62 if (!cat || !categories[i] || strcmp(cat, categories[i]))
63 {
64 printf("Expected category %s, found %s\n", categories[i], cat);
65 ret = 0;
66 }
67 i++;
68 }
69 }
70 else ret = 0;
71
72 return ret;
73}
74
75#if 0
76int
77ef_cb_desktop_file_id(void)
78{
79 Efreet_Desktop *desktop;
80 int ret = 1;
81
82 desktop = efreet_desktop_get(PACKAGE_DATA_DIR"/efreet/test/test.desktop");
83 if (desktop)
84 {
85 const char *id;
86 int i = 0;
87
88 struct {
89 char *dir;
90 int legacy;
91 char *prefix;
92 char *expected;
93 } tests[] = {
94 {PACKAGE_DATA_DIR"/efreet/test/", 0, NULL, "test.desktop"},
95 {PACKAGE_DATA_DIR"/efreet/", 0, NULL, "test-test.desktop"},
96 {PACKAGE_DATA_DIR"/efreet/", 1, NULL, "test.desktop"},
97 {PACKAGE_DATA_DIR"/efreet/", 1, "prefix", "prefix-test.desktop"},
98 {NULL, 0, NULL, NULL}
99 };
100
101 for (i = 0; tests[i].dir != NULL; i++)
102 {
103 id = efreet_desktop_id_get(desktop,
104 tests[i].dir,
105 tests[i].legacy,
106 tests[i].prefix);
107 if (!id || strcmp(id, tests[i].expected))
108 {
109 printf("Expecting id: %s, got: %s\n", tests[i].expected, id);
110 ret = 0;
111 }
112 if (id) ecore_string_release(id);
113 }
114 }
115 else
116 ret = 0;
117
118 return ret;
119}
120#endif
121
122int
123ef_cb_desktop_save(void)
124{
125 Efreet_Desktop *desktop;
126
127 printf("\n");
128 desktop = efreet_desktop_get(PACKAGE_DATA_DIR"/efreet/test/test.desktop");
129 printf("save data: %d\n", efreet_desktop_save(desktop));
130
131 desktop = efreet_desktop_empty_new("/tmp/test.desktop");
132 desktop->name = strdup("Efreet Test Application");
133 desktop->type = EFREET_DESKTOP_TYPE_APPLICATION;
134 desktop->generic_name = strdup("Test Application");
135 desktop->exec = strdup("efreet_test");
136 desktop->categories = ecore_list_new();
137 ecore_list_set_free_cb(desktop->categories, ECORE_FREE_CB(free));
138 ecore_list_append(desktop->categories, strdup("Test"));
139 ecore_list_append(desktop->categories, strdup("Enlightenment"));
140 printf("save test: %d\n", efreet_desktop_save(desktop));
141 unlink("/tmp/test.desktop");
142#if 0
143 /* After saving a .desktop, it should be in the cache. This should then
144 * be destroyed with it. */
145 ecore_list_destroy(desktop->categories);
146 desktop->categories = NULL;
147#endif
148
149 return 1;
150}
151
152typedef struct
153{
154 Ecore_List *expected;
155 int error;
156 char type;
157} Test_Info;
158
159int
160ef_cb_desktop_command_get(void)
161{
162 Efreet_Desktop *desktop;
163 Ecore_List *files, *expected;
164 char olddir[PATH_MAX];
165 Test_Info *info;
166 int ret;
167
168 getcwd(olddir, PATH_MAX);
169 chdir("/");
170
171 printf("\n");
172 desktop = efreet_desktop_empty_new("test.desktop");
173
174 desktop->name = strdup("App Name");
175 desktop->icon = strdup("icon.png");
176
177 files = ecore_list_new();
178 ecore_list_append(files, "/tmp/absolute_path");
179 ecore_list_append(files, "relative_path");
180 ecore_list_append(files, "file:///tmp/absolute_uri");
181 ecore_list_append(files, "file:relative_uri");
182
183 info = NEW(Test_Info, 1);
184 expected = ecore_list_new();
185 info->expected = expected;
186 info->error = 0;
187
188 /* test single full path */
189 info->type = 'f';
190 IF_FREE(desktop->exec);
191 desktop->exec = strdup("app %f");
192 ecore_list_append(expected, "app '/tmp/absolute_path'");
193 ecore_list_append(expected, "app '/relative_path'");
194 ecore_list_append(expected, "app '/tmp/absolute_uri'");
195 ecore_list_append(expected, "app '/relative_uri'");
196
197 ecore_list_goto_first(expected);
198 efreet_desktop_command_get(desktop, files, _cb_command, info);
199 ecore_list_clear(expected);
200
201 /* test single uri */
202 info->type = 'u';
203 IF_FREE(desktop->exec);
204 desktop->exec = strdup("app %u");
205 ecore_list_append(expected, "app 'file:///tmp/absolute_path'");
206 ecore_list_append(expected, "app 'file:///relative_path'");
207 ecore_list_append(expected, "app 'file:///tmp/absolute_uri'");
208 ecore_list_append(expected, "app 'file:///relative_uri'");
209
210 ecore_list_goto_first(expected);
211 efreet_desktop_command_get(desktop, files, _cb_command, info);
212 ecore_list_clear(expected);
213
214 /* test single dir */
215 info->type = 'd';
216 IF_FREE(desktop->exec);
217 desktop->exec = strdup("app %d");
218 ecore_list_append(expected, "app '/tmp'");
219 ecore_list_append(expected, "app '/'");
220 ecore_list_append(expected, "app '/tmp'");
221 ecore_list_append(expected, "app '/'");
222
223 ecore_list_goto_first(expected);
224 efreet_desktop_command_get(desktop, files, _cb_command, info);
225 ecore_list_clear(expected);
226
227
228 /* test single names */
229 info->type = 'n';
230 IF_FREE(desktop->exec);
231 desktop->exec = strdup("app %n");
232 ecore_list_append(expected, "app 'absolute_path'");
233 ecore_list_append(expected, "app 'relative_path'");
234 ecore_list_append(expected, "app 'absolute_uri'");
235 ecore_list_append(expected, "app 'relative_uri'");
236
237 ecore_list_goto_first(expected);
238 efreet_desktop_command_get(desktop, files, _cb_command, info);
239 ecore_list_clear(expected);
240
241 /* test multiple fullpaths */
242 info->type = 'F';
243 IF_FREE(desktop->exec);
244 desktop->exec = strdup("app %F");
245 ecore_list_append(expected, "app '/tmp/absolute_path' '/relative_path' '/tmp/absolute_uri' '/relative_uri'");
246
247 ecore_list_goto_first(expected);
248 efreet_desktop_command_get(desktop, files, _cb_command, info);
249 ecore_list_clear(expected);
250
251 /* test multiple URIs */
252 info->type = 'U';
253 IF_FREE(desktop->exec);
254 desktop->exec = strdup("app %U");
255 ecore_list_append(expected, "app 'file:///tmp/absolute_path' 'file:///relative_path' 'file:///tmp/absolute_uri' 'file:///relative_uri'");
256
257 ecore_list_goto_first(expected);
258 efreet_desktop_command_get(desktop, files, _cb_command, info);
259 ecore_list_clear(expected);
260
261 /* test multiple dirs */
262 info->type = 'D';
263 IF_FREE(desktop->exec);
264 desktop->exec = strdup("app %D");
265 ecore_list_append(expected, "app '/tmp' '/' '/tmp' '/'");
266
267 ecore_list_goto_first(expected);
268 efreet_desktop_command_get(desktop, files, _cb_command, info);
269 ecore_list_clear(expected);
270
271 /* test multiple names */
272 info->type = 'N';
273 IF_FREE(desktop->exec);
274 desktop->exec = strdup("app %N");
275 ecore_list_append(expected, "app 'absolute_path' 'relative_path' 'absolute_uri' 'relative_uri'");
276
277 ecore_list_goto_first(expected);
278 efreet_desktop_command_get(desktop, files, _cb_command, info);
279 ecore_list_clear(expected);
280
281 /* test icon appending */
282 info->type = 'i';
283 IF_FREE(desktop->exec);
284 desktop->exec = strdup("app %i");
285 ecore_list_append(expected, "app --icon 'icon.png'");
286
287 ecore_list_goto_first(expected);
288 efreet_desktop_command_get(desktop, NULL, _cb_command, info);
289 ecore_list_clear(expected);
290
291 /* test app name */
292 info->type = 'c';
293 IF_FREE(desktop->exec);
294 desktop->exec = strdup("app %c");
295 ecore_list_append(expected, "app 'App Name'");
296
297 ecore_list_goto_first(expected);
298 efreet_desktop_command_get(desktop, NULL, _cb_command, info);
299 ecore_list_clear(expected);
300
301 /* test desktop path */
302 info->type = 'k';
303 IF_FREE(desktop->exec);
304 desktop->exec = strdup("app %k");
305 ecore_list_append(expected, "app 'test.desktop'");
306
307 ecore_list_goto_first(expected);
308 efreet_desktop_command_get(desktop, NULL, _cb_command, info);
309 ecore_list_clear(expected);
310
311 /* clean up */
312 efreet_desktop_free(desktop);
313 ecore_list_destroy(files);
314 ecore_list_destroy(expected);
315
316 ret = info->error > 0 ? 0 : 1;
317 free(info);
318
319 chdir(olddir);
320
321 return ret;
322}
323
324static void
325_cb_command(void *data, Efreet_Desktop *desktop, char *exec, int remaining)
326{
327 Test_Info *info = data;
328 char *expected;
329
330 expected = ecore_list_next(info->expected);
331 if (!expected)
332 {
333 printf(" ERROR: (%%%c) got \"%s\", expected nothing\n", info->type, exec);
334 info->error++;
335 }
336 else
337 {
338 if (strcmp(exec, expected))
339 {
340 printf(" ERROR: (%%%c) got \"%s\", expected \"%s\"\n", info->type, exec, expected);
341 info->error++;
342 }
343 }
344
345 free(exec);
346}
diff --git a/legacy/efreet/src/bin/ef_icon_theme.c b/legacy/efreet/src/bin/ef_icon_theme.c
new file mode 100644
index 0000000000..4ae7542d12
--- /dev/null
+++ b/legacy/efreet/src/bin/ef_icon_theme.c
@@ -0,0 +1,602 @@
1#include "Efreet.h"
2#include "efreet_private.h"
3#include <stdio.h>
4#include <string.h>
5#include <stdlib.h>
6#include <Ecore_File.h>
7
8#ifndef PATH_MAX
9#define PATH_MAX 4096
10#endif
11
12#define SIZE "16x16"
13#define THEME "Tango"
14
15static void ef_icon_theme_themes_find(const char *search_dir,
16 Ecore_Hash *themes);
17static void ef_icons_find(Efreet_Icon_Theme *theme, Ecore_List *themes,
18 Ecore_Hash *icons);
19static void ef_read_dir(const char *dir, Ecore_Hash *icons);
20
21int
22ef_cb_efreet_icon_theme(void)
23{
24 int ret = 1;
25 const char *tmp;
26
27 putenv("HOME=/var/tmp");
28
29 tmp = efreet_icon_dir_get();
30 if (strcmp(tmp, "/var/tmp/.icons"))
31 {
32 printf("efreet_icon_dir_get() returned incorrect "
33 "value on HOME=/var/tmp\n");
34 ret = 0;
35 }
36
37 efreet_shutdown();
38 efreet_init();
39
40 putenv("HOME=");
41
42 tmp = efreet_icon_dir_get();
43 if (strcmp(tmp, "/tmp/.icons"))
44 {
45 printf("efreet_icon_dir_get() returned incorrect "
46 "value on HOME=\n");
47 ret = 0;
48 }
49
50 return ret;
51}
52
53int
54ef_cb_efreet_icon_theme_list(void)
55{
56 int ret = 1;
57 Ecore_List *themes;
58 Ecore_Hash *dirs;
59 Efreet_Icon_Theme *theme;
60 Ecore_List *icon_dirs;
61 const char *dir;
62 char buf[PATH_MAX];
63
64 dirs = ecore_hash_new(ecore_str_hash, ecore_str_compare);
65 ecore_hash_set_free_key(dirs, free);
66
67 icon_dirs = efreet_data_dirs_get();
68 ecore_list_goto_first(icon_dirs);
69
70 ef_icon_theme_themes_find(efreet_icon_dir_get(), dirs);
71 while ((dir = ecore_list_next(icon_dirs)))
72 {
73 snprintf(buf, sizeof(buf), "%s/icons", dir);
74 ef_icon_theme_themes_find(buf, dirs);
75 }
76 ef_icon_theme_themes_find("/usr/share/pixmaps", dirs);
77
78 themes = efreet_icon_theme_list_get();
79 ecore_list_goto_first(themes);
80 while ((theme = ecore_list_next(themes)))
81 {
82 if (ecore_hash_get(dirs, theme->name.internal))
83 ecore_hash_remove(dirs, theme->name.internal);
84 else
85 {
86 printf("efreet_icon_theme_list_get() returned %s which we didn't "
87 "see when scanning the directories.\n", theme->name.internal);
88 ret = 0;
89 }
90 }
91 ecore_list_destroy(themes);
92
93 themes = ecore_hash_keys(dirs);
94 if (ecore_list_nodes(themes) > 0)
95 {
96 char *dir;
97
98 printf("efreet_icon_theme_list_get() missed: ");
99 ecore_list_goto_first(themes);
100 while ((dir = ecore_list_next(themes)))
101 printf("%s ", dir);
102 printf("\n");
103
104 ret = 0;
105 }
106 ecore_list_destroy(themes);
107 ecore_hash_destroy(dirs);
108
109 return ret;
110}
111
112static void
113ef_icon_theme_themes_find(const char *search_dir, Ecore_Hash *themes)
114{
115 Ecore_List *dirs;
116 char *dir;
117
118 if (!search_dir || !themes) return;
119
120 dirs = ecore_file_ls(search_dir);
121 if (!dirs) return;
122
123 while ((dir = ecore_list_remove_first(dirs)))
124 {
125 char p[PATH_MAX];
126
127 /* if we've already added the theme we're done */
128 if (ecore_hash_get(themes, dir))
129 {
130 free(dir);
131 continue;
132 }
133
134 /* if the index.theme file exists we open it and look for the hidden
135 * flag. */
136 snprintf(p, sizeof(p), "%s/%s/index.theme", search_dir, dir);
137 if (ecore_file_exists(p))
138 {
139 Efreet_Ini *ini;
140 char *d;
141 int skip = 0;
142
143 ini = efreet_ini_new(p);
144 efreet_ini_section_set(ini, "Icon Theme");
145
146 if (efreet_ini_boolean_get(ini, "Hidden")) skip = 1;
147 efreet_ini_free(ini);
148
149 if (!skip)
150 {
151 d = strdup(dir);
152 ecore_hash_set(themes, d, d);
153 }
154 }
155 free(dir);
156 }
157 ecore_list_destroy(dirs);
158}
159
160const char *icons[] =
161{
162 "address-book-new",
163 "application-exit",
164 "appointment-new",
165 "contact-new",
166 "dialog-apply",
167 "dialog-cancel",
168 "dialog-close",
169 "dialog-ok",
170 "document-new",
171 "document-open",
172 "document-open-recent",
173 "document-page-setup",
174 "document-print",
175 "document-print-preview",
176 "document-properties",
177 "document-revert",
178 "document-save",
179 "document-save-as",
180 "edit-copy",
181 "edit-cut",
182 "edit-delete",
183 "edit-find",
184 "edit-find-replace",
185 "edit-paste",
186 "edit-redo",
187 "edit-select-all",
188 "edit-undo",
189 "format-indent-less",
190 "format-indent-more",
191 "format-justify-center",
192 "format-justify-fill",
193 "format-justify-left",
194 "format-justify-right",
195 "format-text-direction-ltr",
196 "format-text-direction-rtl",
197 "format-text-bold",
198 "format-text-italic",
199 "format-text-underline",
200 "format-text-strikethrough",
201 "go-bottom",
202 "go-down",
203 "go-first",
204 "go-home",
205 "go-jump",
206 "go-last",
207 "go-next",
208 "go-previous",
209 "go-top",
210 "go-up",
211 "help-about",
212 "help-contents",
213 "help-faq",
214 "insert-image",
215 "insert-link",
216 "insert-object",
217 "insert-text",
218 "list-add",
219 "list-remove",
220 "mail-forward",
221 "mail-mark-important",
222 "mail-mark-junk",
223 "mail-mark-notjunk",
224 "mail-mark-read",
225 "mail-mark-unread",
226 "mail-message-new",
227 "mail-reply-all",
228 "mail-reply-sender",
229 "mail-send-receive",
230 "media-eject",
231 "media-playback-pause",
232 "media-playback-start",
233 "media-playback-stop",
234 "media-record",
235 "media-seek-backward",
236 "media-seek-forward",
237 "media-skip-backward",
238 "media-skip-forward",
239 "system-lock-screen",
240 "system-log-out",
241 "system-run",
242 "system-search",
243 "system-search",
244 "tools-check-spelling",
245 "view-fullscreen",
246 "view-refresh",
247 "view-sort-ascending",
248 "view-sort-descending",
249 "window-close",
250 "window-new",
251 "zoom-best-fit",
252 "zoom-in",
253 "zoom-original",
254 "zoom-out",
255 "process-working",
256 "accessories-calculator",
257 "accessories-character-map",
258 "accessories-dictionary",
259 "accessories-text-editor",
260 "help-browser",
261 "multimedia-volume-control",
262 "preferences-desktop-accessibility",
263 "preferences-desktop-font",
264 "preferences-desktop-keyboard",
265 "preferences-desktop-locale",
266 "preferences-desktop-multimedia",
267 "preferences-desktop-screensaver",
268 "preferences-desktop-theme",
269 "preferences-desktop-wallpaper",
270 "system-file-manager",
271 "system-software-update",
272 "utilities-terminal",
273 "applications-accessories",
274 "applications-development",
275 "applications-games",
276 "applications-graphics",
277 "applications-internet",
278 "applications-multimedia",
279 "applications-office",
280 "applications-other",
281 "applications-system",
282 "applications-utilities",
283 "preferences-desktop",
284 "preferences-desktop-accessibility",
285 "preferences-desktop-peripherals",
286 "preferences-desktop-personal",
287 "preferences-other",
288 "preferences-system",
289 "preferences-system-network",
290 "system-help",
291 "audio-card",
292 "audio-input-microphone",
293 "battery",
294 "camera-photo",
295 "camera-video",
296 "computer",
297 "drive-cdrom",
298 "drive-harddisk",
299 "drive-removable-media",
300 "input-gaming",
301 "input-keyboard",
302 "input-mouse",
303 "media-cdrom",
304 "media-floppy",
305 "multimedia-player",
306 "multimedia-player",
307 "network-wired",
308 "network-wireless",
309 "printer",
310 "emblem-default",
311 "emblem-documents",
312 "emblem-downloads",
313 "emblem-favorite",
314 "emblem-important",
315 "emblem-mail",
316 "emblem-photos",
317 "emblem-readonly",
318 "emblem-shared",
319 "emblem-symbolic-link",
320 "emblem-synchronized",
321 "emblem-system",
322 "emblem-unreadable",
323 "face-angel",
324 "face-crying",
325 "face-devil-grin",
326 "face-devil-sad",
327 "face-glasses",
328 "face-kiss",
329 "face-monkey",
330 "face-plain",
331 "face-sad",
332 "face-smile",
333 "face-smile-big",
334 "face-smirk",
335 "face-surprise",
336 "face-wink",
337 "application-x-executable",
338 "audio-x-generic",
339 "font-x-generic",
340 "image-x-generic",
341 "package-x-generic",
342 "text-html",
343 "text-x-generic",
344 "text-x-generic-template",
345 "text-x-script",
346 "video-x-generic",
347 "x-office-address-book",
348 "x-office-calendar",
349 "x-office-document",
350 "x-office-presentation",
351 "x-office-spreadsheet",
352 "folder",
353 "folder-remote",
354 "network-server",
355 "network-workgroup",
356 "start-here",
357 "user-desktop",
358 "user-home",
359 "user-trash",
360 "appointment-missed",
361 "appointment-soon",
362 "audio-volume-high",
363 "audio-volume-low",
364 "audio-volume-medium",
365 "audio-volume-muted",
366 "battery-caution",
367 "battery-low",
368 "dialog-error",
369 "dialog-information",
370 "dialog-password",
371 "dialog-question",
372 "dialog-warning",
373 "folder-drag-accept",
374 "folder-open",
375 "folder-visiting",
376 "image-loading",
377 "image-missing",
378 "mail-attachment",
379 "mail-unread",
380 "mail-read",
381 "mail-replied",
382 "mail-signed",
383 "mail-signed-verified",
384 "media-playlist-repeat",
385 "media-playlist-shuffle",
386 "network-error",
387 "network-idle",
388 "network-offline",
389 "network-receive",
390 "network-transmit",
391 "network-transmit-receive",
392 "printer-error",
393 "printer-printing",
394 "software-update-available",
395 "software-update-urgent",
396 "sync-error",
397 "sync-synchronizing",
398 "task-due",
399 "task-passed-due",
400 "user-away",
401 "user-idle",
402 "user-offline",
403 "user-online",
404 "user-trash-full",
405 "weather-clear",
406 "weather-clear-night",
407 "weather-few-clouds",
408 "weather-few-clouds-night",
409 "weather-fog",
410 "weather-overcast",
411 "weather-severe-alert",
412 "weather-showers",
413 "weather-showers-scattered",
414 "weather-snow",
415 "weather-storm",
416 NULL
417};
418
419int
420ef_cb_efreet_icon_match(void)
421{
422 int i, ret = 1;
423 Ecore_Hash *icon_hash;
424 Efreet_Icon_Theme *theme;
425 Ecore_List *themes;
426
427 themes = efreet_icon_theme_list_get();
428 ecore_list_goto_first(themes);
429 while ((theme = ecore_list_next(themes)))
430 {
431 if (!strcmp(theme->name.internal, THEME))
432 break;
433 }
434
435 if (!theme)
436 {
437 printf("Theme not installed, SKIPPED.\n");
438 ecore_list_destroy(themes);
439 return 1;
440 }
441
442 icon_hash = ecore_hash_new(ecore_str_hash, ecore_str_compare);
443 ecore_hash_set_free_key(icon_hash, free);
444 ecore_hash_set_free_value(icon_hash, free);
445
446 ef_icons_find(theme, themes, icon_hash);
447 ecore_list_destroy(themes);
448
449 for (i = 0; icons[i] != NULL; i++)
450 {
451 const char *path;
452 char *t, *s;
453
454 path = efreet_icon_path_find(THEME, icons[i], SIZE);
455
456 if (!path)
457 {
458 if (ecore_hash_get(icon_hash, icons[i]))
459 {
460 printf("NOT FOUND %s\n", icons[i]);
461 ret = 0;
462 }
463 continue;
464 }
465
466 t = strdup(path);
467 s = strrchr(t, '.');
468 if (s) *s = '\0';
469 s = strrchr(t, '/');
470 if (s) s++;
471
472 if (s && strcmp(s, icons[i]))
473 {
474 printf("Name mismatch name (%s) vs ef (%s)\n", icons[i], s);
475 ret = 0;
476 }
477 free(t);
478 }
479 ecore_hash_destroy(icon_hash);
480
481 return ret;
482}
483
484static void
485ef_icons_find(Efreet_Icon_Theme *theme, Ecore_List *themes, Ecore_Hash *icons)
486{
487 char path[PATH_MAX];
488
489 if (!theme || !icons) return;
490
491 if (theme->paths.count == 1)
492 {
493 Efreet_Icon_Theme_Directory *dir;
494
495 ecore_list_goto_first(theme->directories);
496 while ((dir = ecore_list_next(theme->directories)))
497 {
498 if (theme->paths.count > 1)
499 {
500 Ecore_List *list;
501 char *tmp;
502
503 list = theme->paths.path;
504 ecore_list_goto_first(list);
505 while ((tmp = ecore_list_next(list)))
506 {
507 snprintf(path, sizeof(path), "%s/%s/", tmp, dir->name);
508 ef_read_dir(path, icons);
509 }
510 }
511 else if (theme->paths.count == 1)
512 {
513 snprintf(path, sizeof(path), "%s/%s/", (char *)theme->paths.path, dir->name);
514 ef_read_dir(path, icons);
515 }
516 }
517 }
518 else if (theme->paths.count > 1)
519 {
520 const char *theme_path;
521
522 ecore_list_goto_first(theme->paths.path);
523 while ((theme_path = ecore_list_next(theme->paths.path)))
524 {
525 Efreet_Icon_Theme_Directory *dir;
526
527 ecore_list_goto_first(theme->directories);
528 while ((dir = ecore_list_next(theme->directories)))
529 {
530 snprintf(path, sizeof(path), "%s/%s/", theme_path, dir->name);
531 ef_read_dir(path, icons);
532 }
533 }
534 }
535
536 if (theme->inherits)
537 {
538 Efreet_Icon_Theme *parent_theme;
539 char *parent;
540
541 ecore_list_goto_first(theme->inherits);
542 while ((parent = ecore_list_next(theme->inherits)))
543 {
544 ecore_list_goto_first(themes);
545 while ((parent_theme = ecore_list_next(themes)))
546 {
547 if (!strcmp(parent_theme->name.internal, parent))
548 ef_icons_find(parent_theme, themes, icons);
549 }
550 }
551 }
552 else
553 {
554 Efreet_Icon_Theme *parent_theme;
555
556 ecore_list_goto_first(themes);
557 while ((parent_theme = ecore_list_next(themes)))
558 {
559 if (!strcmp(parent_theme->name.internal, "hicolor"))
560 ef_icons_find(parent_theme, themes, icons);
561 }
562 }
563
564 ef_read_dir("/usr/share/pixmaps", icons);
565}
566
567static void
568ef_read_dir(const char *dir, Ecore_Hash *icons)
569{
570 Ecore_List *files;
571 char *file;
572
573 if (!dir || !icons) return;
574
575 files = ecore_file_ls(dir);
576 if (!files) return;
577
578 while ((file = ecore_list_remove_first(files)))
579 {
580 char *p;
581
582 p = strrchr(file, '.');
583 if (!p)
584 {
585 FREE(file);
586 continue;
587 }
588
589 if (!strcmp(p, ".png") || !strcmp(p, ".xpm"))
590 {
591 *p = '\0';
592
593 p = strrchr(file, '/');
594 if (p) p++;
595 if (p) ecore_hash_set(icons, strdup(p), strdup(p));
596 }
597
598 FREE(file);
599 }
600 ecore_list_destroy(files);
601}
602
diff --git a/legacy/efreet/src/bin/ef_ini.c b/legacy/efreet/src/bin/ef_ini.c
new file mode 100644
index 0000000000..7736f930aa
--- /dev/null
+++ b/legacy/efreet/src/bin/ef_ini.c
@@ -0,0 +1,157 @@
1#include "Efreet.h"
2#include "efreet_private.h"
3#include "config.h"
4#include <stdio.h>
5#include <string.h>
6
7int
8ef_cb_ini_parse(void)
9{
10 int ret = 1;
11 Efreet_Ini *ini;
12
13 putenv("LC_ALL=en_US");
14
15 ini = efreet_ini_new(PACKAGE_DATA_DIR"/efreet/test/test.ini");
16 if (!ini)
17 {
18 printf("efreet_ini_parse() Failed to initialize Efreet_Ini\n");
19 return 0;
20 }
21
22 if (efreet_ini_section_set(ini, "contact"))
23 {
24 const char *val;
25 int ival;
26 unsigned int bval;
27
28 val = efreet_ini_string_get(ini, "Name");
29 if (!val || strcmp(val, "Foo Bar"))
30 {
31 printf("efreet_ini_string_get() Name parsed incorrectly\n");
32 ret = 0;
33 }
34
35 val = efreet_ini_localestring_get(ini, "Name");
36 if (!val || strcmp(val, "English Foo Bar"))
37 {
38 printf("efreet_ini_localestring_get() Name parsed incorrectly\n");
39 ret = 0;
40 }
41
42 val = efreet_ini_string_get(ini, "Email");
43 if (!val || strcmp(val, "foo@bar.com"))
44 {
45 printf("efreet_ini_string_get() Email parsed incorrectly\n");
46 ret = 0;
47 }
48
49 val = efreet_ini_localestring_get(ini, "Email");
50 if (!val || strcmp(val, "foo@bar.com"))
51 {
52 printf("efreet_ini_localestring_get() Email parsed incorrectly\n");
53 ret = 0;
54 }
55
56 ival = efreet_ini_int_get(ini, "Age");
57 if (ival != 30)
58 {
59 printf("efreet_ini_int_get() Age parsed incorrectly\n");
60 ret = 0;
61 }
62
63 bval = efreet_ini_boolean_get(ini, "TrueBoolean");
64 if (!bval)
65 {
66 printf("efreet_ini_boolean_get() TrueBoolean parsed incorrectly\n");
67 ret = 0;
68 }
69
70 bval = efreet_ini_boolean_get(ini, "FalseBoolean");
71 if (bval)
72 {
73 printf("efreet_ini_boolean_get() FalseBoolean parsed incorrectly\n");
74 ret = 0;
75 }
76
77 bval = efreet_ini_boolean_get(ini, "InvalidBoolean");
78 if (bval)
79 {
80 printf("efreet_ini_boolean_get() InvalidBoolean parsed incorrectly\n");
81 ret = 0;
82 }
83
84 val = efreet_ini_string_get(ini, "Escaped");
85 if (!val || strcmp(val, "line1\nline2\r\nline3\ttabbed \\ with a backslash and spaces"))
86 {
87 printf("efreet_ini_unescape() improperly unescaped value\n");
88 ret = 0;
89 }
90 }
91 else
92 {
93 printf("efreet_ini_section_set() Failed to set 'contact' section\n");
94 ret = 0;
95 }
96
97 efreet_ini_free(ini);
98
99 return ret;
100}
101
102int
103ef_cb_ini_long_line(void)
104{
105 Efreet_Ini *ini;
106 int ret = 1;
107
108 struct
109 {
110 char *key;
111 int len;
112 } tests[] = {
113 {"key", 5099},
114 {"key2", 5099},
115 {NULL, 0}
116 };
117
118 ini = efreet_ini_new(PACKAGE_DATA_DIR"/efreet/test/long.ini");
119 if (!ini)
120 {
121 printf("Ini failed to parse.\n");
122 ret = 0;
123 }
124
125 if (ret) ret = efreet_ini_section_set(ini, "section");
126 if (ret)
127 {
128 const char *val;
129 int i, len;
130
131 for (i = 0; tests[i].key; i++)
132 {
133 val = efreet_ini_string_get(ini, tests[i].key);
134 if (val)
135 {
136 len = strlen(val);
137 if (len != tests[i].len)
138 {
139 printf("Invalid long line parsing. Value length: %d (expected %d)\n", len, tests[i].len);
140 ret = 0;
141 }
142 }
143 else
144 {
145 printf("Key missing: %s.", tests[i].key);
146 ret = 0;
147 }
148 }
149 }
150 else
151 {
152 printf("Section missing: 'section'.");
153 }
154
155 if (ini) efreet_ini_free(ini);
156 return ret;