annotate m4/mknod.m4 @ 13850:c39e4e516aee

mknod: avoid false failure with dash * m4/mknod.m4 (gl_FUNC_MKNOD): Use portable shell syntax. Signed-off-by: Eric Blake <eblake@redhat.com>
author Christian Weisgerber <naddy@mips.inka.de>
date Thu, 11 Nov 2010 11:08:18 -0700
parents a4b0494e2b96
children 97fc9a21a8fb
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13850
c39e4e516aee mknod: avoid false failure with dash
Christian Weisgerber <naddy@mips.inka.de>
parents: 13540
diff changeset
1 # serial 3
12267
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
2 # See if we need to provide mknod replacement.
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
3
12559
c2cbabec01dd update nearly all FSF copyright year lists to include 2010
Jim Meyering <meyering@redhat.com>
parents: 12267
diff changeset
4 dnl Copyright (C) 2009, 2010 Free Software Foundation, Inc.
12267
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
5 dnl This file is free software; the Free Software Foundation
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
6 dnl gives unlimited permission to copy and/or distribute it,
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
7 dnl with or without modifications, as long as this notice is preserved.
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
8
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
9 # Written by Eric Blake.
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
10
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
11 AC_DEFUN([gl_FUNC_MKNOD],
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
12 [
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
13 AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
14 AC_REQUIRE([gl_FUNC_MKFIFO])
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
15 AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
16 AC_CHECK_FUNCS_ONCE([mknod])
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
17 if test $ac_cv_func_mknod = no; then
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
18 HAVE_MKNOD=0
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
19 AC_LIBOBJ([mknod])
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
20 else
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
21 dnl Detect BSD bug, where mknod requires root privileges to create fifo.
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
22 AC_CACHE_CHECK([whether mknod can create fifo without root privileges],
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
23 [gl_cv_func_mknod_works],
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
24 [AC_RUN_IFELSE(
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
25 [AC_LANG_PROGRAM(
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
26 [[#include <sys/stat.h>
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
27 #include <unistd.h>
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
28 ]], [[/* Indeterminate for super-user, assume no. Why are you running
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
29 configure as root, anyway? */
13540
a4b0494e2b96 mknod: be more vocal about danger of running tests as root
Eric Blake <eblake@redhat.com>
parents: 12559
diff changeset
30 if (!geteuid ()) return 99;
12267
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
31 if (mknod ("conftest.fifo", S_IFIFO | 0600, 0)) return 2;]])],
13540
a4b0494e2b96 mknod: be more vocal about danger of running tests as root
Eric Blake <eblake@redhat.com>
parents: 12559
diff changeset
32 [gl_cv_func_mknod_works=yes],
13850
c39e4e516aee mknod: avoid false failure with dash
Christian Weisgerber <naddy@mips.inka.de>
parents: 13540
diff changeset
33 [if test $? = 99 && test x"$FORCE_UNSAFE_CONFIGURE" = x; then
13540
a4b0494e2b96 mknod: be more vocal about danger of running tests as root
Eric Blake <eblake@redhat.com>
parents: 12559
diff changeset
34 AC_MSG_FAILURE([you should not run configure as root ]dnl
a4b0494e2b96 mknod: be more vocal about danger of running tests as root
Eric Blake <eblake@redhat.com>
parents: 12559
diff changeset
35 [(set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)])
a4b0494e2b96 mknod: be more vocal about danger of running tests as root
Eric Blake <eblake@redhat.com>
parents: 12559
diff changeset
36 fi
a4b0494e2b96 mknod: be more vocal about danger of running tests as root
Eric Blake <eblake@redhat.com>
parents: 12559
diff changeset
37 gl_cv_func_mknod_works=no],
12267
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
38 [gl_cv_func_mknod_works="guessing no"])
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
39 rm -f conftest.fifo])
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
40 if test "$gl_cv_func_mknod_works" != yes; then
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
41 AC_DEFINE([MKNOD_FIFO_BUG], [1], [Define to 1 if mknod cannot create
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
42 a fifo without super-user privileges])
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
43 fi
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
44 dnl Systems that mishandle trailing slash on mkfifo also goof on mknod.
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
45 if test $REPLACE_MKFIFO = 1 || test "$gl_cv_func_mknod_works" != yes; then
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
46 REPLACE_MKNOD=1
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
47 AC_LIBOBJ([mknod])
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
48 fi
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
49 fi
c400da5f66bb mknod: new module
Eric Blake <ebb9@byu.net>
parents:
diff changeset
50 ])