static int make_filename(const char *info[_INFO_LEN], char **ret) { _cleanup_free_ char *c = NULL, *u = NULL, *p = NULL, *t = NULL; sd_id128_t boot = {}; int r; assert(info); c = filename_escape(info[INFO_COMM]); if (!c) return -ENOMEM; u = filename_escape(info[INFO_UID]); if (!u) return -ENOMEM; r = sd_id128_get_boot(&boot); if (r < 0) return r; p = filename_escape(info[INFO_PID]); if (!p) return -ENOMEM; t = filename_escape(info[INFO_TIMESTAMP]); if (!t) return -ENOMEM; if (asprintf(ret, "/var/lib/systemd/coredump/core.%s.%s." SD_ID128_FORMAT_STR ".%s.%s000000", c, u, SD_ID128_FORMAT_VAL(boot), p, t) < 0) return -ENOMEM; return 0; }
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; }