about summary refs log tree commit diff stats
path: root/wrapperhelper/src/lang.c
diff options
context:
space:
mode:
authorrajdakin <rajdakin@gmail.com>2024-09-07 15:20:17 +0200
committerGitHub <noreply@github.com>2024-09-07 15:20:17 +0200
commitf0d7582845e124ed61b86f43da30a7b3f3f0c3f5 (patch)
tree2ee0c53821805b33ca47e0919fea95ccb920cd52 /wrapperhelper/src/lang.c
parent75bdb328284b8e5b6827eeb7d5cedef26222e7db (diff)
downloadbox64-f0d7582845e124ed61b86f43da30a7b3f3f0c3f5.tar.gz
box64-f0d7582845e124ed61b86f43da30a7b3f3f0c3f5.zip
Upgraded the wrapper helper (#1803)
* [WRAPPERHELPER] Fixed unsigned comparison in macros, added macro expanding in include commands, added -I option

* [WRAPPERHELPER] Forgot the README
Diffstat (limited to 'wrapperhelper/src/lang.c')
-rw-r--r--wrapperhelper/src/lang.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/wrapperhelper/src/lang.c b/wrapperhelper/src/lang.c
index 9ca51b15..1c4cba6c 100644
--- a/wrapperhelper/src/lang.c
+++ b/wrapperhelper/src/lang.c
@@ -15,6 +15,41 @@
 #define DISP_ADDR_ARG(v) v,
 #endif
 
+preproc_token_t preproc_token_dup(preproc_token_t tok) {
+	preproc_token_t ret;
+	ret.tokt = tok.tokt;
+	switch (tok.tokt) {
+	case PPTOK_IDENT:
+	case PPTOK_IDENT_UNEXP:
+	case PPTOK_NUM:
+		ret.tokv.str = string_dup(tok.tokv.str);
+		if (!ret.tokv.str) {
+			ret.tokt = PPTOK_INVALID;
+			ret.tokv.c = '\0';
+		}
+		break;
+	case PPTOK_STRING:
+	case PPTOK_INCL:
+		ret.tokv.sisstr = tok.tokv.sisstr;
+		ret.tokv.sstr = string_dup(tok.tokv.sstr);
+		if (!ret.tokv.sstr) {
+			ret.tokt = PPTOK_INVALID;
+			ret.tokv.c = '\0';
+		}
+		string_del(tok.tokv.sstr);
+		break;
+	case PPTOK_INVALID:
+	case PPTOK_SYM:
+	case PPTOK_NEWLINE:
+	case PPTOK_BLANK:
+	case PPTOK_START_LINE_COMMENT:
+	case PPTOK_EOF:
+		ret.tokv.c = tok.tokv.c;
+		break;
+	}
+	return ret;
+}
+
 void preproc_token_del(preproc_token_t *tok) {
 	switch (tok->tokt) {
 	case PPTOK_IDENT: