forked from enlightenment/efl
put again efreet tests in the source tree
SVN revision: 56197
This commit is contained in:
parent
da5549086a
commit
2a40bd2c7c
|
@ -34,10 +34,58 @@ efreet.pc.in \
|
||||||
efreet-mime.pc.in \
|
efreet-mime.pc.in \
|
||||||
efreet.spec.in \
|
efreet.spec.in \
|
||||||
efreet.spec \
|
efreet.spec \
|
||||||
|
m4/efl_coverage.m4\
|
||||||
|
m4/efl_tests.m4\
|
||||||
README
|
README
|
||||||
|
|
||||||
.PHONY: doc
|
.PHONY: doc coverage
|
||||||
|
|
||||||
doc:
|
doc:
|
||||||
@echo "entering doc/"
|
@echo "entering doc/"
|
||||||
make -C doc doc
|
make -C doc doc
|
||||||
|
|
||||||
|
# Unit tests
|
||||||
|
|
||||||
|
if EFL_ENABLE_TESTS
|
||||||
|
|
||||||
|
check-local:
|
||||||
|
@./src/tests/efreet_suite
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
check-local:
|
||||||
|
@echo "reconfigure with --enable-tests"
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Coverage report
|
||||||
|
|
||||||
|
if EFL_ENABLE_COVERAGE
|
||||||
|
lcov-reset:
|
||||||
|
@rm -rf coverage
|
||||||
|
@find . -name "*.gcda" -exec rm {} \;
|
||||||
|
@lcov --directory . --zerocounters
|
||||||
|
|
||||||
|
lcov-report:
|
||||||
|
@mkdir coverage
|
||||||
|
@lcov --compat-libtool --directory $(top_srcdir)/src --capture --output-file coverage/coverage.info
|
||||||
|
@lcov -l coverage/coverage.info | grep -v "`cd $(top_srcdir) && pwd`" | cut -d: -f1 > coverage/remove
|
||||||
|
@lcov -r coverage/coverage.info `cat coverage/remove` > coverage/coverage.cleaned.info
|
||||||
|
@rm coverage/remove
|
||||||
|
@mv coverage/coverage.cleaned.info coverage/coverage.info
|
||||||
|
@genhtml -t "$(PACKAGE_STRING)" -o coverage coverage/coverage.info
|
||||||
|
|
||||||
|
coverage:
|
||||||
|
@make lcov-reset
|
||||||
|
@make check
|
||||||
|
@make lcov-report
|
||||||
|
else
|
||||||
|
lcov-reset:
|
||||||
|
@echo "reconfigure with --enable-coverage"
|
||||||
|
|
||||||
|
lcov-report:
|
||||||
|
@echo "reconfigure with --enable-coverage"
|
||||||
|
|
||||||
|
coverage:
|
||||||
|
@echo "reconfigure with --enable-tests --enable-coverage"
|
||||||
|
endif
|
||||||
|
|
|
@ -219,6 +219,17 @@ AC_ISC_POSIX
|
||||||
AC_FUNC_ALLOCA
|
AC_FUNC_ALLOCA
|
||||||
AC_CHECK_FUNCS(strlcpy)
|
AC_CHECK_FUNCS(strlcpy)
|
||||||
|
|
||||||
|
### Unit tests, coverage
|
||||||
|
|
||||||
|
EFL_CHECK_TESTS([enable_tests="yes"], [enable_tests="no"])
|
||||||
|
|
||||||
|
EFL_CHECK_COVERAGE([${enable_tests}], [enable_coverage="yes"], [enable_coverage="no"])
|
||||||
|
EFREET_CFLAGS="${EFREET_CFLAGS} ${EFL_COVERAGE_CFLAGS}"
|
||||||
|
EFREET_LIBS="${EFREET_LIBS} ${EFL_COVERAGE_LIBS}"
|
||||||
|
if test "x$enable_coverage" = "xyes" ; then
|
||||||
|
EFREET_CFLAGS="${EFREET_CFLAGS} ${EFL_DEBUG_CFLAGS}"
|
||||||
|
fi
|
||||||
|
|
||||||
AC_SUBST(requirement_efreet)
|
AC_SUBST(requirement_efreet)
|
||||||
|
|
||||||
AC_OUTPUT([
|
AC_OUTPUT([
|
||||||
|
@ -232,6 +243,10 @@ doc/Doxyfile
|
||||||
src/Makefile
|
src/Makefile
|
||||||
src/lib/Makefile
|
src/lib/Makefile
|
||||||
src/bin/Makefile
|
src/bin/Makefile
|
||||||
|
src/tests/Makefile
|
||||||
|
src/tests/data/Makefile
|
||||||
|
src/tests/data/sub/Makefile
|
||||||
|
src/tests/compare/Makefile
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
@ -253,6 +268,9 @@ echo " Sloppy.............: ${enable_sloppy_spec}"
|
||||||
echo
|
echo
|
||||||
echo " Icon cache...........: ${enable_icon_cache}"
|
echo " Icon cache...........: ${enable_icon_cache}"
|
||||||
echo
|
echo
|
||||||
|
echo " Tests................: ${enable_tests}"
|
||||||
|
echo " Coverage.............: ${enable_coverage}"
|
||||||
|
echo
|
||||||
echo " Documentation........: ${build_doc}"
|
echo " Documentation........: ${build_doc}"
|
||||||
echo
|
echo
|
||||||
echo "Compilation............: make (or gmake)"
|
echo "Compilation............: make (or gmake)"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
|
|
||||||
SUBDIRS = lib bin
|
SUBDIRS = lib bin tests
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
.deps
|
||||||
|
.libs
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
efreet_spec_test
|
||||||
|
efreet_test
|
||||||
|
efreet_cache_test
|
|
@ -0,0 +1,69 @@
|
||||||
|
|
||||||
|
SUBDIRS = data compare
|
||||||
|
|
||||||
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
|
||||||
|
AM_CPPFLAGS = \
|
||||||
|
-I. \
|
||||||
|
-I$(top_srcdir)/src/lib \
|
||||||
|
-DPACKAGE_BIN_DIR=\"$(bindir)\" \
|
||||||
|
-DPACKAGE_LIB_DIR=\"$(libdir)\" \
|
||||||
|
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
|
||||||
|
@EFREET_CFLAGS@
|
||||||
|
|
||||||
|
bin_PROGRAMS = efreet_test efreet_spec_test efreet_cache_test
|
||||||
|
|
||||||
|
if ICON_CACHE
|
||||||
|
bin_PROGRAMS += efreet_icon_cache_dump
|
||||||
|
endif
|
||||||
|
|
||||||
|
efreet_test_LDADD = $(top_builddir)/src/lib/libefreet.la \
|
||||||
|
$(top_builddir)/src/lib/libefreet_mime.la \
|
||||||
|
@EFREET_LIBS@
|
||||||
|
efreet_test_SOURCES = \
|
||||||
|
ef_test.h \
|
||||||
|
ef_data_dirs.c \
|
||||||
|
ef_icon_theme.c \
|
||||||
|
ef_ini.c \
|
||||||
|
ef_utils.c \
|
||||||
|
ef_desktop.c \
|
||||||
|
ef_menu.c \
|
||||||
|
ef_mime.c \
|
||||||
|
main.c
|
||||||
|
|
||||||
|
if DEFAULT_VISIBILITY
|
||||||
|
efreet_test_SOURCES += \
|
||||||
|
ef_locale.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
efreet_spec_test_LDADD = $(top_builddir)/src/lib/libefreet.la @EINA_LIBS@
|
||||||
|
efreet_spec_test_SOURCES = \
|
||||||
|
efreet_spec_test.c
|
||||||
|
|
||||||
|
efreet_cache_test_LDADD = $(top_builddir)/src/lib/libefreet.la @EFREET_LIBS@
|
||||||
|
efreet_cache_test_SOURCES = \
|
||||||
|
ef_cache.c
|
||||||
|
|
||||||
|
if EFL_ENABLE_TESTS
|
||||||
|
|
||||||
|
check_PROGRAMS = efreet_suite
|
||||||
|
|
||||||
|
efreet_suite_SOURCES = \
|
||||||
|
efreet_suite.c \
|
||||||
|
efreet_test_efreet.c \
|
||||||
|
efreet_test_efreet_cache.c
|
||||||
|
|
||||||
|
efreet_suite_LDADD = @CHECK_LIBS@ $(top_builddir)/src/lib/libefreet.la
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
if ICON_CACHE
|
||||||
|
|
||||||
|
efreet_icon_cache_dump_LDADD = \
|
||||||
|
$(top_builddir)/src/lib/libefreet.la \
|
||||||
|
@EFREET_LIBS@
|
||||||
|
|
||||||
|
efreet_icon_cache_dump_SOURCES = \
|
||||||
|
efreet_icon_cache_dump.c
|
||||||
|
|
||||||
|
endif
|
|
@ -0,0 +1,8 @@
|
||||||
|
.deps
|
||||||
|
.libs
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
||||||
|
compare_results
|
||||||
|
ecore_alloc
|
||||||
|
efreet_alloc
|
||||||
|
efreet_menu_alloc
|
|
@ -0,0 +1,15 @@
|
||||||
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
|
||||||
|
AM_CPPFLAGS = \
|
||||||
|
-I. \
|
||||||
|
-I$(top_srcdir)/src/lib \
|
||||||
|
@EFREET_CFLAGS@
|
||||||
|
|
||||||
|
bin_PROGRAMS = efreet_alloc efreet_menu_alloc
|
||||||
|
|
||||||
|
efreet_menu_alloc_SOURCES = efreet_menu_alloc.c comp.h
|
||||||
|
efreet_menu_alloc_LDADD = $(top_builddir)/src/lib/libefreet.la @EFREET_LIBS@
|
||||||
|
|
||||||
|
efreet_alloc_SOURCES = efreet_alloc.c comp.h
|
||||||
|
efreet_alloc_LDADD = $(top_builddir)/src/lib/libefreet.la @EFREET_LIBS@
|
||||||
|
|
|
@ -0,0 +1,527 @@
|
||||||
|
#ifndef COMP_H
|
||||||
|
#define COMP_H
|
||||||
|
|
||||||
|
#define LOOPS 1000
|
||||||
|
#define THEME "Tango"
|
||||||
|
#define SIZE 16
|
||||||
|
|
||||||
|
#define ADDRESS_BOOK_NEW "address-book-new"
|
||||||
|
#define APPLICATION_EXIT "application-exit"
|
||||||
|
#define APPOINTMENT_NEW "appointment-new"
|
||||||
|
#define CONTACT_NEW "contact-new"
|
||||||
|
#define DIALOG_APPLY "dialog-apply"
|
||||||
|
#define DIALOG_CANCEL "dialog-cancel"
|
||||||
|
#define DIALOG_CLOSE "dialog-close"
|
||||||
|
#define DIALOG_OK "dialog-ok"
|
||||||
|
#define DOCUMENT_NEW "document-new"
|
||||||
|
#define DOCUMENT_OPEN "document-open"
|
||||||
|
#define DOCUMENT_OPEN_RECENT "document-open-recent"
|
||||||
|
#define DOCUMENT_PAGE_SETUP "document-page-setup"
|
||||||
|
#define DOCUMENT_PRINT "document-print"
|
||||||
|
#define DOCUMENT_PRINT_PREVIEW "document-print-preview"
|
||||||
|
#define DOCUMENT_PROPERTIES "document-properties"
|
||||||
|
#define DOCUMENT_REVERT "document-revert"
|
||||||
|
#define DOCUMENT_SAVE "document-save"
|
||||||
|
#define DOCUMENT_SAVE_AS "document-save-as"
|
||||||
|
#define EDIT_COPY "edit-copy"
|
||||||
|
#define EDIT_CUT "edit-cut"
|
||||||
|
#define EDIT_DELETE "edit-delete"
|
||||||
|
#define EDIT_FIND "edit-find"
|
||||||
|
#define EDIT_FIND_REPLACE "edit-find-replace"
|
||||||
|
#define EDIT_PASTE "edit-paste"
|
||||||
|
#define EDIT_REDO "edit-redo"
|
||||||
|
#define EDIT_SELECT_ALL "edit-select-all"
|
||||||
|
#define EDIT_UNDO "edit-undo"
|
||||||
|
#define FORMAT_INDENT_LESS "format-indent-less"
|
||||||
|
#define FORMAT_INDENT_MORE "format-indent-more"
|
||||||
|
#define FORMAT_JUSTIFY_CENTER "format-justify-center"
|
||||||
|
#define FORMAT_JUSTIFY_FILL "format-justify-fill"
|
||||||
|
#define FORMAT_JUSTIFY_LEFT "format-justify-left"
|
||||||
|
#define FORMAT_JUSTIFY_RIGHT "format-justify-right"
|
||||||
|
#define FORMAT_TEXT_DIRECTION_LTR "format-text-direction-ltr"
|
||||||
|
#define FORMAT_TEXT_DIRECTION_RTL "format-text-direction-rtl"
|
||||||
|
#define FORMAT_TEXT_BOLD "format-text-bold"
|
||||||
|
#define FORMAT_TEXT_ITALIC "format-text-italic"
|
||||||
|
#define FORMAT_TEXT_UNDERLINE "format-text-underline"
|
||||||
|
#define FORMAT_TEXT_STRIKETHROUGH "format-text-strikethrough"
|
||||||
|
#define GO_BOTTOM "go-bottom"
|
||||||
|
#define GO_DOWN "go-down"
|
||||||
|
#define GO_FIRST "go-first"
|
||||||
|
#define GO_HOME "go-home"
|
||||||
|
#define GO_JUMP "go-jump"
|
||||||
|
#define GO_LAST "go-last"
|
||||||
|
#define GO_NEXT "go-next"
|
||||||
|
#define GO_PREVIOUS "go-previous"
|
||||||
|
#define GO_TOP "go-top"
|
||||||
|
#define GO_UP "go-up"
|
||||||
|
#define HELP_ABOUT "help-about"
|
||||||
|
#define HELP_CONTENTS "help-contents"
|
||||||
|
#define HELP_FAQ "help-faq"
|
||||||
|
#define INSERT_IMAGE "insert-image"
|
||||||
|
#define INSERT_LINK "insert-link"
|
||||||
|
#define INSERT_OBJECT "insert-object"
|
||||||
|
#define INSERT_TEXT "insert-text"
|
||||||
|
#define LIST_ADD "list-add"
|
||||||
|
#define LIST_REMOVE "list-remove"
|
||||||
|
#define MAIL_FORWARD "mail-forward"
|
||||||
|
#define MAIL_MARK_IMPORTANT "mail-mark-important"
|
||||||
|
#define MAIL_MARK_JUNK "mail-mark-junk"
|
||||||
|
#define MAIL_MARK_NOTJUNK "mail-mark-notjunk"
|
||||||
|
#define MAIL_MARK_READ "mail-mark-read"
|
||||||
|
#define MAIL_MARK_UNREAD "mail-mark-unread"
|
||||||
|
#define MAIL_MESSAGE_NEW "mail-message-new"
|
||||||
|
#define MAIL_REPLY_ALL "mail-reply-all"
|
||||||
|
#define MAIL_REPLY_SENDER "mail-reply-sender"
|
||||||
|
#define MAIL_SEND_RECEIVE "mail-send-receive"
|
||||||
|
#define MEDIA_EJECT "media-eject"
|
||||||
|
#define MEDIA_PLAYBACK_PAUSE "media-playback-pause"
|
||||||
|
#define MEDIA_PLAYBACK_START "media-playback-start"
|
||||||
|
#define MEDIA_PLAYBACK_STOP "media-playback-stop"
|
||||||
|
#define MEDIA_RECORD "media-record"
|
||||||
|
#define MEDIA_SEEK_BACKWARD "media-seek-backward"
|
||||||
|
#define MEDIA_SEEK_FORWARD "media-seek-forward"
|
||||||
|
#define MEDIA_SKIP_BACKWARD "media-skip-backward"
|
||||||
|
#define MEDIA_SKIP_FORWARD "media-skip-forward"
|
||||||
|
#define SYSTEM_LOCK_SCREEN "system-lock-screen"
|
||||||
|
#define SYSTEM_LOG_OUT "system-log-out"
|
||||||
|
#define SYSTEM_RUN "system-run"
|
||||||
|
#define SYSTEM_SEARCH "system-search"
|
||||||
|
#define TOOLS_CHECK_SPELLING "tools-check-spelling"
|
||||||
|
#define VIEW_FULLSCREEN "view-fullscreen"
|
||||||
|
#define VIEW_REFRESH "view-refresh"
|
||||||
|
#define VIEW_SORT_ASCENDING "view-sort-ascending"
|
||||||
|
#define VIEW_SORT_DESCENDING "view-sort-descending"
|
||||||
|
#define WINDOW_CLOSE "window-close"
|
||||||
|
#define WINDOW_NEW "window-new"
|
||||||
|
#define ZOOM_BEST_FIT "zoom-best-fit"
|
||||||
|
#define ZOOM_IN "zoom-in"
|
||||||
|
#define ZOOM_ORIGINAL "zoom-original"
|
||||||
|
#define ZOOM_OUT "zoom-out"
|
||||||
|
|
||||||
|
#define PROCESS_WORKING "process-working"
|
||||||
|
|
||||||
|
#define ACCESSORIES_CALCULATOR "accessories-calculator"
|
||||||
|
#define ACCESSORIES_CHARACTER_MAP "accessories-character-map"
|
||||||
|
#define ACCESSORIES_DICTIONARY "accessories-dictionary"
|
||||||
|
#define ACCESSORIES_TEXT_EDITOR "accessories-text-editor"
|
||||||
|
#define HELP_BROWSER "help-browser"
|
||||||
|
#define MULTIMEDIA_VOLUME_CONTROL "multimedia-volume-control"
|
||||||
|
#define PREFERENCES_DESKTOP_ACCESSIBILITY "preferences-desktop-accessibility"
|
||||||
|
#define PREFERENCES_DESKTOP_FONT "preferences-desktop-font"
|
||||||
|
#define PREFERENCES_DESKTOP_KEYBOARD "preferences-desktop-keyboard"
|
||||||
|
#define PREFERENCES_DESKTOP_LOCALE "preferences-desktop-locale"
|
||||||
|
#define PREFERENCES_DESKTOP_MULTIMEDIA "preferences-desktop-multimedia"
|
||||||
|
#define PREFERENCES_DESKTOP_SCREENSAVER "preferences-desktop-screensaver"
|
||||||
|
#define PREFERENCES_DESKTOP_THEME "preferences-desktop-theme"
|
||||||
|
#define PREFERENCES_DESKTOP_WALLPAPER "preferences-desktop-wallpaper"
|
||||||
|
#define SYSTEM_FILE_MANAGER "system-file-manager"
|
||||||
|
#define SYSTEM_SOFTWARE_UPDATE "system-software-update"
|
||||||
|
#define UTILITIES_TERMINAL "utilities-terminal"
|
||||||
|
|
||||||
|
#define APPLICATIONS_ACCESSORIES "applications-accessories"
|
||||||
|
#define APPLICATIONS_DEVELOPMENT "applications-development"
|
||||||
|
#define APPLICATIONS_GAMES "applications-games"
|
||||||
|
#define APPLICATIONS_GRAPHICS "applications-graphics"
|
||||||
|
#define APPLICATIONS_INTERNET "applications-internet"
|
||||||
|
#define APPLICATIONS_MULTIMEDIA "applications-multimedia"
|
||||||
|
#define APPLICATIONS_OFFICE "applications-office"
|
||||||
|
#define APPLICATIONS_OTHER "applications-other"
|
||||||
|
#define APPLICATIONS_SYSTEM "applications-system"
|
||||||
|
#define APPLICATIONS_UTILITIES "applications-utilities"
|
||||||
|
#define PREFERENCES_DESKTOP "preferences-desktop"
|
||||||
|
#define PREFERENCES_DESKTOP_ACCESSIBILITY "preferences-desktop-accessibility"
|
||||||
|
#define PREFERENCES_DESKTOP_PERIPHERALS "preferences-desktop-peripherals"
|
||||||
|
#define PREFERENCES_DESKTOP_PERSONAL "preferences-desktop-personal"
|
||||||
|
#define PREFERENCES_OTHER "preferences-other"
|
||||||
|
#define PREFERENCES_SYSTEM "preferences-system"
|
||||||
|
#define PREFERENCES_SYSTEM_NETWORK "preferences-system-network"
|
||||||
|
#define SYSTEM_HELP "system-help"
|
||||||
|
|
||||||
|
#define AUDIO_CARD "audio-card"
|
||||||
|
#define AUDIO_INPUT_MICROPHONE "audio-input-microphone"
|
||||||
|
#define BATTERY "battery"
|
||||||
|
#define CAMERA_PHOTO "camera-photo"
|
||||||
|
#define CAMERA_VIDEO "camera-video"
|
||||||
|
#define COMPUTER "computer"
|
||||||
|
#define DRIVE_CDROM "drive-cdrom"
|
||||||
|
#define DRIVE_HARDDISK "drive-harddisk"
|
||||||
|
#define DRIVE_REMOVABLE_MEDIA "drive-removable-media"
|
||||||
|
#define INPUT_GAMING "input-gaming"
|
||||||
|
#define INPUT_KEYBOARD "input-keyboard"
|
||||||
|
#define INPUT_MOUSE "input-mouse"
|
||||||
|
#define MEDIA_CDROM "media-cdrom"
|
||||||
|
#define MEDIA_FLOPPY "media-floppy"
|
||||||
|
#define MULTIMEDIA_PLAYER "multimedia-player"
|
||||||
|
#define NETWORK_WIRED "network-wired"
|
||||||
|
#define NETWORK_WIRELESS "network-wireless"
|
||||||
|
#define PRINTER "printer"
|
||||||
|
|
||||||
|
#define EMBLEM_DEFAULT "emblem-default"
|
||||||
|
#define EMBLEM_DOCUMENTS "emblem-documents"
|
||||||
|
#define EMBLEM_DOWNLOADS "emblem-downloads"
|
||||||
|
#define EMBLEM_FAVORITE "emblem-favorite"
|
||||||
|
#define EMBLEM_IMPORTANT "emblem-important"
|
||||||
|
#define EMBLEM_MAIL "emblem-mail"
|
||||||
|
#define EMBLEM_PHOTOS "emblem-photos"
|
||||||
|
#define EMBLEM_READONLY "emblem-readonly"
|
||||||
|
#define EMBLEM_SHARED "emblem-shared"
|
||||||
|
#define EMBLEM_SYMBOLIC_LINK "emblem-symbolic-link"
|
||||||
|
#define EMBLEM_SYNCHRONIZED "emblem-synchronized"
|
||||||
|
#define EMBLEM_SYSTEM "emblem-system"
|
||||||
|
#define EMBLEM_UNREADABLE "emblem-unreadable"
|
||||||
|
|
||||||
|
#define FACE_ANGEL "face-angel"
|
||||||
|
#define FACE_CRYING "face-crying"
|
||||||
|
#define FACE_DEVIL_GRIN "face-devil-grin"
|
||||||
|
#define FACE_DEVIL_SAD "face-devil-sad"
|
||||||
|
#define FACE_GLASSES "face-glasses"
|
||||||
|
#define FACE_KISS "face-kiss"
|
||||||
|
#define FACE_MONKEY "face-monkey"
|
||||||
|
#define FACE_PLAIN "face-plain"
|
||||||
|
#define FACE_SAD "face-sad"
|
||||||
|
#define FACE_SMILE "face-smile"
|
||||||
|
#define FACE_SMILE_BIG "face-smile-big"
|
||||||
|
#define FACE_SMIRK "face-smirk"
|
||||||
|
#define FACE_SURPRISE "face-surprise"
|
||||||
|
#define FACE_WINK "face-wink"
|
||||||
|
|
||||||
|
#define APPLICATION_X_EXECUTABLE "application-x-executable"
|
||||||
|
#define AUDIO_X_GENERIC "audio-x-generic"
|
||||||
|
#define FONT_X_GENERIC "font-x-generic"
|
||||||
|
#define IMAGE_X_GENERIC "image-x-generic"
|
||||||
|
#define PACKAGE_X_GENERIC "package-x-generic"
|
||||||
|
#define TEXT_HTML "text-html"
|
||||||
|
#define TEXT_X_GENERIC "text-x-generic"
|
||||||
|
#define TEXT_X_GENERIC_TEMPLATE "text-x-generic-template"
|
||||||
|
#define TEXT_X_SCRIPT "text-x-script"
|
||||||
|
#define VIDEO_X_GENERIC "video-x-generic"
|
||||||
|
#define X_OFFICE_ADDRESS_BOOK "x-office-address-book"
|
||||||
|
#define X_OFFICE_CALENDAR "x-office-calendar"
|
||||||
|
#define X_OFFICE_DOCUMENT "x-office-document"
|
||||||
|
#define X_OFFICE_PRESENTATION "x-office-presentation"
|
||||||
|
#define X_OFFICE_SPREADSHEET "x-office-spreadsheet"
|
||||||
|
|
||||||
|
#define FOLDER "folder"
|
||||||
|
#define FOLDER_REMOTE "folder-remote"
|
||||||
|
#define NETWORK_SERVER "network-server"
|
||||||
|
#define NETWORK_WORKGROUP "network-workgroup"
|
||||||
|
#define START_HERE "start-here"
|
||||||
|
#define USER_DESKTOP "user-desktop"
|
||||||
|
#define USER_HOME "user-home"
|
||||||
|
#define USER_TRASH "user-trash"
|
||||||
|
|
||||||
|
#define APPOINTMENT_MISSED "appointment-missed"
|
||||||
|
#define APPOINTMENT_SOON "appointment-soon"
|
||||||
|
#define AUDIO_VOLUME_HIGH "audio-volume-high"
|
||||||
|
#define AUDIO_VOLUME_LOW "audio-volume-low"
|
||||||
|
#define AUDIO_VOLUME_MEDIUM "audio-volume-medium"
|
||||||
|
#define AUDIO_VOLUME_MUTED "audio-volume-muted"
|
||||||
|
#define BATTERY_CAUTION "battery-caution"
|
||||||
|
#define BATTERY_LOW "battery-low"
|
||||||
|
#define DIALOG_ERROR "dialog-error"
|
||||||
|
#define DIALOG_INFORMATION "dialog-information"
|
||||||
|
#define DIALOG_PASSWORD "dialog-password"
|
||||||
|
#define DIALOG_QUESTION "dialog-question"
|
||||||
|
#define DIALOG_WARNING "dialog-warning"
|
||||||
|
#define FOLDER_DRAG_ACCEPT "folder-drag-accept"
|
||||||
|
#define FOLDER_OPEN "folder-open"
|
||||||
|
#define FOLDER_VISITING "folder-visiting"
|
||||||
|
#define IMAGE_LOADING "image-loading"
|
||||||
|
#define IMAGE_MISSING "image-missing"
|
||||||
|
#define MAIL_ATTACHMENT "mail-attachment"
|
||||||
|
#define MAIL_UNREAD "mail-unread"
|
||||||
|
#define MAIL_READ "mail-read"
|
||||||
|
#define MAIL_REPLIED "mail-replied"
|
||||||
|
#define MAIL_SIGNED "mail-signed"
|
||||||
|
#define MAIL_SIGNED_VERIFIED "mail-signed-verified"
|
||||||
|
#define MEDIA_PLAYLIST_REPEAT "media-playlist-repeat"
|
||||||
|
#define MEDIA_PLAYLIST_SHUFFLE "media-playlist-shuffle"
|
||||||
|
#define NETWORK_ERROR "network-error"
|
||||||
|
#define NETWORK_IDLE "network-idle"
|
||||||
|
|
||||||
|
#define NETWORK_OFFLINE "network-offline"
|
||||||
|
#define NETWORK_RECEIVE "network-receive"
|
||||||
|
#define NETWORK_TRANSMIT "network-transmit"
|
||||||
|
#define NETWORK_TRANSMIT_RECEIVE "network-transmit-receive"
|
||||||
|
#define PRINTER_ERROR "printer-error"
|
||||||
|
#define PRINTER_PRINTING "printer-printing"
|
||||||
|
#define SOFTWARE_UPDATE_AVAILABLE "software-update-available"
|
||||||
|
#define SOFTWARE_UPDATE_URGENT "software-update-urgent"
|
||||||
|
#define SYNC_ERROR "sync-error"
|
||||||
|
#define SYNC_SYNCHRONIZING "sync-synchronizing"
|
||||||
|
#define TASK_DUE "task-due"
|
||||||
|
#define TASK_PASSED_DUE "task-passed-due"
|
||||||
|
#define USER_AWAY "user-away"
|
||||||
|
#define USER_IDLE "user-idle"
|
||||||
|
#define USER_OFFLINE "user-offline"
|
||||||
|
#define USER_ONLINE "user-online"
|
||||||
|
#define USER_TRASH_FULL "user-trash-full"
|
||||||
|
#define WEATHER_CLEAR "weather-clear"
|
||||||
|
#define WEATHER_CLEAR_NIGHT "weather-clear-night"
|
||||||
|
#define WEATHER_FEW_CLOUDS "weather-few-clouds"
|
||||||
|
#define WEATHER_FEW_CLOUDS_NIGHT "weather-few-clouds-night"
|
||||||
|
#define WEATHER_FOG "weather-fog"
|
||||||
|
#define WEATHER_OVERCAST "weather-overcast"
|
||||||
|
#define WEATHER_SEVERE_ALERT "weather-severe-alert"
|
||||||
|
#define WEATHER_SHOWERS "weather-showers"
|
||||||
|
#define WEATHER_SHOWERS_SCATTERED "weather-showers-scattered"
|
||||||
|
#define WEATHER_SNOW "weather-snow"
|
||||||
|
#define WEATHER_STORM "weather-storm"
|
||||||
|
|
||||||
|
const char *icons[] = {
|
||||||
|
ADDRESS_BOOK_NEW,
|
||||||
|
APPLICATION_EXIT,
|
||||||
|
APPOINTMENT_NEW,
|
||||||
|
CONTACT_NEW,
|
||||||
|
DIALOG_APPLY,
|
||||||
|
DIALOG_CANCEL,
|
||||||
|
DIALOG_CLOSE,
|
||||||
|
DIALOG_OK,
|
||||||
|
DOCUMENT_NEW,
|
||||||
|
DOCUMENT_OPEN,
|
||||||
|
DOCUMENT_OPEN_RECENT,
|
||||||
|
DOCUMENT_PAGE_SETUP,
|
||||||
|
DOCUMENT_PRINT,
|
||||||
|
DOCUMENT_PRINT_PREVIEW,
|
||||||
|
DOCUMENT_PROPERTIES,
|
||||||
|
DOCUMENT_REVERT,
|
||||||
|
DOCUMENT_SAVE,
|
||||||
|
DOCUMENT_SAVE_AS,
|
||||||
|
EDIT_COPY,
|
||||||
|
EDIT_CUT,
|
||||||
|
EDIT_DELETE,
|
||||||
|
EDIT_FIND,
|
||||||
|
EDIT_FIND_REPLACE,
|
||||||
|
EDIT_PASTE,
|
||||||
|
EDIT_REDO,
|
||||||
|
EDIT_SELECT_ALL,
|
||||||
|
EDIT_UNDO,
|
||||||
|
FORMAT_INDENT_LESS,
|
||||||
|
FORMAT_INDENT_MORE,
|
||||||
|
FORMAT_JUSTIFY_CENTER,
|
||||||
|
FORMAT_JUSTIFY_FILL,
|
||||||
|
FORMAT_JUSTIFY_LEFT,
|
||||||
|
FORMAT_JUSTIFY_RIGHT,
|
||||||
|
FORMAT_TEXT_DIRECTION_LTR,
|
||||||
|
FORMAT_TEXT_DIRECTION_RTL,
|
||||||
|
FORMAT_TEXT_BOLD,
|
||||||
|
FORMAT_TEXT_ITALIC,
|
||||||
|
FORMAT_TEXT_UNDERLINE,
|
||||||
|
FORMAT_TEXT_STRIKETHROUGH,
|
||||||
|
GO_BOTTOM,
|
||||||
|
GO_DOWN,
|
||||||
|
GO_FIRST,
|
||||||
|
GO_HOME,
|
||||||
|
GO_JUMP,
|
||||||
|
GO_LAST,
|
||||||
|
GO_NEXT,
|
||||||
|
GO_PREVIOUS,
|
||||||
|
GO_TOP,
|
||||||
|
GO_UP,
|
||||||
|
HELP_ABOUT,
|
||||||
|
HELP_CONTENTS,
|
||||||
|
HELP_FAQ,
|
||||||
|
INSERT_IMAGE,
|
||||||
|
INSERT_LINK,
|
||||||
|
INSERT_OBJECT,
|
||||||
|
INSERT_TEXT,
|
||||||
|
LIST_ADD,
|
||||||
|
LIST_REMOVE,
|
||||||
|
MAIL_FORWARD,
|
||||||
|
MAIL_MARK_IMPORTANT,
|
||||||
|
MAIL_MARK_JUNK,
|
||||||
|
MAIL_MARK_NOTJUNK,
|
||||||
|
MAIL_MARK_READ,
|
||||||
|
MAIL_MARK_UNREAD,
|
||||||
|
MAIL_MESSAGE_NEW,
|
||||||
|
MAIL_REPLY_ALL,
|
||||||
|
MAIL_REPLY_SENDER,
|
||||||
|
MAIL_SEND_RECEIVE,
|
||||||
|
MEDIA_EJECT,
|
||||||
|
MEDIA_PLAYBACK_PAUSE,
|
||||||
|
MEDIA_PLAYBACK_START,
|
||||||
|
MEDIA_PLAYBACK_STOP,
|
||||||
|
MEDIA_RECORD,
|
||||||
|
MEDIA_SEEK_BACKWARD,
|
||||||
|
MEDIA_SEEK_FORWARD,
|
||||||
|
MEDIA_SKIP_BACKWARD,
|
||||||
|
MEDIA_SKIP_FORWARD,
|
||||||
|
SYSTEM_LOCK_SCREEN,
|
||||||
|
SYSTEM_LOG_OUT,
|
||||||
|
SYSTEM_RUN,
|
||||||
|
SYSTEM_SEARCH,
|
||||||
|
TOOLS_CHECK_SPELLING,
|
||||||
|
VIEW_FULLSCREEN,
|
||||||
|
VIEW_REFRESH,
|
||||||
|
VIEW_SORT_ASCENDING,
|
||||||
|
VIEW_SORT_DESCENDING,
|
||||||
|
WINDOW_CLOSE,
|
||||||
|
WINDOW_NEW,
|
||||||
|
ZOOM_BEST_FIT,
|
||||||
|
ZOOM_IN,
|
||||||
|
ZOOM_ORIGINAL,
|
||||||
|
ZOOM_OUT,
|
||||||
|
PROCESS_WORKING,
|
||||||
|
ACCESSORIES_CALCULATOR,
|
||||||
|
ACCESSORIES_CHARACTER_MAP,
|
||||||
|
ACCESSORIES_DICTIONARY,
|
||||||
|
ACCESSORIES_TEXT_EDITOR,
|
||||||
|
HELP_BROWSER,
|
||||||
|
MULTIMEDIA_VOLUME_CONTROL,
|
||||||
|
PREFERENCES_DESKTOP_ACCESSIBILITY,
|
||||||
|
PREFERENCES_DESKTOP_FONT,
|
||||||
|
PREFERENCES_DESKTOP_KEYBOARD,
|
||||||
|
PREFERENCES_DESKTOP_LOCALE,
|
||||||
|
PREFERENCES_DESKTOP_MULTIMEDIA,
|
||||||
|
PREFERENCES_DESKTOP_SCREENSAVER,
|
||||||
|
PREFERENCES_DESKTOP_THEME,
|
||||||
|
PREFERENCES_DESKTOP_WALLPAPER,
|
||||||
|
SYSTEM_FILE_MANAGER,
|
||||||
|
SYSTEM_SOFTWARE_UPDATE,
|
||||||
|
UTILITIES_TERMINAL,
|
||||||
|
APPLICATIONS_ACCESSORIES,
|
||||||
|
APPLICATIONS_DEVELOPMENT,
|
||||||
|
APPLICATIONS_GAMES,
|
||||||
|
APPLICATIONS_GRAPHICS,
|
||||||
|
APPLICATIONS_INTERNET,
|
||||||
|
APPLICATIONS_MULTIMEDIA,
|
||||||
|
APPLICATIONS_OFFICE,
|
||||||
|
APPLICATIONS_OTHER,
|
||||||
|
APPLICATIONS_SYSTEM,
|
||||||
|
APPLICATIONS_UTILITIES,
|
||||||
|
PREFERENCES_DESKTOP,
|
||||||
|
PREFERENCES_DESKTOP_ACCESSIBILITY,
|
||||||
|
PREFERENCES_DESKTOP_PERIPHERALS,
|
||||||
|
PREFERENCES_DESKTOP_PERSONAL,
|
||||||
|
PREFERENCES_OTHER,
|
||||||
|
PREFERENCES_SYSTEM,
|
||||||
|
PREFERENCES_SYSTEM_NETWORK,
|
||||||
|
SYSTEM_HELP,
|
||||||
|
AUDIO_CARD,
|
||||||
|
AUDIO_INPUT_MICROPHONE,
|
||||||
|
BATTERY,
|
||||||
|
CAMERA_PHOTO,
|
||||||
|
CAMERA_VIDEO,
|
||||||
|
COMPUTER,
|
||||||
|
DRIVE_CDROM,
|
||||||
|
DRIVE_HARDDISK,
|
||||||
|
DRIVE_REMOVABLE_MEDIA,
|
||||||
|
INPUT_GAMING,
|
||||||
|
INPUT_KEYBOARD,
|
||||||
|
INPUT_MOUSE,
|
||||||
|
MEDIA_CDROM,
|
||||||
|
MEDIA_FLOPPY,
|
||||||
|
MULTIMEDIA_PLAYER,
|
||||||
|
NETWORK_WIRED,
|
||||||
|
NETWORK_WIRELESS,
|
||||||
|
PRINTER,
|
||||||
|
EMBLEM_DEFAULT,
|
||||||
|
EMBLEM_DOCUMENTS,
|
||||||
|
EMBLEM_DOWNLOADS,
|
||||||
|
EMBLEM_FAVORITE,
|
||||||
|
EMBLEM_IMPORTANT,
|
||||||
|
EMBLEM_MAIL,
|
||||||
|
EMBLEM_PHOTOS,
|
||||||
|
EMBLEM_READONLY,
|
||||||
|
EMBLEM_SHARED,
|
||||||
|
EMBLEM_SYMBOLIC_LINK,
|
||||||
|
EMBLEM_SYNCHRONIZED,
|
||||||
|
EMBLEM_SYSTEM,
|
||||||
|
EMBLEM_UNREADABLE,
|
||||||
|
FACE_ANGEL,
|
||||||
|
FACE_CRYING,
|
||||||
|
FACE_DEVIL_GRIN,
|
||||||
|
FACE_DEVIL_SAD,
|
||||||
|
FACE_GLASSES,
|
||||||
|
FACE_KISS,
|
||||||
|
FACE_MONKEY,
|
||||||
|
FACE_PLAIN,
|
||||||
|
FACE_SAD,
|
||||||
|
FACE_SMILE,
|
||||||
|
FACE_SMILE_BIG,
|
||||||
|
FACE_SMIRK,
|
||||||
|
FACE_SURPRISE,
|
||||||
|
FACE_WINK,
|
||||||
|
APPLICATION_X_EXECUTABLE,
|
||||||
|
AUDIO_X_GENERIC,
|
||||||
|
FONT_X_GENERIC,
|
||||||
|
IMAGE_X_GENERIC,
|
||||||
|
PACKAGE_X_GENERIC,
|
||||||
|
TEXT_HTML,
|
||||||
|
TEXT_X_GENERIC,
|
||||||
|
TEXT_X_GENERIC_TEMPLATE,
|
||||||
|
TEXT_X_SCRIPT,
|
||||||
|
VIDEO_X_GENERIC,
|
||||||
|
X_OFFICE_ADDRESS_BOOK,
|
||||||
|
X_OFFICE_CALENDAR,
|
||||||
|
X_OFFICE_DOCUMENT,
|
||||||
|
X_OFFICE_PRESENTATION,
|
||||||
|
X_OFFICE_SPREADSHEET,
|
||||||
|
FOLDER,
|
||||||
|
FOLDER_REMOTE,
|
||||||
|
NETWORK_SERVER,
|
||||||
|
NETWORK_WORKGROUP,
|
||||||
|
START_HERE,
|
||||||
|
USER_DESKTOP,
|
||||||
|
USER_HOME,
|
||||||
|
USER_TRASH,
|
||||||
|
APPOINTMENT_MISSED,
|
||||||
|
APPOINTMENT_SOON,
|
||||||
|
AUDIO_VOLUME_HIGH,
|
||||||
|
AUDIO_VOLUME_LOW,
|
||||||
|
AUDIO_VOLUME_MEDIUM,
|
||||||
|
AUDIO_VOLUME_MUTED,
|
||||||
|
BATTERY_CAUTION,
|
||||||
|
BATTERY_LOW,
|
||||||
|
DIALOG_ERROR,
|
||||||
|
DIALOG_INFORMATION,
|
||||||
|
DIALOG_PASSWORD,
|
||||||
|
DIALOG_QUESTION,
|
||||||
|
DIALOG_WARNING,
|
||||||
|
FOLDER_DRAG_ACCEPT,
|
||||||
|
FOLDER_OPEN,
|
||||||
|
FOLDER_VISITING,
|
||||||
|
IMAGE_LOADING,
|
||||||
|
IMAGE_MISSING,
|
||||||
|
MAIL_ATTACHMENT,
|
||||||
|
MAIL_UNREAD,
|
||||||
|
MAIL_READ,
|
||||||
|
MAIL_REPLIED,
|
||||||
|
MAIL_SIGNED,
|
||||||
|
MAIL_SIGNED_VERIFIED,
|
||||||
|
MEDIA_PLAYLIST_REPEAT,
|
||||||
|
MEDIA_PLAYLIST_SHUFFLE,
|
||||||
|
NETWORK_ERROR,
|
||||||
|
NETWORK_IDLE,
|
||||||
|
NETWORK_OFFLINE,
|
||||||
|
NETWORK_RECEIVE,
|
||||||
|
NETWORK_TRANSMIT,
|
||||||
|
NETWORK_TRANSMIT_RECEIVE,
|
||||||
|
PRINTER_ERROR,
|
||||||
|
PRINTER_PRINTING,
|
||||||
|
SOFTWARE_UPDATE_AVAILABLE,
|
||||||
|
SOFTWARE_UPDATE_URGENT,
|
||||||
|
SYNC_ERROR,
|
||||||
|
SYNC_SYNCHRONIZING,
|
||||||
|
TASK_DUE,
|
||||||
|
TASK_PASSED_DUE,
|
||||||
|
USER_AWAY,
|
||||||
|
USER_IDLE,
|
||||||
|
USER_OFFLINE,
|
||||||
|
USER_ONLINE,
|
||||||
|
USER_TRASH_FULL,
|
||||||
|
WEATHER_CLEAR,
|
||||||
|
WEATHER_CLEAR_NIGHT,
|
||||||
|
WEATHER_FEW_CLOUDS,
|
||||||
|
WEATHER_FEW_CLOUDS_NIGHT,
|
||||||
|
WEATHER_FOG,
|
||||||
|
WEATHER_OVERCAST,
|
||||||
|
WEATHER_SEVERE_ALERT,
|
||||||
|
WEATHER_SHOWERS,
|
||||||
|
WEATHER_SHOWERS_SCATTERED,
|
||||||
|
WEATHER_SNOW,
|
||||||
|
WEATHER_STORM,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,27 @@
|
||||||
|
#include <Efreet.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include "comp.h"
|
||||||
|
|
||||||
|
int
|
||||||
|
main(void)
|
||||||
|
{
|
||||||
|
int i = 0, k;
|
||||||
|
const char *path;
|
||||||
|
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
for (k = 0; k < LOOPS; k++)
|
||||||
|
{
|
||||||
|
for (i = 0; icons[i]; i++)
|
||||||
|
{
|
||||||
|
path = efreet_icon_path_find(THEME, icons[i], SIZE);
|
||||||
|
// printf("%s: %s\n", icons[i], (path ? path : "NOT FOUND"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
efreet_shutdown();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
#include <Efreet.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "comp.h"
|
||||||
|
|
||||||
|
int
|
||||||
|
main(void)
|
||||||
|
{
|
||||||
|
int k;
|
||||||
|
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
for (k = 0; k < LOOPS; k++)
|
||||||
|
{
|
||||||
|
Efreet_Menu *menu;
|
||||||
|
menu = efreet_menu_get();
|
||||||
|
efreet_menu_free(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
efreet_shutdown();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
|
@ -0,0 +1,18 @@
|
||||||
|
SUBDIRS = sub
|
||||||
|
|
||||||
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
|
||||||
|
testdir = $(pkgdatadir)/test
|
||||||
|
test_DATA = \
|
||||||
|
test.ini \
|
||||||
|
long.ini \
|
||||||
|
test.desktop \
|
||||||
|
test_type.desktop \
|
||||||
|
test.menu \
|
||||||
|
test_menu_slash_bad.menu \
|
||||||
|
entry.png \
|
||||||
|
entry \
|
||||||
|
preferences.menu \
|
||||||
|
test_garbage
|
||||||
|
|
||||||
|
EXTRA_DIST = $(test_DATA)
|
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 648 B |
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,41 @@
|
||||||
|
<!DOCTYPE Menu PUBLIC
|
||||||
|
"-//freedesktop//DTD Menu 1.0//EN"
|
||||||
|
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
|
||||||
|
|
||||||
|
<Menu>
|
||||||
|
<Name>Preferences</Name>
|
||||||
|
<Directory>Preferences.directory</Directory>
|
||||||
|
|
||||||
|
<AppDir>blah</AppDir>
|
||||||
|
<AppDir>/var/tmp</AppDir>
|
||||||
|
|
||||||
|
<Move>
|
||||||
|
<Old>Blah</Old
|
||||||
|
<New>Borp</New>
|
||||||
|
</Move>
|
||||||
|
|
||||||
|
<Menu>
|
||||||
|
<Name>House</Name>
|
||||||
|
<Directory>House.directory</Directory>
|
||||||
|
<Include>
|
||||||
|
<Category>House</Category>
|
||||||
|
<Category>Garden</Category>
|
||||||
|
</Include>
|
||||||
|
</Menu>
|
||||||
|
<Menu>
|
||||||
|
<Name>Mouse</Name>
|
||||||
|
<Directory>House.directory</Directory>
|
||||||
|
<Include>
|
||||||
|
<Category>House</Category>
|
||||||
|
<Category>Garden</Category>
|
||||||
|
</Include>
|
||||||
|
</Menu>
|
||||||
|
<Menu>
|
||||||
|
<Name>House</Name>
|
||||||
|
<Directory>House.directory</Directory>
|
||||||
|
<Include>
|
||||||
|
<Category>Cat</Category>
|
||||||
|
</Include>
|
||||||
|
</Menu>
|
||||||
|
</Menu>
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Makefile
|
||||||
|
Makefile.in
|
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
|
||||||
|
testdir = $(pkgdatadir)/test/sub
|
||||||
|
test_DATA = \
|
||||||
|
test.desktop
|
||||||
|
|
||||||
|
EXTRA_DIST = $(test_DATA)
|
|
@ -0,0 +1,5 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Sub
|
||||||
|
Exec=subtest
|
||||||
|
Categories=Test
|
|
@ -0,0 +1,8 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Efreet Test Application
|
||||||
|
GenericName=Test Application
|
||||||
|
Exec=efreet_test %F %i
|
||||||
|
Categories=Test;Enlightenment;
|
||||||
|
Icon=TestIcon
|
||||||
|
X-Test=Own key
|
|
@ -0,0 +1,21 @@
|
||||||
|
# Comments should be ignored (and empty lines)
|
||||||
|
|
||||||
|
[contact]
|
||||||
|
Name=Foo Bar
|
||||||
|
Name[en_US]=English Foo Bar
|
||||||
|
Email= foo@bar.com
|
||||||
|
Email[de_DE] = foo@bar.de
|
||||||
|
Age = 30
|
||||||
|
TrueBoolean=true
|
||||||
|
FalseBoolean=false
|
||||||
|
InvalidBoolean=invalid
|
||||||
|
Escaped=line1\nline2\r\nline3\ttabbed \\ with a backslash\sand\sspaces
|
||||||
|
|
||||||
|
[AIM]
|
||||||
|
Username=foobar
|
||||||
|
|
||||||
|
# the next line has a single space. it should be skipped as well
|
||||||
|
|
||||||
|
[Jabber]
|
||||||
|
Username=foobar@bar.de
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
<!DOCTYPE Menu PUBLIC
|
||||||
|
"-//freedesktop//DTD Menu 1.0//EN"
|
||||||
|
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
|
||||||
|
|
||||||
|
<Menu>
|
||||||
|
<Name>Applications</Name>
|
||||||
|
<Directory>Applications.directory</Directory>
|
||||||
|
|
||||||
|
<DefaultAppDirs/>
|
||||||
|
<DefaultDirectoryDirs/>
|
||||||
|
|
||||||
|
<MergeDir>applications-merged</MergeDir>
|
||||||
|
|
||||||
|
<LegacyDir>/usr/share/applnk</LegacyDir>
|
||||||
|
|
||||||
|
<DefaultLayout>
|
||||||
|
<Merge type="menus"/>
|
||||||
|
<Merge type="files"/>
|
||||||
|
<Separator/>
|
||||||
|
<Menuname>More</Menuname>
|
||||||
|
</DefaultLayout>
|
||||||
|
|
||||||
|
<Move>
|
||||||
|
<Old>Foo</Old>
|
||||||
|
<New>Bar</New>
|
||||||
|
<Old>Foo2</Old>
|
||||||
|
<New>Bar2</New>
|
||||||
|
</Move>
|
||||||
|
|
||||||
|
<Menu>
|
||||||
|
<Name>Preferences</Name>
|
||||||
|
<Directory>Preferences.directory</Directory>
|
||||||
|
<MergeFile>preferences.menu</MergeFile>
|
||||||
|
</Menu>
|
||||||
|
|
||||||
|
<Menu>
|
||||||
|
<Name>Office</Name>
|
||||||
|
<Directory>Office.directory</Directory>
|
||||||
|
<Include>
|
||||||
|
<Category>Office</Category>
|
||||||
|
</Include>
|
||||||
|
<Exclude>
|
||||||
|
<Filename>foo.desktop</Filename>
|
||||||
|
<And>
|
||||||
|
<Not>
|
||||||
|
<Filename>bar.desktop</Filename>
|
||||||
|
</Not>
|
||||||
|
</And>
|
||||||
|
</Exclude>
|
||||||
|
</Menu>
|
||||||
|
</Menu>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,14 @@
|
||||||
|
<!DOCTYPE Menu PUBLIC
|
||||||
|
"-//freedesktop//DTD Menu 1.0//EN"
|
||||||
|
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
|
||||||
|
|
||||||
|
<Menu>
|
||||||
|
<Name>Applications</Name>
|
||||||
|
<Directory>Applications.directory</Directory>
|
||||||
|
|
||||||
|
<!-- a comment
|
||||||
|
<!-- with a comment -->
|
||||||
|
<Or> This should be commented </Or>
|
||||||
|
-->
|
||||||
|
</Menu>
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
<!DOCTYPE Menu PUBLIC
|
||||||
|
"-//freedesktop//DTD Menu 1.0//EN"
|
||||||
|
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
|
||||||
|
|
||||||
|
<Menu>
|
||||||
|
<Name>Applications/Bar</Name>
|
||||||
|
|
||||||
|
<Menu>
|
||||||
|
<Name>Preferences/Baz</Name>
|
||||||
|
</Menu>
|
||||||
|
</Menu>
|
|
@ -0,0 +1,8 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Type=My_Type
|
||||||
|
Name=Efreet Test Application
|
||||||
|
GenericName=Test Application
|
||||||
|
Exec=efreet_test %F %i
|
||||||
|
Categories=Test;Enlightenment;
|
||||||
|
Icon=TestIcon
|
||||||
|
X-Test=Own key
|
|
@ -0,0 +1,143 @@
|
||||||
|
#include "Efreet.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <Ecore.h>
|
||||||
|
#include "ef_test.h"
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
EAPI Efreet_Desktop *efreet_util_desktop_file_id_find(const char *file_id);
|
||||||
|
|
||||||
|
EAPI Eina_List *efreet_util_desktop_generic_name_glob_list(const char *glob);
|
||||||
|
EAPI Eina_List *efreet_util_desktop_comment_glob_list(const char *glob);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void
|
||||||
|
check(void)
|
||||||
|
{
|
||||||
|
Eina_List *list;
|
||||||
|
Efreet_Desktop *desktop;
|
||||||
|
double start;
|
||||||
|
const char *id;
|
||||||
|
|
||||||
|
// EAPI char *efreet_util_path_to_file_id(const char *path);
|
||||||
|
start = ecore_time_get();
|
||||||
|
id = efreet_util_path_to_file_id("/usr/share/applications/gnome-panel.desktop");
|
||||||
|
if (id)
|
||||||
|
{
|
||||||
|
printf("efreet_util_path_to_file_id(/usr/share/applications/gnome-panel.desktop): %s %.6f\n", id, (ecore_time_get() - start));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
printf("efreet_util_path_to_file_id(/usr/share/applications/gnome-panel.desktop): NULL %.6f\n", (ecore_time_get() - start));
|
||||||
|
|
||||||
|
//EAPI Efreet_Desktop *efreet_util_desktop_name_find(const char *name);
|
||||||
|
start = ecore_time_get();
|
||||||
|
desktop = efreet_util_desktop_name_find("Evolution");
|
||||||
|
if (desktop)
|
||||||
|
printf("efreet_util_desktop_name_find(Evolution): %s %.6f\n", desktop->orig_path, (ecore_time_get() - start));
|
||||||
|
else
|
||||||
|
printf("efreet_util_desktop_name_find(Evolution): NULL %.6f\n", (ecore_time_get() - start));
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
|
||||||
|
//EAPI Efreet_Desktop *efreet_util_desktop_generic_name_find(const char *generic_name);
|
||||||
|
start = ecore_time_get();
|
||||||
|
desktop = efreet_util_desktop_generic_name_find("Spreadsheet");
|
||||||
|
if (desktop)
|
||||||
|
printf("efreet_util_desktop_generic_name_find(Spreadsheet): %s %.6f\n", desktop->orig_path, (ecore_time_get() - start));
|
||||||
|
else
|
||||||
|
printf("efreet_util_desktop_generic_name_find(Spreadsheet): NULL %.6f\n", (ecore_time_get() - start));
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
|
||||||
|
//EAPI Efreet_Desktop *efreet_util_desktop_wm_class_find(const char *wmname, const char *wmclass);
|
||||||
|
start = ecore_time_get();
|
||||||
|
desktop = efreet_util_desktop_wm_class_find("Firefox", NULL);
|
||||||
|
if (desktop)
|
||||||
|
printf("efreet_util_desktop_wm_class_find(Firefox): %s %.6f\n", desktop->orig_path, (ecore_time_get() - start));
|
||||||
|
else
|
||||||
|
printf("efreet_util_desktop_wm_class_find(Firefox): NULL %.6f\n", (ecore_time_get() - start));
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
|
||||||
|
//EAPI Efreet_Desktop *efreet_util_desktop_exec_find(const char *exec);
|
||||||
|
start = ecore_time_get();
|
||||||
|
desktop = efreet_util_desktop_exec_find("/usr/bin/update-manager");
|
||||||
|
if (desktop)
|
||||||
|
printf("efreet_util_desktop_exec_find(update-manager): %s %.6f\n", desktop->orig_path, (ecore_time_get() - start));
|
||||||
|
else
|
||||||
|
printf("efreet_util_desktop_exec_find(update-manager): NULL %.6f\n", (ecore_time_get() - start));
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
|
||||||
|
//EAPI Eina_List *efreet_util_desktop_name_glob_list(const char *glob);
|
||||||
|
start = ecore_time_get();
|
||||||
|
list = efreet_util_desktop_name_glob_list("Ubuntu*");
|
||||||
|
if (list)
|
||||||
|
{
|
||||||
|
EINA_LIST_FREE(list, desktop)
|
||||||
|
{
|
||||||
|
printf("efreet_util_desktop_name_glob_list(Ubuntu*): %s\n", desktop->name);
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("time: %.6f\n", (ecore_time_get() - start));
|
||||||
|
|
||||||
|
//EAPI Eina_List *efreet_util_desktop_mime_list(const char *mime);
|
||||||
|
start = ecore_time_get();
|
||||||
|
list = efreet_util_desktop_mime_list("application/ogg");
|
||||||
|
if (list)
|
||||||
|
{
|
||||||
|
EINA_LIST_FREE(list, desktop)
|
||||||
|
{
|
||||||
|
printf("efreet_util_desktop_mime_list(application/ogg): %s\n", desktop->name);
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("time: %.6f\n", (ecore_time_get() - start));
|
||||||
|
|
||||||
|
//EAPI Eina_List *efreet_util_desktop_exec_glob_list(const char *glob);
|
||||||
|
start = ecore_time_get();
|
||||||
|
list = efreet_util_desktop_exec_glob_list("*gnome*");
|
||||||
|
if (list)
|
||||||
|
{
|
||||||
|
EINA_LIST_FREE(list, desktop)
|
||||||
|
{
|
||||||
|
printf("efreet_util_desktop_exec_glob_list(*gnome*): %s\n", desktop->exec);
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("time: %.6f\n", (ecore_time_get() - start));
|
||||||
|
|
||||||
|
//EAPI Eina_List *efreet_util_desktop_categories_list(void);
|
||||||
|
start = ecore_time_get();
|
||||||
|
list = efreet_util_desktop_categories_list();
|
||||||
|
if (list)
|
||||||
|
{
|
||||||
|
EINA_LIST_FREE(list, id)
|
||||||
|
{
|
||||||
|
printf("efreet_util_desktop_categories_list(): %s\n", id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("time: %.6f\n", (ecore_time_get() - start));
|
||||||
|
|
||||||
|
//EAPI Eina_List *efreet_util_desktop_category_list(const char *category);
|
||||||
|
start = ecore_time_get();
|
||||||
|
list = efreet_util_desktop_category_list("Graphics");
|
||||||
|
if (list)
|
||||||
|
{
|
||||||
|
EINA_LIST_FREE(list, desktop)
|
||||||
|
{
|
||||||
|
printf("efreet_util_desktop_category_list(Graphics): %s\n", desktop->name);
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("time: %.6f\n", (ecore_time_get() - start));
|
||||||
|
|
||||||
|
desktop = efreet_desktop_get("/opt/google/chrome/google-chrome.desktop");
|
||||||
|
if (desktop) efreet_desktop_free(desktop);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc __UNUSED__, char **argv __UNUSED__)
|
||||||
|
{
|
||||||
|
if (!efreet_init()) return 1;
|
||||||
|
check();
|
||||||
|
ecore_main_loop_begin();
|
||||||
|
efreet_shutdown();
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,307 @@
|
||||||
|
#include "Efreet.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_efreet_data_home(void)
|
||||||
|
{
|
||||||
|
const char *tmp;
|
||||||
|
int ret = 1;
|
||||||
|
|
||||||
|
efreet_shutdown();
|
||||||
|
setenv("XDG_DATA_HOME", "/var/tmp", 1);
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
tmp = efreet_data_home_get();
|
||||||
|
if (strcmp(tmp, "/var/tmp"))
|
||||||
|
{
|
||||||
|
printf("efreet_data_home_get() returned incorrect "
|
||||||
|
"value (%s) on XDG_DATA_HOME=/var/tmp\n", tmp);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* reset efreet here so we can set a new home dir */
|
||||||
|
efreet_shutdown();
|
||||||
|
unsetenv("XDG_DATA_HOME");
|
||||||
|
setenv("HOME", "/home/tmp", 1);
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
tmp = efreet_data_home_get();
|
||||||
|
if (strcmp(tmp, "/home/tmp/.local/share"))
|
||||||
|
{
|
||||||
|
printf("efreet_data_home_get() returned incorrect "
|
||||||
|
"value (%s) on blank XDG_DATA_HOME\n", tmp);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* reset efreet here so we can set a new home dir */
|
||||||
|
efreet_shutdown();
|
||||||
|
unsetenv("XDG_DATA_HOME");
|
||||||
|
unsetenv("HOME");
|
||||||
|
#ifdef _WIN32
|
||||||
|
unsetenv("USERPROFILE");
|
||||||
|
#endif
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
tmp = efreet_data_home_get();
|
||||||
|
if (strcmp(tmp, "/tmp/.local/share"))
|
||||||
|
{
|
||||||
|
printf("efreet_data_home_get() returned incorrect "
|
||||||
|
"value (%s) on blank XDG_DATA_HOME and blank HOME\n", tmp);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_efreet_config_home(void)
|
||||||
|
{
|
||||||
|
const char *tmp;
|
||||||
|
int ret = 1;
|
||||||
|
|
||||||
|
efreet_shutdown();
|
||||||
|
setenv("XDG_CONFIG_HOME", "/var/tmp", 1);
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
tmp = efreet_config_home_get();
|
||||||
|
if (strcmp(tmp, "/var/tmp"))
|
||||||
|
{
|
||||||
|
printf("efreet_config_home_get() returned incorrect "
|
||||||
|
"value (%s) on XDG_CONFIG_HOME=/var/tmp\n", tmp);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* reset efreet here so we can set a new home dir */
|
||||||
|
efreet_shutdown();
|
||||||
|
unsetenv("XDG_CONFIG_HOME");
|
||||||
|
setenv("HOME", "/home/tmp", 1);
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
tmp = efreet_config_home_get();
|
||||||
|
if (strcmp(tmp, "/home/tmp/.config"))
|
||||||
|
{
|
||||||
|
printf("efreet_config_home_get() returned incorrect "
|
||||||
|
"value (%s) on blank XDG_CONFIG_HOME\n", tmp);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* reset efreet here so we can set a new home dir */
|
||||||
|
efreet_shutdown();
|
||||||
|
unsetenv("XDG_CONFIG_HOME");
|
||||||
|
unsetenv("HOME");
|
||||||
|
#ifdef _WIN32
|
||||||
|
unsetenv("USERPROFILE");
|
||||||
|
#endif
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
tmp = efreet_config_home_get();
|
||||||
|
if (strcmp(tmp, "/tmp/.config"))
|
||||||
|
{
|
||||||
|
printf("efreet_config_home_get() returned incorrect "
|
||||||
|
"value (%s) on blank XDG_CONFIG_HOME and blank HOME\n", tmp);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_efreet_cache_home(void)
|
||||||
|
{
|
||||||
|
const char *tmp;
|
||||||
|
int ret = 1;
|
||||||
|
|
||||||
|
efreet_shutdown();
|
||||||
|
setenv("XDG_CACHE_HOME", "/var/tmp", 1);
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
tmp = efreet_cache_home_get();
|
||||||
|
if (strcmp(tmp, "/var/tmp"))
|
||||||
|
{
|
||||||
|
printf("efreet_cache_home_get() returned incorrect "
|
||||||
|
"value (%s) on XDG_CACHE_HOME=/var/tmp\n", tmp);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* reset efreet here so we can set a new home dir */
|
||||||
|
efreet_shutdown();
|
||||||
|
unsetenv("XDG_CACHE_HOME");
|
||||||
|
setenv("HOME", "/home/tmp", 1);
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
tmp = efreet_cache_home_get();
|
||||||
|
if (strcmp(tmp, "/home/tmp/.cache"))
|
||||||
|
{
|
||||||
|
printf("efreet_cache_home_get() returned incorrect "
|
||||||
|
"value (%s) on blank XDG_CACHE_HOME\n", tmp);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* reset efreet here so we can set a new home dir */
|
||||||
|
efreet_shutdown();
|
||||||
|
unsetenv("XDG_CACHE_HOME");
|
||||||
|
unsetenv("HOME");
|
||||||
|
#ifdef _WIN32
|
||||||
|
unsetenv("USERPROFILE");
|
||||||
|
#endif
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
tmp = efreet_cache_home_get();
|
||||||
|
if (strcmp(tmp, "/tmp/.cache"))
|
||||||
|
{
|
||||||
|
printf("efreet_cache_home_get() returned incorrect "
|
||||||
|
"value (%s) on blank XDG_CACHE_HOME and blank HOME\n", tmp);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_efreet_data_dirs(void)
|
||||||
|
{
|
||||||
|
Eina_List *tmp, *l;
|
||||||
|
int ret = 1, i;
|
||||||
|
char dirs[128], *val;
|
||||||
|
char *vals[] = {"/var/tmp/a", "/tmp/b", "/usr/local/share", "/etc", NULL};
|
||||||
|
char *def_vals[] = {PACKAGE_DATA_DIR, "/usr/share", "/usr/local/share", NULL};
|
||||||
|
|
||||||
|
dirs[0] = '\0';
|
||||||
|
for (i = 0; vals[i]; i++)
|
||||||
|
{
|
||||||
|
if (i > 0) strcat(dirs, ":");
|
||||||
|
strcat(dirs, vals[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
efreet_shutdown();
|
||||||
|
setenv("XDG_DATA_DIRS", dirs, 1);
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
tmp = efreet_data_dirs_get();
|
||||||
|
EINA_LIST_FOREACH(tmp, l, val)
|
||||||
|
{
|
||||||
|
if (!vals[i])
|
||||||
|
{
|
||||||
|
printf("efreet_data_dirs_get() returned more values then it "
|
||||||
|
"should have given %s as input\n", dirs);
|
||||||
|
ret = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp(val, vals[i]))
|
||||||
|
{
|
||||||
|
printf("efreet_data_dirs_get() returned incorrect value (%s) when "
|
||||||
|
"%s set\n", val, dirs);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
efreet_shutdown();
|
||||||
|
unsetenv("XDG_DATA_DIRS");
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
tmp = efreet_data_dirs_get();
|
||||||
|
if (eina_list_count(tmp) != 3)
|
||||||
|
{
|
||||||
|
printf("efreet_data_dirs_get() nodes is differnet from expected default\n");
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(tmp, l, val)
|
||||||
|
{
|
||||||
|
if (!def_vals[i])
|
||||||
|
{
|
||||||
|
printf("efreet_data_dirs_get() returned more values then it "
|
||||||
|
"should have given %s as input\n", dirs);
|
||||||
|
ret = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp(val, def_vals[i]))
|
||||||
|
{
|
||||||
|
printf("efreet_data_dirs_get() returned incorrect value (%s) when "
|
||||||
|
"XDG_DATA_DIRS= is set %s\n", val, def_vals[i]);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_efreet_config_dirs(void)
|
||||||
|
{
|
||||||
|
Eina_List *tmp, *l;
|
||||||
|
int ret = 1, i;
|
||||||
|
char dirs[128], *val;
|
||||||
|
char *vals[] = {"/var/tmp/a", "/tmp/b", "/usr/local/share", "/etc", NULL};
|
||||||
|
char *def_vals[] = {"/etc/xdg", NULL};
|
||||||
|
|
||||||
|
dirs[0] = '\0';
|
||||||
|
|
||||||
|
for (i = 0; vals[i]; i++)
|
||||||
|
{
|
||||||
|
if (i > 0) strcat(dirs, ":");
|
||||||
|
strcat(dirs, vals[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
efreet_shutdown();
|
||||||
|
setenv("XDG_CONFIG_DIRS", dirs, 1);
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
tmp = efreet_config_dirs_get();
|
||||||
|
EINA_LIST_FOREACH(tmp, l, val)
|
||||||
|
{
|
||||||
|
if (!vals[i])
|
||||||
|
{
|
||||||
|
printf("efreet_config_dirs_get() returned more values then it "
|
||||||
|
"should have given %s as input\n", dirs);
|
||||||
|
ret = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp(val, vals[i]))
|
||||||
|
{
|
||||||
|
printf("efreet_config_dirs_get() returned incorrect value (%s) when "
|
||||||
|
"%s set\n", val, dirs);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
efreet_shutdown();
|
||||||
|
unsetenv("XDG_CONFIG_DIRS");
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
tmp = efreet_config_dirs_get();
|
||||||
|
EINA_LIST_FOREACH(tmp, l, val)
|
||||||
|
{
|
||||||
|
if (!def_vals[i])
|
||||||
|
{
|
||||||
|
printf("efreet_config_dirs_get() returned more values then it "
|
||||||
|
"should have given %s as input\n", dirs);
|
||||||
|
ret = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strcmp(val, def_vals[i]))
|
||||||
|
{
|
||||||
|
printf("efreet_config_dirs_get() returned incorrect value (%s) when "
|
||||||
|
"XDG_CONFIG_DIRS= is set\n", val);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
|
@ -0,0 +1,401 @@
|
||||||
|
#include "Efreet.h"
|
||||||
|
#include "config.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include "ef_test.h"
|
||||||
|
|
||||||
|
static void *_cb_command(void *data, Efreet_Desktop *desktop, char *exec, int remaining);
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_desktop_parse(void)
|
||||||
|
{
|
||||||
|
Efreet_Desktop *desktop;
|
||||||
|
Eina_List *l;
|
||||||
|
int ret = 1;
|
||||||
|
|
||||||
|
desktop = efreet_desktop_get(PACKAGE_DATA_DIR"/test/test.desktop");
|
||||||
|
if (!desktop)
|
||||||
|
{
|
||||||
|
printf("No desktop found.\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!desktop->name || strcmp(desktop->name, "Efreet Test Application"))
|
||||||
|
{
|
||||||
|
printf("Invalid Name\n");
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!desktop->generic_name ||
|
||||||
|
strcmp(desktop->generic_name, "Test Application"))
|
||||||
|
{
|
||||||
|
printf("Incorrent GenericName\n");
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!desktop->exec || strcmp(desktop->exec, "efreet_test %F %i"))
|
||||||
|
{
|
||||||
|
printf("Incorrect Exec (%s)\n", (desktop->exec ? desktop->exec : "(null)"));
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (desktop->categories)
|
||||||
|
{
|
||||||
|
const char *categories[] = {"Test", "Enlightenment"};
|
||||||
|
const char *cat;
|
||||||
|
int num_categories = 2, i = 0;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(desktop->categories, l, cat)
|
||||||
|
{
|
||||||
|
if (i >= num_categories)
|
||||||
|
{
|
||||||
|
printf("Too many categories found.\n");
|
||||||
|
ret = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!cat || !categories[i] || strcmp(cat, categories[i]))
|
||||||
|
{
|
||||||
|
printf("Expected category %s, found %s\n", categories[i], cat);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else ret = 0;
|
||||||
|
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
int
|
||||||
|
ef_cb_desktop_file_id(void)
|
||||||
|
{
|
||||||
|
Efreet_Desktop *desktop;
|
||||||
|
int ret = 1;
|
||||||
|
|
||||||
|
desktop = efreet_desktop_get(PACKAGE_DATA_DIR"/test/test.desktop");
|
||||||
|
if (desktop)
|
||||||
|
{
|
||||||
|
const char *id;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
char *dir;
|
||||||
|
int legacy;
|
||||||
|
char *prefix;
|
||||||
|
char *expected;
|
||||||
|
} tests[] = {
|
||||||
|
{PACKAGE_DATA_DIR"/test/", 0, NULL, "test.desktop"},
|
||||||
|
{PACKAGE_DATA_DIR"/", 0, NULL, "test-test.desktop"},
|
||||||
|
{PACKAGE_DATA_DIR"/", 1, NULL, "test.desktop"},
|
||||||
|
{PACKAGE_DATA_DIR"/", 1, "prefix", "prefix-test.desktop"},
|
||||||
|
{NULL, 0, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (i = 0; tests[i].dir != NULL; i++)
|
||||||
|
{
|
||||||
|
id = efreet_desktop_id_get(desktop,
|
||||||
|
tests[i].dir,
|
||||||
|
tests[i].legacy,
|
||||||
|
tests[i].prefix);
|
||||||
|
if (!id || strcmp(id, tests[i].expected))
|
||||||
|
{
|
||||||
|
printf("Expecting id: %s, got: %s\n", tests[i].expected, id);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
if (id) eina_stringshare_del(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ret = 0;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_desktop_save(void)
|
||||||
|
{
|
||||||
|
Efreet_Desktop *desktop;
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
desktop = efreet_desktop_get(PACKAGE_DATA_DIR"/test/test.desktop");
|
||||||
|
if (!desktop)
|
||||||
|
{
|
||||||
|
printf("Failed to get Desktop file\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("save data: %d\n", efreet_desktop_save(desktop));
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
|
||||||
|
desktop = efreet_desktop_empty_new("/tmp/test.desktop");
|
||||||
|
desktop->name = strdup("Efreet Test Application");
|
||||||
|
desktop->type = EFREET_DESKTOP_TYPE_APPLICATION;
|
||||||
|
desktop->generic_name = strdup("Test Application");
|
||||||
|
desktop->exec = strdup("efreet_test");
|
||||||
|
desktop->categories = NULL;
|
||||||
|
desktop->categories = eina_list_append(desktop->categories, eina_stringshare_add("Test"));
|
||||||
|
desktop->categories = eina_list_append(desktop->categories, eina_stringshare_add("Enlightenment"));
|
||||||
|
printf("save test: %d\n", efreet_desktop_save(desktop));
|
||||||
|
unlink("/tmp/test.desktop");
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
Eina_List *expected;
|
||||||
|
int error;
|
||||||
|
char type;
|
||||||
|
} Test_Info;
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_desktop_command_get(void)
|
||||||
|
{
|
||||||
|
Efreet_Desktop *desktop;
|
||||||
|
Eina_List *files, *expected;
|
||||||
|
char olddir[PATH_MAX];
|
||||||
|
Test_Info *info;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (getcwd(olddir, PATH_MAX) != 0) ret = 0;
|
||||||
|
if (chdir("/") != 0) ret = 0;
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
desktop = efreet_desktop_empty_new("test.desktop");
|
||||||
|
|
||||||
|
desktop->name = strdup("App Name");
|
||||||
|
desktop->icon = strdup("icon.png");
|
||||||
|
|
||||||
|
files = NULL;
|
||||||
|
files = eina_list_append(files, "/tmp/absolute_path");
|
||||||
|
files = eina_list_append(files, "relative_path");
|
||||||
|
files = eina_list_append(files, "file:///tmp/absolute_uri");
|
||||||
|
files = eina_list_append(files, "file:relative_uri");
|
||||||
|
|
||||||
|
info = NEW(Test_Info, 1);
|
||||||
|
expected = NULL;
|
||||||
|
info->error = 0;
|
||||||
|
|
||||||
|
/* test single full path */
|
||||||
|
info->type = 'f';
|
||||||
|
IF_FREE(desktop->exec);
|
||||||
|
desktop->exec = strdup("app %f");
|
||||||
|
expected = eina_list_append(expected, "app '/tmp/absolute_path'");
|
||||||
|
expected = eina_list_append(expected, "app '/relative_path'");
|
||||||
|
expected = eina_list_append(expected, "app '/tmp/absolute_uri'");
|
||||||
|
expected = eina_list_append(expected, "app '/relative_uri'");
|
||||||
|
|
||||||
|
info->expected = expected;
|
||||||
|
efreet_desktop_command_get(desktop, files, _cb_command, info);
|
||||||
|
expected = eina_list_free(expected);
|
||||||
|
|
||||||
|
/* test single uri */
|
||||||
|
info->type = 'u';
|
||||||
|
IF_FREE(desktop->exec);
|
||||||
|
desktop->exec = strdup("app %u");
|
||||||
|
expected = eina_list_append(expected, "app 'file:///tmp/absolute_path'");
|
||||||
|
expected = eina_list_append(expected, "app 'file:///relative_path'");
|
||||||
|
expected = eina_list_append(expected, "app 'file:///tmp/absolute_uri'");
|
||||||
|
expected = eina_list_append(expected, "app 'file:///relative_uri'");
|
||||||
|
|
||||||
|
info->expected = expected;
|
||||||
|
efreet_desktop_command_get(desktop, files, _cb_command, info);
|
||||||
|
expected = eina_list_free(expected);
|
||||||
|
|
||||||
|
/* test single dir */
|
||||||
|
#if 0
|
||||||
|
info->type = 'd';
|
||||||
|
IF_FREE(desktop->exec);
|
||||||
|
desktop->exec = strdup("app %d");
|
||||||
|
expected = eina_list_append(expected, "app '/tmp'");
|
||||||
|
expected = eina_list_append(expected, "app '/'");
|
||||||
|
expected = eina_list_append(expected, "app '/tmp'");
|
||||||
|
expected = eina_list_append(expected, "app '/'");
|
||||||
|
|
||||||
|
info->expected = expected;
|
||||||
|
efreet_desktop_command_get(desktop, files, _cb_command, info);
|
||||||
|
expected = eina_list_free(expected);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* test single names */
|
||||||
|
#if 0
|
||||||
|
info->type = 'n';
|
||||||
|
IF_FREE(desktop->exec);
|
||||||
|
desktop->exec = strdup("app %n");
|
||||||
|
expected = eina_list_append(expected, "app 'absolute_path'");
|
||||||
|
expected = eina_list_append(expected, "app 'relative_path'");
|
||||||
|
expected = eina_list_append(expected, "app 'absolute_uri'");
|
||||||
|
expected = eina_list_append(expected, "app 'relative_uri'");
|
||||||
|
|
||||||
|
info->expected = expected;
|
||||||
|
efreet_desktop_command_get(desktop, files, _cb_command, info);
|
||||||
|
expected = eina_list_free(expected);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* test multiple fullpaths */
|
||||||
|
info->type = 'F';
|
||||||
|
IF_FREE(desktop->exec);
|
||||||
|
desktop->exec = strdup("app %F");
|
||||||
|
expected = eina_list_append(expected, "app '/tmp/absolute_path' '/relative_path' '/tmp/absolute_uri' '/relative_uri'");
|
||||||
|
|
||||||
|
info->expected = expected;
|
||||||
|
efreet_desktop_command_get(desktop, files, _cb_command, info);
|
||||||
|
expected = eina_list_free(expected);
|
||||||
|
|
||||||
|
/* test multiple URIs */
|
||||||
|
info->type = 'U';
|
||||||
|
IF_FREE(desktop->exec);
|
||||||
|
desktop->exec = strdup("app %U");
|
||||||
|
expected = eina_list_append(expected, "app 'file:///tmp/absolute_path' 'file:///relative_path' 'file:///tmp/absolute_uri' 'file:///relative_uri'");
|
||||||
|
|
||||||
|
info->expected = expected;
|
||||||
|
efreet_desktop_command_get(desktop, files, _cb_command, info);
|
||||||
|
expected = eina_list_free(expected);
|
||||||
|
|
||||||
|
/* test multiple dirs */
|
||||||
|
#if 0
|
||||||
|
info->type = 'D';
|
||||||
|
IF_FREE(desktop->exec);
|
||||||
|
desktop->exec = strdup("app %D");
|
||||||
|
expected = eina_list_append(expected, "app '/tmp' '/' '/tmp' '/'");
|
||||||
|
|
||||||
|
info->expected = expected;
|
||||||
|
efreet_desktop_command_get(desktop, files, _cb_command, info);
|
||||||
|
expected = eina_list_free(expected);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* test multiple names */
|
||||||
|
#if 0
|
||||||
|
info->type = 'N';
|
||||||
|
IF_FREE(desktop->exec);
|
||||||
|
desktop->exec = strdup("app %N");
|
||||||
|
expected = eina_list_append(expected, "app 'absolute_path' 'relative_path' 'absolute_uri' 'relative_uri'");
|
||||||
|
|
||||||
|
info->expected = expected;
|
||||||
|
efreet_desktop_command_get(desktop, files, _cb_command, info);
|
||||||
|
expected = eina_list_free(expected);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* test icon appending */
|
||||||
|
info->type = 'i';
|
||||||
|
IF_FREE(desktop->exec);
|
||||||
|
desktop->exec = strdup("app %i");
|
||||||
|
expected = eina_list_append(expected, "app --icon 'icon.png'");
|
||||||
|
|
||||||
|
info->expected = expected;
|
||||||
|
efreet_desktop_command_get(desktop, NULL, _cb_command, info);
|
||||||
|
expected = eina_list_free(expected);
|
||||||
|
|
||||||
|
/* test app name */
|
||||||
|
info->type = 'c';
|
||||||
|
IF_FREE(desktop->exec);
|
||||||
|
desktop->exec = strdup("app %c");
|
||||||
|
expected = eina_list_append(expected, "app 'App Name'");
|
||||||
|
|
||||||
|
info->expected = expected;
|
||||||
|
efreet_desktop_command_get(desktop, NULL, _cb_command, info);
|
||||||
|
expected = eina_list_free(expected);
|
||||||
|
|
||||||
|
/* test desktop path */
|
||||||
|
info->type = 'k';
|
||||||
|
IF_FREE(desktop->exec);
|
||||||
|
desktop->exec = strdup("app %k");
|
||||||
|
expected = eina_list_append(expected, "app 'test.desktop'");
|
||||||
|
|
||||||
|
info->expected = expected;
|
||||||
|
efreet_desktop_command_get(desktop, NULL, _cb_command, info);
|
||||||
|
eina_list_free(expected);
|
||||||
|
|
||||||
|
/* clean up */
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
eina_list_free(files);
|
||||||
|
|
||||||
|
if (chdir(olddir) != 0) ret = 0;
|
||||||
|
|
||||||
|
ret = info->error > 0 ? 0 : 1;
|
||||||
|
free(info);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *
|
||||||
|
_cb_command(void *data, Efreet_Desktop *desktop __UNUSED__,
|
||||||
|
char *exec, int remaining __UNUSED__)
|
||||||
|
{
|
||||||
|
Test_Info *info = data;
|
||||||
|
char *expected;
|
||||||
|
|
||||||
|
expected = eina_list_data_get(info->expected);
|
||||||
|
info->expected = eina_list_demote_list(info->expected, info->expected);
|
||||||
|
if (!expected)
|
||||||
|
{
|
||||||
|
printf(" ERROR: (%%%c) got \"%s\", expected nothing\n", info->type, exec);
|
||||||
|
info->error++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (strcmp(exec, expected))
|
||||||
|
{
|
||||||
|
printf(" ERROR: (%%%c) got \"%s\", expected \"%s\"\n", info->type, exec, expected);
|
||||||
|
info->error++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(exec);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *
|
||||||
|
cb_type_parse(Efreet_Desktop *desktop __UNUSED__, Efreet_Ini *ini)
|
||||||
|
{
|
||||||
|
const char *val;
|
||||||
|
val = efreet_ini_string_get(ini, "X-Test");
|
||||||
|
if (!val) return NULL;
|
||||||
|
return (void *)strdup(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_desktop_type_parse(void)
|
||||||
|
{
|
||||||
|
Efreet_Desktop *desktop;
|
||||||
|
int my_type;
|
||||||
|
char *val;
|
||||||
|
int ret = 1;
|
||||||
|
|
||||||
|
/* add my custom desktop type to efreet */
|
||||||
|
my_type = efreet_desktop_type_add("My_Type", cb_type_parse, NULL,
|
||||||
|
(Efreet_Desktop_Type_Free_Cb)free);
|
||||||
|
|
||||||
|
desktop = efreet_desktop_get(PACKAGE_DATA_DIR"/test/test_type.desktop");
|
||||||
|
if (!desktop)
|
||||||
|
{
|
||||||
|
printf("No desktop found.\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (desktop->type != my_type)
|
||||||
|
{
|
||||||
|
printf("Invalid type returned in desktop");
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
val = (char *)efreet_desktop_type_data_get(desktop);
|
||||||
|
if (!val || strcmp(val, "Own key"))
|
||||||
|
{
|
||||||
|
printf("Invalid value of custom key (%s).\n", val);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
return ret;
|
||||||
|
}
|
|
@ -0,0 +1,605 @@
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "Efreet.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <Ecore.h>
|
||||||
|
#include <Ecore_File.h>
|
||||||
|
|
||||||
|
#define SIZE 128
|
||||||
|
#define THEME "Tango"
|
||||||
|
#define FREE(x) do { free(x); x = NULL; } while (0);
|
||||||
|
|
||||||
|
static Eina_Bool _hash_keys(Eina_Hash *hash, const char *key, void *list);
|
||||||
|
static void ef_icon_theme_themes_find(const char *search_dir,
|
||||||
|
Eina_Hash *themes);
|
||||||
|
static void ef_icons_find(Efreet_Icon_Theme *theme, Eina_Hash *icons);
|
||||||
|
static void ef_read_dir(const char *dir, Eina_Hash *icons);
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_efreet_icon_theme(void)
|
||||||
|
{
|
||||||
|
int ret = 1;
|
||||||
|
const char *tmp;
|
||||||
|
|
||||||
|
unsetenv("XDG_DATA_HOME");
|
||||||
|
efreet_shutdown();
|
||||||
|
putenv("HOME=/var/tmp");
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
tmp = efreet_icon_user_dir_get();
|
||||||
|
if (strcmp(tmp, "/var/tmp/.local/share/icons"))
|
||||||
|
{
|
||||||
|
printf("efreet_icon_user_dir_get() returned incorrect "
|
||||||
|
"value (%s) on HOME=/var/tmp\n", tmp);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
efreet_shutdown();
|
||||||
|
unsetenv("HOME");
|
||||||
|
#ifdef _WIN32
|
||||||
|
unsetenv("USERPROFILE");
|
||||||
|
#endif
|
||||||
|
efreet_init();
|
||||||
|
|
||||||
|
tmp = efreet_icon_user_dir_get();
|
||||||
|
if (strcmp(tmp, "/tmp/.local/share/icons"))
|
||||||
|
{
|
||||||
|
printf("efreet_icon_user_dir_get() returned incorrect "
|
||||||
|
"value (%s) on HOME=\n", tmp);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_hash_keys(Eina_Hash *hash __UNUSED__, const char *key, void *list)
|
||||||
|
{
|
||||||
|
Eina_List **l = list;
|
||||||
|
|
||||||
|
*l = eina_list_append(*l, key);
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_efreet_icon_theme_list(void)
|
||||||
|
{
|
||||||
|
int ret = 1;
|
||||||
|
Eina_List *themes;
|
||||||
|
Eina_List *icon_dirs;
|
||||||
|
Eina_List *l;
|
||||||
|
Eina_Hash *dirs;
|
||||||
|
Eina_Iterator *it;
|
||||||
|
Efreet_Icon_Theme *theme;
|
||||||
|
const char *dir;
|
||||||
|
char buf[PATH_MAX];
|
||||||
|
|
||||||
|
dirs = eina_hash_string_superfast_new(free);
|
||||||
|
|
||||||
|
icon_dirs = efreet_data_dirs_get();
|
||||||
|
|
||||||
|
ef_icon_theme_themes_find(efreet_icon_user_dir_get(), dirs);
|
||||||
|
EINA_LIST_FOREACH(icon_dirs, l, dir)
|
||||||
|
{
|
||||||
|
snprintf(buf, sizeof(buf), "%s/icons", dir);
|
||||||
|
ef_icon_theme_themes_find(buf, dirs);
|
||||||
|
}
|
||||||
|
EINA_LIST_FOREACH(icon_dirs, l, dir)
|
||||||
|
{
|
||||||
|
snprintf(buf, sizeof(buf), "%s/pixmaps", dir);
|
||||||
|
ef_icon_theme_themes_find(buf, dirs);
|
||||||
|
}
|
||||||
|
ef_icon_theme_themes_find("/usr/share/pixmaps", dirs);
|
||||||
|
|
||||||
|
themes = efreet_icon_theme_list_get();
|
||||||
|
EINA_LIST_FOREACH(themes, l, theme)
|
||||||
|
{
|
||||||
|
if ((eina_hash_find(dirs, theme->name.internal)))
|
||||||
|
eina_hash_del(dirs, theme->name.internal, NULL);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("efreet_icon_theme_list_get() returned %s which we didn't "
|
||||||
|
"see when scanning the directories.\n", theme->name.internal);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (themes)
|
||||||
|
{
|
||||||
|
themes = eina_list_remove_list(themes, themes);
|
||||||
|
}
|
||||||
|
|
||||||
|
themes = NULL;
|
||||||
|
it = eina_hash_iterator_key_new(dirs);
|
||||||
|
eina_iterator_foreach(it, EINA_EACH_CB(_hash_keys), &themes);
|
||||||
|
eina_iterator_free(it);
|
||||||
|
|
||||||
|
if (eina_list_count(themes) > 0)
|
||||||
|
{
|
||||||
|
printf("efreet_icon_theme_list_get() missed: ");
|
||||||
|
EINA_LIST_FOREACH(themes, l, dir)
|
||||||
|
printf("%s ", dir);
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
while (themes)
|
||||||
|
{
|
||||||
|
themes = eina_list_remove_list(themes, themes);
|
||||||
|
}
|
||||||
|
eina_hash_free(dirs);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
ef_icon_theme_themes_find(const char *search_dir, Eina_Hash *themes)
|
||||||
|
{
|
||||||
|
Eina_List *dirs;
|
||||||
|
char *dir;
|
||||||
|
|
||||||
|
if (!search_dir || !themes) return;
|
||||||
|
|
||||||
|
dirs = ecore_file_ls(search_dir);
|
||||||
|
if (!dirs) return;
|
||||||
|
|
||||||
|
while ((dir = eina_list_data_get(dirs)))
|
||||||
|
{
|
||||||
|
char p[PATH_MAX];
|
||||||
|
|
||||||
|
dirs = eina_list_remove_list(dirs, dirs);
|
||||||
|
/* if we've already added the theme we're done */
|
||||||
|
if (eina_hash_find(themes, dir))
|
||||||
|
{
|
||||||
|
free(dir);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if the index.theme file exists we open it and look for the hidden
|
||||||
|
* flag. */
|
||||||
|
snprintf(p, sizeof(p), "%s/%s/index.theme", search_dir, dir);
|
||||||
|
if (ecore_file_exists(p))
|
||||||
|
{
|
||||||
|
Efreet_Ini *ini;
|
||||||
|
char *d;
|
||||||
|
int skip = 0;
|
||||||
|
|
||||||
|
ini = efreet_ini_new(p);
|
||||||
|
efreet_ini_section_set(ini, "Icon Theme");
|
||||||
|
|
||||||
|
if (efreet_ini_boolean_get(ini, "Hidden")) skip = 1;
|
||||||
|
if (!efreet_ini_localestring_get(ini, "Name")) skip = 1;
|
||||||
|
efreet_ini_free(ini);
|
||||||
|
|
||||||
|
if (!skip)
|
||||||
|
{
|
||||||
|
d = strdup(dir);
|
||||||
|
eina_hash_add(themes, dir, d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(dir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *system_icons[] =
|
||||||
|
{
|
||||||
|
"address-book-new",
|
||||||
|
"application-exit",
|
||||||
|
"appointment-new",
|
||||||
|
"contact-new",
|
||||||
|
"dialog-apply",
|
||||||
|
"dialog-cancel",
|
||||||
|
"dialog-close",
|
||||||
|
"dialog-ok",
|
||||||
|
"document-new",
|
||||||
|
"document-open",
|
||||||
|
"document-open-recent",
|
||||||
|
"document-page-setup",
|
||||||
|
"document-print",
|
||||||
|
"document-print-preview",
|
||||||
|
"document-properties",
|
||||||
|
"document-revert",
|
||||||
|
"document-save",
|
||||||
|
"document-save-as",
|
||||||
|
"edit-copy",
|
||||||
|
"edit-cut",
|
||||||
|
"edit-delete",
|
||||||
|
"edit-find",
|
||||||
|
"edit-find-replace",
|
||||||
|
"edit-paste",
|
||||||
|
"edit-redo",
|
||||||
|
"edit-select-all",
|
||||||
|
"edit-undo",
|
||||||
|
"format-indent-less",
|
||||||
|
"format-indent-more",
|
||||||
|
"format-justify-center",
|
||||||
|
"format-justify-fill",
|
||||||
|
"format-justify-left",
|
||||||
|
"format-justify-right",
|
||||||
|
"format-text-direction-ltr",
|
||||||
|
"format-text-direction-rtl",
|
||||||
|
"format-text-bold",
|
||||||
|
"format-text-italic",
|
||||||
|
"format-text-underline",
|
||||||
|
"format-text-strikethrough",
|
||||||
|
"go-bottom",
|
||||||
|
"go-down",
|
||||||
|
"go-first",
|
||||||
|
"go-home",
|
||||||
|
"go-jump",
|
||||||
|
"go-last",
|
||||||
|
"go-next",
|
||||||
|
"go-previous",
|
||||||
|
"go-top",
|
||||||
|
"go-up",
|
||||||
|
"help-about",
|
||||||
|
"help-contents",
|
||||||
|
"help-faq",
|
||||||
|
"insert-image",
|
||||||
|
"insert-link",
|
||||||
|
"insert-object",
|
||||||
|
"insert-text",
|
||||||
|
"list-add",
|
||||||
|
"list-remove",
|
||||||
|
"mail-forward",
|
||||||
|
"mail-mark-important",
|
||||||
|
"mail-mark-junk",
|
||||||
|
"mail-mark-notjunk",
|
||||||
|
"mail-mark-read",
|
||||||
|
"mail-mark-unread",
|
||||||
|
"mail-message-new",
|
||||||
|
"mail-reply-all",
|
||||||
|
"mail-reply-sender",
|
||||||
|
"mail-send-receive",
|
||||||
|
"media-eject",
|
||||||
|
"media-playback-pause",
|
||||||
|
"media-playback-start",
|
||||||
|
"media-playback-stop",
|
||||||
|
"media-record",
|
||||||
|
"media-seek-backward",
|
||||||
|
"media-seek-forward",
|
||||||
|
"media-skip-backward",
|
||||||
|
"media-skip-forward",
|
||||||
|
"system-lock-screen",
|
||||||
|
"system-log-out",
|
||||||
|
"system-run",
|
||||||
|
"system-search",
|
||||||
|
"system-search",
|
||||||
|
"tools-check-spelling",
|
||||||
|
"view-fullscreen",
|
||||||
|
"view-refresh",
|
||||||
|
"view-sort-ascending",
|
||||||
|
"view-sort-descending",
|
||||||
|
"window-close",
|
||||||
|
"window-new",
|
||||||
|
"zoom-best-fit",
|
||||||
|
"zoom-in",
|
||||||
|
"zoom-original",
|
||||||
|
"zoom-out",
|
||||||
|
"process-working",
|
||||||
|
"accessories-calculator",
|
||||||
|
"accessories-character-map",
|
||||||
|
"accessories-dictionary",
|
||||||
|
"accessories-text-editor",
|
||||||
|
"help-browser",
|
||||||
|
"multimedia-volume-control",
|
||||||
|
#if 0
|
||||||
|
"preferences-desktop-accessibility",
|
||||||
|
"preferences-desktop-font",
|
||||||
|
"preferences-desktop-keyboard",
|
||||||
|
"preferences-desktop-locale",
|
||||||
|
"preferences-desktop-multimedia",
|
||||||
|
"preferences-desktop-screensaver",
|
||||||
|
"preferences-desktop-theme",
|
||||||
|
"preferences-desktop-wallpaper",
|
||||||
|
"system-file-manager",
|
||||||
|
"system-software-update",
|
||||||
|
"utilities-terminal",
|
||||||
|
"applications-accessories",
|
||||||
|
"applications-development",
|
||||||
|
"applications-games",
|
||||||
|
"applications-graphics",
|
||||||
|
"applications-internet",
|
||||||
|
"applications-multimedia",
|
||||||
|
"applications-office",
|
||||||
|
"applications-other",
|
||||||
|
"applications-system",
|
||||||
|
"applications-utilities",
|
||||||
|
"preferences-desktop",
|
||||||
|
"preferences-desktop-accessibility",
|
||||||
|
"preferences-desktop-peripherals",
|
||||||
|
"preferences-desktop-personal",
|
||||||
|
"preferences-other",
|
||||||
|
"preferences-system",
|
||||||
|
"preferences-system-network",
|
||||||
|
"system-help",
|
||||||
|
"audio-card",
|
||||||
|
"audio-input-microphone",
|
||||||
|
"battery",
|
||||||
|
"camera-photo",
|
||||||
|
"camera-video",
|
||||||
|
"computer",
|
||||||
|
"drive-cdrom",
|
||||||
|
"drive-harddisk",
|
||||||
|
"drive-removable-media",
|
||||||
|
"input-gaming",
|
||||||
|
"input-keyboard",
|
||||||
|
"input-mouse",
|
||||||
|
"media-cdrom",
|
||||||
|
"media-floppy",
|
||||||
|
"multimedia-player",
|
||||||
|
"multimedia-player",
|
||||||
|
"network-wired",
|
||||||
|
"network-wireless",
|
||||||
|
"printer",
|
||||||
|
"emblem-default",
|
||||||
|
"emblem-documents",
|
||||||
|
"emblem-downloads",
|
||||||
|
"emblem-favorite",
|
||||||
|
"emblem-important",
|
||||||
|
"emblem-mail",
|
||||||
|
"emblem-photos",
|
||||||
|
"emblem-readonly",
|
||||||
|
"emblem-shared",
|
||||||
|
"emblem-symbolic-link",
|
||||||
|
"emblem-synchronized",
|
||||||
|
"emblem-system",
|
||||||
|
"emblem-unreadable",
|
||||||
|
"face-angel",
|
||||||
|
"face-crying",
|
||||||
|
"face-devil-grin",
|
||||||
|
"face-devil-sad",
|
||||||
|
"face-glasses",
|
||||||
|
"face-kiss",
|
||||||
|
"face-monkey",
|
||||||
|
"face-plain",
|
||||||
|
"face-sad",
|
||||||
|
"face-smile",
|
||||||
|
"face-smile-big",
|
||||||
|
"face-smirk",
|
||||||
|
"face-surprise",
|
||||||
|
"face-wink",
|
||||||
|
"application-x-executable",
|
||||||
|
"audio-x-generic",
|
||||||
|
"font-x-generic",
|
||||||
|
"image-x-generic",
|
||||||
|
"package-x-generic",
|
||||||
|
"text-html",
|
||||||
|
"text-x-generic",
|
||||||
|
"text-x-generic-template",
|
||||||
|
"text-x-script",
|
||||||
|
"video-x-generic",
|
||||||
|
"x-office-address-book",
|
||||||
|
"x-office-calendar",
|
||||||
|
"x-office-document",
|
||||||
|
"x-office-presentation",
|
||||||
|
"x-office-spreadsheet",
|
||||||
|
"folder",
|
||||||
|
"folder-remote",
|
||||||
|
"network-server",
|
||||||
|
"network-workgroup",
|
||||||
|
"start-here",
|
||||||
|
"user-desktop",
|
||||||
|
"user-home",
|
||||||
|
"user-trash",
|
||||||
|
"appointment-missed",
|
||||||
|
"appointment-soon",
|
||||||
|
"audio-volume-high",
|
||||||
|
"audio-volume-low",
|
||||||
|
"audio-volume-medium",
|
||||||
|
"audio-volume-muted",
|
||||||
|
"battery-caution",
|
||||||
|
"battery-low",
|
||||||
|
"dialog-error",
|
||||||
|
"dialog-information",
|
||||||
|
"dialog-password",
|
||||||
|
"dialog-question",
|
||||||
|
"dialog-warning",
|
||||||
|
"folder-drag-accept",
|
||||||
|
"folder-open",
|
||||||
|
"folder-visiting",
|
||||||
|
"image-loading",
|
||||||
|
"image-missing",
|
||||||
|
"mail-attachment",
|
||||||
|
"mail-unread",
|
||||||
|
"mail-read",
|
||||||
|
"mail-replied",
|
||||||
|
"mail-signed",
|
||||||
|
"mail-signed-verified",
|
||||||
|
"media-playlist-repeat",
|
||||||
|
"media-playlist-shuffle",
|
||||||
|
"network-error",
|
||||||
|
"network-idle",
|
||||||
|
"network-offline",
|
||||||
|
"network-receive",
|
||||||
|
"network-transmit",
|
||||||
|
"network-transmit-receive",
|
||||||
|
"printer-error",
|
||||||
|
"printer-printing",
|
||||||
|
"software-update-available",
|
||||||
|
"software-update-urgent",
|
||||||
|
"sync-error",
|
||||||
|
"sync-synchronizing",
|
||||||
|
"task-due",
|
||||||
|
"task-passed-due",
|
||||||
|
"user-away",
|
||||||
|
"user-idle",
|
||||||
|
"user-offline",
|
||||||
|
"user-online",
|
||||||
|
"user-trash-full",
|
||||||
|
"weather-clear",
|
||||||
|
"weather-clear-night",
|
||||||
|
"weather-few-clouds",
|
||||||
|
"weather-few-clouds-night",
|
||||||
|
"weather-fog",
|
||||||
|
"weather-overcast",
|
||||||
|
"weather-severe-alert",
|
||||||
|
"weather-showers",
|
||||||
|
"weather-showers-scattered",
|
||||||
|
"weather-snow",
|
||||||
|
"weather-storm",
|
||||||
|
#endif
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_efreet_icon_match(void)
|
||||||
|
{
|
||||||
|
int i, ret = 1;
|
||||||
|
Eina_Hash *icon_hash;
|
||||||
|
Efreet_Icon_Theme *theme;
|
||||||
|
|
||||||
|
theme = efreet_icon_theme_find(THEME);
|
||||||
|
icon_hash = eina_hash_string_superfast_new(free);
|
||||||
|
|
||||||
|
ef_icons_find(theme, icon_hash);
|
||||||
|
|
||||||
|
double start = ecore_time_get();
|
||||||
|
for (i = 0; system_icons[i]; i++)
|
||||||
|
{
|
||||||
|
const char *path;
|
||||||
|
char *p, *s;
|
||||||
|
|
||||||
|
path = efreet_icon_path_find(THEME, system_icons[i], SIZE);
|
||||||
|
|
||||||
|
if (!path)
|
||||||
|
{
|
||||||
|
#if 1
|
||||||
|
if (eina_hash_find(icon_hash, system_icons[i]))
|
||||||
|
{
|
||||||
|
printf("NOT FOUND %s\n", system_icons[i]);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
else if (!eina_hash_find(icon_hash, system_icons[i]))
|
||||||
|
{
|
||||||
|
printf("Found icon not in hash: %s\n", system_icons[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
p = strdup(path);
|
||||||
|
s = strrchr(p, '.');
|
||||||
|
if (s) *s = '\0';
|
||||||
|
s = strrchr(p, '/');
|
||||||
|
if (s) s++;
|
||||||
|
|
||||||
|
if (s && strcmp(s, system_icons[i]))
|
||||||
|
{
|
||||||
|
printf("Name mismatch name (%s) vs ef (%s)\n", system_icons[i], s);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
free(p);
|
||||||
|
}
|
||||||
|
printf("Time: %f\n", (ecore_time_get() - start));
|
||||||
|
eina_hash_free(icon_hash);
|
||||||
|
|
||||||
|
start = ecore_time_get();
|
||||||
|
for (i = 0; system_icons[i]; i++)
|
||||||
|
{
|
||||||
|
const char *path;
|
||||||
|
char *p, *s;
|
||||||
|
|
||||||
|
path = efreet_icon_path_find(THEME, system_icons[i], SIZE);
|
||||||
|
|
||||||
|
if (!path) continue;
|
||||||
|
p = strdup(path);
|
||||||
|
|
||||||
|
s = strrchr(p, '.');
|
||||||
|
if (s) *s = '\0';
|
||||||
|
s = strrchr(p, '/');
|
||||||
|
if (s) s++;
|
||||||
|
|
||||||
|
if (s && strcmp(s, system_icons[i]))
|
||||||
|
{
|
||||||
|
printf("Name mismatch name (%s) vs ef (%s)\n", system_icons[i], s);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
free(p);
|
||||||
|
}
|
||||||
|
printf("Time: %f\n", (ecore_time_get() - start));
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
ef_icons_find(Efreet_Icon_Theme *theme, Eina_Hash *icons)
|
||||||
|
{
|
||||||
|
Eina_List *l, *ll;
|
||||||
|
char path[PATH_MAX];
|
||||||
|
const char *theme_path;
|
||||||
|
|
||||||
|
if (!theme || !icons) return;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(theme->paths, l, theme_path)
|
||||||
|
{
|
||||||
|
Efreet_Icon_Theme_Directory *dir;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(theme->directories, ll, dir)
|
||||||
|
{
|
||||||
|
snprintf(path, sizeof(path), "%s/%s/", theme_path, dir->name);
|
||||||
|
ef_read_dir(path, icons);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (theme->inherits)
|
||||||
|
{
|
||||||
|
Efreet_Icon_Theme *parent_theme;
|
||||||
|
char *parent;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(theme->inherits, l, parent)
|
||||||
|
{
|
||||||
|
parent_theme = efreet_icon_theme_find(parent);
|
||||||
|
if (parent_theme)
|
||||||
|
ef_icons_find(parent_theme, icons);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (theme->valid && strcmp(theme->name.internal, "hicolor"))
|
||||||
|
{
|
||||||
|
Efreet_Icon_Theme *parent_theme;
|
||||||
|
|
||||||
|
parent_theme = efreet_icon_theme_find("hicolor");
|
||||||
|
if (parent_theme)
|
||||||
|
ef_icons_find(parent_theme, icons);
|
||||||
|
}
|
||||||
|
|
||||||
|
ef_read_dir("/usr/share/pixmaps", icons);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
ef_read_dir(const char *dir, Eina_Hash *icons)
|
||||||
|
{
|
||||||
|
Eina_List *files;
|
||||||
|
char *file;
|
||||||
|
|
||||||
|
if (!dir || !icons) return;
|
||||||
|
|
||||||
|
files = ecore_file_ls(dir);
|
||||||
|
if (!files) return;
|
||||||
|
|
||||||
|
while ((file = eina_list_data_get(files)))
|
||||||
|
{
|
||||||
|
char *p;
|
||||||
|
|
||||||
|
files = eina_list_remove_list(files, files);
|
||||||
|
p = strrchr(file, '.');
|
||||||
|
if (!p)
|
||||||
|
{
|
||||||
|
FREE(file);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!strcmp(p, ".png") || !strcmp(p, ".xpm"))
|
||||||
|
{
|
||||||
|
*p = '\0';
|
||||||
|
|
||||||
|
eina_hash_add(icons, file, strdup(file));
|
||||||
|
}
|
||||||
|
|
||||||
|
FREE(file);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,174 @@
|
||||||
|
#include "Efreet.h"
|
||||||
|
#include "config.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_ini_parse(void)
|
||||||
|
{
|
||||||
|
int ret = 1;
|
||||||
|
Efreet_Ini *ini;
|
||||||
|
|
||||||
|
putenv("LC_ALL=en_US");
|
||||||
|
|
||||||
|
ini = efreet_ini_new(PACKAGE_DATA_DIR"/test/test.ini");
|
||||||
|
if (!ini)
|
||||||
|
{
|
||||||
|
printf("efreet_ini_parse() Failed to initialize Efreet_Ini\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (efreet_ini_section_set(ini, "contact"))
|
||||||
|
{
|
||||||
|
const char *val;
|
||||||
|
int ival;
|
||||||
|
unsigned int bval;
|
||||||
|
|
||||||
|
val = efreet_ini_string_get(ini, "Name");
|
||||||
|
if (!val || strcmp(val, "Foo Bar"))
|
||||||
|
{
|
||||||
|
printf("efreet_ini_string_get() Name parsed incorrectly\n");
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
val = efreet_ini_localestring_get(ini, "Name");
|
||||||
|
if (!val || strcmp(val, "English Foo Bar"))
|
||||||
|
{
|
||||||
|
printf("efreet_ini_localestring_get() Name parsed incorrectly\n");
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
val = efreet_ini_string_get(ini, "Email");
|
||||||
|
if (!val || strcmp(val, "foo@bar.com"))
|
||||||
|
{
|
||||||
|
printf("efreet_ini_string_get() Email parsed incorrectly\n");
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
val = efreet_ini_localestring_get(ini, "Email");
|
||||||
|
if (!val || strcmp(val, "foo@bar.com"))
|
||||||
|
{
|
||||||
|
printf("efreet_ini_localestring_get() Email parsed incorrectly\n");
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ival = efreet_ini_int_get(ini, "Age");
|
||||||
|
if (ival != 30)
|
||||||
|
{
|
||||||
|
printf("efreet_ini_int_get() Age parsed incorrectly\n");
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bval = efreet_ini_boolean_get(ini, "TrueBoolean");
|
||||||
|
if (!bval)
|
||||||
|
{
|
||||||
|
printf("efreet_ini_boolean_get() TrueBoolean parsed incorrectly\n");
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bval = efreet_ini_boolean_get(ini, "FalseBoolean");
|
||||||
|
if (bval)
|
||||||
|
{
|
||||||
|
printf("efreet_ini_boolean_get() FalseBoolean parsed incorrectly\n");
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bval = efreet_ini_boolean_get(ini, "InvalidBoolean");
|
||||||
|
if (bval)
|
||||||
|
{
|
||||||
|
printf("efreet_ini_boolean_get() InvalidBoolean parsed incorrectly\n");
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
val = efreet_ini_string_get(ini, "Escaped");
|
||||||
|
if (!val || strcmp(val, "line1\nline2\r\nline3\ttabbed \\ with a backslash and spaces"))
|
||||||
|
{
|
||||||
|
printf("efreet_ini_unescape() improperly unescaped value\n");
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("efreet_ini_section_set() Failed to set 'contact' section\n");
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
efreet_ini_free(ini);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_ini_long_line(void)
|
||||||
|
{
|
||||||
|
Efreet_Ini *ini;
|
||||||
|
int ret = 1;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
char *key;
|
||||||
|
int len;
|
||||||
|
} tests[] = {
|
||||||
|
{"key", 5099},
|
||||||
|
{"key2", 5099},
|
||||||
|
{NULL, 0}
|
||||||
|
};
|
||||||
|
|
||||||
|
ini = efreet_ini_new(PACKAGE_DATA_DIR"/test/long.ini");
|
||||||
|
if (!ini)
|
||||||
|
{
|
||||||
|
printf("Ini failed to parse.\n");
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ret) ret = efreet_ini_section_set(ini, "section");
|
||||||
|
if (ret)
|
||||||
|
{
|
||||||
|
const char *val;
|
||||||
|
int i, len;
|
||||||
|
|
||||||
|
for (i = 0; tests[i].key; i++)
|
||||||
|
{
|
||||||
|
val = efreet_ini_string_get(ini, tests[i].key);
|
||||||
|
if (val)
|
||||||
|
{
|
||||||
|
len = strlen(val);
|
||||||
|
if (len != tests[i].len)
|
||||||
|
{
|
||||||
|
printf("Invalid long line parsing. Value length: %d (expected %d)\n", len, tests[i].len);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Key missing: %s.", tests[i].key);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Section missing: 'section'.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ini) efreet_ini_free(ini);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_ini_garbage(void)
|
||||||
|
{
|
||||||
|
Efreet_Ini *ini;
|
||||||
|
int ret = 1;
|
||||||
|
|
||||||
|
ini = efreet_ini_new(PACKAGE_DATA_DIR"/test/test_garbage");
|
||||||
|
if (!ini)
|
||||||
|
{
|
||||||
|
printf("Ini failed to parse.\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (ini->data) ret = 0;
|
||||||
|
efreet_ini_free(ini);
|
||||||
|
return ret;
|
||||||
|
}
|
|
@ -0,0 +1,85 @@
|
||||||
|
#include "Efreet.h"
|
||||||
|
#include "efreet_private.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_locale(void)
|
||||||
|
{
|
||||||
|
int ret = 1, i;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
char *lc_message;
|
||||||
|
char *lang;
|
||||||
|
char *country;
|
||||||
|
char *modifier;
|
||||||
|
} langs[] = {
|
||||||
|
/* these are ordered such that when we move from LANG to LC_MESSAGES
|
||||||
|
* the LANG env will still be effect. Same with moving from
|
||||||
|
* LC_MESSAGES to LANG */
|
||||||
|
{"LANG=", NULL, NULL, NULL},
|
||||||
|
{"LANG=en", "en", NULL, NULL},
|
||||||
|
{"LANG=en@Latn", "en", NULL, "Latn"},
|
||||||
|
{"LANG=en_US", "en", "US", NULL},
|
||||||
|
{"LANG=en_US@Latn", "en", "US", "Latn"},
|
||||||
|
{"LANG=en_US.blah@Latn", "en", "US", "Latn"},
|
||||||
|
{"LC_MESSAGES=", "en", "US", "Latn"}, /* This will fallback to LANG */
|
||||||
|
{"LC_MESSAGES=fr", "fr", NULL, NULL},
|
||||||
|
{"LC_MESSAGES=fr@Blah", "fr", NULL, "Blah"},
|
||||||
|
{"LC_MESSAGES=fr_FR", "fr", "FR", NULL},
|
||||||
|
{"LC_MESSAGES=fr_FR@Blah", "fr", "FR", "Blah"},
|
||||||
|
{"LC_MESSAGES=fr_FR.Foo@Blah", "fr", "FR", "Blah"},
|
||||||
|
{"LC_ALL=", "fr", "FR", "Blah"}, /* this will fallback to LC_MESSAGES */
|
||||||
|
{"LC_ALL=sr", "sr", NULL, NULL},
|
||||||
|
{"LC_ALL=sr@Ret", "sr", NULL, "Ret"},
|
||||||
|
{"LC_ALL=sr_YU", "sr", "YU", NULL},
|
||||||
|
{"LC_ALL=sr_YU@Ret", "sr", "YU", "Ret"},
|
||||||
|
{"LC_ALL=sr_YU.ssh@Ret", "sr", "YU", "Ret"},
|
||||||
|
{NULL, NULL, NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* reset everything to blank */
|
||||||
|
putenv("LC_ALL=");
|
||||||
|
putenv("LC_MESSAGES=");
|
||||||
|
putenv("LANG=");
|
||||||
|
|
||||||
|
for (i = 0; langs[i].lc_message; i++)
|
||||||
|
{
|
||||||
|
const char *tmp;
|
||||||
|
|
||||||
|
putenv(langs[i].lc_message);
|
||||||
|
|
||||||
|
tmp = efreet_lang_get();
|
||||||
|
if ((langs[i].lang && (!tmp || strcmp(tmp, langs[i].lang)))
|
||||||
|
|| (!langs[i].lang && tmp))
|
||||||
|
{
|
||||||
|
printf("efreet_lang_get() is wrong (%s) with %s\n",
|
||||||
|
tmp, langs[i].lang);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp = efreet_lang_country_get();
|
||||||
|
if ((langs[i].country && (!tmp || strcmp(tmp, langs[i].country)))
|
||||||
|
|| (!langs[i].country && tmp))
|
||||||
|
{
|
||||||
|
printf("efreet_lang_country_get() is wrong (%s) with %s\n",
|
||||||
|
tmp, langs[i].lang);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp = efreet_lang_modifier_get();
|
||||||
|
if ((langs[i].modifier && (!tmp || strcmp(tmp, langs[i].modifier)))
|
||||||
|
|| (!langs[i].modifier && tmp))
|
||||||
|
{
|
||||||
|
printf("efreet_lang_modifier_get() is wrong with %s with %s\n",
|
||||||
|
tmp, langs[i].lang);
|
||||||
|
ret = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
efreet_shutdown();
|
||||||
|
efreet_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
|
@ -0,0 +1,150 @@
|
||||||
|
#include "Efreet.h"
|
||||||
|
#include "config.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
static void
|
||||||
|
ef_menu_desktop_exec(Efreet_Menu *menu)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
|
||||||
|
if (menu->entries)
|
||||||
|
{
|
||||||
|
Efreet_Desktop *desktop;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(menu->entries, l, desktop)
|
||||||
|
efreet_desktop_exec(desktop, NULL);
|
||||||
|
}
|
||||||
|
if (menu->sub_menus)
|
||||||
|
{
|
||||||
|
Efreet_Menu *sub_menu;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(menu->sub_menus, l, sub_menu)
|
||||||
|
ef_menu_desktop_exec(sub_menu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_menu_get(void)
|
||||||
|
{
|
||||||
|
Efreet_Menu *menu;
|
||||||
|
|
||||||
|
menu = efreet_menu_get();
|
||||||
|
// menu = efreet_menu_parse(PACKAGE_DATA_DIR"/test/test.menu");
|
||||||
|
if (!menu)
|
||||||
|
{
|
||||||
|
printf("efreet_menu_get() returned NULL\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
efreet_menu_dump(menu, "");
|
||||||
|
efreet_menu_free(menu);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_menu_with_slashes(void)
|
||||||
|
{
|
||||||
|
Efreet_Menu *menu;
|
||||||
|
|
||||||
|
menu = efreet_menu_parse(PACKAGE_DATA_DIR"/test/test_menu_slash_bad.menu");
|
||||||
|
if (menu)
|
||||||
|
{
|
||||||
|
printf("efreet_menu_get() didn't return NULL\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_menu_save(void)
|
||||||
|
{
|
||||||
|
Efreet_Menu *menu;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
// menu = efreet_menu_get();
|
||||||
|
menu = efreet_menu_parse(PACKAGE_DATA_DIR"/test/test.menu");
|
||||||
|
if (!menu)
|
||||||
|
{
|
||||||
|
printf("efreet_menu_get() returned NULL\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
unlink("/tmp/test.menu");
|
||||||
|
ret = efreet_menu_save(menu, "/tmp/test.menu");
|
||||||
|
efreet_menu_free(menu);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_menu_edit(void)
|
||||||
|
{
|
||||||
|
Efreet_Menu *menu, *entry;
|
||||||
|
Efreet_Desktop *desktop;
|
||||||
|
|
||||||
|
// menu = efreet_menu_get();
|
||||||
|
menu = efreet_menu_parse(PACKAGE_DATA_DIR"/test/test.menu");
|
||||||
|
if (!menu)
|
||||||
|
{
|
||||||
|
printf("efreet_menu_get() returned NULL\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#if 0
|
||||||
|
printf("\n");
|
||||||
|
efreet_menu_dump(menu, "");
|
||||||
|
printf("\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
desktop = efreet_desktop_get(PACKAGE_DATA_DIR"/test/test.desktop");
|
||||||
|
if (!desktop)
|
||||||
|
{
|
||||||
|
efreet_menu_free(menu);
|
||||||
|
printf("No desktop found.\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
efreet_menu_desktop_insert(menu, desktop, 0);
|
||||||
|
#if 0
|
||||||
|
printf("\n");
|
||||||
|
efreet_menu_dump(menu, "");
|
||||||
|
printf("\n");
|
||||||
|
#endif
|
||||||
|
entry = eina_list_data_get(menu->entries);
|
||||||
|
if (desktop != entry->desktop)
|
||||||
|
{
|
||||||
|
efreet_menu_free(menu);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
efreet_menu_desktop_insert(menu, desktop, 2);
|
||||||
|
#if 0
|
||||||
|
printf("\n");
|
||||||
|
efreet_menu_dump(menu, "");
|
||||||
|
printf("\n");
|
||||||
|
#endif
|
||||||
|
entry = eina_list_nth(menu->entries, 2);
|
||||||
|
if (desktop != entry->desktop)
|
||||||
|
{
|
||||||
|
efreet_menu_free(menu);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
efreet_menu_desktop_insert(menu, desktop, -1);
|
||||||
|
#if 0
|
||||||
|
printf("\n");
|
||||||
|
efreet_menu_dump(menu, "");
|
||||||
|
printf("\n");
|
||||||
|
#endif
|
||||||
|
entry = eina_list_data_get(eina_list_last(menu->entries));
|
||||||
|
if (desktop != entry->desktop)
|
||||||
|
{
|
||||||
|
efreet_menu_free(menu);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
efreet_menu_free(menu);
|
||||||
|
return 1;
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
#include "Efreet.h"
|
||||||
|
#include "Efreet_Mime.h"
|
||||||
|
#include "config.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <Ecore.h>
|
||||||
|
|
||||||
|
#define THEME "Tango"
|
||||||
|
#define SIZE 128
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_mime_cb_get(void)
|
||||||
|
{
|
||||||
|
const char *mime = NULL, *icon;
|
||||||
|
int misses = 0, i = 0;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
char *file;
|
||||||
|
char *mime;
|
||||||
|
} files[] = {
|
||||||
|
{PACKAGE_DATA_DIR"/test/test_type.desktop", "application/x-desktop"},
|
||||||
|
{PACKAGE_DATA_DIR"/test/entry.png", "image/png"},
|
||||||
|
{PACKAGE_DATA_DIR"/test/entry", "image/png"},
|
||||||
|
{PACKAGE_DATA_DIR"/test/sub", "inode/directory"},
|
||||||
|
{NULL, NULL}
|
||||||
|
};
|
||||||
|
double start;
|
||||||
|
|
||||||
|
if (!efreet_mime_init())
|
||||||
|
{
|
||||||
|
printf("Could not init efreet\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; files[i].file; ++i)
|
||||||
|
{
|
||||||
|
mime = efreet_mime_type_get(files[i].file);
|
||||||
|
if (!mime)
|
||||||
|
{
|
||||||
|
printf("Got %s as null instead of %s\n", files[i].file, files[i].mime);
|
||||||
|
misses ++;
|
||||||
|
}
|
||||||
|
else if (strcmp(mime, files[i].mime))
|
||||||
|
{
|
||||||
|
printf("Got %s as %s instead of %s\n", files[i].file, mime, files[i].mime);
|
||||||
|
misses ++;
|
||||||
|
}
|
||||||
|
start = ecore_time_get();
|
||||||
|
icon = efreet_mime_type_icon_get(files[i].mime, THEME, SIZE);
|
||||||
|
printf("mime icon: %s %s %f\n", files[i].mime, icon, ecore_time_get() - start);
|
||||||
|
}
|
||||||
|
|
||||||
|
efreet_mime_shutdown();
|
||||||
|
|
||||||
|
return !misses;
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
#ifndef EF_TEST
|
||||||
|
#define EF_TEST
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <eina_types.h>
|
||||||
|
|
||||||
|
#define IF_FREE(x) do { if (x) free(x); x = NULL; } while (0);
|
||||||
|
#define NEW(x, c) calloc(c, sizeof(x))
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,29 @@
|
||||||
|
#include "Efreet.h"
|
||||||
|
#include "efreet_private.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
ef_cb_utils(void)
|
||||||
|
{
|
||||||
|
Efreet_Desktop *desktop;
|
||||||
|
const char *tmp2;
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
tmp2 = efreet_util_path_to_file_id("/usr/share/applications/this/tmp/test.desktop");
|
||||||
|
if (tmp2) printf("%s\n", tmp2);
|
||||||
|
|
||||||
|
desktop = efreet_util_desktop_file_id_find("kde-kresources.desktop");
|
||||||
|
printf("kde-kresources.desktop: %p\n", desktop);
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
|
||||||
|
desktop = efreet_util_desktop_file_id_find("mplayer.desktop");
|
||||||
|
printf("mplayer.desktop: %p\n", desktop);
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
|
||||||
|
desktop = efreet_util_desktop_file_id_find("nautilus-computer.desktop");
|
||||||
|
printf("nautilus-computer.desktop: %p\n", desktop);
|
||||||
|
efreet_desktop_free(desktop);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
|
@ -0,0 +1,134 @@
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
#include <limits.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#include <Eina.h>
|
||||||
|
#include <Eet.h>
|
||||||
|
#include <Ecore.h>
|
||||||
|
#include <Ecore_File.h>
|
||||||
|
|
||||||
|
#include "Efreet.h"
|
||||||
|
#include "efreet_private.h"
|
||||||
|
#include "efreet_cache_private.h"
|
||||||
|
|
||||||
|
static Eet_Data_Descriptor *edd = NULL;
|
||||||
|
|
||||||
|
int verbose = 0;
|
||||||
|
|
||||||
|
static void
|
||||||
|
dump(Efreet_Icon_Theme *theme, Eet_File *ef)
|
||||||
|
{
|
||||||
|
Efreet_Cache_Icons *cache;
|
||||||
|
Eina_Iterator *it;
|
||||||
|
const char *key;
|
||||||
|
unsigned int count = 0;
|
||||||
|
double start, avg;
|
||||||
|
|
||||||
|
start = ecore_time_get();
|
||||||
|
|
||||||
|
printf("open: %s\n", theme->name.internal);
|
||||||
|
|
||||||
|
cache = eet_data_read(ef, edd, theme->name.internal);
|
||||||
|
|
||||||
|
printf("read: %s %f\n", theme->name.internal, ecore_time_get() - start);
|
||||||
|
|
||||||
|
if (!cache || !cache->icons) return ;
|
||||||
|
|
||||||
|
it = eina_hash_iterator_key_new(cache->icons);
|
||||||
|
|
||||||
|
EINA_ITERATOR_FOREACH(it, key)
|
||||||
|
{
|
||||||
|
Efreet_Cache_Icon *icon;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
icon = eina_hash_find(cache->icons, key);
|
||||||
|
|
||||||
|
for (i = 0; i < icon->icons_count; ++i)
|
||||||
|
count += icon->icons[i]->paths_count;
|
||||||
|
}
|
||||||
|
|
||||||
|
eina_iterator_free(it);
|
||||||
|
|
||||||
|
efreet_hash_free(cache->icons, EINA_FREE_CB(efreet_cache_icon_free));
|
||||||
|
free(cache);
|
||||||
|
|
||||||
|
start = ecore_time_get() - start;
|
||||||
|
avg = start / count;
|
||||||
|
printf("read: %s - %u paths (time: %f) (avg %f)\n", theme->name.internal, count, start, avg);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
Eet_File *icons_ef;
|
||||||
|
Eet_File *theme_ef;
|
||||||
|
Eina_List *l = NULL;
|
||||||
|
Efreet_Icon_Theme *theme;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
efreet_cache_update = 0;
|
||||||
|
|
||||||
|
if (!efreet_init()) return -1;
|
||||||
|
|
||||||
|
theme_ef = eet_open(efreet_icon_theme_cache_file(), EET_FILE_MODE_READ);
|
||||||
|
if (!theme_ef) return -1;
|
||||||
|
|
||||||
|
edd = efreet_icons_edd(EINA_FALSE);
|
||||||
|
if (!edd) return -1;
|
||||||
|
|
||||||
|
if (argc > 1)
|
||||||
|
{
|
||||||
|
for (i = 1; i < argc; i++)
|
||||||
|
{
|
||||||
|
theme = eet_data_read(theme_ef, efreet_icon_theme_edd(), argv[i]);
|
||||||
|
if (theme) l = eina_list_append(l, theme);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char **keys;
|
||||||
|
int num;
|
||||||
|
|
||||||
|
keys = eet_list(theme_ef, "*", &num);
|
||||||
|
if (keys)
|
||||||
|
{
|
||||||
|
for (i = 0; i < num; i++)
|
||||||
|
{
|
||||||
|
theme = eet_data_read(theme_ef, efreet_icon_theme_edd(), keys[i]);
|
||||||
|
if (theme) l = eina_list_append(l, theme);
|
||||||
|
}
|
||||||
|
free(keys);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
icons_ef = eet_open(efreet_icon_cache_file(), EET_FILE_MODE_READ);
|
||||||
|
if (!icons_ef) return -1;
|
||||||
|
|
||||||
|
EINA_LIST_FREE(l, theme)
|
||||||
|
{
|
||||||
|
void *data;
|
||||||
|
|
||||||
|
dump(theme, icons_ef);
|
||||||
|
|
||||||
|
/* free theme */
|
||||||
|
eina_list_free(theme->paths);
|
||||||
|
eina_list_free(theme->inherits);
|
||||||
|
EINA_LIST_FREE(theme->directories, data)
|
||||||
|
free(data);
|
||||||
|
free(theme);
|
||||||
|
}
|
||||||
|
|
||||||
|
eet_close(icons_ef);
|
||||||
|
|
||||||
|
efreet_shutdown();
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
#include <Efreet.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include "ef_test.h"
|
||||||
|
|
||||||
|
static void dump(Efreet_Menu *menu, const char *path);
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc __UNUSED__, char **argv __UNUSED__)
|
||||||
|
{
|
||||||
|
Efreet_Menu *menu;
|
||||||
|
|
||||||
|
if (!efreet_init())
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Failed to init Efreet\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
menu = efreet_menu_get();
|
||||||
|
if (!menu)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Failed to read menu\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
dump(menu, "");
|
||||||
|
|
||||||
|
efreet_menu_free(menu);
|
||||||
|
efreet_shutdown();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dump(Efreet_Menu *menu, const char *path)
|
||||||
|
{
|
||||||
|
Efreet_Menu *entry;
|
||||||
|
Eina_List *l;
|
||||||
|
|
||||||
|
if (!menu || !menu->entries) return;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(menu->entries, l, entry)
|
||||||
|
{
|
||||||
|
if (entry->type == EFREET_MENU_ENTRY_DESKTOP)
|
||||||
|
{
|
||||||
|
if (!path || !*path) path = "/";
|
||||||
|
printf("%s\t%s\t%s\n", path, entry->id,
|
||||||
|
entry->desktop->orig_path);
|
||||||
|
}
|
||||||
|
else if (entry->type == EFREET_MENU_ENTRY_MENU)
|
||||||
|
{
|
||||||
|
char new_path[PATH_MAX];
|
||||||
|
|
||||||
|
snprintf(new_path, sizeof(new_path), "%s%s/", path, entry->name);
|
||||||
|
dump(entry, new_path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,103 @@
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include <Efreet.h>
|
||||||
|
|
||||||
|
#include "efreet_suite.h"
|
||||||
|
|
||||||
|
typedef struct _Efreet_Test_Case Efreet_Test_Case;
|
||||||
|
|
||||||
|
struct _Efreet_Test_Case
|
||||||
|
{
|
||||||
|
const char *test_case;
|
||||||
|
void (*build)(TCase *tc);
|
||||||
|
};
|
||||||
|
|
||||||
|
static const Efreet_Test_Case etc[] = {
|
||||||
|
{ "Efreet", efreet_test_efreet },
|
||||||
|
{ "Efreet Cache", efreet_test_efreet_cache },
|
||||||
|
{ NULL, NULL }
|
||||||
|
};
|
||||||
|
|
||||||
|
static void
|
||||||
|
_list_tests(void)
|
||||||
|
{
|
||||||
|
const Efreet_Test_Case *itr;
|
||||||
|
|
||||||
|
itr = etc;
|
||||||
|
fputs("Available Test Cases:\n", stderr);
|
||||||
|
for (; itr->test_case; itr++)
|
||||||
|
fprintf(stderr, "\t%s\n", itr->test_case);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_use_test(int argc, const char **argv, const char *test_case)
|
||||||
|
{
|
||||||
|
if (argc < 1)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
for (; argc > 0; argc--, argv++)
|
||||||
|
if (strcmp(test_case, *argv) == 0)
|
||||||
|
return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Suite *
|
||||||
|
efreet_suite_build(int argc, const char **argv)
|
||||||
|
{
|
||||||
|
TCase *tc;
|
||||||
|
Suite *s;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
s = suite_create("Efreet");
|
||||||
|
|
||||||
|
for (i = 0; etc[i].test_case; ++i)
|
||||||
|
{
|
||||||
|
if (!_use_test(argc, argv, etc[i].test_case)) continue;
|
||||||
|
tc = tcase_create(etc[i].test_case);
|
||||||
|
|
||||||
|
etc[i].build(tc);
|
||||||
|
|
||||||
|
suite_add_tcase(s, tc);
|
||||||
|
tcase_set_timeout(tc, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
Suite *s;
|
||||||
|
SRunner *sr;
|
||||||
|
int i, failed_count;
|
||||||
|
|
||||||
|
for (i = 1; i < argc; i++)
|
||||||
|
if ((strcmp(argv[i], "-h") == 0) ||
|
||||||
|
(strcmp(argv[i], "--help") == 0))
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Usage:\n\t%s [test_case1 .. [test_caseN]]\n",
|
||||||
|
argv[0]);
|
||||||
|
_list_tests();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else if ((strcmp(argv[i], "-l") == 0) ||
|
||||||
|
(strcmp(argv[i], "--list") == 0))
|
||||||
|
{
|
||||||
|
_list_tests();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
s = efreet_suite_build(argc - 1, (const char **)argv + 1);
|
||||||
|
sr = srunner_create(s);
|
||||||
|
|
||||||
|
srunner_run_all(sr, CK_NORMAL);
|
||||||
|
failed_count = srunner_ntests_failed(sr);
|
||||||
|
srunner_free(sr);
|
||||||
|
|
||||||
|
return (failed_count == 0) ? 0 : 255;
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
#ifndef _EFREET_SUITE_H
|
||||||
|
#define _EFREET_SUITE_H
|
||||||
|
|
||||||
|
#include <check.h>
|
||||||
|
|
||||||
|
void efreet_test_efreet(TCase *tc);
|
||||||
|
void efreet_test_efreet_cache(TCase *tc);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* _EFREET_SUITE_H */
|
|
@ -0,0 +1,25 @@
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <Efreet.h>
|
||||||
|
|
||||||
|
#include "efreet_suite.h"
|
||||||
|
|
||||||
|
|
||||||
|
START_TEST(efreet_test_efreet_init)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = efreet_init();
|
||||||
|
fail_if(ret != 1);
|
||||||
|
|
||||||
|
ret = efreet_shutdown();
|
||||||
|
fail_if(ret != 0);
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
void efreet_test_efreet(TCase *tc)
|
||||||
|
{
|
||||||
|
tcase_add_test(tc, efreet_test_efreet_init);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <Efreet.h>
|
||||||
|
|
||||||
|
#include "efreet_suite.h"
|
||||||
|
|
||||||
|
|
||||||
|
START_TEST(efreet_test_efreet_cache_init)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = efreet_init();
|
||||||
|
fail_if(ret != 1);
|
||||||
|
|
||||||
|
ret = efreet_shutdown();
|
||||||
|
fail_if(ret != 0);
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
void efreet_test_efreet_cache(TCase *tc)
|
||||||
|
{
|
||||||
|
tcase_add_test(tc, efreet_test_efreet_cache_init);
|
||||||
|
}
|
|
@ -0,0 +1,180 @@
|
||||||
|
#include "Efreet.h"
|
||||||
|
#include "Efreet_Mime.h"
|
||||||
|
#include <Ecore.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
int ef_cb_efreet_data_home(void);
|
||||||
|
int ef_cb_efreet_config_home(void);
|
||||||
|
int ef_cb_efreet_cache_home(void);
|
||||||
|
int ef_cb_efreet_data_dirs(void);
|
||||||
|
int ef_cb_efreet_config_dirs(void);
|
||||||
|
int ef_cb_efreet_icon_theme(void);
|
||||||
|
int ef_cb_efreet_icon_theme_list(void);
|
||||||
|
int ef_cb_efreet_icon_match(void);
|
||||||
|
int ef_cb_ini_parse(void);
|
||||||
|
int ef_cb_ini_long_line(void);
|
||||||
|
int ef_cb_ini_garbage(void);
|
||||||
|
#if DEFAULT_VISIBILITY
|
||||||
|
int ef_cb_locale(void);
|
||||||
|
#endif
|
||||||
|
int ef_cb_desktop_parse(void);
|
||||||
|
int ef_cb_desktop_save(void);
|
||||||
|
int ef_cb_desktop_command_get(void);
|
||||||
|
int ef_cb_desktop_type_parse(void);
|
||||||
|
#if 0
|
||||||
|
int ef_cb_desktop_file_id(void);
|
||||||
|
#endif
|
||||||
|
int ef_cb_menu_get(void);
|
||||||
|
int ef_cb_menu_with_slashes(void);
|
||||||
|
int ef_cb_menu_save(void);
|
||||||
|
#if 0
|
||||||
|
int ef_cb_menu_edit(void);
|
||||||
|
#endif
|
||||||
|
int ef_cb_utils(void);
|
||||||
|
int ef_mime_cb_get(void);
|
||||||
|
|
||||||
|
typedef struct Efreet_Test Efreet_Test;
|
||||||
|
struct Efreet_Test
|
||||||
|
{
|
||||||
|
char *name;
|
||||||
|
int (*cb)(void);
|
||||||
|
};
|
||||||
|
|
||||||
|
static Efreet_Test tests[] = {
|
||||||
|
{"Data Home", ef_cb_efreet_data_home},
|
||||||
|
{"Config Home", ef_cb_efreet_config_home},
|
||||||
|
{"Cache Home", ef_cb_efreet_cache_home},
|
||||||
|
{"Data Directories", ef_cb_efreet_data_dirs},
|
||||||
|
{"Config Directories", ef_cb_efreet_config_dirs},
|
||||||
|
{"Icon Theme Basic", ef_cb_efreet_icon_theme},
|
||||||
|
{"Icon Theme List", ef_cb_efreet_icon_theme_list},
|
||||||
|
{"Icon Matching", ef_cb_efreet_icon_match},
|
||||||
|
{"INI Parsing", ef_cb_ini_parse},
|
||||||
|
{"INI Long Line Parsing", ef_cb_ini_long_line},
|
||||||
|
{"INI Garbage Parsing", ef_cb_ini_garbage},
|
||||||
|
#if DEFAULT_VISIBILITY
|
||||||
|
{"Locale Parsing", ef_cb_locale},
|
||||||
|
#endif
|
||||||
|
{"Desktop Parsing", ef_cb_desktop_parse},
|
||||||
|
{"Desktop Type Parsing", ef_cb_desktop_type_parse},
|
||||||
|
{"Desktop Save", ef_cb_desktop_save},
|
||||||
|
{"Desktop Command", ef_cb_desktop_command_get},
|
||||||
|
#if 0
|
||||||
|
{"Desktop File ID", ef_cb_desktop_file_id},
|
||||||
|
#endif
|
||||||
|
{"Menu Parsing", ef_cb_menu_get},
|
||||||
|
{"Menu Incorrect Names", ef_cb_menu_with_slashes},
|
||||||
|
{"Menu Save", ef_cb_menu_save},
|
||||||
|
#if 0
|
||||||
|
{"Menu Edit", ef_cb_menu_edit},
|
||||||
|
#endif
|
||||||
|
{"Utils", ef_cb_utils},
|
||||||
|
{"Mime", ef_mime_cb_get},
|
||||||
|
{NULL, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
extern char **environ;
|
||||||
|
static Eina_List *environment = NULL;
|
||||||
|
|
||||||
|
void
|
||||||
|
environment_store(void)
|
||||||
|
{
|
||||||
|
char *env;
|
||||||
|
char **e;
|
||||||
|
|
||||||
|
EINA_LIST_FREE(environment, env)
|
||||||
|
free(env);
|
||||||
|
|
||||||
|
for (e = environ; *e; e++)
|
||||||
|
environment = eina_list_append(environment, strdup(*e));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
environment_restore(void)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
char *e;
|
||||||
|
if (!environment) return;
|
||||||
|
|
||||||
|
clearenv();
|
||||||
|
EINA_LIST_FOREACH(environment, l, e)
|
||||||
|
putenv(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char ** argv)
|
||||||
|
{
|
||||||
|
int i, passed = 0, num_tests = 0;
|
||||||
|
Eina_List *run = NULL;
|
||||||
|
double total;
|
||||||
|
char *env;
|
||||||
|
|
||||||
|
eina_init();
|
||||||
|
ecore_init();
|
||||||
|
|
||||||
|
total = ecore_time_get();
|
||||||
|
if (argc > 1)
|
||||||
|
{
|
||||||
|
for (i = 1; i < argc; i++)
|
||||||
|
{
|
||||||
|
if ((!strcmp(argv[i], "-h")) ||
|
||||||
|
(!strcmp(argv[i], "--help")))
|
||||||
|
{
|
||||||
|
for (i = 0; tests[i].name; i++)
|
||||||
|
{
|
||||||
|
printf("%s\n", tests[i].name);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
run = eina_list_append(run, argv[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
environment_store();
|
||||||
|
for (i = 0; tests[i].name; i++)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
double start;
|
||||||
|
|
||||||
|
/* we've been given specific tests and it isn't in the list */
|
||||||
|
if (run && !eina_list_search_unsorted(run, EINA_COMPARE_CB(strcasecmp),
|
||||||
|
tests[i].name))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!efreet_init())
|
||||||
|
{
|
||||||
|
printf("Error initializing Efreet\n");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
num_tests ++;
|
||||||
|
|
||||||
|
printf("%s:\t\t", tests[i].name);
|
||||||
|
fflush(stdout);
|
||||||
|
start = ecore_time_get();
|
||||||
|
ret = tests[i].cb();
|
||||||
|
printf("%s in %.3f seconds\n", (ret ? "PASSED" : "FAILED"),
|
||||||
|
ecore_time_get() - start);
|
||||||
|
passed += ret;
|
||||||
|
|
||||||
|
efreet_shutdown();
|
||||||
|
environment_restore();
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n-----------------\n");
|
||||||
|
clearenv();
|
||||||
|
EINA_LIST_FREE(environment, env)
|
||||||
|
free(env);
|
||||||
|
printf("Passed %d of %d tests.\n", passed, num_tests);
|
||||||
|
|
||||||
|
while (run)
|
||||||
|
run = eina_list_remove_list(run, run);
|
||||||
|
|
||||||
|
printf("Total run: %.3f seconds\n", ecore_time_get() - total);
|
||||||
|
|
||||||
|
ecore_shutdown();
|
||||||
|
eina_shutdown();
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue