master xplshn/aruu / shared / paths.h
 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