gkeyfile.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  1. /* gkeyfile.h - desktop entry file parser
  2. *
  3. * Copyright 2004 Red Hat, Inc.
  4. *
  5. * Ray Strode <halfline@hawaii.rr.com>
  6. *
  7. * SPDX-License-Identifier: LGPL-2.1-or-later
  8. *
  9. * This library is free software; you can redistribute it and/or
  10. * modify it under the terms of the GNU Lesser General Public
  11. * License as published by the Free Software Foundation; either
  12. * version 2.1 of the License, or (at your option) any later version.
  13. *
  14. * This library is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  17. * Lesser General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU Lesser General Public License
  20. * along with this library; if not, see <http://www.gnu.org/licenses/>.
  21. */
  22. #ifndef __G_KEY_FILE_H__
  23. #define __G_KEY_FILE_H__
  24. #if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
  25. #error "Only <glib.h> can be included directly."
  26. #endif
  27. #include <glib/gbytes.h>
  28. #include <glib/gerror.h>
  29. G_BEGIN_DECLS
  30. typedef enum
  31. {
  32. G_KEY_FILE_ERROR_UNKNOWN_ENCODING,
  33. G_KEY_FILE_ERROR_PARSE,
  34. G_KEY_FILE_ERROR_NOT_FOUND,
  35. G_KEY_FILE_ERROR_KEY_NOT_FOUND,
  36. G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
  37. G_KEY_FILE_ERROR_INVALID_VALUE
  38. } GKeyFileError;
  39. #define G_KEY_FILE_ERROR g_key_file_error_quark()
  40. GLIB_AVAILABLE_IN_ALL
  41. GQuark g_key_file_error_quark (void);
  42. typedef struct _GKeyFile GKeyFile;
  43. typedef enum
  44. {
  45. G_KEY_FILE_NONE = 0,
  46. G_KEY_FILE_KEEP_COMMENTS = 1 << 0,
  47. G_KEY_FILE_KEEP_TRANSLATIONS = 1 << 1
  48. } GKeyFileFlags;
  49. GLIB_AVAILABLE_IN_ALL
  50. GKeyFile *g_key_file_new (void);
  51. GLIB_AVAILABLE_IN_ALL
  52. GKeyFile *g_key_file_ref (GKeyFile *key_file);
  53. GLIB_AVAILABLE_IN_ALL
  54. void g_key_file_unref (GKeyFile *key_file);
  55. GLIB_AVAILABLE_IN_ALL
  56. void g_key_file_free (GKeyFile *key_file);
  57. GLIB_AVAILABLE_IN_ALL
  58. void g_key_file_set_list_separator (GKeyFile *key_file,
  59. gchar separator);
  60. GLIB_AVAILABLE_IN_ALL
  61. gboolean g_key_file_load_from_file (GKeyFile *key_file,
  62. const gchar *file,
  63. GKeyFileFlags flags,
  64. GError **error);
  65. GLIB_AVAILABLE_IN_ALL
  66. gboolean g_key_file_load_from_data (GKeyFile *key_file,
  67. const gchar *data,
  68. gsize length,
  69. GKeyFileFlags flags,
  70. GError **error);
  71. GLIB_AVAILABLE_IN_2_50
  72. gboolean g_key_file_load_from_bytes (GKeyFile *key_file,
  73. GBytes *bytes,
  74. GKeyFileFlags flags,
  75. GError **error);
  76. GLIB_AVAILABLE_IN_ALL
  77. gboolean g_key_file_load_from_dirs (GKeyFile *key_file,
  78. const gchar *file,
  79. const gchar **search_dirs,
  80. gchar **full_path,
  81. GKeyFileFlags flags,
  82. GError **error);
  83. GLIB_AVAILABLE_IN_ALL
  84. gboolean g_key_file_load_from_data_dirs (GKeyFile *key_file,
  85. const gchar *file,
  86. gchar **full_path,
  87. GKeyFileFlags flags,
  88. GError **error);
  89. GLIB_AVAILABLE_IN_ALL
  90. gchar *g_key_file_to_data (GKeyFile *key_file,
  91. gsize *length,
  92. GError **error) G_GNUC_MALLOC;
  93. GLIB_AVAILABLE_IN_2_40
  94. gboolean g_key_file_save_to_file (GKeyFile *key_file,
  95. const gchar *filename,
  96. GError **error);
  97. GLIB_AVAILABLE_IN_ALL
  98. gchar *g_key_file_get_start_group (GKeyFile *key_file) G_GNUC_MALLOC;
  99. GLIB_AVAILABLE_IN_ALL
  100. gchar **g_key_file_get_groups (GKeyFile *key_file,
  101. gsize *length);
  102. GLIB_AVAILABLE_IN_ALL
  103. gchar **g_key_file_get_keys (GKeyFile *key_file,
  104. const gchar *group_name,
  105. gsize *length,
  106. GError **error);
  107. GLIB_AVAILABLE_IN_ALL
  108. gboolean g_key_file_has_group (GKeyFile *key_file,
  109. const gchar *group_name);
  110. GLIB_AVAILABLE_IN_ALL
  111. gboolean g_key_file_has_key (GKeyFile *key_file,
  112. const gchar *group_name,
  113. const gchar *key,
  114. GError **error);
  115. GLIB_AVAILABLE_IN_ALL
  116. gchar *g_key_file_get_value (GKeyFile *key_file,
  117. const gchar *group_name,
  118. const gchar *key,
  119. GError **error) G_GNUC_MALLOC;
  120. GLIB_AVAILABLE_IN_ALL
  121. void g_key_file_set_value (GKeyFile *key_file,
  122. const gchar *group_name,
  123. const gchar *key,
  124. const gchar *value);
  125. GLIB_AVAILABLE_IN_ALL
  126. gchar *g_key_file_get_string (GKeyFile *key_file,
  127. const gchar *group_name,
  128. const gchar *key,
  129. GError **error) G_GNUC_MALLOC;
  130. GLIB_AVAILABLE_IN_ALL
  131. void g_key_file_set_string (GKeyFile *key_file,
  132. const gchar *group_name,
  133. const gchar *key,
  134. const gchar *string);
  135. GLIB_AVAILABLE_IN_ALL
  136. gchar *g_key_file_get_locale_string (GKeyFile *key_file,
  137. const gchar *group_name,
  138. const gchar *key,
  139. const gchar *locale,
  140. GError **error) G_GNUC_MALLOC;
  141. GLIB_AVAILABLE_IN_2_56
  142. gchar *g_key_file_get_locale_for_key (GKeyFile *key_file,
  143. const gchar *group_name,
  144. const gchar *key,
  145. const gchar *locale) G_GNUC_MALLOC;
  146. GLIB_AVAILABLE_IN_ALL
  147. void g_key_file_set_locale_string (GKeyFile *key_file,
  148. const gchar *group_name,
  149. const gchar *key,
  150. const gchar *locale,
  151. const gchar *string);
  152. GLIB_AVAILABLE_IN_ALL
  153. gboolean g_key_file_get_boolean (GKeyFile *key_file,
  154. const gchar *group_name,
  155. const gchar *key,
  156. GError **error);
  157. GLIB_AVAILABLE_IN_ALL
  158. void g_key_file_set_boolean (GKeyFile *key_file,
  159. const gchar *group_name,
  160. const gchar *key,
  161. gboolean value);
  162. GLIB_AVAILABLE_IN_ALL
  163. gint g_key_file_get_integer (GKeyFile *key_file,
  164. const gchar *group_name,
  165. const gchar *key,
  166. GError **error);
  167. GLIB_AVAILABLE_IN_ALL
  168. void g_key_file_set_integer (GKeyFile *key_file,
  169. const gchar *group_name,
  170. const gchar *key,
  171. gint value);
  172. GLIB_AVAILABLE_IN_ALL
  173. gint64 g_key_file_get_int64 (GKeyFile *key_file,
  174. const gchar *group_name,
  175. const gchar *key,
  176. GError **error);
  177. GLIB_AVAILABLE_IN_ALL
  178. void g_key_file_set_int64 (GKeyFile *key_file,
  179. const gchar *group_name,
  180. const gchar *key,
  181. gint64 value);
  182. GLIB_AVAILABLE_IN_ALL
  183. guint64 g_key_file_get_uint64 (GKeyFile *key_file,
  184. const gchar *group_name,
  185. const gchar *key,
  186. GError **error);
  187. GLIB_AVAILABLE_IN_ALL
  188. void g_key_file_set_uint64 (GKeyFile *key_file,
  189. const gchar *group_name,
  190. const gchar *key,
  191. guint64 value);
  192. GLIB_AVAILABLE_IN_ALL
  193. gdouble g_key_file_get_double (GKeyFile *key_file,
  194. const gchar *group_name,
  195. const gchar *key,
  196. GError **error);
  197. GLIB_AVAILABLE_IN_ALL
  198. void g_key_file_set_double (GKeyFile *key_file,
  199. const gchar *group_name,
  200. const gchar *key,
  201. gdouble value);
  202. GLIB_AVAILABLE_IN_ALL
  203. gchar **g_key_file_get_string_list (GKeyFile *key_file,
  204. const gchar *group_name,
  205. const gchar *key,
  206. gsize *length,
  207. GError **error);
  208. GLIB_AVAILABLE_IN_ALL
  209. void g_key_file_set_string_list (GKeyFile *key_file,
  210. const gchar *group_name,
  211. const gchar *key,
  212. const gchar * const list[],
  213. gsize length);
  214. GLIB_AVAILABLE_IN_ALL
  215. gchar **g_key_file_get_locale_string_list (GKeyFile *key_file,
  216. const gchar *group_name,
  217. const gchar *key,
  218. const gchar *locale,
  219. gsize *length,
  220. GError **error);
  221. GLIB_AVAILABLE_IN_ALL
  222. void g_key_file_set_locale_string_list (GKeyFile *key_file,
  223. const gchar *group_name,
  224. const gchar *key,
  225. const gchar *locale,
  226. const gchar * const list[],
  227. gsize length);
  228. GLIB_AVAILABLE_IN_ALL
  229. gboolean *g_key_file_get_boolean_list (GKeyFile *key_file,
  230. const gchar *group_name,
  231. const gchar *key,
  232. gsize *length,
  233. GError **error) G_GNUC_MALLOC;
  234. GLIB_AVAILABLE_IN_ALL
  235. void g_key_file_set_boolean_list (GKeyFile *key_file,
  236. const gchar *group_name,
  237. const gchar *key,
  238. gboolean list[],
  239. gsize length);
  240. GLIB_AVAILABLE_IN_ALL
  241. gint *g_key_file_get_integer_list (GKeyFile *key_file,
  242. const gchar *group_name,
  243. const gchar *key,
  244. gsize *length,
  245. GError **error) G_GNUC_MALLOC;
  246. GLIB_AVAILABLE_IN_ALL
  247. void g_key_file_set_double_list (GKeyFile *key_file,
  248. const gchar *group_name,
  249. const gchar *key,
  250. gdouble list[],
  251. gsize length);
  252. GLIB_AVAILABLE_IN_ALL
  253. gdouble *g_key_file_get_double_list (GKeyFile *key_file,
  254. const gchar *group_name,
  255. const gchar *key,
  256. gsize *length,
  257. GError **error) G_GNUC_MALLOC;
  258. GLIB_AVAILABLE_IN_ALL
  259. void g_key_file_set_integer_list (GKeyFile *key_file,
  260. const gchar *group_name,
  261. const gchar *key,
  262. gint list[],
  263. gsize length);
  264. GLIB_AVAILABLE_IN_ALL
  265. gboolean g_key_file_set_comment (GKeyFile *key_file,
  266. const gchar *group_name,
  267. const gchar *key,
  268. const gchar *comment,
  269. GError **error);
  270. GLIB_AVAILABLE_IN_ALL
  271. gchar *g_key_file_get_comment (GKeyFile *key_file,
  272. const gchar *group_name,
  273. const gchar *key,
  274. GError **error) G_GNUC_MALLOC;
  275. GLIB_AVAILABLE_IN_ALL
  276. gboolean g_key_file_remove_comment (GKeyFile *key_file,
  277. const gchar *group_name,
  278. const gchar *key,
  279. GError **error);
  280. GLIB_AVAILABLE_IN_ALL
  281. gboolean g_key_file_remove_key (GKeyFile *key_file,
  282. const gchar *group_name,
  283. const gchar *key,
  284. GError **error);
  285. GLIB_AVAILABLE_IN_ALL
  286. gboolean g_key_file_remove_group (GKeyFile *key_file,
  287. const gchar *group_name,
  288. GError **error);
  289. /* Defines for handling freedesktop.org Desktop files */
  290. #define G_KEY_FILE_DESKTOP_GROUP "Desktop Entry"
  291. #define G_KEY_FILE_DESKTOP_KEY_TYPE "Type"
  292. #define G_KEY_FILE_DESKTOP_KEY_VERSION "Version"
  293. #define G_KEY_FILE_DESKTOP_KEY_NAME "Name"
  294. #define G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME "GenericName"
  295. #define G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY "NoDisplay"
  296. #define G_KEY_FILE_DESKTOP_KEY_COMMENT "Comment"
  297. #define G_KEY_FILE_DESKTOP_KEY_ICON "Icon"
  298. #define G_KEY_FILE_DESKTOP_KEY_HIDDEN "Hidden"
  299. #define G_KEY_FILE_DESKTOP_KEY_ONLY_SHOW_IN "OnlyShowIn"
  300. #define G_KEY_FILE_DESKTOP_KEY_NOT_SHOW_IN "NotShowIn"
  301. #define G_KEY_FILE_DESKTOP_KEY_TRY_EXEC "TryExec"
  302. #define G_KEY_FILE_DESKTOP_KEY_EXEC "Exec"
  303. #define G_KEY_FILE_DESKTOP_KEY_PATH "Path"
  304. #define G_KEY_FILE_DESKTOP_KEY_TERMINAL "Terminal"
  305. #define G_KEY_FILE_DESKTOP_KEY_MIME_TYPE "MimeType"
  306. #define G_KEY_FILE_DESKTOP_KEY_CATEGORIES "Categories"
  307. #define G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY "StartupNotify"
  308. #define G_KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS "StartupWMClass"
  309. #define G_KEY_FILE_DESKTOP_KEY_URL "URL"
  310. #define G_KEY_FILE_DESKTOP_KEY_DBUS_ACTIVATABLE "DBusActivatable"
  311. #define G_KEY_FILE_DESKTOP_KEY_ACTIONS "Actions"
  312. #define G_KEY_FILE_DESKTOP_TYPE_APPLICATION "Application"
  313. #define G_KEY_FILE_DESKTOP_TYPE_LINK "Link"
  314. #define G_KEY_FILE_DESKTOP_TYPE_DIRECTORY "Directory"
  315. G_END_DECLS
  316. #endif /* __G_KEY_FILE_H__ */