]> mj.ucw.cz Git - umpf.git/blobdiff - cond.y
fix content length after filtering mail
[umpf.git] / cond.y
diff --git a/cond.y b/cond.y
index 38ec08c759112b110183dc1bebfbead8946fad5c..4c1d3d221d188a976ff7fd96d5b42e3e8c07a714 100644 (file)
--- a/cond.y
+++ b/cond.y
@@ -2,10 +2,12 @@
 
 #include <stdio.h>
 #include <string.h>
+#include <ctype.h>
 
 #include "umpf.h"
 
 static struct tree* tree_malloc(int type);
+static enum var_type get_var_type(char* var);
 
 %}
 %error-verbose
@@ -153,7 +155,7 @@ ass:
                                        $$->pt.ass.left = tree_malloc(ST_LEAF);
                                        $$->pt.ass.left->pt.leaf.type = L_VAR;
                                        $$->pt.ass.left->pt.leaf.value = $1;
-                                       $$->pt.ass.left->pt.leaf.n = find_var($1, var_hash);
+                                       $$->pt.ass.left->pt.leaf.n = find_var($1, get_var_type($1), var_hash);
                                        $$->pt.ass.right = $3;
                                }
 ;
@@ -162,7 +164,7 @@ leaves:             VAR     {
                                $$ = tree_malloc(ST_LEAF);
                                $$->pt.leaf.type = L_VAR;
                                $$->pt.leaf.value = $1;
-                               $$->pt.leaf.n = find_var($1, var_hash);
+                               $$->pt.leaf.n = find_var($1, get_var_type($1), var_hash);
                        }
                | CONST { 
                                $$ = tree_malloc(ST_LEAF);
@@ -246,6 +248,28 @@ tree_malloc(int type)
        return temp;
 }
 
+enum var_type
+get_var_type(char* var)
+{
+       int upper = 0;
+       int lower = 0;
+
+       if (islower(*var))
+               return VAR_USER;
+
+       while (*var) {
+               if (isupper(*var))      
+                       upper++;
+               if (islower(*var))
+                       lower++;
+               var++;
+       }
+       if (upper && lower)
+               return VAR_HEADER;
+
+       return VAR_INTERN;
+}
+
 void
 yyerror (char const *s)
 {