(root)/
m4-1.4.19/
tests/
test-sleep.c
       1  /* Test of sleep() function.
       2     Copyright (C) 2007-2021 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 Bruno Haible <bruno@clisp.org>, 2007.  */
      18  
      19  #include <config.h>
      20  
      21  #include <unistd.h>
      22  
      23  #include "signature.h"
      24  SIGNATURE_CHECK (sleep, unsigned int, (unsigned int));
      25  
      26  #include <signal.h>
      27  
      28  #include "macros.h"
      29  
      30  #if HAVE_DECL_ALARM
      31  static void
      32  handle_alarm (int sig)
      33  {
      34    if (sig != SIGALRM)
      35      _exit (1);
      36  }
      37  #endif
      38  
      39  int
      40  main (void)
      41  {
      42    ASSERT (sleep (1) <= 1);
      43  
      44    ASSERT (sleep (0) == 0);
      45  
      46  #if HAVE_DECL_ALARM
      47    {
      48      const unsigned int pentecost = 50 * 24 * 60 * 60; /* 50 days.  */
      49      unsigned int remaining;
      50      signal (SIGALRM, handle_alarm);
      51      alarm (1);
      52      remaining = sleep (pentecost);
      53      ASSERT (pentecost - 10 < remaining && remaining <= pentecost);
      54    }
      55  #endif
      56  
      57    return 0;
      58  }