File: basedir-dump.c

package info (click to toggle)
libsfdo 0.1.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 736 kB
  • sloc: ansic: 6,491; python: 111; makefile: 4
file content (54 lines) | stat: -rw-r--r-- 1,526 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <sfdo-basedir.h>
#include <stdio.h>
#include <stdlib.h>

static void print_dir(const char *name, const char *dir, size_t dir_len) {
	printf("%s: ", name);
	if (dir != NULL) {
		printf("%s (%zu bytes)\n", dir, dir_len);
	} else {
		printf("<unset, empty, or invalid>\n");
	}
}

static void print_dir_list(const char *name, const struct sfdo_string *dirs, size_t n_dirs) {
	printf("%s: %zu dirs\n", name, n_dirs);
	for (size_t i = 0; i < n_dirs; i++) {
		printf(" %zu: %s (%zu bytes)\n", i, dirs[i].data, dirs[i].len);
	}
}

int main(void) {
	struct sfdo_basedir_ctx *ctx = sfdo_basedir_ctx_create();
	if (ctx == NULL) {
		fprintf(stderr, "sfdo_basedir_ctx_create() failed\n");
		exit(1);
	}

	const char *dir;
	size_t dir_len;

	const struct sfdo_string *dirs;
	size_t n_dirs;

	dir = sfdo_basedir_get_data_home(ctx, &dir_len);
	print_dir("XDG_DATA_HOME", dir, dir_len);
	dirs = sfdo_basedir_get_data_system_dirs(ctx, &n_dirs);
	print_dir_list("XDG_DATA_DIRS", dirs, n_dirs);

	dir = sfdo_basedir_get_config_home(ctx, &dir_len);
	print_dir("XDG_CONFIG_HOME", dir, dir_len);
	dirs = sfdo_basedir_get_config_system_dirs(ctx, &n_dirs);
	print_dir_list("XDG_CONFIG_DIRS", dirs, n_dirs);

	dir = sfdo_basedir_get_state_home(ctx, &dir_len);
	print_dir("XDG_STATE_HOME", dir, dir_len);
	dir = sfdo_basedir_get_cache_home(ctx, &dir_len);
	print_dir("XDG_CACHE_HOME", dir, dir_len);

	dir = sfdo_basedir_get_runtime_dir(ctx, &dir_len);
	print_dir("XDG_RUNTIME_DIR", dir, dir_len);

	sfdo_basedir_ctx_destroy(ctx);
	return 0;
}