catalog: open up catalog internals

In order to write tests for the catalog functions, they
are made non-static and start taking a 'database' parameter,
which is the name of a file with the preprocessed catalog
entries.

This makes it possible to make test-catalog part of the
normal test suite, since it now only operates on files
in /tmp.

Some more tests are added.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2013-03-28 23:45:59 -04:00
parent 18cd5fe99f
commit 844ec79b3c
11 changed files with 251 additions and 122 deletions
+1 -1
View File
@@ -134,7 +134,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const
return 0;
}
int conf_files_list_strv(char ***strv, const char *suffix, const char *root, const char **dirs) {
int conf_files_list_strv(char ***strv, const char *suffix, const char *root, const char* const* dirs) {
_cleanup_strv_free_ char **copy = NULL;
assert(strv);
+1 -1
View File
@@ -26,7 +26,7 @@
#include "macro.h"
int conf_files_list(char ***strv, const char *suffix, const char *root, const char *dir, ...);
int conf_files_list_strv(char ***strv, const char *suffix, const char *root, const char **dirs);
int conf_files_list_strv(char ***strv, const char *suffix, const char *root, const char* const* dirs);
int conf_files_list_nulstr(char ***strv, const char *suffix, const char *root, const char *dirs);
#endif
+19
View File
@@ -59,6 +59,7 @@
#include <limits.h>
#include <langinfo.h>
#include <locale.h>
#include <libgen.h>
#include "macro.h"
#include "util.h"
@@ -2356,6 +2357,24 @@ int dir_is_empty(const char *path) {
}
}
char* dirname_malloc(const char *path) {
char *d, *dir, *dir2;
d = strdup(path);
if (!d)
return NULL;
dir = dirname(d);
assert(dir);
if (dir != d) {
dir2 = strdup(dir);
free(d);
return dir2;
}
return dir;
}
unsigned long long random_ull(void) {
_cleanup_close_ int fd;
uint64_t ull;
+1
View File
@@ -329,6 +329,7 @@ ssize_t loop_write(int fd, const void *buf, size_t nbytes, bool do_poll);
bool is_device_path(const char *path);
int dir_is_empty(const char *path);
char* dirname_malloc(const char *path);
void rename_process(const char name[8]);