From aecf8d985ea38eceac682f31bbbc92b605c0ab39 Mon Sep 17 00:00:00 2001
From: Matt Colyer <matt@colyer.name>
Date: Wed, 20 Aug 2008 09:31:32 -0700
Subject: [PATCH] Removed duplicate functions in initconf and fixed build
 issues.

---
 src/Makefile.am |  6 +++---
 src/initconf.c  | 33 +++++++++------------------------
 src/lockdown.h  |  2 ++
 3 files changed, 14 insertions(+), 27 deletions(-)

diff --git a/src/Makefile.am b/src/Makefile.am
index dc32c04..674f19c 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -5,6 +5,6 @@ bin_PROGRAMS = iphoneclient ifuse libiphone-initconf
 iphoneclient_SOURCES = usbmux.c main.c iphone.c plist.c lockdown.c AFC.c userpref.c
 ifuse_SOURCES = ifuse.c usbmux.c iphone.c plist.c lockdown.c AFC.c userpref.c
 
-libiphone_initconf_SOURCES = initconf.c userpref.c
-libiphone_initconf_CFLAGS = $(libgthread2_CFLAGS)
-libiphone_initconf_LDFLAGS = $(libgthread2_LIBS)
+libiphone_initconf_SOURCES = initconf.c userpref.c lockdown.c plist.c usbmux.c iphone.c
+libiphone_initconf_CFLAGS = $(libgthread2_CFLAGS) $(AM_CFLAGS)
+libiphone_initconf_LDFLAGS = $(libgthread2_LIBS) $(AM_LDFLAGS)
diff --git a/src/initconf.c b/src/initconf.c
index 8944ab4..b900f7f 100644
--- a/src/initconf.c
+++ b/src/initconf.c
@@ -25,38 +25,23 @@
 #include <gnutls/gnutls.h>
 #include <gnutls/x509.h>
 #include <glib.h>
+
 #include "userpref.h"
+#include "lockdown.h"
 
 int debug = 1;
 
-int get_rand(int min, int max) {
-	int retval = (rand() % (max - min)) + min;
-	return retval;
-}
-
-char *lockdownd_generate_hostid() {
-	char *hostid = (char*)malloc(sizeof(char) * 37); // HostID's are just UUID's, and UUID's are 36 characters long
-	const char *chars = "ABCDEF0123456789";
-	srand(time(NULL));
-	int i = 0;
-	
-	for (i = 0; i < 36; i++) {
-		if (i == 8 || i == 13 || i == 18 || i == 23) {
-			hostid[i] = '-';
-			continue;
-		} else {
-			hostid[i] = chars[get_rand(0,16)];
-		}
-	}
-	hostid[36] = '\0';
-	return hostid;
-}
-
+/** Generates a 2048 byte key, split into a function so that it can be run in a
+ *  thread.
+ *
+ * @param key The pointer to the desired location of the new key.
+ */
 void generate_key(gpointer key){
 	gnutls_x509_privkey_generate(*((gnutls_x509_privkey_t*)key), GNUTLS_PK_RSA, 2048, 0);
 	g_thread_exit(0);
 }
-
+/** Simple function that generates a spinner until the mutex is released.
+ */
 void progress_bar(gpointer mutex){
 	const char *spinner = "|/-\\|/-\\";
 	int i = 0;
diff --git a/src/lockdown.h b/src/lockdown.h
index 56c133d..6b27900 100644
--- a/src/lockdown.h
+++ b/src/lockdown.h
@@ -22,6 +22,7 @@
 #ifndef LOCKDOWND_H
 #define LOCKDOWND_H
 
+#include "usbmux.h"
 #include "plist.h"
 
 #include <gnutls/gnutls.h>
@@ -36,6 +37,7 @@ typedef struct {
 } lockdownd_client;
 
 int lockdownd_init(iPhone *phone, lockdownd_client **control);
+char *lockdownd_generate_hostid();
 
 lockdownd_client *new_lockdownd_client(iPhone *phone);
 int lockdownd_hello(lockdownd_client *control);
-- 
2.18.1