Zebediah Figura : vkd3d-shader: Implement __FILE__.
Alexandre Julliard
julliard at winehq.org
Mon Jan 18 15:11:41 CST 2021
Module: vkd3d
Branch: master
Commit: 92877f7a430e678dec7c5c9c1c1fe81edd417568
URL: https://source.winehq.org/git/vkd3d.git/?a=commit;h=92877f7a430e678dec7c5c9c1c1fe81edd417568
Author: Zebediah Figura <zfigura at codeweavers.com>
Date: Thu Jan 14 14:47:48 2021 -0600
vkd3d-shader: Implement __FILE__.
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
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 c5c4925..80ac7d0 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);
More information about the wine-cvs
mailing list