aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Bock <nicolasbock@gmail.com>2013-09-11 14:04:56 -0600
committerNicolas Bock <nicolasbock@gmail.com>2013-09-11 14:04:56 -0600
commit648828262ee99fd62b8c1933b9c8c170dd845ca0 (patch)
treec9a97845bbf4f7ec31a93fe0c0cdbcb4cd1eba2f
parentVersion bump to sys-cluster/charm-6.5.1-r1 to push CkMigrationMgr patch to us... (diff)
downloadsci-648828262ee99fd62b8c1933b9c8c170dd845ca0.tar.gz
sci-648828262ee99fd62b8c1933b9c8c170dd845ca0.tar.bz2
sci-648828262ee99fd62b8c1933b9c8c170dd845ca0.zip
sys-cluster/charm-6.5.1-r1: Added patch from ticket 294.
Package-Manager: portage-2.2.2
-rw-r--r--sys-cluster/charm/ChangeLog4
-rw-r--r--sys-cluster/charm/charm-6.5.1-r1.ebuild1
-rw-r--r--sys-cluster/charm/files/charm-6.5.1-fix-string-parsing.patch83
3 files changed, 88 insertions, 0 deletions
diff --git a/sys-cluster/charm/ChangeLog b/sys-cluster/charm/ChangeLog
index 61f5a301d..de0657735 100644
--- a/sys-cluster/charm/ChangeLog
+++ b/sys-cluster/charm/ChangeLog
@@ -2,6 +2,10 @@
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
# $Header: $
+ 11 Sep 2013; Nicolas Bock <nicolasbock@gmail.com>
+ +files/charm-6.5.1-fix-string-parsing.patch, charm-6.5.1-r1.ebuild:
+ sys-cluster/charm-6.5.1-r1: Added patch from ticket 294.
+
*charm-6.5.1-r1 (11 Sep 2013)
11 Sep 2013; Nicolas Bock <nicolasbock@gmail.com> +charm-6.5.1-r1.ebuild,
diff --git a/sys-cluster/charm/charm-6.5.1-r1.ebuild b/sys-cluster/charm/charm-6.5.1-r1.ebuild
index 9161c8fcb..25b056000 100644
--- a/sys-cluster/charm/charm-6.5.1-r1.ebuild
+++ b/sys-cluster/charm/charm-6.5.1-r1.ebuild
@@ -91,6 +91,7 @@ src_prepare() {
epatch "${FILESDIR}/charm-6.5.1-cleanup-config.patch"
epatch "${FILESDIR}/charm-6.5.1-CkReductionMgr.patch"
+ epatch "${FILESDIR}/charm-6.5.1-fix-string-parsing.patch"
}
src_compile() {
diff --git a/sys-cluster/charm/files/charm-6.5.1-fix-string-parsing.patch b/sys-cluster/charm/files/charm-6.5.1-fix-string-parsing.patch
new file mode 100644
index 000000000..420b2fec2
--- /dev/null
+++ b/sys-cluster/charm/files/charm-6.5.1-fix-string-parsing.patch
@@ -0,0 +1,83 @@
+From b74a077290b82b7a22010d78502a9e60e9e44c1f Mon Sep 17 00:00:00 2001
+From: Nicolas Bock <nicolasbock@gmail.com>
+Date: Wed, 11 Sep 2013 13:50:05 -0600
+Subject: [PATCH 2/2] charmrun.C: parsing of strings now parses "\n" into '\n'.
+
+Since gdb lacks anything like ';' to separate several commands in one line,
+the commands need to be separated by a newline character. I have added some
+parsing logic so that the string "\n" will now be translated into the
+character '\n'.
+---
+ src/arch/net/charmrun/charmrun.C | 22 ++++++++++++++++++++--
+ src/arch/netlrts/charmrun/charmrun.C | 22 ++++++++++++++++++++--
+ 2 files changed, 40 insertions(+), 4 deletions(-)
+
+diff --git a/src/arch/net/charmrun/charmrun.C b/src/arch/net/charmrun/charmrun.C
+index a23baa2..2830b8f 100644
+--- a/src/arch/net/charmrun/charmrun.C
++++ b/src/arch/net/charmrun/charmrun.C
+@@ -451,8 +451,26 @@ static int pparam_setdef(ppdef def, char *value)
+ if (*p) return -1;
+ return 0;
+ case 's' :
+- *def->where.s = strdup(value);
+- return 0;
++ {
++ /* Parse input string and convert a literal "\n" into '\n'. */
++ *def->where.s = (char*) calloc(strlen(value)+1, sizeof(char));
++ char* parsed_value = (char*) *def->where.s;
++ for(int i = 0, j = 0; i < strlen(value); i++)
++ {
++ fprintf(stderr, "i = %d, j = %d, value[i] = \n", i, j);
++ if(i+1 < strlen(value))
++ {
++ if(value[i] == '\\' && value[i+1] == 'n')
++ {
++ parsed_value[j++] = '\n';
++ i++;
++ continue;
++ }
++ }
++ parsed_value[j++] = value[i];
++ }
++ return 0;
++ }
+ case 'f' :
+ *def->where.f = strtol(value, &p, 10);
+ if (*p) return -1;
+diff --git a/src/arch/netlrts/charmrun/charmrun.C b/src/arch/netlrts/charmrun/charmrun.C
+index 232bf5c..77a7950 100644
+--- a/src/arch/netlrts/charmrun/charmrun.C
++++ b/src/arch/netlrts/charmrun/charmrun.C
+@@ -451,8 +451,26 @@ static int pparam_setdef(ppdef def, char *value)
+ if (*p) return -1;
+ return 0;
+ case 's' :
+- *def->where.s = strdup(value);
+- return 0;
++ {
++ /* Parse input string and convert a literal "\n" into '\n'. */
++ *def->where.s = (char*) calloc(strlen(value)+1, sizeof(char));
++ char* parsed_value = (char*) *def->where.s;
++ for(int i = 0, j = 0; i < strlen(value); i++)
++ {
++ fprintf(stderr, "i = %d, j = %d, value[i] = \n", i, j);
++ if(i+1 < strlen(value))
++ {
++ if(value[i] == '\\' && value[i+1] == 'n')
++ {
++ parsed_value[j++] = '\n';
++ i++;
++ continue;
++ }
++ }
++ parsed_value[j++] = value[i];
++ }
++ return 0;
++ }
+ case 'f' :
+ *def->where.f = strtol(value, &p, 10);
+ if (*p) return -1;
+--
+1.8.1.5
+