annotate m4/getlogin_r.m4 @ 40057:b06060465f09

maint: Run 'make update-copyright'
author Paul Eggert <eggert@cs.ucla.edu>
date Tue, 01 Jan 2019 00:25:11 +0100
parents 10eb9086bea0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18805
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
1 #serial 12
5885
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
2
40057
b06060465f09 maint: Run 'make update-copyright'
Paul Eggert <eggert@cs.ucla.edu>
parents: 19484
diff changeset
3 # Copyright (C) 2005-2007, 2009-2019 Free Software Foundation, Inc.
5885
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
4 #
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
5 # This file is free software; the Free Software Foundation
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
6 # gives unlimited permission to copy and/or distribute it,
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
7 # with or without modifications, as long as this notice is preserved.
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
8
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
9 dnl From Derek Price
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
10 dnl
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
11 dnl Provide getlogin_r when the system lacks it.
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
12 dnl
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
13
13063
aa67a79c95bc Rename gl_GETLOGIN_R.
Bruno Haible <bruno@clisp.org>
parents: 12611
diff changeset
14 AC_DEFUN([gl_FUNC_GETLOGIN_R],
5885
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
15 [
8199
51d32a83a7df Move more declarations into <unistd.h>.
Bruno Haible <bruno@clisp.org>
parents: 7180
diff changeset
16 AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
12611
42a30e18244c getlogin_r: Small fixes.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
17
42a30e18244c getlogin_r: Small fixes.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
18 dnl Persuade glibc <unistd.h> to declare getlogin_r().
13267
d6ab91053834 Use the 'extensions' module for some more functions on Solaris.
Bruno Haible <bruno@clisp.org>
parents: 13063
diff changeset
19 dnl Persuade Solaris <unistd.h> to provide the POSIX compliant declaration of
d6ab91053834 Use the 'extensions' module for some more functions on Solaris.
Bruno Haible <bruno@clisp.org>
parents: 13063
diff changeset
20 dnl getlogin_r().
12611
42a30e18244c getlogin_r: Small fixes.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
21 AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
42a30e18244c getlogin_r: Small fixes.
Bruno Haible <bruno@clisp.org>
parents: 12559
diff changeset
22
13963
e1862c329298 getlogin_r: Add missing declaration on HP-UX 11.
Bruno Haible <bruno@clisp.org>
parents: 13267
diff changeset
23 AC_CHECK_DECLS_ONCE([getlogin_r])
e1862c329298 getlogin_r: Add missing declaration on HP-UX 11.
Bruno Haible <bruno@clisp.org>
parents: 13267
diff changeset
24 if test $ac_cv_have_decl_getlogin_r = no; then
e1862c329298 getlogin_r: Add missing declaration on HP-UX 11.
Bruno Haible <bruno@clisp.org>
parents: 13267
diff changeset
25 HAVE_DECL_GETLOGIN_R=0
e1862c329298 getlogin_r: Add missing declaration on HP-UX 11.
Bruno Haible <bruno@clisp.org>
parents: 13267
diff changeset
26 fi
e1862c329298 getlogin_r: Add missing declaration on HP-UX 11.
Bruno Haible <bruno@clisp.org>
parents: 13267
diff changeset
27
8199
51d32a83a7df Move more declarations into <unistd.h>.
Bruno Haible <bruno@clisp.org>
parents: 7180
diff changeset
28 AC_CHECK_FUNCS_ONCE([getlogin_r])
6210
4e6ef6bd2966 * getlogin_r (gl_GETLOGIN_R): Fix cut & paste error.
Derek R. Price <derek@ximbiot.com>
parents: 5885
diff changeset
29 if test $ac_cv_func_getlogin_r = no; then
13999
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
30 HAVE_GETLOGIN_R=0
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
31 else
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
32 HAVE_GETLOGIN_R=1
18805
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
33 dnl On Mac OS X 10.12 and OSF/1 5.1, getlogin_r returns a truncated result
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
34 dnl if the buffer is not large enough.
13999
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
35 AC_REQUIRE([AC_CANONICAL_HOST])
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
36 AC_CACHE_CHECK([whether getlogin_r works with small buffers],
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
37 [gl_cv_func_getlogin_r_works],
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
38 [
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
39 dnl Initial guess, used when cross-compiling.
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
40 changequote(,)dnl
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
41 case "$host_os" in
18805
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
42 # Guess no on Mac OS X, OSF/1.
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
43 darwin* | osf*) gl_cv_func_getlogin_r_works="guessing no" ;;
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
44 # Guess yes otherwise.
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
45 *) gl_cv_func_getlogin_r_works="guessing yes" ;;
13999
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
46 esac
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
47 changequote([,])dnl
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
48 AC_RUN_IFELSE(
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
49 [AC_LANG_SOURCE([[
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
50 #include <stddef.h>
18805
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
51 #include <string.h>
13999
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
52 #include <unistd.h>
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
53 #if !HAVE_DECL_GETLOGIN_R
15438
591ddd1ddd1a Declare system functions in a way that works with C++.
Bruno Haible <bruno@clisp.org>
parents: 14967
diff changeset
54 extern
591ddd1ddd1a Declare system functions in a way that works with C++.
Bruno Haible <bruno@clisp.org>
parents: 14967
diff changeset
55 # ifdef __cplusplus
591ddd1ddd1a Declare system functions in a way that works with C++.
Bruno Haible <bruno@clisp.org>
parents: 14967
diff changeset
56 "C"
591ddd1ddd1a Declare system functions in a way that works with C++.
Bruno Haible <bruno@clisp.org>
parents: 14967
diff changeset
57 # endif
591ddd1ddd1a Declare system functions in a way that works with C++.
Bruno Haible <bruno@clisp.org>
parents: 14967
diff changeset
58 int getlogin_r (char *, size_t);
13999
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
59 #endif
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
60 int
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
61 main (void)
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
62 {
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
63 int result = 0;
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
64 char buf[100];
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
65
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
66 if (getlogin_r (buf, 0) == 0)
18805
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
67 result |= 1;
13999
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
68 if (getlogin_r (buf, 1) == 0)
18805
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
69 result |= 2;
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
70 if (getlogin_r (buf, 100) == 0)
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
71 {
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
72 size_t n = strlen (buf);
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
73 if (getlogin_r (buf, n) == 0)
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
74 result |= 4;
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
75 }
13999
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
76 return result;
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
77 }]])],
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
78 [gl_cv_func_getlogin_r_works=yes],
18805
b23b78e95180 getlogin_r: Work around bug in Mac OS X 10.12.
Bruno Haible <bruno@clisp.org>
parents: 18626
diff changeset
79 [gl_cv_func_getlogin_r_works=no],
13999
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
80 [:])
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
81 ])
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
82 case "$gl_cv_func_getlogin_r_works" in
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
83 *yes) ;;
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
84 *) REPLACE_GETLOGIN_R=1 ;;
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
85 esac
f4f90f0b7167 getlogin_r: Work around portability problem on OSF/1.
Bruno Haible <bruno@clisp.org>
parents: 13963
diff changeset
86 fi
5885
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
87 ])
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
88
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
89 AC_DEFUN([gl_PREREQ_GETLOGIN_R],
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
90 [
6742
20164454be7f * argp.m4 (gl_ARGP): Don't call AC_CHECK_DECLS_ONCE with more than
Paul Eggert <eggert@cs.ucla.edu>
parents: 6210
diff changeset
91 AC_CHECK_DECLS_ONCE([getlogin])
5885
85592abdcf53 * lib/getlogin_r.c, lib/getlogin_r.h, m4/getlogin_r.m4,
Derek R. Price <derek@ximbiot.com>
parents:
diff changeset
92 ])