From 9078f0ff5d7562d66e92ab336c6dbf95c1b7ff9a Mon Sep 17 00:00:00 2001 From: lohhiiccc Date: Wed, 27 May 2026 15:37:39 +0200 Subject: [PATCH] fix: Grace.c buff --- Grace_Kid.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/Grace.c | 4 ++-- 2 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 Grace_Kid.c diff --git a/Grace_Kid.c b/Grace_Kid.c new file mode 100644 index 0000000..f3fd9ea --- /dev/null +++ b/Grace_Kid.c @@ -0,0 +1,53 @@ +#include +#include +#include +#include +#include + +#define SRC "#include \n#include \n#include \n#include \n#include \n\n#define SRC \"$\"\n#define KID \"Grace_Kid.c\"\n#define MAIN \\\nstatic inline void cleanup_fd(int *fd) { \\\n if (*fd >= 0) close(*fd); \\\n} \\\nint \\\nmain(void) \\\n{ \\\n\tchar\t*src = SRC; \\\n\tint\t\tfd __attribute__ ((__cleanup__(cleanup_fd))) = open(KID, O_CREAT | O_RDWR | O_TRUNC, 0664); \\\n\tint\t\tsaved_errno = errno; \\\n\tchar\tbuff[1024] = {0}; \\\n\tsize_t\tlen = 0; \\\n\tsize_t\tbuff_max = sizeof(buff) - 1; \\\n\tif (0 != saved_errno) \\\n\t\treturn 1; \\\n\tfor (size_t i = 0; src[i]; ++i) \\\n\t{ \\\n\t\tif (36 == src[i]) \\\n\t\t{ \\\n\t\t\tfor (size_t j = 0; src[j]; ++j) \\\n\t\t\t{ \\\n\t\t\t\tif (len + 2 > buff_max) { write(fd, buff, len); len = 0; } \\\n\t\t\t\tswitch (src[j]) \\\n\t\t\t\t{ \\\n\t\t\t\t\tcase 10:\tmemcpy(buff + len, \"\\\\n\", 2); len += 2; break; \\\n\t\t\t\t\tcase 9:\t\tmemcpy(buff + len, \"\\\\t\", 2); len += 2; break; \\\n\t\t\t\t\tcase '\\\\':\tmemcpy(buff + len, \"\\\\\\\\\", 2); len += 2; break; \\\n\t\t\t\t\tcase '\"':\tmemcpy(buff + len, \"\\\\\\\"\", 2); len += 2; break; \\\n\t\t\t\t\tdefault:\tbuff[len++] = src[j]; break; \\\n\t\t\t\t} \\\n\t\t\t} \\\n\t\t} \\\n\t\telse \\\n\t\t{ \\\n\t\t\tif (len + 1 > buff_max) { write(fd, buff, len); len = 0; } \\\n\t\t\tbuff[len++] = src[i]; \\\n\t\t} \\\n\t} \\\n\tif (len > 0) write(fd, buff, len); \\\n\treturn 0; \\\n}\n\n// One comments must be present\n\nMAIN\n" +#define KID "Grace_Kid.c" +#define MAIN \ +static inline void cleanup_fd(int *fd) { \ + if (*fd >= 0) close(*fd); \ +} \ +int \ +main(void) \ +{ \ + char *src = SRC; \ + int fd __attribute__ ((__cleanup__(cleanup_fd))) = open(KID, O_CREAT | O_RDWR | O_TRUNC, 0664); \ + int saved_errno = errno; \ + char buff[1024] = {0}; \ + size_t len = 0; \ + size_t buff_max = sizeof(buff) - 1; \ + if (0 != saved_errno) \ + return 1; \ + for (size_t i = 0; src[i]; ++i) \ + { \ + if (36 == src[i]) \ + { \ + for (size_t j = 0; src[j]; ++j) \ + { \ + if (len + 2 > buff_max) { write(fd, buff, len); len = 0; } \ + switch (src[j]) \ + { \ + case 10: memcpy(buff + len, "\\n", 2); len += 2; break; \ + case 9: memcpy(buff + len, "\\t", 2); len += 2; break; \ + case '\\': memcpy(buff + len, "\\\\", 2); len += 2; break; \ + case '"': memcpy(buff + len, "\\\"", 2); len += 2; break; \ + default: buff[len++] = src[j]; break; \ + } \ + } \ + } \ + else \ + { \ + if (len + 1 > buff_max) { write(fd, buff, len); len = 0; } \ + buff[len++] = src[i]; \ + } \ + } \ + if (len > 0) write(fd, buff, len); \ + return 0; \ +} + +// One comments must be present + +MAIN diff --git a/src/Grace.c b/src/Grace.c index 5dae9fe..f3fd9ea 100644 --- a/src/Grace.c +++ b/src/Grace.c @@ -4,7 +4,7 @@ #include #include -#define SRC "#include \n#include \n#include \n#include \n#include \n\n#define SRC \"$\"\n#define KID \"Grace_Kid.c\"\n#define MAIN \\\nstatic inline void cleanup_fd(int *fd) { \\\n if (*fd >= 0) close(*fd); \\\n} \\\nint \\\nmain(void) \\\n{ \\\n\tchar\t*src = SRC; \\\n\tint\t\tfd __attribute__ ((__cleanup__(cleanup_fd))) = open(KID, O_CREAT | O_RDWR, 0664); \\\n\tint\t\tsaved_errno = errno; \\\n\tchar\tbuff[1024] = {0}; \\\n\tsize_t\tlen = 0; \\\n\tsize_t\tbuff_max = sizeof(buff) - 1; \\\n\tif (0 != saved_errno) \\\n\t\treturn 1; \\\n\tfor (size_t i = 0; src[i]; ++i) \\\n\t{ \\\n\t\tif (36 == src[i]) \\\n\t\t{ \\\n\t\t\tfor (size_t j = 0; src[j]; ++j) \\\n\t\t\t{ \\\n\t\t\t\tif (len + 2 > buff_max) { write(fd, buff, len); len = 0; } \\\n\t\t\t\tswitch (src[j]) \\\n\t\t\t\t{ \\\n\t\t\t\t\tcase 10:\tmemcpy(buff + len, \"\\\\n\", 2); len += 2; break; \\\n\t\t\t\t\tcase 9:\t\tmemcpy(buff + len, \"\\\\t\", 2); len += 2; break; \\\n\t\t\t\t\tcase '\\\\':\tmemcpy(buff + len, \"\\\\\\\\\", 2); len += 2; break; \\\n\t\t\t\t\tcase '\"':\tmemcpy(buff + len, \"\\\\\\\"\", 2); len += 2; break; \\\n\t\t\t\t\tdefault:\tbuff[len++] = src[j]; break; \\\n\t\t\t\t} \\\n\t\t\t} \\\n\t\t} \\\n\t\telse \\\n\t\t{ \\\n\t\t\tif (len + 1 > buff_max) { write(fd, buff, len); len = 0; } \\\n\t\t\tbuff[len++] = src[i]; \\\n\t\t} \\\n\t} \\\n\tif (len > 0) write(fd, buff, len); \\\n\treturn 0; \\\n}\n\n// One comments must be present\n\nMAIN\n" +#define SRC "#include \n#include \n#include \n#include \n#include \n\n#define SRC \"$\"\n#define KID \"Grace_Kid.c\"\n#define MAIN \\\nstatic inline void cleanup_fd(int *fd) { \\\n if (*fd >= 0) close(*fd); \\\n} \\\nint \\\nmain(void) \\\n{ \\\n\tchar\t*src = SRC; \\\n\tint\t\tfd __attribute__ ((__cleanup__(cleanup_fd))) = open(KID, O_CREAT | O_RDWR | O_TRUNC, 0664); \\\n\tint\t\tsaved_errno = errno; \\\n\tchar\tbuff[1024] = {0}; \\\n\tsize_t\tlen = 0; \\\n\tsize_t\tbuff_max = sizeof(buff) - 1; \\\n\tif (0 != saved_errno) \\\n\t\treturn 1; \\\n\tfor (size_t i = 0; src[i]; ++i) \\\n\t{ \\\n\t\tif (36 == src[i]) \\\n\t\t{ \\\n\t\t\tfor (size_t j = 0; src[j]; ++j) \\\n\t\t\t{ \\\n\t\t\t\tif (len + 2 > buff_max) { write(fd, buff, len); len = 0; } \\\n\t\t\t\tswitch (src[j]) \\\n\t\t\t\t{ \\\n\t\t\t\t\tcase 10:\tmemcpy(buff + len, \"\\\\n\", 2); len += 2; break; \\\n\t\t\t\t\tcase 9:\t\tmemcpy(buff + len, \"\\\\t\", 2); len += 2; break; \\\n\t\t\t\t\tcase '\\\\':\tmemcpy(buff + len, \"\\\\\\\\\", 2); len += 2; break; \\\n\t\t\t\t\tcase '\"':\tmemcpy(buff + len, \"\\\\\\\"\", 2); len += 2; break; \\\n\t\t\t\t\tdefault:\tbuff[len++] = src[j]; break; \\\n\t\t\t\t} \\\n\t\t\t} \\\n\t\t} \\\n\t\telse \\\n\t\t{ \\\n\t\t\tif (len + 1 > buff_max) { write(fd, buff, len); len = 0; } \\\n\t\t\tbuff[len++] = src[i]; \\\n\t\t} \\\n\t} \\\n\tif (len > 0) write(fd, buff, len); \\\n\treturn 0; \\\n}\n\n// One comments must be present\n\nMAIN\n" #define KID "Grace_Kid.c" #define MAIN \ static inline void cleanup_fd(int *fd) { \ @@ -14,7 +14,7 @@ int \ main(void) \ { \ char *src = SRC; \ - int fd __attribute__ ((__cleanup__(cleanup_fd))) = open(KID, O_CREAT | O_RDWR, 0664); \ + int fd __attribute__ ((__cleanup__(cleanup_fd))) = open(KID, O_CREAT | O_RDWR | O_TRUNC, 0664); \ int saved_errno = errno; \ char buff[1024] = {0}; \ size_t len = 0; \