Blame libio/tst-popen1.c

Packit 6c4009
#include <fcntl.h>
Packit 6c4009
#include <stdio.h>
Packit 6c4009
Packit 6c4009
static int
Packit 6c4009
do_test (void)
Packit 6c4009
{
Packit 6c4009
  int res = 0;
Packit 6c4009
Packit 6c4009
  FILE *fp = popen ("echo hello", "r");
Packit 6c4009
  if (fp == NULL)
Packit 6c4009
    {
Packit 6c4009
      puts ("first popen failed");
Packit 6c4009
      res = 1;
Packit 6c4009
    }
Packit 6c4009
  else
Packit 6c4009
    {
Packit 6c4009
      int fd = fileno (fp);
Packit 6c4009
      if (fcntl (fd, F_GETFD) == FD_CLOEXEC)
Packit 6c4009
	{
Packit 6c4009
	  puts ("first popen(\"r\") set FD_CLOEXEC");
Packit 6c4009
	  res = 1;
Packit 6c4009
	}
Packit 6c4009
Packit 6c4009
      fclose (fp);
Packit 6c4009
    }
Packit 6c4009
Packit 6c4009
  fp = popen ("echo hello", "re");
Packit 6c4009
  if (fp == NULL)
Packit 6c4009
    {
Packit 6c4009
      puts ("second popen failed");
Packit 6c4009
      res = 1;
Packit 6c4009
    }
Packit 6c4009
  else
Packit 6c4009
    {
Packit 6c4009
      int fd = fileno (fp);
Packit 6c4009
      if (fcntl (fd, F_GETFD) != FD_CLOEXEC)
Packit 6c4009
	{
Packit 6c4009
	  puts ("second popen(\"r\") did not set FD_CLOEXEC");
Packit 6c4009
	  res = 1;
Packit 6c4009
	}
Packit 6c4009
Packit 6c4009
      fclose (fp);
Packit 6c4009
    }
Packit 6c4009
Packit 6c4009
  return res;
Packit 6c4009
}
Packit 6c4009
Packit 6c4009
#define TEST_FUNCTION do_test ()
Packit 6c4009
#include "../test-skeleton.c"