root / config / mkstemp.m4 @ 08253798
History | View | Annotate | Download (2.2 kB)
| 1 | 5d69a524 | jcorgan | #serial 4 |
|---|---|---|---|
| 2 | 5d69a524 | jcorgan | |
| 3 | 5d69a524 | jcorgan | # On some hosts (e.g., HP-UX 10.20, SunOS 4.1.4, Solaris 2.5.1), mkstemp has a |
| 4 | 5d69a524 | jcorgan | # silly limit that it can create no more than 26 files from a given template. |
| 5 | 5d69a524 | jcorgan | # Other systems lack mkstemp altogether. |
| 6 | 5d69a524 | jcorgan | # On OSF1/Tru64 V4.0F, the system-provided mkstemp function can create |
| 7 | 5d69a524 | jcorgan | # only 32 files per process. |
| 8 | 5d69a524 | jcorgan | # On systems like the above, arrange to use the replacement function. |
| 9 | 5d69a524 | jcorgan | AC_DEFUN([UTILS_FUNC_MKSTEMP], |
| 10 | 5d69a524 | jcorgan | [dnl |
| 11 | 5d69a524 | jcorgan | AC_REPLACE_FUNCS(mkstemp) |
| 12 | 5d69a524 | jcorgan | if test $ac_cv_func_mkstemp = no; then |
| 13 | 5d69a524 | jcorgan | utils_cv_func_mkstemp_limitations=yes |
| 14 | 5d69a524 | jcorgan | else |
| 15 | 5d69a524 | jcorgan | AC_CACHE_CHECK([for mkstemp limitations], |
| 16 | 5d69a524 | jcorgan | utils_cv_func_mkstemp_limitations, |
| 17 | 5d69a524 | jcorgan | [ |
| 18 | 5d69a524 | jcorgan | AC_TRY_RUN([ |
| 19 | 5d69a524 | jcorgan | # include <stdlib.h> |
| 20 | 5d69a524 | jcorgan | int main () |
| 21 | 5d69a524 | jcorgan | {
|
| 22 | 5d69a524 | jcorgan | int i; |
| 23 | 5d69a524 | jcorgan | for (i = 0; i < 70; i++) |
| 24 | 5d69a524 | jcorgan | {
|
| 25 | 5d69a524 | jcorgan | char template[] = "conftestXXXXXX"; |
| 26 | 5d69a524 | jcorgan | int fd = mkstemp (template); |
| 27 | 5d69a524 | jcorgan | if (fd == -1) |
| 28 | 5d69a524 | jcorgan | exit (1); |
| 29 | 5d69a524 | jcorgan | close (fd); |
| 30 | 5d69a524 | jcorgan | } |
| 31 | 5d69a524 | jcorgan | exit (0); |
| 32 | 5d69a524 | jcorgan | } |
| 33 | 5d69a524 | jcorgan | ], |
| 34 | 5d69a524 | jcorgan | utils_cv_func_mkstemp_limitations=no, |
| 35 | 5d69a524 | jcorgan | utils_cv_func_mkstemp_limitations=yes, |
| 36 | 5d69a524 | jcorgan | utils_cv_func_mkstemp_limitations=yes |
| 37 | 5d69a524 | jcorgan | ) |
| 38 | 5d69a524 | jcorgan | ] |
| 39 | 5d69a524 | jcorgan | ) |
| 40 | 5d69a524 | jcorgan | fi |
| 41 | 5d69a524 | jcorgan | |
| 42 | 5d69a524 | jcorgan | if test $utils_cv_func_mkstemp_limitations = yes; then |
| 43 | 5d69a524 | jcorgan | AC_LIBOBJ(mkstemp) |
| 44 | 5d69a524 | jcorgan | AC_LIBOBJ(tempname) |
| 45 | 5d69a524 | jcorgan | AC_DEFINE(mkstemp, rpl_mkstemp, |
| 46 | 5d69a524 | jcorgan | [Define to rpl_mkstemp if the replacement function should be used.]) |
| 47 | 5d69a524 | jcorgan | gl_PREREQ_MKSTEMP |
| 48 | 5d69a524 | jcorgan | jm_PREREQ_TEMPNAME |
| 49 | 5d69a524 | jcorgan | fi |
| 50 | 5d69a524 | jcorgan | ]) |
| 51 | 5d69a524 | jcorgan | |
| 52 | 5d69a524 | jcorgan | # Prerequisites of lib/mkstemp.c. |
| 53 | 5d69a524 | jcorgan | AC_DEFUN([gl_PREREQ_MKSTEMP], |
| 54 | 5d69a524 | jcorgan | [ |
| 55 | 5d69a524 | jcorgan | AH_BOTTOM( |
| 56 | 5d69a524 | jcorgan | [ |
| 57 | 5d69a524 | jcorgan | #ifndef HAVE_MKSTEMP |
| 58 | 5d69a524 | jcorgan | #ifdef __cplusplus |
| 59 | 5d69a524 | jcorgan | extern "C" {
|
| 60 | 5d69a524 | jcorgan | #endif |
| 61 | 5d69a524 | jcorgan | int rpl_mkstemp (char *templ); |
| 62 | 5d69a524 | jcorgan | #ifdef __cplusplus |
| 63 | 5d69a524 | jcorgan | } |
| 64 | 5d69a524 | jcorgan | #endif |
| 65 | 5d69a524 | jcorgan | #endif |
| 66 | 5d69a524 | jcorgan | ]) |
| 67 | 5d69a524 | jcorgan | ]) |
| 68 | 5d69a524 | jcorgan | |
| 69 | 5d69a524 | jcorgan | # Prerequisites of lib/tempname.c. |
| 70 | 5d69a524 | jcorgan | AC_DEFUN([jm_PREREQ_TEMPNAME], |
| 71 | 5d69a524 | jcorgan | [ |
| 72 | 5d69a524 | jcorgan | AC_REQUIRE([AC_HEADER_STAT]) |
| 73 | 5d69a524 | jcorgan | AC_CHECK_HEADERS_ONCE(fcntl.h sys/time.h unistd.h) |
| 74 | 5d69a524 | jcorgan | AC_CHECK_HEADERS(stdint.h) |
| 75 | 5d69a524 | jcorgan | AC_CHECK_FUNCS(__secure_getenv gettimeofday lstat) |
| 76 | 5d69a524 | jcorgan | AC_CHECK_DECLS_ONCE(getenv) |
| 77 | 5d69a524 | jcorgan | # AC_REQUIRE([jm_AC_TYPE_UINTMAX_T]) |
| 78 | 5d69a524 | jcorgan | |
| 79 | 5d69a524 | jcorgan | dnl Under Win32, mkdir prototype in io.h has only one arg |
| 80 | 5d69a524 | jcorgan | AC_MSG_CHECKING(whether mkdir accepts only one arg) |
| 81 | 5d69a524 | jcorgan | AC_TRY_COMPILE([#include <sys/types.h> |
| 82 | 5d69a524 | jcorgan | #include <sys/stat.h> |
| 83 | 5d69a524 | jcorgan | #include <fcntl.h>], [ |
| 84 | 5d69a524 | jcorgan | mkdir("")
|
| 85 | 5d69a524 | jcorgan | ], [ AC_MSG_RESULT(yes) |
| 86 | 5d69a524 | jcorgan | AC_DEFINE(MKDIR_TAKES_ONE_ARG,[],[Define if mkdir accepts only one arg]) ], |
| 87 | 5d69a524 | jcorgan | [ AC_MSG_RESULT(no) |
| 88 | 5d69a524 | jcorgan | ]) |
| 89 | 5d69a524 | jcorgan | ]) |