summaryrefslogtreecommitdiff
path: root/library/backend/vcc.y
Unidiff
Diffstat (limited to 'library/backend/vcc.y') (more/less context) (ignore whitespace changes)
-rw-r--r--library/backend/vcc.y29
1 files changed, 14 insertions, 15 deletions
diff --git a/library/backend/vcc.y b/library/backend/vcc.y
index 4c79368..bec2955 100644
--- a/library/backend/vcc.y
+++ b/library/backend/vcc.y
@@ -442,5 +442,5 @@ static void enterProps(const char *s)
442static void enterAttr(const char *s1, const char *s2) 442static void enterAttr(const char *s1, const char *s2)
443 { 443 {
444 const char *p1, *p2; 444 const char *p1, *p2=0;
445 p1 = lookupProp_(s1); 445 p1 = lookupProp_(s1);
446 if (s2) { 446 if (s2) {
@@ -814,5 +814,5 @@ static void finiLex() {
814 * a decoded buffer (allocated with new). See RFC 1521. 814 * a decoded buffer (allocated with new). See RFC 1521.
815 */ 815 */
816static char * lexGetDataFromBase64() 816static int lexGetDataFromBase64()
817 { 817 {
818 unsigned long bytesLen = 0, bytesMax = 0; 818 unsigned long bytesLen = 0, bytesMax = 0;
@@ -827,4 +827,5 @@ static char * lexGetDataFromBase64()
827 while (1) { 827 while (1) {
828 c = lexGetc(); 828 c = lexGetc();
829 lexSkipWhite();
829 if (c == '\n') { 830 if (c == '\n') {
830 ++mime_lineNum; 831 ++mime_lineNum;
@@ -849,6 +850,4 @@ static char * lexGetDataFromBase64()
849 b = 0; 850 b = 0;
850 pad++; 851 pad++;
851 } else if ((c == ' ') || (c == '\t')) {
852 continue;
853 } else { /* error condition */ 852 } else { /* error condition */
854 if (bytes) free(bytes); 853 if (bytes) free(bytes);
@@ -859,12 +858,15 @@ static char * lexGetDataFromBase64()
859 c = lexGetc(); 858 c = lexGetc();
860 while (c != EOF) { 859 while (c != EOF) {
861 if (c == '\n' && lexLookahead() == '\n') { 860 if (c == '\n') {
862 ++mime_lineNum; 861 lexSkipWhite();
863 break; 862 if(lexLookahead() == '\n') {
863 ++mime_lineNum;
864 break;
865 }
864 } 866 }
865 c = lexGetc(); 867 c = lexGetc();
866 } 868 }
867 } 869 }
868 return NULL; 870 return c != EOF;
869 } 871 }
870 trip = (trip << 6) | b; 872 trip = (trip << 6) | b;
@@ -912,5 +914,5 @@ static char * lexGetDataFromBase64()
912 free(oldBytes); 914 free(oldBytes);
913 } 915 }
914 return 0; 916 return bytesLen;
915 } 917 }
916 918
@@ -943,5 +945,5 @@ static char* lexGetQuotedPrintable()
943 lexClearToken(); 945 lexClearToken();
944 946
945 while (c != EOF && c != ';') { 947 while (c != EOF && (c != ';' || !fieldedProp)) {
946 if (c == '\n') { 948 if (c == '\n') {
947 // break, leave '\n' on remaining chars. 949 // break, leave '\n' on remaining chars.
@@ -1033,9 +1035,6 @@ static int yylex() {
1033 if (lexWithinMode(L_BASE64)) { 1035 if (lexWithinMode(L_BASE64)) {
1034 /* get each char and convert to bin on the fly... */ 1036 /* get each char and convert to bin on the fly... */
1035 p = lexGetDataFromBase64(); 1037 yylval.str = NULL;
1036 #if 0 1038 return lexGetDataFromBase64() ? STRING : 0;
1037 yylval.str = p;
1038 return STRING;
1039 #endif
1040 } 1039 }
1041 else if (lexWithinMode(L_QUOTED_PRINTABLE)) { 1040 else if (lexWithinMode(L_QUOTED_PRINTABLE)) {