From 64d1363234b8c55ad6ea563fdde87f9f8525e12b Mon Sep 17 00:00:00 2001
From: Michael Tuexen <tuexen@fh-muenster.de>
Date: Fri, 20 Apr 2018 12:59:26 +0200
Subject: [PATCH] Add support for #ifdef Apple.

---
 gtests/net/packetdrill/lexer.l | 39 +++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 19 deletions(-)

diff --git a/gtests/net/packetdrill/lexer.l b/gtests/net/packetdrill/lexer.l
index ea3c647d..cdb1cffd 100644
--- a/gtests/net/packetdrill/lexer.l
+++ b/gtests/net/packetdrill/lexer.l
@@ -104,7 +104,7 @@ static s64 hextol(const char *s)
 }
 
 enum ifdef_os {
-	Linux_IFDEF = 1, FreeBSD_IFDEF, NetBSD_IFDEF, OpenBSD_IFDEF, Omnet_IFDEF
+	Linux_IFDEF = 1, FreeBSD_IFDEF, NetBSD_IFDEF, OpenBSD_IFDEF, Omnet_IFDEF, Apple_IFDEF
 };
 
 #define MAX_IFDEF_DEPTH 1
@@ -123,34 +123,35 @@ static inline int get_os_name_length(enum ifdef_os os) {
 		return strlen("OpenBSD");
 	case Omnet_IFDEF:
 		return strlen("Omnet");
+	case Apple_IFDEF:
+		return strlen("Apple");
 	default:
 		return -1;
 	}
 }
 
 static inline bool ignore_ifdef(enum ifdef_os os) {
+	switch (os) {
 #ifdef linux
-	if (os == Linux_IFDEF) {
-		return false;
-	}
+	case Linux_IFDEF:
 #endif
 #ifdef __FreeBSD__
-	if (os == FreeBSD_IFDEF) {
-		return false;
-	}
+	case FreeBSD_IFDEF:
 #endif
 #ifdef __OpenBSD__
-	if (os == OpenBSD_IFDEF) {
-		return false;
-	}
+	case OpenBSD_IFDEF:
 #endif
 #ifdef __NetBSD__
-	if (os == NetBSD_IFDEF) {
-		return false;
-	}
+	case NetBSD_IFDEF:
+#endif
+#ifdef __APPLE__
+	case Apple_IFDEF:
 #endif
 	/* no need to handle Omnet here */
-	return true;
+		return false;
+	default:
+		return true;
+	}
 }
 
 static inline char* remove_ifdef_start_and_endtag(char *code, int os_name_length) {
@@ -187,11 +188,11 @@ static void handle_ifdef(enum ifdef_os os, const char *s) {
 	}
 
 	code = strdup(s);
-	
-        // keep track of the current value of yylineno, because we need to restore it later (see EOF-Condition),
-        // otherwise all ifdefs that were interpreted will count twice in yylineno,
-        // which will mess up the value in yylineno.
-        old_yylineno = yylineno;
+
+	// keep track of the current value of yylineno, because we need to restore it later (see EOF-Condition),
+	// otherwise all ifdefs that were interpreted will count twice in yylineno,
+	// which will mess up the value in yylineno.
+	old_yylineno = yylineno;
 
 	code_without_ifdef = remove_ifdef_start_and_endtag(code, os_name_length);
 	ifdef_stack[ifdef_stack_ptr++] = YY_CURRENT_BUFFER;
-- 
GitLab