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
 66#ifndef ARUU_PATH_STDPATH
 67#define ARUU_PATH_STDPATH ARUU_PATH_BIN ":" ARUU_PATH_USR_BIN
 68#endif
 69
 70#ifndef ARUU_PATH_DEFPATH
 71#define ARUU_PATH_DEFPATH ARUU_PATH_BIN ":" ARUU_PATH_USR_BIN
 72#endif
 73
 74#if defined(__linux__)
 75#define ARUU_LINUX_PATH_PROC            "/proc"
 76#define ARUU_LINUX_PATH_SYS             "/sys"
 77#define ARUU_LINUX_PATH_PROC_MOUNTS     ARUU_LINUX_PATH_PROC "/mounts"
 78#define ARUU_LINUX_PATH_PROC_PARTITIONS ARUU_LINUX_PATH_PROC "/partitions"
 79#define ARUU_LINUX_PATH_PROC_MEMINFO    ARUU_LINUX_PATH_PROC "/meminfo"
 80#define ARUU_LINUX_PATH_PROC_LOADAVG    ARUU_LINUX_PATH_PROC "/loadavg"
 81#define ARUU_LINUX_PATH_PROC_CMDLINE    ARUU_LINUX_PATH_PROC "/cmdline"
 82#define ARUU_LINUX_PATH_PROC_VERSION    ARUU_LINUX_PATH_PROC "/version"
 83#define ARUU_LINUX_PATH_PROC_MODULES    ARUU_LINUX_PATH_PROC "/modules"
 84#define ARUU_LINUX_PATH_PROC_SYS        ARUU_LINUX_PATH_PROC "/sys"
 85#define ARUU_LINUX_PATH_SYS_MODULE      ARUU_LINUX_PATH_SYS "/module"
 86#define ARUU_LINUX_PATH_SYS_BLOCK       ARUU_LINUX_PATH_SYS "/block"
 87#define ARUU_LINUX_PATH_SYS_CLASS_NET   ARUU_LINUX_PATH_SYS "/class/net"
 88#define ARUU_LINUX_PATH_SYS_KERNEL      ARUU_LINUX_PATH_SYS "/kernel"
 89#define ARUU_LINUX_PATH_SYS_BUS_USB     ARUU_LINUX_PATH_SYS "/bus/usb/devices"
 90#elif defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
 91/* BSD systems do not have procfs or sysfs. utils that need this data
 92 * must use sysctl(3), getmntinfo(3), or kvm(3) instead */
 93#else
 94#error "paths.h: unsupported platform. define ARUU_LINUX_PATH_* or ARUU_BSD_PATH_* manually"
 95#endif
 96
 97#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__)
 98#define ARUU_BSD_PATH_MASTER_PASSWD ARUU_PATH_ETC "/master.passwd"
 99#define ARUU_BSD_PATH_PWD_MKDB      ARUU_PATH_USR_SBIN "/pwd_mkdb"
100#endif
101
102#endif