Merge branch 'master' of https://github.com/szmoore/MCTX3420.git
[matches/MCTX3420.git] / server / fastcgi.c
index b58ba79..71f8e55 100644 (file)
@@ -39,24 +39,14 @@ struct FCGIContext {
  */ 
 static void IdentifyHandler(FCGIContext *context, char *params) {
        bool ident_sensors = false, ident_actuators = false;
-       //const char *key, *value;
 
        int i;
 
        FCGIValue values[2] = {{"sensors", &ident_sensors, FCGI_BOOL_T},
                                         {"actuators", &ident_actuators, FCGI_BOOL_T}};
-
        if (!FCGI_ParseRequest(context, params, values, 2))
                return;
 
-       /*while ((params = FCGI_KeyPair(params, &key, &value))) {
-               if (!strcmp(key, "sensors")) {
-                       ident_sensors = !ident_sensors;
-               } else if (!strcmp(key, "actuators")) {
-                       ident_actuators = !ident_actuators;
-               }
-       }*/
-
        FCGI_BeginJSON(context, STATUS_OK);
        FCGI_JSONPair("description", "MCTX3420 Server API (2013)");
        FCGI_JSONPair("build_date", __DATE__ " " __TIME__);
@@ -237,14 +227,19 @@ bool FCGI_ParseRequest(FCGIContext *context, char *params, FCGIValue values[], s
                                        case FCGI_BOOL_T:
                                                *((bool*) val->value) = true;
                                                break;
-                                       case FCGI_LONG_T:
-                                               *((long*) val->value) = strtol(value, &ptr, 10);
+                                       case FCGI_INT_T: case FCGI_LONG_T: {
+                                               long parsed = strtol(value, &ptr, 10);
                                                if (!*value || *ptr) {
                                                        snprintf(buf, BUFSIZ, "Expected int for '%s' but got '%s'", key, value);
                                                        FCGI_RejectJSON(context, FCGI_EscapeJSON(buf));
                                                        return false;
                                                }
-                                               break;
+
+                                               if (FCGI_TYPE(val->flags) == FCGI_INT_T)
+                                                       *((int*) val->value) = parsed;
+                                               else
+                                                       *((long*) val->value) = parsed;
+                                       }       break;
                                        case FCGI_DOUBLE_T:
                                                *((double*) val->value) = strtod(value, &ptr);
                                                if (!*value || *ptr) {
@@ -439,8 +434,6 @@ void * FCGI_RequestLoop (void *data)
        
        Log(LOGDEBUG, "First request...");
        while (FCGI_Accept() >= 0) {
-
-               
                Log(LOGDEBUG, "Got request #%d", context.response_number);
                ModuleHandler module_handler = NULL;
                char module[BUFSIZ], params[BUFSIZ];

UCC git Repository :: git.ucc.asn.au