summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorliuxueli <[email protected]>2020-11-18 21:46:40 +0600
committerliuxueli <[email protected]>2020-11-18 21:46:40 +0600
commit72ac4f1a1193b45564d6065bec3dfbb5bc9abe81 (patch)
tree9de236d88d1b4fcde1ca92d893e0a4b27382d676
parent6b5f3c75441f20b3f24708fc92350ac87c00223f (diff)
转义/\-,;%$*特殊字符v2.9.10
-rw-r--r--src/fs2prometheus.cpp23
-rw-r--r--test/fs2_test.cpp2
2 files changed, 16 insertions, 9 deletions
diff --git a/src/fs2prometheus.cpp b/src/fs2prometheus.cpp
index 4a4f2d9..4782e23 100644
--- a/src/fs2prometheus.cpp
+++ b/src/fs2prometheus.cpp
@@ -27,26 +27,33 @@ struct FS_library_runtime g_FS2_LIBRARY_handle={
static char* str_unescape(char* s, char *d, int d_len)
{
- int i=0;
+ int i=0,j=0;
int len=strlen(s);
- for(i=0; i<len && i<d_len; i++)
+ for(i=0; i<len && j<d_len; i++)
{
- if(s[i]=='(' || s[i]==')' || s[i]=='{' || s[i]=='}')
+ if(s[i]=='(' || s[i]==')' || s[i]=='{' || s[i]=='}' ||
+ s[i]=='/' || s[i]=='\\' || s[i]=='%' || s[i]=='*' ||
+ s[i]=='$' || s[i]=='-' || s[i]==',' || s[i]==';')
{
- d[i]='_';
+ if(i==0)
+ {
+ continue;
+ }
+
+ d[j++]='_';
}
else
{
- d[i]=s[i];
+ d[j++]=s[i];
}
}
- if(d[i-1]=='_')
+ if(d[j-1]=='_')
{
- i-=1;
+ j-=1;
}
- d[i]='\0';
+ d[j]='\0';
return 0;
}
diff --git a/test/fs2_test.cpp b/test/fs2_test.cpp
index d9eaf87..40f74f1 100644
--- a/test/fs2_test.cpp
+++ b/test/fs2_test.cpp
@@ -65,7 +65,7 @@ int main(int argc,char* argv[])
int runtime_status_ids[TEST_RUNTIME_REG_NUM];
for(i=0;i<TEST_STATUS_NUM;i++)
{
- snprintf(buff,sizeof(buff),"(status_%02d)",i);
+ snprintf(buff,sizeof(buff),"(status_%02d)/\\-,;%%$*",i);
status_ids[i]=FS_register(handle, FS_STYLE_STATUS, FS_CALC_CURRENT,buff);
}
for(i=0;i<TEST_FIELD_NUM;i++)