From 61fe41c722d1062ddafcbef9edaeaeba4f084529 Mon Sep 17 00:00:00 2001
From: Jan Breuer <jan.breuer@jaybee.cz>
Date: 周一, 07 9月 2015 01:05:59 +0800
Subject: [PATCH] Cleanup documentation

---
 libscpi/src/parser.c |   19 ++++++++++++++++---
 1 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/libscpi/src/parser.c b/libscpi/src/parser.c
index 3475265..c307a37 100644
--- a/libscpi/src/parser.c
+++ b/libscpi/src/parser.c
@@ -701,8 +701,17 @@
 
     result = SCPI_Parameter(context, &param, mandatory);
     if (result) {
-        *value = param.ptr;
-        *len = param.len;
+        switch(param.type) {
+            case SCPI_TOKEN_SINGLE_QUOTE_PROGRAM_DATA:
+            case SCPI_TOKEN_DOUBLE_QUOTE_PROGRAM_DATA:
+                *value = param.ptr + 1;
+                *len = param.len - 2;
+                break;
+            default:
+                *value = param.ptr;
+                *len = param.len;
+                break;
+        }
 
         // TODO: return also parameter type (ProgramMnemonic, ArbitraryBlockProgramData, SingleQuoteProgramData, DoubleQuoteProgramData
     }
@@ -760,7 +769,7 @@
             case SCPI_TOKEN_SINGLE_QUOTE_PROGRAM_DATA:
             case SCPI_TOKEN_DOUBLE_QUOTE_PROGRAM_DATA:
                 quote = param.type == SCPI_TOKEN_SINGLE_QUOTE_PROGRAM_DATA ? '\'' : '"';
-                for (i_from = 0, i_to = 0; i_from < (size_t) param.len; i_from++) {
+                for (i_from = 1, i_to = 0; i_from < (size_t) (param.len - 1); i_from++) {
                     if (i_from >= buffer_len) {
                         break;
                     }
@@ -770,6 +779,10 @@
                         i_from++;
                     }
                 }
+                *copy_len = i_to;
+                if (i_to < buffer_len) {
+                    buffer[i_to] = 0;
+                }
                 break;
             default:
                 SCPI_ErrorPush(context, SCPI_ERROR_DATA_TYPE_ERROR);

--
Gitblit v1.9.1