1 /* vim: set sw=4 ts=4 sts=4 et: */
2 #ifndef EFREET_PRIVATE_H
3 #define EFREET_PRIVATE_H
6 * @file efreet_private.h
7 * @brief Contains methods and defines that are private to the Efreet
9 * @addtogroup Efreet_Private Efreet_Private: Private methods and defines
22 #include <sys/types.h>
34 #include <Ecore_File.h>
35 #include <Ecore_Str.h>
37 #include "efreet_xml.h"
38 #include "efreet_ini.h"
42 * Allocate and zero out c structures of type x
44 #define NEW(x, c) calloc(c, sizeof(x))
48 * Free x and set to NULL
50 #define FREE(x) do { free(x); x = NULL; } while (0)
54 * If x is set, free x and set to NULL
56 #define IF_FREE(x) do { if (x) FREE(x); } while (0)
60 * If x is set, eina_stringshare_del x and set to NULL
62 #define IF_RELEASE(x) do { \
64 const char *__tmp; __tmp = (x); (x) = NULL; eina_stringshare_del(__tmp); \
70 * @def IF_FREE_LIST(x)
71 * If x is a valid pointer destroy x and set to NULL
73 #define IF_FREE_LIST(x) do { \
75 Ecore_List *__tmp; __tmp = (x); (x) = NULL; ecore_list_destroy(__tmp); \
81 * @def IF_FREE_DLIST(x)
82 * If x is a valid pointer destroy x and set to NULL
84 #define IF_FREE_DLIST(x) do { \
86 Ecore_DList *__tmp; __tmp = (x); (x) = NULL; ecore_dlist_destroy(__tmp); \
92 * @def IF_FREE_HASH(x)
93 * If x is a valid pointer destroy x and set to NULL
95 #define IF_FREE_HASH(x) do { \
97 Ecore_Hash *__tmp; __tmp = (x); (x) = NULL; ecore_hash_destroy(__tmp); \
105 * Convenience define to set the maximim path length
107 #define PATH_MAX 4096
112 * The different types of commands in an Exec entry
114 enum Efreet_Desktop_Command_Flag
116 EFREET_DESKTOP_EXEC_FLAG_FULLPATH = 0x0001,
117 EFREET_DESKTOP_EXEC_FLAG_URI = 0x0002,
118 EFREET_DESKTOP_EXEC_FLAG_DIR = 0x0004,
119 EFREET_DESKTOP_EXEC_FLAG_FILE = 0x0008
124 * Efreet_Desktop_Command_Flag
126 typedef enum Efreet_Desktop_Command_Flag Efreet_Desktop_Command_Flag;
130 * Efreet_Desktop_Command
132 typedef struct Efreet_Desktop_Command Efreet_Desktop_Command;
136 * Holds information on a desktop Exec command entry
138 struct Efreet_Desktop_Command
140 Efreet_Desktop *desktop;
143 Efreet_Desktop_Command_Flag flags;
145 Efreet_Desktop_Command_Cb cb_command;
146 Efreet_Desktop_Progress_Cb cb_progress;
149 Ecore_List *files; /**< list of Efreet_Desktop_Command_File */
154 * Efreet_Desktop_Command_File
156 typedef struct Efreet_Desktop_Command_File Efreet_Desktop_Command_File;
160 * Stores information on a file passed to the desktop Exec command
162 struct Efreet_Desktop_Command_File
164 Efreet_Desktop_Command *command;
173 int efreet_base_init(void);
174 void efreet_base_shutdown(void);
176 int efreet_icon_init(void);
177 void efreet_icon_shutdown(void);
179 int efreet_menu_init(void);
180 void efreet_menu_shutdown(void);
181 Ecore_List *efreet_default_dirs_get(const char *user_dir,
182 Ecore_List *system_dirs,
185 int efreet_ini_init(void);
186 int efreet_ini_shutdown(void);
188 int efreet_desktop_init(void);
189 int efreet_desktop_shutdown(void);
191 const char *efreet_home_dir_get(void);
193 EAPI const char *efreet_lang_get(void);
194 EAPI const char *efreet_lang_country_get(void);
195 EAPI const char *efreet_lang_modifier_get(void);
197 size_t efreet_array_cat(char *buffer, size_t size, const char *strs[]);
199 const char *efreet_desktop_environment_get(void);