From fb86d0e76d280c544f28ff1396c706f4e19d77ca Mon Sep 17 00:00:00 2001
From: oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Date: Tue, 23 Dec 2008 08:52:02 +0000
Subject: [PATCH] httpd wip

git-svn-id: svn://svn.berlios.de/openocd/trunk@1272 b42882b7-edfa-0310-969c-e2dbd0fdcd60
---
 src/server/httpd.c           | 10 ++++++++--
 src/server/httpd/build.sh    |  2 ++
 src/server/httpd/erase.tcl   |  2 +-
 src/server/httpd/httpd.tcl   |  6 +++---
 src/server/httpd/menu.xml    |  6 +++---
 src/server/httpd/openocd.tcl |  4 ++--
 6 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/src/server/httpd.c b/src/server/httpd.c
index 103c92f03..4b876d300 100644
--- a/src/server/httpd.c
+++ b/src/server/httpd.c
@@ -429,9 +429,14 @@ static int ahc_echo(void * cls, struct MHD_Connection * connection,
 }
 
 static struct MHD_Daemon * d;
+static pthread_mutex_t mutex;
+
 
 int httpd_start(void)
 {
+	pthread_mutexattr_t attr;
+	pthread_mutexattr_init( &attr );
+	pthread_mutex_init( &mutex, &attr );
 
 	int port = 8888;
 	LOG_USER("Launching httpd server on port %d", port);
@@ -461,15 +466,16 @@ int httpd_start(void)
 void httpd_stop(void)
 {
 	MHD_stop_daemon(d);
+	pthread_mutex_destroy( &mutex );
 }
 
 void openocd_sleep_prelude(void)
 {
-	/* FIX!!!! add locking here!!!! */
+	pthread_mutex_unlock( &mutex );
 }
 
 void openocd_sleep_postlude(void)
 {
-	/* FIX!!!! add locking here!!!! */
+	pthread_mutex_lock( &mutex );
 }
 
diff --git a/src/server/httpd/build.sh b/src/server/httpd/build.sh
index 93831a50e..8824debf4 100644
--- a/src/server/httpd/build.sh
+++ b/src/server/httpd/build.sh
@@ -1,3 +1,5 @@
 set e
 java -classpath ../../../../zy1000/build/xalan.jar\;. Stylizer menu.xsl menu.xml .
 find . -regex ".*\.tcl" -type f -exec sh html2tcl.sh {} {} \;
+echo "Copy .tcl files to /usr/local/lib/openocd/httpd/"
+cp *.tcl /usr/local/lib/openocd/httpd/
\ No newline at end of file
diff --git a/src/server/httpd/erase.tcl b/src/server/httpd/erase.tcl
index 3c29840d3..fa9210736 100644
--- a/src/server/httpd/erase.tcl
+++ b/src/server/httpd/erase.tcl
@@ -161,7 +161,7 @@ append buffer {
 				set form_length 0x10000
 			}  
 			if {[string compare $form_address ""]==0} {
-				if {[catch {[zy1000_flash]} result]==0} {
+				if {[catch {[first_flash_base]} result]==0} {
 						set form_address "0x[tohex $result]"
 					}			
 			}  
diff --git a/src/server/httpd/httpd.tcl b/src/server/httpd/httpd.tcl
index 607660cc8..a8bce1628 100644
--- a/src/server/httpd/httpd.tcl
+++ b/src/server/httpd/httpd.tcl
@@ -102,12 +102,12 @@ proc encode {a} {
 # catch any exceptions, capture output and return it 
 proc capture_catch {a} {
 	catch {
-		return [eval {capture $a}]
+		capture {uplevel $a}
 	} result
-	return $result
+	return $result 
 }
 
-proc zy1000_flash {} {
+proc first_flash_base {} {
 	set t [lindex 0 [ocd_flash_banks]]
 	return $t(base)
 }
diff --git a/src/server/httpd/menu.xml b/src/server/httpd/menu.xml
index 11daef94f..26ecf7a91 100644
--- a/src/server/httpd/menu.xml
+++ b/src/server/httpd/menu.xml
@@ -438,7 +438,7 @@
 				set form_length 0x10000
 			}  
 			if {[string compare $form_address ""]==0} {
-				if {[catch {[zy1000_flash]} result]==0} {
+				if {[catch {[first_flash_base]} result]==0} {
 						set form_address "0x[tohex $result]"
 					}			
 			}  
@@ -794,8 +794,8 @@ append console [encode [capture_catch poll]]
 				set form_command [formfetch form_command]
 
 				set form_edittext ""
-				if {[string length $form_command]>0} {				
-					catch {capture_catch {eval "$form_command"}} form_edittext
+				if {[string length $form_command]>0} {
+					set form_edittext [capture_catch {eval $form_command}]
 				}
 				
 				append buffer {<form action="openocd.tcl" method="post">} "\n"
diff --git a/src/server/httpd/openocd.tcl b/src/server/httpd/openocd.tcl
index cb28026e8..4fed38777 100644
--- a/src/server/httpd/openocd.tcl
+++ b/src/server/httpd/openocd.tcl
@@ -154,8 +154,8 @@ append buffer {
 				set form_command [formfetch form_command]
 
 				set form_edittext ""
-				if {[string length $form_command]>0} {				
-					catch {capture_catch {eval "$form_command"}} form_edittext
+				if {[string length $form_command]>0} {
+					set form_edittext [capture_catch {eval $form_command}]
 				}
 				
 				append buffer {<form action="openocd.tcl" method="post">} "\n"
-- 
GitLab