From d071f2c303e2286421d97c7b77bad47cf37f2d25 Mon Sep 17 00:00:00 2001
From: Jan Breuer <jan.breuer@jaybee.cz>
Date: 周一, 26 11月 2012 22:55:15 +0800
Subject: [PATCH] Netbeans project cleanup

---
 scpi/scpi.c |   61 ++++++++++++++++++++----------
 1 files changed, 40 insertions(+), 21 deletions(-)

diff --git a/scpi/scpi.c b/scpi/scpi.c
index 8038405..7c377a2 100644
--- a/scpi/scpi.c
+++ b/scpi/scpi.c
@@ -51,7 +51,6 @@
 static char * cmdlineTerminator(const char * cmd, size_t len);
 static const char * cmdlineNext(const char * cmd, size_t len);
 static bool_t cmdMatch(const char * pattern, const char * cmd, size_t len);
-static size_t skipWhitespace(const char * cmd, size_t len);
 
 static void paramSkipBytes(scpi_context_t * context, size_t num);
 static void paramSkipWhitespace(scpi_context_t * context);
@@ -264,21 +263,6 @@
     return result;
 }
 
-/**
- * Count white spaces from the beggining
- * @param cmd - command
- * @param len - max search length
- * @return number of white spaces
- */
-size_t skipWhitespace(const char * cmd, size_t len) {
-    size_t i;
-    for (i = 0; i < len; i++) {
-        if (!isspace(cmd[i])) {
-            return i;
-        }
-    }
-    return len;
-}
 
 /**
  * Write data to SCPI output
@@ -571,11 +555,16 @@
 bool_t SCPI_ParamInt(scpi_context_t * context, int32_t * value, bool_t mandatory) {
     size_t len;
 
+    if (!value) {
+        return FALSE;
+    }
+
     if (!paramNext(context, mandatory)) {
         return FALSE;
     }
+       
     len = strToLong(context->paramlist.parameters, value);
-
+   
     if (len == 0) {
         if (mandatory) {
             SCPI_ErrorPush(context, SCPI_ERROR_SYNTAX);
@@ -585,6 +574,12 @@
         paramSkipBytes(context, len);
     }
 
+    paramSkipWhitespace(context);
+    if ((context->paramlist.length > 0) && (context->paramlist.parameters[0] != ',')) {
+        SCPI_ErrorPush(context, SCPI_ERROR_SUFFIX_NOT_ALLOWED);
+        return FALSE;
+    }
+    
     return TRUE;
 }
 
@@ -598,9 +593,14 @@
 bool_t SCPI_ParamDouble(scpi_context_t * context, double * value, bool_t mandatory) {
     size_t len;
 
+    if (!value) {
+        return FALSE;
+    }
+
     if (!paramNext(context, mandatory)) {
         return FALSE;
     }
+   
     len = strToDouble(context->paramlist.parameters, value);
 
     if (len == 0) {
@@ -612,6 +612,12 @@
         paramSkipBytes(context, len);
     }
 
+    paramSkipWhitespace(context);
+    if ((context->paramlist.length > 0) && (context->paramlist.parameters[0] != ',')) {
+        SCPI_ErrorPush(context, SCPI_ERROR_SUFFIX_NOT_ALLOWED);
+        return FALSE;
+    }
+    
     return TRUE;
 }
 
@@ -624,10 +630,23 @@
  * @return 
  */
 bool_t SCPI_ParamString(scpi_context_t * context, char ** value, size_t * len, bool_t mandatory) {
-    (void)context;
-    (void)value;
-    (void)len;
-    (void)mandatory;
+    size_t length;
     
+    if (!value || !len) {
+        return FALSE;
+    }
+    
+    if (!paramNext(context, mandatory)) {
+        return FALSE;
+    }
+
+    if (locateStr(context->paramlist.parameters, context->paramlist.length, value, &length)) {
+        paramSkipBytes(context, length);
+        if (len) {
+            *len = length;
+        }
+        return TRUE;
+    }
+
     return FALSE;
 }
\ No newline at end of file

--
Gitblit v1.9.1