/* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once #include "list.h" typedef enum OpenFileFlag { OPENFILE_READ_ONLY = 1 << 0, OPENFILE_APPEND = 1 << 1, OPENFILE_TRUNCATE = 1 << 2, OPENFILE_GRACEFUL = 1 << 3, _OPENFILE_MAX, _OPENFILE_INVALID = -EINVAL, _OPENFILE_MASK_PUBLIC = OPENFILE_READ_ONLY | OPENFILE_APPEND | OPENFILE_TRUNCATE | OPENFILE_GRACEFUL, } OpenFileFlag; typedef struct OpenFile { char *path; char *fdname; OpenFileFlag flags; LIST_FIELDS(struct OpenFile, open_files); } OpenFile; int open_file_parse(const char *v, OpenFile **ret); int open_file_validate(const OpenFile *of); int open_file_to_string(const OpenFile *of, char **ret); OpenFile *open_file_free(OpenFile *of); DEFINE_TRIVIAL_CLEANUP_FUNC(OpenFile*, open_file_free); void open_file_free_many(OpenFile **head); const char *open_file_flags_to_string(OpenFileFlag t) _const_; OpenFileFlag open_file_flags_from_string(const char *t) _pure_;