summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorslioch <slioch@eng-140.vyatta.com>2008-10-06 15:50:50 -0700
committerslioch <slioch@eng-140.vyatta.com>2008-10-06 15:50:50 -0700
commit128062823ecbe45fa476ab28b145cea83cd365b9 (patch)
treecb2ce936537c168bfa8266f6d184133af5cbc4f0
parent01491ebb315529124dea2d29f4b72507aa48f9ad (diff)
downloadvyatta-cfg-128062823ecbe45fa476ab28b145cea83cd365b9.tar.gz
vyatta-cfg-128062823ecbe45fa476ab28b145cea83cd365b9.zip
fix for bug 3666. strip off leading and trailing quote from default text values that are deleted. default values are treated
differently from hollywood. The main difference a script writer needs to be aware of is that a deleted node will set the value of the node back to the default value rather than deleting the node. This means that a node that has a default value will always be in existence (if the parent exists) and that a user cannot delete this node.
-rw-r--r--src/delete.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/delete.c b/src/delete.c
index 6fe4eb3..57235d6 100644
--- a/src/delete.c
+++ b/src/delete.c
@@ -78,6 +78,20 @@ static void reset_default(const char *def_val)
if (def_val == NULL)
return;
+ //strip off quotes
+ char tmp_val[1025];
+ char *ptr = index(def_val,'"');
+ if (ptr != NULL) {
+ strcpy(tmp_val,ptr);
+ ptr = rindex(tmp_val,'"');
+ if (ptr != NULL) {
+ *ptr = '\0';
+ }
+ }
+ else {
+ strcpy(tmp_val,def_val);
+ }
+
char filename[strlen(m_path.path) + 10];
touch();
sprintf(filename, "%s/node.val", m_path.path);
@@ -85,7 +99,7 @@ static void reset_default(const char *def_val)
FILE *fp = fopen(filename, "w");
if (fp == NULL)
bye("can not open: %s", filename);
- fputs(def_val, fp);
+ fputs(tmp_val, fp);
fclose(fp);
sprintf(filename, "%s/def", m_path.path);