int write_string_file_atomic(const char *fn, const char *line) { _cleanup_fclose_ FILE *f = NULL; _cleanup_free_ char *p = NULL; int r; assert(fn); assert(line); r = fopen_temporary(fn, &f, &p); if (r < 0) return r; fchmod_umask(fileno(f), 0644); errno = 0; fputs(line, f); if (!endswith(line, "\n")) fputc('\n', f); fflush(f); if (ferror(f)) r = errno ? -errno : -EIO; else { if (rename(p, fn) < 0) r = -errno; else r = 0; } if (r < 0) unlink(p); return r; }
int write_env_file(const char *fname, char **l) { char **i; _cleanup_free_ char *p = NULL; _cleanup_fclose_ FILE *f = NULL; int r; r = fopen_temporary(fname, &f, &p); if (r < 0) return r; fchmod_umask(fileno(f), 0644); errno = 0; STRV_FOREACH(i, l) write_env_var(f, *i); fflush(f); if (ferror(f)) r = errno ? -errno : -EIO; else { if (rename(p, fname) < 0) r = -errno; else r = 0; } if (r < 0) unlink(p); return r; }
int write_env_file(const char *fname, char **l) { _cleanup_fclose_ FILE *f = NULL; _cleanup_free_ char *p = NULL; char **i; int r; assert(fname); r = fopen_temporary(fname, &f, &p); if (r < 0) return r; fchmod_umask(fileno(f), 0644); STRV_FOREACH(i, l) write_env_var(f, *i); r = fflush_and_check(f); if (r >= 0) { if (rename(p, fname) >= 0) return 0; r = -errno; } unlink(p); return r; }
static int write_string_file_atomic(const char *fn, const char *line, bool enforce_newline) { _cleanup_fclose_ FILE *f = NULL; _cleanup_free_ char *p = NULL; int r; assert(fn); assert(line); r = fopen_temporary(fn, &f, &p); if (r < 0) return r; (void) fchmod_umask(fileno(f), 0644); r = write_string_stream(f, line, enforce_newline); if (r >= 0) { if (rename(p, fn) < 0) r = -errno; } if (r < 0) (void) unlink(p); return r; }
static int write_string_file_atomic( const char *fn, const char *line, WriteStringFileFlags flags, struct timespec *ts) { _cleanup_fclose_ FILE *f = NULL; _cleanup_free_ char *p = NULL; int r; assert(fn); assert(line); r = fopen_temporary(fn, &f, &p); if (r < 0) return r; (void) __fsetlocking(f, FSETLOCKING_BYCALLER); (void) fchmod_umask(fileno(f), 0644); r = write_string_stream_ts(f, line, flags, ts); if (r < 0) goto fail; if (rename(p, fn) < 0) { r = -errno; goto fail; } return 0; fail: (void) unlink(p); return r; }
int write_env_file(const char *fname, char **l) { char **i, *p; FILE *f; int r; r = fopen_temporary(fname, &f, &p); if (r < 0) return r; fchmod_umask(fileno(f), 0644); errno = 0; STRV_FOREACH(i, l) { fputs(*i, f); fputc('\n', f); }
int write_env_file(const char *fname, char **l) { char **i; char _cleanup_free_ *p = NULL; FILE _cleanup_fclose_ *f = NULL; int r; r = fopen_temporary(fname, &f, &p); if (r < 0) return r; fchmod_umask(fileno(f), 0644); errno = 0; STRV_FOREACH(i, l) { fputs(*i, f); fputc('\n', f); }