fix execution of sully only if i superior to 0

This commit is contained in:
hugogogo
2025-01-04 14:57:15 +01:00
parent e7ac36acfa
commit d9dcac5df1
2 changed files with 14 additions and 16 deletions

View File

@@ -4,7 +4,7 @@
#include <stdio.h>
#define str(s) #s
#define xstr(s) str(s)
#define FT(s) int main() { char *before = "#define _GNU_SOURCE /* for asprintf */\n#include <stdlib.h> /* for free and system */\n#include <string.h> /* for __FILE__ */\n#include <stdio.h>\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; }
#define FT(s) int main() { char *before = "#define _GNU_SOURCE /* for asprintf */\n#include <stdlib.h> /* for free and system */\n#include <string.h> /* for __FILE__ */\n#include <stdio.h>\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 ((strchr(file_name, '_')) != ((void*)0)) i--;char kid_name_c[42]; char after_expanded[42]; char cmd[42]; sprintf(kid_name_c, "Sully_%i.c", i); FILE *file = fopen(kid_name_c, "w"); sprintf(after_expanded, after, i); fprintf(file, "%s%s%s", before, quine, after_expanded); fclose(file); sprintf(cmd, "clang Sully_%1$i.c -o Sully_%1$i", i); system(cmd); if (i > 0) { sprintf(cmd, "./Sully_%i", i); system(cmd); } return 0; }
int i = 5;
char *file_name = __FILE__;
FT(xstr(FT(s)))

View File

@@ -23,31 +23,29 @@ int main() \
char *file_name = __FILE__;\n\
FT(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); \
char kid_name_c[42]; \
char after_expanded[42]; \
char cmd[42]; \
\
sprintf(kid_name_c, "Sully_%i.c", i); \
FILE *file = fopen(kid_name_c, "w"); \
asprintf(&after_expanded, after, i); \
\
sprintf(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); \
sprintf(cmd, "clang Sully_%1$i.c -o Sully_%1$i", i); \
system(cmd); \
\
free(cmd); \
free(kid_name_c); \
free(kid_name); \
free(after_expanded); \
if (i > 0) \
{ \
sprintf(cmd, "./Sully_%i", i); \
system(cmd); \
} \
\
return 0; \
}
int i = 5;