~ubuntu-branches/debian/squeeze/hal/squeeze

« back to all changes in this revision

Viewing changes to hald/linux/addons/addon-omap-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:
122
122
    close(fd);
123
123
}
124
124
 
 
125
static gboolean
 
126
check_priv (DBusConnection *connection, DBusMessage *message, const char *udi, const char *privilege)
 
127
#ifdef HAVE_POLKIT
 
128
{
 
129
        gboolean ret;
 
130
        char *polkit_result;
 
131
        const char *invoked_by_syscon_name;
 
132
        DBusMessage *reply;
 
133
        DBusError error;
 
134
 
 
135
        ret = FALSE;
 
136
        polkit_result = NULL;
 
137
 
 
138
        invoked_by_syscon_name = dbus_message_get_sender (message);
 
139
        
 
140
        dbus_error_init (&error);
 
141
        polkit_result = libhal_device_is_caller_privileged (halctx,
 
142
                                                            udi,
 
143
                                                            privilege,
 
144
                                                            invoked_by_syscon_name,
 
145
                                                            &error);
 
146
        if (polkit_result == NULL) {
 
147
                reply = dbus_message_new_error_printf (message,
 
148
                                                       "org.freedesktop.Hal.Device.Error",
 
149
                                                       "Cannot determine if caller is privileged",
 
150
                                                       privilege, polkit_result);
 
151
                dbus_connection_send (connection, reply, NULL);
 
152
                goto out;
 
153
        }
 
154
        if (strcmp (polkit_result, "yes") != 0) {
 
155
 
 
156
                reply = dbus_message_new_error_printf (message,
 
157
                                                       "org.freedesktop.Hal.Device.PermissionDeniedByPolicy",
 
158
                                                       "%s %s <-- (privilege, result)",
 
159
                                                       privilege, polkit_result);
 
160
                dbus_connection_send (connection, reply, NULL);
 
161
                goto out;
 
162
        }
 
163
 
 
164
        ret = TRUE;
 
165
 
 
166
out:
 
167
        if (polkit_result != NULL)
 
168
                libhal_free_string (polkit_result);
 
169
        return ret;
 
170
}
 
171
#else
 
172
{
 
173
        return TRUE;
 
174
}
 
175
#endif
 
176
 
 
177
 
125
178
/* DBus filter function */
126
179
static DBusHandlerResult
127
180
filter_function (DBusConnection *connection, DBusMessage *message, void *userdata)
129
182
        DBusError err;
130
183
        DBusMessage *reply;
131
184
 
 
185
        if (!check_priv (connection, message, dbus_message_get_path (message), "org.freedesktop.hal.power-management.lcd-panel")) {
 
186
                return DBUS_HANDLER_RESULT_HANDLED;
 
187
        }
 
188
 
132
189
#ifdef DEBUG_OMAP_BL
133
190
        dbg ("filter_function: sender=%s destination=%s obj_path=%s interface=%s method=%s", 
134
191
             dbus_message_get_sender (message),