static int open_output(Writer *w, const char* host) { _cleanup_free_ char *_output = NULL; const char *output; int r; switch (arg_split_mode) { case JOURNAL_WRITE_SPLIT_NONE: output = arg_output ?: REMOTE_JOURNAL_PATH "/remote.journal"; break; case JOURNAL_WRITE_SPLIT_HOST: { _cleanup_free_ char *name; assert(host); name = filename_escape(host); if (!name) return log_oom(); r = asprintf(&_output, "%s/remote-%s.journal", arg_output ?: REMOTE_JOURNAL_PATH, name); if (r < 0) return log_oom(); output = _output; break; } default: assert_not_reached("what?"); } r = journal_file_open_reliably(output, O_RDWR|O_CREAT, 0640, arg_compress, arg_seal, &w->metrics, w->mmap, NULL, &w->journal); if (r < 0) log_error_errno(r, "Failed to open output journal %s: %m", output); else log_info("Opened output file %s", w->journal->path); return r; }
static int open_output(RemoteServer *s, Writer *w, const char* host) { _cleanup_free_ char *_filename = NULL; const char *filename; int r; switch (s->split_mode) { case JOURNAL_WRITE_SPLIT_NONE: filename = s->output; break; case JOURNAL_WRITE_SPLIT_HOST: { _cleanup_free_ char *name; assert(host); name = filename_escape(host); if (!name) return log_oom(); r = asprintf(&_filename, "%s/remote-%s.journal", s->output, name); if (r < 0) return log_oom(); filename = _filename; break; } default: assert_not_reached("what?"); } r = journal_file_open_reliably(filename, O_RDWR|O_CREAT, 0640, s->compress, (uint64_t) -1, s->seal, &w->metrics, w->mmap, NULL, NULL, &w->journal); if (r < 0) return log_error_errno(r, "Failed to open output journal %s: %m", filename); log_debug("Opened output file %s", w->journal->path); return 0; }