aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Ell_DBstructure.c10
-rw-r--r--src/Ell_DBstructure.h2
2 files changed, 7 insertions, 5 deletions
diff --git a/src/Ell_DBstructure.c b/src/Ell_DBstructure.c
index 48c79dd..745763b 100644
--- a/src/Ell_DBstructure.c
+++ b/src/Ell_DBstructure.c
@@ -207,7 +207,7 @@ int Ell_SetStrKey(char *value, const char *keychain) {
}
else {
setme->type = CCTK_VARIABLE_STRING;
- setme->vals.s = value;
+ setme->vals.s = strdup(value);
setme->been_set = ELL_YES;
retval=0;
}
@@ -301,11 +301,13 @@ void CCTK_FCALL CCTK_FNAME(Ell_GetIntKey)
free(key);
}
-int Ell_GetStrKey(char *value, const char *keychain) {
+int Ell_GetStrKey(char **value, const char *keychain) {
struct t_ellthingy *getme=NULL;
int retval;
+ *value = NULL;
+
getme = (struct t_ellthingy*)GetNamedData(EllInfoDB, keychain);
if (!(getme)) {
@@ -314,7 +316,7 @@ int Ell_GetStrKey(char *value, const char *keychain) {
retval = ELLGET_NOKEY;
}
else if (getme->type!=CCTK_VARIABLE_STRING) {
- printf("You are not getting a CCTK_REAL value off this key: >%s< type: %d\n",
+ printf("You are not getting a CCTK_STRING value off this key: >%s< type: %d\n",
keychain,getme->type);
retval = ELLGET_BADTYPE;
}
@@ -322,7 +324,7 @@ int Ell_GetStrKey(char *value, const char *keychain) {
printf("Key has not been set\n");
retval = ELLGET_NOTSET;
} else {
- *value=getme->vals.r;
+ *value=strdup(getme->vals.s);
retval=0;
}
return(retval);
diff --git a/src/Ell_DBstructure.h b/src/Ell_DBstructure.h
index 30eb83f..1f4af09 100644
--- a/src/Ell_DBstructure.h
+++ b/src/Ell_DBstructure.h
@@ -35,7 +35,7 @@ int Ell_SetStrKey(char *value, const char *keychain);
int Ell_GetRealKey(CCTK_REAL *value, const char *keychain);
int Ell_GetIntKey(CCTK_INT *value,const char *keychain);
-int Ell_GetStrKey(char *value, const char *keychain);
+int Ell_GetStrKey(char **value, const char *keychain);
#ifdef __cplusplus