blob: 998aa43de14d1a330294cdd9a0bccf40a9e92384 [file] [log] [blame]
Darin Petkovf7897bc2011-06-08 17:13:36 -07001// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Darin Petkov083047b2011-06-23 20:42:48 -07005#include <base/stringprintf.h>
6
Darin Petkovf7897bc2011-06-08 17:13:36 -07007#include "shill/glib.h"
8
9namespace shill {
10
Darin Petkov3258a812011-06-23 11:28:45 -070011GLib::~GLib() {}
12
Darin Petkov083047b2011-06-23 20:42:48 -070013std::string GLib::ConvertErrorToMessage(GError *error) {
14 if (!error) {
15 return "Unknown GLib error.";
16 }
17 std::string message =
18 base::StringPrintf("GError(%d): %s", error->code, error->message);
19 g_error_free(error);
20 return message;
21}
22
Darin Petkov823c47e2011-06-27 16:15:35 -070023guchar *GLib::Base64Decode(const gchar *text, gsize *out_len) {
24 return g_base64_decode(text, out_len);
25}
26
27gchar *GLib::Base64Encode(const guchar *data, gsize len) {
28 return g_base64_encode(data, len);
29}
30
Darin Petkov92c43902011-06-09 20:46:06 -070031guint GLib::ChildWatchAdd(GPid pid,
32 GChildWatchFunc function,
33 gpointer data) {
34 return g_child_watch_add(pid, function, data);
35}
36
Darin Petkov083047b2011-06-23 20:42:48 -070037void GLib::Free(gpointer mem) {
38 g_free(mem);
39}
40
41void GLib::KeyFileFree(GKeyFile *key_file) {
42 g_key_file_free(key_file);
43}
44
45gboolean GLib::KeyFileLoadFromFile(GKeyFile *key_file,
46 const gchar *file,
47 GKeyFileFlags flags,
48 GError **error) {
49 return g_key_file_load_from_file(key_file, file, flags, error);
50}
51
52gboolean GLib::KeyFileGetBoolean(GKeyFile *key_file,
53 const gchar *group_name,
54 const gchar *key,
55 GError **error) {
56 return g_key_file_get_boolean(key_file, group_name, key, error);
57}
58
59gchar **GLib::KeyFileGetGroups(GKeyFile *key_file,
60 gsize *length) {
61 return g_key_file_get_groups(key_file, length);
62}
63
64gint GLib::KeyFileGetInteger(GKeyFile *key_file,
65 const gchar *group_name,
66 const gchar *key,
67 GError **error) {
68 return g_key_file_get_integer(key_file, group_name, key, error);
69}
70
71gchar *GLib::KeyFileGetString(GKeyFile *key_file,
72 const gchar *group_name,
73 const gchar *key,
74 GError **error) {
75 return g_key_file_get_string(key_file, group_name, key, error);
76}
77
78gboolean GLib::KeyFileHasGroup(GKeyFile *key_file,
79 const gchar *group_name) {
80 return g_key_file_has_group(key_file, group_name);
81}
82
83GKeyFile *GLib::KeyFileNew() {
84 return g_key_file_new();
85}
86
87void GLib::KeyFileRemoveGroup(GKeyFile *key_file,
88 const gchar *group_name,
89 GError **error) {
90 g_key_file_remove_group(key_file, group_name, error);
91}
92
93void GLib::KeyFileRemoveKey(GKeyFile *key_file,
94 const gchar *group_name,
95 const gchar *key,
96 GError **error) {
97 g_key_file_remove_key(key_file, group_name, key, error);
98}
99
100void GLib::KeyFileSetBoolean(GKeyFile *key_file,
101 const gchar *group_name,
102 const gchar *key,
103 gboolean value) {
104 g_key_file_set_boolean(key_file, group_name, key, value);
105}
106
107void GLib::KeyFileSetInteger(GKeyFile *key_file,
108 const gchar *group_name,
109 const gchar *key,
110 gint value) {
111 g_key_file_set_integer(key_file, group_name, key, value);
112}
113
114void GLib::KeyFileSetString(GKeyFile *key_file,
115 const gchar *group_name,
116 const gchar *key,
117 const gchar *string) {
118 g_key_file_set_string(key_file, group_name, key, string);
119}
120
121gchar *GLib::KeyFileToData(GKeyFile *key_file,
122 gsize *length,
123 GError **error) {
124 return g_key_file_to_data(key_file, length, error);
125}
126
Darin Petkov92c43902011-06-09 20:46:06 -0700127gboolean GLib::SourceRemove(guint tag) {
128 return g_source_remove(tag);
129}
130
Darin Petkovf7897bc2011-06-08 17:13:36 -0700131gboolean GLib::SpawnAsync(const gchar *working_directory,
132 gchar **argv,
133 gchar **envp,
134 GSpawnFlags flags,
135 GSpawnChildSetupFunc child_setup,
136 gpointer user_data,
137 GPid *child_pid,
138 GError **error) {
139 return g_spawn_async(working_directory,
140 argv,
141 envp,
142 flags,
143 child_setup,
144 user_data,
145 child_pid,
146 error);
147}
148
Darin Petkov92c43902011-06-09 20:46:06 -0700149void GLib::SpawnClosePID(GPid pid) {
150 g_spawn_close_pid(pid);
151}
152
Darin Petkov083047b2011-06-23 20:42:48 -0700153void GLib::Strfreev(gchar **str_array) {
154 g_strfreev(str_array);
155}
156
Darin Petkovf7897bc2011-06-08 17:13:36 -0700157} // namespace shill