Mercurial > gnulib
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 |
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 | 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 | 17 |
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 | 21 AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) |
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 ]) |