added clang config + fixed control flow in two parser functions

Sat, 02 May 2015 18:44:25 +0200

author
Mike Becker <universe@uap-core.de>
date
Sat, 02 May 2015 18:44:25 +0200
changeset 103
b29692d5f7a7
parent 102
e9ae1318a559
child 104
6fb4d24d9df9

added clang config + fixed control flow in two parser functions

clang.mk file | annotate | diff | comparison | revisions
libidav/davqlparser.c file | annotate | diff | comparison | revisions
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/clang.mk	Sat May 02 18:44:25 2015 +0200
@@ -0,0 +1,47 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright 2015 Olaf Wintermann. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+#   1. Redistributions of source code must retain the above copyright
+#      notice, this list of conditions and the following disclaimer.
+#
+#   2. Redistributions in binary form must reproduce the above copyright
+#      notice, this list of conditions and the following disclaimer in the
+#      documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+
+CC = clang
+LD = clang
+AR = ar
+RM = rm
+
+CFLAGS  = -g -c
+COFLAGS = -o
+LDFLAGS = 
+LOFLAGS = -o
+ARFLAGS = -r
+RMFLAGS = -f
+
+OBJ_EXT = .o
+LIB_EXT = .a
+APP_EXT =
+
+DAV_CFLAGS = `curl-config --cflags` `pkg-config --cflags openssl libxml-2.0`
+DAV_LDFLAGS = `curl-config --libs` `pkg-config --libs openssl libxml-2.0`
+
--- a/libidav/davqlparser.c	Sat May 02 18:32:50 2015 +0200
+++ b/libidav/davqlparser.c	Sat May 02 18:44:25 2015 +0200
@@ -704,6 +704,10 @@
                 "FROM", sfmtarg(tokendata)).ptr;
             return 0;
         }
+    default:
+        stmt->errorcode = DAVQL_ERROR_INVALID;
+        stmt->errormessage = strdup(_parser_state);
+        return 0;
     }
 }
 
@@ -761,18 +765,17 @@
         if (!sstrcasecmp(tokendata, S("depth"))) {
             state->key = 1;
             state->step = 1;
+            if (state->keymask & state->key) {
+                stmt->errorcode = DAVQL_ERROR_DUPLICATED_ATTRIBUTE;
+                stmt->errormessage = ucx_sprintf(_duplicated_attribute,
+                    sfmtarg(tokendata)).ptr;
+            } else {
+                state->keymask |= state->key;
+            }
         } else {
             stmt->errorcode = DAVQL_ERROR_UNKNOWN_ATTRIBUTE;
             stmt->errormessage = ucx_sprintf(_unknown_attribute,
                 sfmtarg(tokendata)).ptr;
-            break;
-        }
-        if (state->keymask & state->key) {
-            stmt->errorcode = DAVQL_ERROR_DUPLICATED_ATTRIBUTE;
-            stmt->errormessage = ucx_sprintf(_duplicated_attribute,
-                sfmtarg(tokendata)).ptr;
-        } else {
-            state->keymask |= state->key;
         }
         return _step_WITH_; // continue parsing WITH clause
     case 1:

mercurial