
/* 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_;
