-
Notifications
You must be signed in to change notification settings - Fork 411
/
fwupd-error.c
139 lines (133 loc) · 4.46 KB
/
fwupd-error.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/*
* Copyright (C) 2015-2016 Richard Hughes <richard@hughsie.com>
*
* SPDX-License-Identifier: LGPL-2.1+
*/
#include "config.h"
#include <gio/gio.h>
#include "fwupd-common.h"
#include "fwupd-enums.h"
#include "fwupd-error.h"
/**
* fwupd_error_to_string:
* @error: an enumerated error, e.g. %FWUPD_ERROR_VERSION_NEWER
*
* Converts an enumerated error to a string.
*
* Returns: identifier string
*
* Since: 0.7.0
**/
const gchar *
fwupd_error_to_string(FwupdError error)
{
if (error == FWUPD_ERROR_INTERNAL)
return FWUPD_DBUS_INTERFACE ".Internal";
if (error == FWUPD_ERROR_VERSION_NEWER)
return FWUPD_DBUS_INTERFACE ".VersionNewer";
if (error == FWUPD_ERROR_VERSION_SAME)
return FWUPD_DBUS_INTERFACE ".VersionSame";
if (error == FWUPD_ERROR_ALREADY_PENDING)
return FWUPD_DBUS_INTERFACE ".AlreadyPending";
if (error == FWUPD_ERROR_AUTH_FAILED)
return FWUPD_DBUS_INTERFACE ".AuthFailed";
if (error == FWUPD_ERROR_READ)
return FWUPD_DBUS_INTERFACE ".Read";
if (error == FWUPD_ERROR_WRITE)
return FWUPD_DBUS_INTERFACE ".Write";
if (error == FWUPD_ERROR_INVALID_FILE)
return FWUPD_DBUS_INTERFACE ".InvalidFile";
if (error == FWUPD_ERROR_NOT_FOUND)
return FWUPD_DBUS_INTERFACE ".NotFound";
if (error == FWUPD_ERROR_NOTHING_TO_DO)
return FWUPD_DBUS_INTERFACE ".NothingToDo";
if (error == FWUPD_ERROR_NOT_SUPPORTED)
return FWUPD_DBUS_INTERFACE ".NotSupported";
if (error == FWUPD_ERROR_SIGNATURE_INVALID)
return FWUPD_DBUS_INTERFACE ".SignatureInvalid";
if (error == FWUPD_ERROR_AC_POWER_REQUIRED)
return FWUPD_DBUS_INTERFACE ".AcPowerRequired";
if (error == FWUPD_ERROR_PERMISSION_DENIED)
return FWUPD_DBUS_INTERFACE ".PermissionDenied";
if (error == FWUPD_ERROR_BROKEN_SYSTEM)
return FWUPD_DBUS_INTERFACE ".BrokenSystem";
if (error == FWUPD_ERROR_BATTERY_LEVEL_TOO_LOW)
return FWUPD_DBUS_INTERFACE ".BatteryLevelTooLow";
if (error == FWUPD_ERROR_NEEDS_USER_ACTION)
return FWUPD_DBUS_INTERFACE ".NeedsUserAction";
if (error == FWUPD_ERROR_AUTH_EXPIRED)
return FWUPD_DBUS_INTERFACE ".AuthExpired";
return NULL;
}
/**
* fwupd_error_from_string:
* @error: (nullable): a string, e.g. `org.freedesktop.fwupd.VersionNewer`
*
* Converts a string to an enumerated error.
*
* Returns: enumerated value
*
* Since: 0.7.0
**/
FwupdError
fwupd_error_from_string(const gchar *error)
{
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".Internal") == 0)
return FWUPD_ERROR_INTERNAL;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".VersionNewer") == 0)
return FWUPD_ERROR_VERSION_NEWER;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".VersionSame") == 0)
return FWUPD_ERROR_VERSION_SAME;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".AlreadyPending") == 0)
return FWUPD_ERROR_ALREADY_PENDING;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".AuthFailed") == 0)
return FWUPD_ERROR_AUTH_FAILED;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".Read") == 0)
return FWUPD_ERROR_READ;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".Write") == 0)
return FWUPD_ERROR_WRITE;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".InvalidFile") == 0)
return FWUPD_ERROR_INVALID_FILE;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".NotFound") == 0)
return FWUPD_ERROR_NOT_FOUND;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".NothingToDo") == 0)
return FWUPD_ERROR_NOTHING_TO_DO;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".NotSupported") == 0)
return FWUPD_ERROR_NOT_SUPPORTED;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".SignatureInvalid") == 0)
return FWUPD_ERROR_SIGNATURE_INVALID;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".AcPowerRequired") == 0)
return FWUPD_ERROR_AC_POWER_REQUIRED;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".PermissionDenied") == 0)
return FWUPD_ERROR_PERMISSION_DENIED;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".BrokenSystem") == 0)
return FWUPD_ERROR_BROKEN_SYSTEM;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".BatteryLevelTooLow") == 0)
return FWUPD_ERROR_BATTERY_LEVEL_TOO_LOW;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".NeedsUserAction") == 0)
return FWUPD_ERROR_NEEDS_USER_ACTION;
if (g_strcmp0(error, FWUPD_DBUS_INTERFACE ".AuthExpired") == 0)
return FWUPD_ERROR_AUTH_EXPIRED;
return FWUPD_ERROR_LAST;
}
/**
* fwupd_error_quark:
*
* An error quark.
*
* Returns: an error quark
*
* Since: 0.1.1
**/
GQuark
fwupd_error_quark(void)
{
static GQuark quark = 0;
if (!quark) {
quark = g_quark_from_static_string("FwupdError");
for (gint i = 0; i < FWUPD_ERROR_LAST; i++) {
g_dbus_error_register_error(quark, i, fwupd_error_to_string(i));
}
}
return quark;
}