summaryrefslogtreecommitdiffstats
path: root/cmds/idmap/idmap.h
blob: 6a9c5ef7881303a3c1fae89edee457f4f8cfa94e (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
#ifndef _IDMAP_H_
#define _IDMAP_H_

#define LOG_TAG "idmap"

#include <utils/Log.h>

#include <errno.h>
#include <stdio.h>

#ifndef TEMP_FAILURE_RETRY
// Used to retry syscalls that can return EINTR.
#define TEMP_FAILURE_RETRY(exp) ({         \
    typeof (exp) _rc;                      \
    do {                                   \
        _rc = (exp);                       \
    } while (_rc == -1 && errno == EINTR); \
    _rc; })
#endif

int idmap_create_path(const char *target_apk_path, const char *overlay_apk_path,
        const char *cache_path, uint32_t target_hash, uint32_t overlay_hash,
        const char *idmap_path);

int idmap_create_fd(const char *target_apk_path, const char *overlay_apk_path,
        const char *cache_path, uint32_t target_hash, uint32_t overlay_hash,
        int fd);

// Regarding target_package_name: the idmap_scan implementation should
// be able to extract this from the manifest in target_apk_path,
// simplifying the external API.
int idmap_scan(const char *overlay_dir, const char *target_package_name,
        const char *target_apk_path, const char *idmap_dir);

int idmap_inspect(const char *idmap_path);

#endif // _IDMAP_H_