Imported Upstream version 2.6.1
[debian/amanda] / config / amanda / ps.m4
diff --git a/config/amanda/ps.m4 b/config/amanda/ps.m4
new file mode 100644 (file)
index 0000000..83b88b5
--- /dev/null
@@ -0,0 +1,62 @@
+#
+#   Find ps argument for Amanda::Process
+#
+AC_DEFUN([AMANDA_PS_ARGUMENT],
+[
+    AC_PATH_PROG(PS, ps)
+    AC_MSG_CHECKING([ps argument to use])
+    PS_ARGUMENT=
+
+    # ps is *very* non-portable, and across many systems, the same option
+    # (e.g., -e) can mean different things.  So this macro tries to
+    # special-case most known systems, and makes an effort to detect unknown
+    # systems
+    case "$target" in
+       *-*-solaris*)
+           PS_ARGUMENT="-eo pid,ppid,comm"
+           ;;
+
+       *-*-linux-*)
+           PS_ARGUMENT="-eo pid,ppid,command"
+           ;;
+
+       *-*-*bsd*)
+           PS_ARGUMENT="-axo pid,ppid,command"
+           ;;
+
+       *-apple-darwin*)
+           PS_ARGUMENT="-aAco pid,ppid,command"
+           ;;
+
+       *-pc-cygwin)
+           # Cygwin is special-cased in Amanda::Process
+           PS_ARGUMENT=CYGWIN
+           ;;
+
+       *-*-hpux*)
+           # HPUX's 'PS' needs the env var UNIX95 to run in "xpg4" mode
+           PS="UNIX95=1 $PS"
+           PS_ARGUMENT="-eo pid,ppid,comm"
+           ;;
+
+       *)
+           for try in \
+               "-axo pid,ppid,command" \
+               "-aAco pid,ppid,command" \
+               "-eo pid,ppid,comm"
+           do
+               ps $try >/dev/null 2>/dev/null
+               if test $? -eq 0; then
+                   PS_ARGUMENT="$try"
+                   break
+               fi
+           done
+           if test -z "$PS_ARGUMENT"; then
+               AC_MSG_ERROR([Can't find ps argument to use.])
+           fi
+           ;;
+    esac
+
+    AC_MSG_RESULT($PS_ARGUMENT)
+    AC_SUBST(PS_ARGUMENT)
+])