diff options
author | slioch <slioch@eng-140.vyatta.com> | 2008-10-06 15:50:50 -0700 |
---|---|---|
committer | slioch <slioch@eng-140.vyatta.com> | 2008-10-06 15:50:50 -0700 |
commit | 128062823ecbe45fa476ab28b145cea83cd365b9 (patch) | |
tree | cb2ce936537c168bfa8266f6d184133af5cbc4f0 | |
parent | 01491ebb315529124dea2d29f4b72507aa48f9ad (diff) | |
download | vyatta-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.c | 16 |
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); |