7359d7448083973ca4b6e7576b49a1510235d1ad
[debian/amanda] / config / amanda / devprefix.m4
1 # SYNOPSIS
2 #
3 #   AMANDA_CHECK_DEVICE_PREFIXES
4 #
5 # DESCRIPTION
6 #
7 #   Check for the prefixes used for particular devices.  If the prefixes
8 #   are broken on this system (Sinix and HPUX), suggest how to fix them.
9 #
10 #   Substitutes CLIENT_SCRIPTS_OPT with the name of the script used to fix
11 #   broken systems.
12 #
13 #   Defines DEV_PREFIX and RDEV_PREFIX to the appropriate prefixes.
14 #
15 AC_DEFUN([AMANDA_CHECK_DEVICE_PREFIXES],
16 [
17     # disk device prefixes
18     AC_MSG_CHECKING(disk device prefixes)
19
20     # Use df to find the mount point for the root filesystem.  Use
21     # the positional parameters to find the particular line from df
22     # that contains the root paritition.  We put it in a subshell so
23     # that the original positional parameters are not messed with.
24     dfline=`(
25         df / | while read line; do
26             set -- $line
27             dnl @S|@ means $ to m4
28             while test @S|@# -gt 0; do
29                 if test "x@S|@1" = "x/"; then
30                     echo $line
31                     break 2
32                 fi
33                 shift
34             done
35         done
36     ) | sed 's/(//' | sed 's/)//' `
37
38     # Search for the mount point by using expr to find the parameter
39     # with dev in it.
40     mount=`(
41         set -- $dfline
42         dnl @S|@ means $ to m4
43         while test @S|@# -gt 0; do
44             if expr "@S|@1" : '.*dev' >/dev/null 2>&1; then
45                 echo @S|@1
46                 break
47             fi
48             shift
49         done
50     )`
51
52     # get any system-specific configuration information
53     case "$target" in
54         *-hp-*)
55             CLIENT_SCRIPTS_OPT=amhpfixdevs
56             case $mount in
57                 /dev/vg*)
58                     AMANDA_MSG_WARN([Run amhpfixdevs on HP-UX systems using /dev/vg??.])
59                     ;;
60             esac
61             ;;
62         *-sni-sysv4)
63             DEV_PREFIX=/dev/dsk/
64             RDEV_PREFIX=/dev/rdsk/
65             CLIENT_SCRIPTS_OPT=amsinixfixdevs
66             if ! test -d /dev/dsk; then
67                 AMANDA_MSG_WARN([Run amsinixfixdevs on Sinix systems using VxFS.])
68             fi
69             ;;
70         *-sco3.2v4*)
71             DEV_PREFIX=/dev/
72             RDEV_PREFIX=/dev/
73             ;;
74         *)
75             CLIENT_SCRIPTS_OPT=
76             ;;
77     esac
78
79     if test "$DEV_PREFIX" && test "$RDEV_PREFIX"; then
80         AC_MSG_RESULT((predefined) $DEV_PREFIX - $RDEV_PREFIX)
81     else
82         if test -d /dev/dsk; then
83             DEV_PREFIX=/dev/dsk/
84             if test -d /dev/rdsk; then
85                 RDEV_PREFIX=/dev/rdsk/
86             else
87                 RDEV_PREFIX=/dev/dsk/
88             fi
89         elif test -d /dev; then
90             DEV_PREFIX=/dev/
91
92             # Some systems, notably Linux, do not have raw disk devices
93             # names.  Check this by trying to see if a raw disk device name
94             # exists using the normal raw device path prepended to the
95             # mount point of the root filesystem.
96             if test "$mount"; then
97                 dev_name="/dev/r`basename $mount`"
98                 if test -b $dev_name -o -c $dev_name; then
99                     RDEV_PREFIX=/dev/r
100                 else
101                     RDEV_PREFIX=/dev/
102                 fi
103             else
104                 RDEV_PREFIX=/dev/r
105             fi
106         else
107             # just fake it..
108             DEV_PREFIX=/
109             RDEV_PREFIX=/
110         fi
111         AC_MSG_RESULT($DEV_PREFIX - $RDEV_PREFIX)
112     fi
113
114     AC_DEFINE_UNQUOTED(DEV_PREFIX,"${DEV_PREFIX}",
115         [Define as the prefix for disk devices, commonly /dev/ or /dev/dsk/ ])
116     AC_DEFINE_UNQUOTED(RDEV_PREFIX,"${RDEV_PREFIX}",
117         [Define as the prefix for raw disk devices, commonly /dev/r or /dev/rdsk/ ])
118     AC_SUBST(CLIENT_SCRIPTS_OPT)
119 ])