summaryrefslogtreecommitdiffstats
path: root/discover/paths.h
blob: e905094d566d9a25b702bef3445c1ab6c64958fa (plain)
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
#ifndef PATHS_H
#define PATHS_H

#include <url/url.h>

/**
 * Utility function for joining two paths. Adds a / between a and b if
 * required.
 *
 * Returns a newly-allocated string.
 */
char *join_paths(void *alloc_ctx, const char *a, const char *b);

/**
 * Returns the base path for mount points
 */
const char *mount_base(void);


struct load_url_result {
	enum {
		LOAD_OK,    /* load complete. other members should only be
			       accessed if status == LOAD_OK */

		LOAD_ERROR, /* only signalled to async loaders
			     * (sync will see a NULL result) */

		LOAD_ASYNC, /* async load still in progress */
	} status;
	const char	*local;
	bool		cleanup_local;
};

/* callback type for asynchronous loads. The callback implementation is
 * responsible for freeing result.
 */
typedef void (*load_url_complete)(struct load_url_result *result, void *data);

/* Load a (potentially remote) file, and return a guaranteed-local name */
struct load_url_result *load_url_async(void *ctx, struct pb_url *url,
		load_url_complete complete, void *data);

struct load_url_result *load_url(void *ctx, struct pb_url *url);

#endif /* PATHS_H */
OpenPOWER on IntegriCloud