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