File 0001-vcc.y-factor-out-hexdigit-conversion.patch of Package libical

From 6c167138a204cd2e0580036bad32a51dae05c80b Mon Sep 17 00:00:00 2001
From: Jan Engelhardt <jengelh@inai.de>
Date: Mon, 17 Sep 2018 16:47:16 +0200
Subject: [PATCH 1/5] vcc.y - factor out hexdigit conversion
References: https://github.com/libical/libical/pull/354

---
 src/libicalvcal/vcc.c | 17 +++++++++++------
 src/libicalvcal/vcc.y | 17 +++++++++++------
 2 files changed, 22 insertions(+), 12 deletions(-)

Index: libical-3.0.17/src/libicalvcal/vcc.c
===================================================================
--- libical-3.0.17.orig/src/libicalvcal/vcc.c
+++ libical-3.0.17/src/libicalvcal/vcc.c
@@ -985,6 +985,15 @@ static int match_begin_end_name(int end)
     return 0;
     }
 
+static int hexdigit_decode(char c)
+{
+       if (c >= '0' && c <= '9')
+               return c - '0';
+       if (c >= 'A' && c <= 'F')
+               return c - 'A' + 10;
+       return -1;
+}
+
 static char* lexGetQuotedPrintable(void)
     {
     char cur;
@@ -998,12 +1007,8 @@ static char* lexGetQuotedPrintable(void)
                 int next[2];
                 int i;
                 for (i = 0; i < 2; i++) {
-                    next[i] = lexGetc();
-                    if (next[i] >= '0' && next[i] <= '9')
-                        c = c * 16 + next[i] - '0';
-                    else if (next[i] >= 'A' && next[i] <= 'F')
-                        c = c * 16 + next[i] - 'A' + 10;
-                    else
+                    next[i] = hexdigit_decode(lexGetc());
+                    if (next[i] < 0)
                         break;
                     }
                 if (i == 0) {
Index: libical-3.0.17/src/libicalvcal/vcc.y
===================================================================
--- libical-3.0.17.orig/src/libicalvcal/vcc.y
+++ libical-3.0.17/src/libicalvcal/vcc.y
@@ -949,6 +949,15 @@ static int match_begin_end_name(int end)
     return 0;
     }
 
+static int hexdigit_decode(char c)
+{
+	if (c >= '0' && c <= '9')
+		return c - '0';
+	if (c >= 'A' && c <= 'F')
+		return c - 'A' + 10;
+	return -1;
+}
+
 static char* lexGetQuotedPrintable()
     {
     char cur;
@@ -962,12 +971,8 @@ static char* lexGetQuotedPrintable()
                 int next[2];
                 int i;
                 for (i = 0; i < 2; i++) {
-                    next[i] = lexGetc();
-                    if (next[i] >= '0' && next[i] <= '9')
-                        c = c * 16 + next[i] - '0';
-                    else if (next[i] >= 'A' && next[i] <= 'F')
-                        c = c * 16 + next[i] - 'A' + 10;
-                    else
+                    next[i] = hexdigit_decode(lexGetc());
+                    if (next[i] < 0)
                         break;
                     }
                 if (i == 0) {
openSUSE Build Service is sponsored by