diff options
author | nanahi <130121847+na-na-hi@users.noreply.github.com> | 2024-02-19 03:41:45 -0500 |
---|---|---|
committer | sfan5 <sfan5@live.de> | 2024-02-23 21:35:57 +0100 |
commit | 84015959cc5d36d8973b2f07ece066902bbbdbe7 (patch) | |
tree | fca1aec3c77de0218a4f5c3b7d89713c36f68482 /osdep | |
parent | c36e051470dceb24c75d36316490e063a77dacba (diff) | |
download | mpv-84015959cc5d36d8973b2f07ece066902bbbdbe7.tar.bz2 mpv-84015959cc5d36d8973b2f07ece066902bbbdbe7.tar.xz |
osdep/io: move I/O utility functions to misc/io_utils
The purpose of osdep/io is to provide a wrapper for POSIX I/O functions
on Windows. The last 2 functions are utility functions which don't serve
this purpose.
Move them to a separate file.
Diffstat (limited to 'osdep')
-rw-r--r-- | osdep/io.c | 55 | ||||
-rw-r--r-- | osdep/io.h | 3 |
2 files changed, 0 insertions, 58 deletions
diff --git a/osdep/io.c b/osdep/io.c index bfcd44f096..18c2a83f94 100644 --- a/osdep/io.c +++ b/osdep/io.c @@ -891,58 +891,3 @@ void freelocale(locale_t locobj) } #endif // __MINGW32__ - -int mp_mkostemps(char *template, int suffixlen, int flags) -{ - size_t len = strlen(template); - char *t = len >= 6 + suffixlen ? &template[len - (6 + suffixlen)] : NULL; - if (!t || strncmp(t, "XXXXXX", 6) != 0) { - errno = EINVAL; - return -1; - } - - for (size_t fuckshit = 0; fuckshit < UINT32_MAX; fuckshit++) { - // Using a random value may make it require fewer iterations (even if - // not truly random; just a counter would be sufficient). - size_t fuckmess = mp_rand_next(); - char crap[7] = ""; - snprintf(crap, sizeof(crap), "%06zx", fuckmess); - memcpy(t, crap, 6); - - int res = open(template, O_RDWR | O_CREAT | O_EXCL | flags, 0600); - if (res >= 0 || errno != EEXIST) - return res; - } - - errno = EEXIST; - return -1; -} - -bool mp_save_to_file(const char *filepath, const void *data, size_t size) -{ - assert(filepath && data && size); - - bool result = false; - char *tmp = talloc_asprintf(NULL, "%sXXXXXX", filepath); - int fd = mkstemp(tmp); - if (fd < 0) - goto done; - FILE *cache = fdopen(fd, "wb"); - if (!cache) { - close(fd); - unlink(tmp); - goto done; - } - size_t written = fwrite(data, size, 1, cache); - int ret = fclose(cache); - if (written > 0 && !ret) { - ret = rename(tmp, filepath); - result = !ret; - } else { - unlink(tmp); - } - -done: - talloc_free(tmp); - return result; -} diff --git a/osdep/io.h b/osdep/io.h index 31d17154ed..21555e8799 100644 --- a/osdep/io.h +++ b/osdep/io.h @@ -239,7 +239,4 @@ extern char **environ; #endif /* __MINGW32__ */ -int mp_mkostemps(char *template, int suffixlen, int flags); -bool mp_save_to_file(const char *filepath, const void *data, size_t size); - #endif |