~ubuntu-branches/debian/sid/hal/sid

« back to all changes in this revision

Viewing changes to hald/linux/addons/addon-macbook-backlight.c

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2007-10-23 12:33:58 UTC
  • Revision ID: james.westby@ubuntu.com-20071023123358-xaf8mjc5n84d5gtz
Tags: upstream-0.5.10
ImportĀ upstreamĀ versionĀ 0.5.10

Show diffs side-by-side

added added

removed removed

Lines of Context:
181
181
        return (register_get () >> 1) & 0x7fff;
182
182
}
183
183
 
 
184
static gboolean
 
185
check_priv (DBusConnection *connection, DBusMessage *message, const char *udi, const char *privilege)
 
186
#ifdef HAVE_POLKIT
 
187
{
 
188
        gboolean ret;
 
189
        char *polkit_result;
 
190
        const char *invoked_by_syscon_name;
 
191
        DBusMessage *reply;
 
192
        DBusError error;
 
193
 
 
194
        ret = FALSE;
 
195
        polkit_result = NULL;
 
196
 
 
197
        invoked_by_syscon_name = dbus_message_get_sender (message);
 
198
        
 
199
        dbus_error_init (&error);
 
200
        polkit_result = libhal_device_is_caller_privileged (halctx,
 
201
                                                            udi,
 
202
                                                            privilege,
 
203
                                                            invoked_by_syscon_name,
 
204
                                                            &error);
 
205
        if (polkit_result == NULL) {
 
206
                reply = dbus_message_new_error_printf (message,
 
207
                                                       "org.freedesktop.Hal.Device.Error",
 
208
                                                       "Cannot determine if caller is privileged",
 
209
                                                       privilege, polkit_result);
 
210
                dbus_connection_send (connection, reply, NULL);
 
211
                goto out;
 
212
        }
 
213
        if (strcmp (polkit_result, "yes") != 0) {
 
214
 
 
215
                reply = dbus_message_new_error_printf (message,
 
216
                                                       "org.freedesktop.Hal.Device.PermissionDeniedByPolicy",
 
217
                                                       "%s %s <-- (privilege, result)",
 
218
                                                       privilege, polkit_result);
 
219
                dbus_connection_send (connection, reply, NULL);
 
220
                goto out;
 
221
        }
 
222
 
 
223
        ret = TRUE;
 
224
 
 
225
out:
 
226
        if (polkit_result != NULL)
 
227
                libhal_free_string (polkit_result);
 
228
        return ret;
 
229
}
 
230
#else
 
231
{
 
232
        return TRUE;
 
233
}
 
234
#endif
 
235
 
 
236
 
184
237
#define BACKLIGHT_OBJECT \
185
238
  "/org/freedesktop/Hal/devices/macbook_backlight"
186
239
#define BACKLIGHT_IFACE \
202
255
        int level;
203
256
        int ret;
204
257
 
 
258
        if (!check_priv (connection, message, dbus_message_get_path (message), "org.freedesktop.hal.power-management.lcd-panel")) {
 
259
                return DBUS_HANDLER_RESULT_HANDLED;
 
260
        }
 
261
 
205
262
        reply = NULL;
206
263
        ret = 0;
207
264