1/* See LICENSE file for copyright and license details. */
2#ifndef ARUU_PATHS_H
3#define ARUU_PATHS_H
4
5/*
6 * portable paths. override at compile time for non-FHS systems:
7 * -DARUU_PATH_ETC="/config"
8 *
9 * OS-specific paths (procfs, sysfs) are prefixed ARUU_LINUX_PATH_*
10 * and only defined under __linux__. a util that reads /proc/modules
11 * will fail to compile on BSD because ARUU_LINUX_PATH_PROC is not
12 * defined there. this is intentional: the BSD code path must use
13 * a different mechanism (sysctl, getmntinfo, etc)
14 */
15
16#ifndef ARUU_PATH_ETC
17#define ARUU_PATH_ETC "/etc"
18#endif
19
20#ifndef ARUU_PATH_VAR
21#define ARUU_PATH_VAR "/var"
22#endif
23
24#ifndef ARUU_PATH_DEV
25#define ARUU_PATH_DEV "/dev"
26#endif
27
28#ifndef ARUU_PATH_RUN
29#define ARUU_PATH_RUN "/run"
30#endif
31
32#ifndef ARUU_PATH_TMP
33#define ARUU_PATH_TMP "/tmp"
34#endif
35
36#ifndef ARUU_PATH_BIN
37#define ARUU_PATH_BIN "/bin"
38#endif
39
40#ifndef ARUU_PATH_SBIN
41#define ARUU_PATH_SBIN "/sbin"
42#endif
43
44#ifndef ARUU_PATH_USR_BIN
45#define ARUU_PATH_USR_BIN "/usr/bin"
46#endif
47
48#ifndef ARUU_PATH_USR_SBIN
49#define ARUU_PATH_USR_SBIN "/usr/sbin"
50#endif
51
52#define ARUU_PATH_PASSWD ARUU_PATH_ETC "/passwd"
53#define ARUU_PATH_SHADOW ARUU_PATH_ETC "/shadow"
54#define ARUU_PATH_GROUP ARUU_PATH_ETC "/group"
55#define ARUU_PATH_DEVNULL ARUU_PATH_DEV "/null"
56#define ARUU_PATH_DEVURANDOM ARUU_PATH_DEV "/urandom"
57#define ARUU_PATH_DEVRANDOM ARUU_PATH_DEV "/random"
58#define ARUU_PATH_DEVTTY ARUU_PATH_DEV "/tty"
59#define ARUU_PATH_DEVCONSOLE ARUU_PATH_DEV "/console"
60#define ARUU_PATH_UTMP ARUU_PATH_RUN "/utmp"
61#define ARUU_PATH_WTMP ARUU_PATH_VAR "/log/wtmp"
62#define ARUU_PATH_BTMP ARUU_PATH_VAR "/log/btmp"
63#define ARUU_PATH_LASTLOG ARUU_PATH_VAR "/log/lastlog"
64#define ARUU_PATH_BSHELL ARUU_PATH_BIN "/sh"
65#define ARUU_PATH_STDPATH ARUU_PATH_BIN ":/usr/bin"
66#define ARUU_PATH_DEFPATH ARUU_PATH_BIN ":/usr/bin"
67
68#if defined(__linux__)
69#define ARUU_LINUX_PATH_PROC "/proc"
70#define ARUU_LINUX_PATH_SYS "/sys"
71#define ARUU_LINUX_PATH_PROC_MOUNTS ARUU_LINUX_PATH_PROC "/mounts"
72#define ARUU_LINUX_PATH_PROC_PARTITIONS ARUU_LINUX_PATH_PROC "/partitions"
73#define ARUU_LINUX_PATH_PROC_MEMINFO ARUU_LINUX_PATH_PROC "/meminfo"
74#define ARUU_LINUX_PATH_PROC_LOADAVG ARUU_LINUX_PATH_PROC "/loadavg"
75#define ARUU_LINUX_PATH_PROC_CMDLINE ARUU_LINUX_PATH_PROC "/cmdline"
76#define ARUU_LINUX_PATH_PROC_VERSION ARUU_LINUX_PATH_PROC "/version"
77#define ARUU_LINUX_PATH_PROC_MODULES ARUU_LINUX_PATH_PROC "/modules"
78#define ARUU_LINUX_PATH_PROC_SYS ARUU_LINUX_PATH_PROC "/sys"
79#define ARUU_LINUX_PATH_SYS_MODULE ARUU_LINUX_PATH_SYS "/module"
80#define ARUU_LINUX_PATH_SYS_BLOCK ARUU_LINUX_PATH_SYS "/block"
81#define ARUU_LINUX_PATH_SYS_CLASS_NET ARUU_LINUX_PATH_SYS "/class/net"
82#define ARUU_LINUX_PATH_SYS_KERNEL ARUU_LINUX_PATH_SYS "/kernel"
83#define ARUU_LINUX_PATH_SYS_BUS_USB ARUU_LINUX_PATH_SYS "/bus/usb/devices"
84#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
85/* BSD systems do not have procfs or sysfs. utils that need this data
86 * must use sysctl(3), getmntinfo(3), or kvm(3) instead */
87#else
88#error "paths.h: unsupported platform. define ARUU_LINUX_PATH_* or ARUU_BSD_PATH_* manually"
89#endif
90
91#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
92#define ARUU_BSD_PATH_MASTER_PASSWD ARUU_PATH_ETC "/master.passwd"
93#define ARUU_BSD_PATH_PWD_MKDB ARUU_PATH_USR_SBIN "/pwd_mkdb"
94#endif
95
96#endif