r18343 - gnucash/trunk/packaging/win32 - Gwenhywfar-3.11.1 also needs a patch to not crash at startup.
Christian Stimming
cstim at code.gnucash.org
Thu Sep 24 16:06:58 EDT 2009
Author: cstim
Date: 2009-09-24 16:06:58 -0400 (Thu, 24 Sep 2009)
New Revision: 18343
Trac: http://svn.gnucash.org/trac/changeset/18343
Added:
gnucash/trunk/packaging/win32/gwenhywfar-3.11.1-patch.diff
Modified:
gnucash/trunk/packaging/win32/defaults.sh
Log:
Gwenhywfar-3.11.1 also needs a patch to not crash at startup.
Modified: gnucash/trunk/packaging/win32/defaults.sh
===================================================================
--- gnucash/trunk/packaging/win32/defaults.sh 2009-09-24 18:49:10 UTC (rev 18342)
+++ gnucash/trunk/packaging/win32/defaults.sh 2009-09-24 20:06:58 UTC (rev 18343)
@@ -264,7 +264,7 @@
set_default GWENHYWFAR_URL "$SF_MIRROR/gwenhywfar/gwenhywfar-2.6.2.tar.gz"
else
set_default GWENHYWFAR_URL "http://www2.aquamaniac.de/sites/download/download.php?package=01&release=29&file=01&dummy=gwenhywfar-3.11.1.tar.gz"
- #set_default GWENHYWFAR_PATCH `pwd`/gwenhywfar-3.11.0-patch.diff
+ set_default GWENHYWFAR_PATCH `pwd`/gwenhywfar-3.11.1-patch.diff
fi
set_default GWENHYWFAR_DIR $GLOBAL_DIR\\gwenhywfar
Added: gnucash/trunk/packaging/win32/gwenhywfar-3.11.1-patch.diff
===================================================================
--- gnucash/trunk/packaging/win32/gwenhywfar-3.11.1-patch.diff (rev 0)
+++ gnucash/trunk/packaging/win32/gwenhywfar-3.11.1-patch.diff 2009-09-24 20:06:58 UTC (rev 18343)
@@ -0,0 +1,113 @@
+From 1919a8e3c51e8c71f2c92a944cd07dc4e99a1265 Mon Sep 17 00:00:00 2001
+From: christian <christian at 70169cfe-8b10-0410-8925-dcb4b91034d8>
+Date: Thu, 24 Sep 2009 20:04:08 +0000
+Subject: [PATCH] Fix GWEN_Url_fromString for windows paths which include a drive letter.
+
+Also, gracefully return NULL instead of abort on unknown port number.
+Also, improve error message output. Also, confirm this to work
+without breaking anything by adding several more unittests for
+this function.
+
+git-svn-id: https://devel.aqbanking.de/svn/gwenhywfar/trunk@1601 70169cfe-8b10-0410-8925-dcb4b91034d8
+---
+ checks/check_urlfns.c | 105 +++++++++++++++++++++++++++++++++++++++++++++---
+ src/parser/urlfns.c | 33 ++++++++++++---
+ 2 files changed, 124 insertions(+), 14 deletions(-)
+
+diff --git a/src/parser/urlfns.c b/src/parser/urlfns.c
+index 363cdff..9a5e1d1 100644
+--- a/src/parser/urlfns.c
++++ b/src/parser/urlfns.c
+@@ -18,6 +18,7 @@
+ #include "url_p.h"
+ #include "urlfns.h"
+ #include <gwenhywfar/debug.h>
++#include <ctype.h> // for isalpha()
+
+
+ GWEN_URL *GWEN_Url_fromString(const char *str) {
+@@ -25,6 +26,7 @@ GWEN_URL *GWEN_Url_fromString(const char *str) {
+ GWEN_DB_NODE *dbVars;
+ const char *s;
+ const char *p;
++ int starts_with_drive_letter = 0;
+
+ url=GWEN_Url_new();
+ dbVars=GWEN_DB_Group_new("vars");
+@@ -33,8 +35,17 @@ GWEN_URL *GWEN_Url_fromString(const char *str) {
+ dbVars=0;
+
+ s=str;
++
++ /* Check for a drive letter, which occurs on windows, but this will
++ always be one single alpha character followed by a colon followed
++ by a directory separator. */
++ if (s && isalpha(s[0]) && s[1] == ':'
++ && (s[2] == '/' || s[2] == '\\')) {
++ starts_with_drive_letter = 1;
++ }
++
+ /* read protocol (if any) */
+- p=strchr(s, ':');
++ p = starts_with_drive_letter ? s : strchr(s, ':');
+ if (p) {
+ if (p[1]=='/' && p[2]=='/') {
+ char *buf;
+@@ -51,7 +62,7 @@ GWEN_URL *GWEN_Url_fromString(const char *str) {
+ }
+
+ if (!*s) {
+- DBG_ERROR(GWEN_LOGDOMAIN, "No server given");
++ DBG_ERROR(GWEN_LOGDOMAIN, "No server or path given in url \"%s\"", str);
+ GWEN_Url_free(url);
+ return 0;
+ }
+@@ -83,14 +94,21 @@ GWEN_URL *GWEN_Url_fromString(const char *str) {
+ s=p+1;
+ }
+
++ /* Do we now have a drive letter? (After the protocol?) */
++ if (!starts_with_drive_letter
++ && s && isalpha(s[0]) && s[1] == ':'
++ && (s[2] == '/' || s[2] == '\\')) {
++ starts_with_drive_letter = 1;
++ }
++
+ /* read server */
+ if (!*s) {
+- DBG_ERROR(GWEN_LOGDOMAIN, "No server given");
++ DBG_ERROR(GWEN_LOGDOMAIN, "No server given in url \"%s\"", str);
+ GWEN_Url_free(url);
+ return 0;
+ }
+ p=s;
+- while(*p && *p!=':' && *p!='/' && *p!='?')
++ while(!starts_with_drive_letter && *p && *p!=':' && *p!='/' && *p!='?')
+ p++;
+ if (p!=s) {
+ char *buf;
+@@ -120,9 +138,10 @@ GWEN_URL *GWEN_Url_fromString(const char *str) {
+ memmove(buf, s, p-s+1);
+ buf[p-s]=0;
+ if (sscanf(buf, "%d", &port)!=1) {
+- DBG_ERROR(GWEN_LOGDOMAIN, "Bad port (%s)", buf);
++ DBG_ERROR(GWEN_LOGDOMAIN, "Bad port (%s) in url \"%s\"", buf, str);
+ free(buf);
+- abort();
++ GWEN_Url_free(url);
++ return 0;
+ }
+ url->port=port;
+ free(buf);
+@@ -139,7 +158,7 @@ GWEN_URL *GWEN_Url_fromString(const char *str) {
+ }
+
+ /* get path */
+- if (*s=='/') {
++ if (starts_with_drive_letter || *s=='/') {
+ p=s;
+ while(*p && *p!='?')
+ p++;
+--
+1.6.1.rc3.51.g5832d
+
More information about the gnucash-changes
mailing list