xref: /minix3/external/bsd/bind/dist/unit/atf-src/m4/module-application.m4 (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroekdnl
2*00b67f09SDavid van Moolenbroekdnl Automated Testing Framework (atf)
3*00b67f09SDavid van Moolenbroekdnl
4*00b67f09SDavid van Moolenbroekdnl Copyright (c) 2007 The NetBSD Foundation, Inc.
5*00b67f09SDavid van Moolenbroekdnl All rights reserved.
6*00b67f09SDavid van Moolenbroekdnl
7*00b67f09SDavid van Moolenbroekdnl Redistribution and use in source and binary forms, with or without
8*00b67f09SDavid van Moolenbroekdnl modification, are permitted provided that the following conditions
9*00b67f09SDavid van Moolenbroekdnl are met:
10*00b67f09SDavid van Moolenbroekdnl 1. Redistributions of source code must retain the above copyright
11*00b67f09SDavid van Moolenbroekdnl    notice, this list of conditions and the following disclaimer.
12*00b67f09SDavid van Moolenbroekdnl 2. Redistributions in binary form must reproduce the above copyright
13*00b67f09SDavid van Moolenbroekdnl    notice, this list of conditions and the following disclaimer in the
14*00b67f09SDavid van Moolenbroekdnl    documentation and/or other materials provided with the distribution.
15*00b67f09SDavid van Moolenbroekdnl
16*00b67f09SDavid van Moolenbroekdnl THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
17*00b67f09SDavid van Moolenbroekdnl CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
18*00b67f09SDavid van Moolenbroekdnl INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19*00b67f09SDavid van Moolenbroekdnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20*00b67f09SDavid van Moolenbroekdnl IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
21*00b67f09SDavid van Moolenbroekdnl DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22*00b67f09SDavid van Moolenbroekdnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
23*00b67f09SDavid van Moolenbroekdnl GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24*00b67f09SDavid van Moolenbroekdnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25*00b67f09SDavid van Moolenbroekdnl IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26*00b67f09SDavid van Moolenbroekdnl OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27*00b67f09SDavid van Moolenbroekdnl IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28*00b67f09SDavid van Moolenbroekdnl
29*00b67f09SDavid van Moolenbroek
30*00b67f09SDavid van MoolenbroekAC_DEFUN([ATF_MODULE_APPLICATION], [
31*00b67f09SDavid van Moolenbroek    ATF_CHECK_STD_VSNPRINTF
32*00b67f09SDavid van Moolenbroek
33*00b67f09SDavid van Moolenbroek    AC_CACHE_CHECK(
34*00b67f09SDavid van Moolenbroek      [whether getopt allows a + sign for POSIX behavior],
35*00b67f09SDavid van Moolenbroek      [kyua_cv_getopt_plus], [
36*00b67f09SDavid van Moolenbroek      AC_LANG_PUSH([C])
37*00b67f09SDavid van Moolenbroek      AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdlib.h>
38*00b67f09SDavid van Moolenbroek#include <string.h>
39*00b67f09SDavid van Moolenbroek#include <unistd.h>], [
40*00b67f09SDavid van Moolenbroek    int argc = 4;
41*00b67f09SDavid van Moolenbroek    char* argv@<:@5@:>@ = {
42*00b67f09SDavid van Moolenbroek        strdup("conftest"),
43*00b67f09SDavid van Moolenbroek        strdup("-+"),
44*00b67f09SDavid van Moolenbroek        strdup("-a"),
45*00b67f09SDavid van Moolenbroek        strdup("bar"),
46*00b67f09SDavid van Moolenbroek        NULL
47*00b67f09SDavid van Moolenbroek    };
48*00b67f09SDavid van Moolenbroek    int ch;
49*00b67f09SDavid van Moolenbroek    int seen_a = 0, seen_plus = 0;
50*00b67f09SDavid van Moolenbroek
51*00b67f09SDavid van Moolenbroek    while ((ch = getopt(argc, argv, "+a:")) != -1) {
52*00b67f09SDavid van Moolenbroek        switch (ch) {
53*00b67f09SDavid van Moolenbroek        case 'a':
54*00b67f09SDavid van Moolenbroek            seen_a = 1;
55*00b67f09SDavid van Moolenbroek            break;
56*00b67f09SDavid van Moolenbroek
57*00b67f09SDavid van Moolenbroek        case '+':
58*00b67f09SDavid van Moolenbroek            seen_plus = 1;
59*00b67f09SDavid van Moolenbroek            break;
60*00b67f09SDavid van Moolenbroek
61*00b67f09SDavid van Moolenbroek        case '?':
62*00b67f09SDavid van Moolenbroek        default:
63*00b67f09SDavid van Moolenbroek            ;
64*00b67f09SDavid van Moolenbroek        }
65*00b67f09SDavid van Moolenbroek    }
66*00b67f09SDavid van Moolenbroek
67*00b67f09SDavid van Moolenbroek    return (seen_a && !seen_plus) ? EXIT_SUCCESS : EXIT_FAILURE;
68*00b67f09SDavid van Moolenbroek])],
69*00b67f09SDavid van Moolenbroek      [kyua_cv_getopt_plus=yes],
70*00b67f09SDavid van Moolenbroek      [kyua_cv_getopt_plus=no])
71*00b67f09SDavid van Moolenbroek      AC_LANG_POP([C])
72*00b67f09SDavid van Moolenbroek    ])
73*00b67f09SDavid van Moolenbroek    if test x"${kyua_cv_getopt_plus}" = xyes; then
74*00b67f09SDavid van Moolenbroek        AC_DEFINE([HAVE_GNU_GETOPT], [1],
75*00b67f09SDavid van Moolenbroek                  [Define to 1 if getopt allows a + sign for POSIX behavior])
76*00b67f09SDavid van Moolenbroek    fi
77*00b67f09SDavid van Moolenbroek
78*00b67f09SDavid van Moolenbroek    AC_CACHE_CHECK(
79*00b67f09SDavid van Moolenbroek      [whether getopt has optreset],
80*00b67f09SDavid van Moolenbroek      [kyua_cv_getopt_optreset], [
81*00b67f09SDavid van Moolenbroek      AC_LANG_PUSH([C])
82*00b67f09SDavid van Moolenbroek      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdlib.h>
83*00b67f09SDavid van Moolenbroek#include <unistd.h>], [
84*00b67f09SDavid van Moolenbroek    optreset = 1;
85*00b67f09SDavid van Moolenbroek    return EXIT_SUCCESS;
86*00b67f09SDavid van Moolenbroek])],
87*00b67f09SDavid van Moolenbroek      [kyua_cv_getopt_optreset=yes],
88*00b67f09SDavid van Moolenbroek      [kyua_cv_getopt_optreset=no])
89*00b67f09SDavid van Moolenbroek      AC_LANG_POP([C])
90*00b67f09SDavid van Moolenbroek    ])
91*00b67f09SDavid van Moolenbroek    if test x"${kyua_cv_getopt_optreset}" = xyes; then
92*00b67f09SDavid van Moolenbroek        AC_DEFINE([HAVE_OPTRESET], [1], [Define to 1 if getopt has optreset])
93*00b67f09SDavid van Moolenbroek    fi
94*00b67f09SDavid van Moolenbroek])
95