From e7ac36acfa7e224c8c20d642cad2a5ea0965a539 Mon Sep 17 00:00:00 2001 From: hugogogo Date: Sat, 4 Jan 2025 14:03:12 +0100 Subject: [PATCH] change FILE not as a variable --- C/3_Sully/Sully.c | 2 +- C/3_Sully/Sully_exploded.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/C/3_Sully/Sully.c b/C/3_Sully/Sully.c index bf721cf..582e693 100644 --- a/C/3_Sully/Sully.c +++ b/C/3_Sully/Sully.c @@ -4,7 +4,7 @@ #include #define str(s) #s #define xstr(s) str(s) -#define FT(s) int main() { char *before = "#define _GNU_SOURCE /* for asprintf */\n#include /* for free and system */\n#include /* for __FILE__ */\n#include \n#define str(s) #s\n#define xstr(s) str(s)\n#define FT(s) "; char *quine = s; char *after = "\nint i = %i;\nchar *file_name = %s;\nFT(xstr(FT(s)))\n"; if (i == 0) return 0; if ((strchr(file_name, '_')) != ((void*)0)) i--;char *kid_name; char *kid_name_c; char *after_expanded; char *cmd; asprintf(&kid_name, "Sully_%i", i); asprintf(&kid_name_c, "%s.c", kid_name); FILE *file = fopen(kid_name_c, "w"); asprintf(&after_expanded, after, i, "__FILE__"); fprintf(file, "%s%s%s", before, quine, after_expanded); fclose(file); asprintf(&cmd, "clang %1$s -o %2$s ; ./%2$s", kid_name_c, kid_name); system(cmd); free(cmd); free(kid_name_c); free(kid_name); free(after_expanded); return 0; } +#define FT(s) int main() { char *before = "#define _GNU_SOURCE /* for asprintf */\n#include /* for free and system */\n#include /* for __FILE__ */\n#include \n#define str(s) #s\n#define xstr(s) str(s)\n#define FT(s) "; char *quine = s; char *after = "\nint i = %i;\nchar *file_name = __FILE__;\nFT(xstr(FT(s)))\n"; if (i == 0) return 0; if ((strchr(file_name, '_')) != ((void*)0)) i--;char *kid_name; char *kid_name_c; char *after_expanded; char *cmd; asprintf(&kid_name, "Sully_%i", i); asprintf(&kid_name_c, "%s.c", kid_name); FILE *file = fopen(kid_name_c, "w"); asprintf(&after_expanded, after, i); fprintf(file, "%s%s%s", before, quine, after_expanded); fclose(file); asprintf(&cmd, "clang %1$s -o %2$s ; ./%2$s", kid_name_c, kid_name); system(cmd); free(cmd); free(kid_name_c); free(kid_name); free(after_expanded); return 0; } int i = 5; char *file_name = __FILE__; FT(xstr(FT(s))) diff --git a/C/3_Sully/Sully_exploded.c b/C/3_Sully/Sully_exploded.c index 452dcad..16ea6e7 100644 --- a/C/3_Sully/Sully_exploded.c +++ b/C/3_Sully/Sully_exploded.c @@ -20,7 +20,7 @@ int main() \ char *after = "\ \n\ int i = %i;\n\ - char *file_name = %s;\n\ + char *file_name = __FILE__;\n\ FT(xstr(FT(s)))\n"; \ \ if (i == 0) \ @@ -37,7 +37,7 @@ int main() \ asprintf(&kid_name_c, "%s.c", kid_name); \ \ FILE *file = fopen(kid_name_c, "w"); \ - asprintf(&after_expanded, after, i, "__FILE__"); \ + asprintf(&after_expanded, after, i); \ fprintf(file, "%s%s%s", before, quine, after_expanded); \ fclose(file); \ \