[PATCH vkd3d 2/5] vkd3d-shader: Implement __FILE__.
Zebediah Figura
zfigura at codeweavers.com
Thu Jan 14 14:47:48 CST 2021
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
libs/vkd3d-shader/preproc.l | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/libs/vkd3d-shader/preproc.l b/libs/vkd3d-shader/preproc.l
index c5c49251..80ac7d03 100644
--- a/libs/vkd3d-shader/preproc.l
+++ b/libs/vkd3d-shader/preproc.l
@@ -472,6 +472,29 @@ int yylex(YYSTYPE *lval, YYLTYPE *lloc, yyscan_t scanner)
continue;
}
+ if (!strcmp(text, "__FILE__"))
+ {
+ const struct preproc_file *file = preproc_get_top_file(ctx);
+
+ /* Not the current file name, but rather the file name
+ * before invoking any macros. */
+
+ if (ctx->current_directive)
+ {
+ char *string;
+
+ if (!(string = vkd3d_malloc(strlen(file->filename) + 3)))
+ return 0;
+ sprintf(string, "\"%s\"", file->filename);
+ lval->string = string;
+ return T_STRING;
+ }
+
+ if (preproc_is_writing(ctx))
+ vkd3d_string_buffer_printf(&ctx->buffer, "\"%s\" ", file->filename);
+ continue;
+ }
+
if (!strcmp(text, "__LINE__"))
{
const struct preproc_file *file = preproc_get_top_file(ctx);
--
2.30.0
More information about the wine-devel
mailing list