// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2017-2024 Cyril Hrubis <chrubis@suse.cz>
 * Copyright (c) 2020 Martin Doucha <mdoucha@suse.cz>
 */

#ifndef TST_TMPDIR_H__
#define TST_TMPDIR_H__

/**
 * tst_purge_dir - Wipe the content of given directory.
 *
 * Wipe the content of given directory but keep the directory itself.
 *
 * @path: Path of the directory to be wiped.
 */
void tst_purge_dir(const char *path);

/**
 * tst_tmpdir_path - Returns a pointer to a tmpdir path.
 *
 * The returned path is allocated and initialized the first time this function is
 * called, each subsequent call will return the same pointer.
 *
 * return: A newly allocated path. The memory is freed automatically at the end
 * of the test. If allocation fails the function calls tst_brk() and
 * exits the test.
 */
char *tst_tmpdir_path(void);

/**
 * tst_tmpdir_genpath - Construct an absolute path pointing to a file inside tmpdir.
 *
 * Constructs a path inside tmpdir i.e. adds a prefix pointing to the current
 * test tmpdir to the string build by the printf-like format.
 *
 * @fmt: A printf-like format string.
 * @...: A printf-like parameter list.
 *
 * return: A newly allocated path. The memory is freed automatically at the end
 * of the test. If allocation fails the function calls tst_brk() and exits the
 * test.
 */
char *tst_tmpdir_genpath(const char *fmt, ...)
	__attribute__((format(printf, 1, 2)));

/*
 * Make sure nobody uses old API functions in new code.
 */
#ifndef LTPLIB
# define tst_get_tmpdir #error Use tst_tmpdir_path()!
#endif

#endif /* TST_TMPDIR_H__ */