mirror of
https://gitlab.com/mishakmak/pam-fprint-grosshack.git
synced 2026-04-09 04:13:33 +02:00
Use D-Bus properties instead of GetProperties
- Use D-Bus native properties instead of a GetProperties call. - Fix a number of front-ends by registering the right signals and marshallers following the "done" signal argument addition - Fix VerifyStart call in the pam module
This commit is contained in:
committed by
Daniel Drake
parent
f1f2ae35f8
commit
c9fdeb47aa
@ -1,14 +1,14 @@
|
||||
BUILT_SOURCES = manager-dbus-glue.h device-dbus-glue.h
|
||||
BUILT_SOURCES = manager-dbus-glue.h device-dbus-glue.h $(MARSHALFILES)
|
||||
noinst_HEADERS = $(BUILT_SOURCES)
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
bin_PROGRAMS = fprintd-verify fprintd-enroll fprintd-list
|
||||
|
||||
fprintd_verify_SOURCES = verify.c
|
||||
fprintd_verify_SOURCES = verify.c $(MARSHALFILES)
|
||||
fprintd_verify_CFLAGS = $(WARN_CFLAGS) $(GLIB_CFLAGS)
|
||||
fprintd_verify_LDADD = $(GLIB_LIBS)
|
||||
|
||||
fprintd_enroll_SOURCES = enroll.c
|
||||
fprintd_enroll_SOURCES = enroll.c $(MARSHALFILES)
|
||||
fprintd_enroll_CFLAGS = $(WARN_CFLAGS) $(GLIB_CFLAGS)
|
||||
fprintd_enroll_LDADD = $(GLIB_LIBS)
|
||||
|
||||
@ -21,3 +21,11 @@ manager-dbus-glue.h: ../src/manager.xml
|
||||
|
||||
device-dbus-glue.h: ../src/device.xml
|
||||
dbus-binding-tool --prefix=fprint_device --mode=glib-client $< --output=$@
|
||||
|
||||
MARSHALFILES = marshal.c marshal.h
|
||||
GLIB_GENMARSHAL=`pkg-config --variable=glib_genmarshal glib-2.0`
|
||||
|
||||
marshal.h: $(top_srcdir)/src/fprintd-marshal.list
|
||||
( $(GLIB_GENMARSHAL) --prefix=fprintd_marshal $(top_srcdir)/src/fprintd-marshal.list --header > marshal.h )
|
||||
marshal.c: marshal.h
|
||||
( $(GLIB_GENMARSHAL) --prefix=fprintd_marshal $(top_srcdir)/src/fprintd-marshal.list --body --header > marshal.c )
|
||||
|
||||
@ -21,6 +21,7 @@
|
||||
#include <dbus/dbus-glib-bindings.h>
|
||||
#include "manager-dbus-glue.h"
|
||||
#include "device-dbus-glue.h"
|
||||
#include "marshal.h"
|
||||
|
||||
static DBusGProxy *manager = NULL;
|
||||
static DBusGConnection *connection = NULL;
|
||||
@ -79,9 +80,9 @@ static void do_enroll(DBusGProxy *dev)
|
||||
GError *error;
|
||||
gboolean enroll_completed = FALSE;
|
||||
|
||||
dbus_g_proxy_add_signal(dev, "EnrollStatus", G_TYPE_INT, NULL);
|
||||
dbus_g_proxy_add_signal(dev, "EnrollStatus", G_TYPE_STRING, G_TYPE_BOOLEAN, NULL);
|
||||
dbus_g_proxy_connect_signal(dev, "EnrollStatus", G_CALLBACK(enroll_result),
|
||||
&enroll_completed, NULL);
|
||||
&enroll_completed, NULL);
|
||||
|
||||
g_print("Enrolling right index finger.\n");
|
||||
if (!net_reactivated_Fprint_Device_enroll_start(dev, "right-index-finger", &error))
|
||||
@ -111,6 +112,10 @@ int main(int argc, char **argv)
|
||||
char *username;
|
||||
|
||||
g_type_init();
|
||||
|
||||
dbus_g_object_register_marshaller (fprintd_marshal_VOID__STRING_BOOLEAN,
|
||||
G_TYPE_NONE, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_INVALID);
|
||||
|
||||
loop = g_main_loop_new(NULL, FALSE);
|
||||
create_manager();
|
||||
|
||||
|
||||
14
tests/list.c
14
tests/list.c
@ -44,6 +44,7 @@ static void list_fingerprints(DBusGProxy *dev, const char *username)
|
||||
GError *error = NULL;
|
||||
char **fingers;
|
||||
GHashTable *props;
|
||||
DBusGProxy *p;
|
||||
guint i;
|
||||
|
||||
if (!net_reactivated_Fprint_Device_list_enrolled_fingers(dev, username, &fingers, &error))
|
||||
@ -54,14 +55,19 @@ static void list_fingerprints(DBusGProxy *dev, const char *username)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!net_reactivated_Fprint_Device_get_properties(dev, &props, &error))
|
||||
g_error("GetProperties failed: %s", error->message);
|
||||
p = dbus_g_proxy_new_for_name(connection,
|
||||
"net.reactivated.Fprint", dbus_g_proxy_get_path (dev),
|
||||
"org.freedesktop.DBus.Properties");
|
||||
if (!dbus_g_proxy_call (p, "GetAll", &error, G_TYPE_STRING, "net.reactivated.Fprint.Device", G_TYPE_INVALID,
|
||||
dbus_g_type_get_map ("GHashTable", G_TYPE_STRING, G_TYPE_VALUE), &props, G_TYPE_INVALID))
|
||||
g_error("GetAll on the Properties interface failed: %s", error->message);
|
||||
|
||||
g_print("Fingerprints for user %s on %s (%s):\n",
|
||||
username,
|
||||
g_value_get_string (g_hash_table_lookup (props, "Name")),
|
||||
g_value_get_string (g_hash_table_lookup (props, "ScanType")));
|
||||
g_value_get_string (g_hash_table_lookup (props, "name")),
|
||||
g_value_get_string (g_hash_table_lookup (props, "scan-type")));
|
||||
g_hash_table_destroy (props);
|
||||
g_object_unref (p);
|
||||
|
||||
for (i = 0; fingers[i] != NULL; i++) {
|
||||
g_print(" - #%d: %s\n", i, fingers[i]);
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
#include <dbus/dbus-glib-bindings.h>
|
||||
#include "manager-dbus-glue.h"
|
||||
#include "device-dbus-glue.h"
|
||||
#include "marshal.h"
|
||||
|
||||
static DBusGProxy *manager = NULL;
|
||||
static DBusGConnection *connection = NULL;
|
||||
@ -114,10 +115,10 @@ static void do_verify(DBusGProxy *dev)
|
||||
GError *error;
|
||||
gboolean verify_completed = FALSE;
|
||||
|
||||
dbus_g_proxy_add_signal(dev, "VerifyStatus", G_TYPE_INT, NULL);
|
||||
dbus_g_proxy_add_signal(dev, "VerifyStatus", G_TYPE_STRING, G_TYPE_BOOLEAN, NULL);
|
||||
dbus_g_proxy_add_signal(dev, "VerifyFingerSelected", G_TYPE_INT, NULL);
|
||||
dbus_g_proxy_connect_signal(dev, "VerifyStatus", G_CALLBACK(verify_result),
|
||||
&verify_completed, NULL);
|
||||
&verify_completed, NULL);
|
||||
dbus_g_proxy_connect_signal(dev, "VerifyFingerSelected", G_CALLBACK(verify_finger_selected),
|
||||
NULL, NULL);
|
||||
|
||||
@ -158,6 +159,9 @@ int main(int argc, char **argv)
|
||||
|
||||
g_type_init();
|
||||
|
||||
dbus_g_object_register_marshaller (fprintd_marshal_VOID__STRING_BOOLEAN,
|
||||
G_TYPE_NONE, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_INVALID);
|
||||
|
||||
context = g_option_context_new ("Verify a fingerprint");
|
||||
g_option_context_add_main_entries (context, entries, NULL);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user