(root)/
gettext-0.22.4/
gettext-tools/
gnulib-tests/
test-spawn.c
       1  /* Test of <spawn.h> substitute.
       2     Copyright (C) 2009-2023 Free Software Foundation, Inc.
       3  
       4     This program is free software: you can redistribute it and/or modify
       5     it under the terms of the GNU General Public License as published by
       6     the Free Software Foundation, either version 3 of the License, or
       7     (at your option) any later version.
       8  
       9     This program is distributed in the hope that it will be useful,
      10     but WITHOUT ANY WARRANTY; without even the implied warranty of
      11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      12     GNU General Public License for more details.
      13  
      14     You should have received a copy of the GNU General Public License
      15     along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
      16  
      17  /* Written by Eric Blake <ebb9@byu.net>, 2009.  */
      18  
      19  #include <config.h>
      20  
      21  #include <spawn.h>
      22  
      23  /* Check for existence of required types.  */
      24  struct check
      25  {
      26    posix_spawnattr_t a;
      27    posix_spawn_file_actions_t b;
      28    mode_t c;
      29    pid_t d;
      30    sigset_t e;
      31  } s;
      32  
      33  /* struct sched_param is allowed to be an incomplete type without
      34     <sched.h>, but must have a forward declaration to avoid a
      35     compilation error in the following usage.  */
      36  extern void f (struct sched_param *g);
      37  #include <sched.h>
      38  extern void f (struct sched_param *g);
      39  
      40  int
      41  main (void)
      42  {
      43    switch (POSIX_SPAWN_RESETIDS)
      44      {
      45      case POSIX_SPAWN_RESETIDS:
      46      case POSIX_SPAWN_SETPGROUP:
      47      case POSIX_SPAWN_SETSIGDEF:
      48      case POSIX_SPAWN_SETSIGMASK:
      49      case (POSIX_SPAWN_SETSCHEDPARAM != 0 ? POSIX_SPAWN_SETSCHEDPARAM : -1):
      50      case (POSIX_SPAWN_SETSCHEDULER != 0 ? POSIX_SPAWN_SETSCHEDULER : -2):
      51        ;
      52      }
      53    return s.c + s.d;
      54  }