diff options
| author | Mosder <git@mosder.eu> | 2026-10-13 14:48:48 +0200 |
|---|---|---|
| committer | Mosder <git@mosder.eu> | 2026-10-13 14:48:48 +0200 |
| commit | 2b01cab2df7273dad7f95c4349929a28331338c2 (patch) | |
| tree | a3dd962dce355f5886644b16885cde59a260de40 /src | |
| parent | 634f254d282f119de7eeef22325045bffb5b1cf1 (diff) | |
refactor: removed the use of mkstemp and replaced it with tmpfile + fileno -> have tp handle that somehow, maybe freopen or something?
Diffstat (limited to 'src')
| -rw-r--r-- | src/safe.c | 10 | ||||
| -rw-r--r-- | src/tester.c | 32 |
2 files changed, 14 insertions, 28 deletions
@@ -1,5 +1,3 @@ -#include "compat.h" - #define MOS_FORCE_PREFIXES #include "moslib/safe.h" @@ -90,11 +88,3 @@ int mos_safe_pipe_fn(int fd[2], MosSafeErrInfo info) { ERR_MESS("failed to pipe"); exit(EXIT_FAILURE); } - -int mos_safe_mkstemp_fn(char *path, MosSafeErrInfo info) { - int fd = mos_mkstemp(path); - if (fd != -1) - return fd; - ERR_MESS("failed to make temporary file"); - exit(EXIT_FAILURE); -} diff --git a/src/tester.c b/src/tester.c index becc659..b6f6fa8 100644 --- a/src/tester.c +++ b/src/tester.c @@ -1,3 +1,5 @@ +#include "compat.h" + #define MOS_FORCE_PREFIXES #include "moslib/tester.h" @@ -21,7 +23,7 @@ #define RENDER_WIDTH 80 static int failed = 0; -static int dev_null = -1; +static FILE *dev_null = NULL; typedef struct { int *outs; @@ -152,20 +154,17 @@ void mos_test_assert_out_fn( size_t n = strlen(output); char *out = mos_safe_calloc(n + 2, 1); - char f[128]; - strcpy(f, ".tmpXXXXXX"); - int tmp = mos_safe_mkstemp(f); - unlink(f); + FILE *tmp = mos_safe_tmpfile(); int og = mos_safe_dup(fd); fflush(NULL); - mos_safe_dup2(tmp, fd); + mos_safe_dup2(fileno(tmp), fd); function(); fflush(NULL); lseek(fd, 0, SEEK_SET); read(fd, out, n + 1); - close(tmp); + fclose(tmp); mos_safe_dup2(og, fd); close(og); @@ -190,23 +189,20 @@ void mos_suppress_output_fn(int fd) { suppressed.outs[suppressed.n_outs] = fd; suppressed.ogs[suppressed.n_outs++] = mos_safe_dup(fd); - if (dev_null == -1) { - char f[128]; - strcpy(f, ".dev_nullXXXXXX"); - dev_null = mos_safe_mkstemp(f); - unlink(f); + if (dev_null == NULL) { + dev_null = mos_safe_tmpfile(); } fflush(NULL); - mos_safe_dup2(dev_null, fd); + mos_safe_dup2(fileno(dev_null), fd); } void mos_unsuppress_outputs(void) { if (!suppressed.outs || !suppressed.ogs) return; - if (dev_null != -1) - fflush(NULL); + if (dev_null != NULL) + fflush(dev_null); for (size_t i = suppressed.n_outs; i-- > 0;) { mos_safe_dup2(suppressed.ogs[i], suppressed.outs[i]); @@ -291,9 +287,9 @@ void mos_free_tester(MosTester *tester) { free(tester); } mos_unsuppress_outputs(); - if (dev_null != -1) { - close(dev_null); - dev_null = -1; + if (dev_null != NULL) { + fclose(dev_null); + dev_null = NULL; } if (suppressed.outs) { free(suppressed.outs); |
