Sophie

Sophie

distrib > Mandriva > 2007.0 > x86_64 > media > main-release-src > by-pkgid > 9af144f7de1d4663fa2fa6bc3ceed4f1 > files > 5

bluez-utils-3.4-3mdv2007.0.src.rpm

diff -ru bluez-utils-3.2.orig/hcid/passkey-agent.c bluez-utils-3.2/hcid/passkey-agent.c
--- bluez-utils-3.2.orig/hcid/passkey-agent.c	2006-04-28 16:30:59.000000000 +0200
+++ bluez-utils-3.2/hcid/passkey-agent.c	2006-09-07 00:27:48.000000000 +0200
@@ -21,6 +21,7 @@
  *
  */
 
+#define DBUS_API_SUBJECT_TO_CHANGE
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
@@ -76,6 +77,10 @@
 {
 	DBusMessage *reply;
 	const char *path, *address;
+    char buffer[256];
+    FILE *pin;
+    int status;
+    char *s_passkey;
 
 	if (!passkey)
 		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
@@ -91,8 +96,19 @@
 		fprintf(stderr, "Can't create reply message\n");
 		return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
 	}
+    sprintf(buffer, "%s %s %s", passkey, "in", address);
+    pin=popen(buffer, "r");
+    wait(&status);
+    fgets(buffer, 256, pin);
+    if(buffer[1]!='P' && buffer[1]!='I' && buffer[2]!='N')
+      return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
+    pclose(pin);
+    s_passkey=&buffer[4];
+    if(s_passkey[strlen(s_passkey)-1]=='\n') s_passkey[strlen(s_passkey)-1]='\0';
+    fprintf(stderr, "Found passkey: \"%s\"\n", s_passkey);
 
-	dbus_message_append_args(reply, DBUS_TYPE_STRING, &passkey,
+
+	dbus_message_append_args(reply, DBUS_TYPE_STRING, &s_passkey ,
 					DBUS_TYPE_INVALID);
 
 	dbus_connection_send(conn, reply, NULL);