Back to index

glibc  2.9
Functions | Variables
tst-gettext6.c File Reference
#include <libintl.h>
#include <locale.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>

Go to the source code of this file.

Functions

static void * tf (void *arg)
int test (void)
int main (void)

Variables

pthread_barrier_t b

Function Documentation

int main ( void  )

Definition at line 60 of file tst-gettext6.c.

{
  for (int i = 0; i < 300; i++)
    {
      pid_t p = fork ();
      if (p == -1)
       {
         printf ("fork failed: %m\n");
         return 1;
       }
      if (p == 0)
       _exit (test ());
      int status;
      wait (&status);
      if (WIFEXITED (status) && WEXITSTATUS (status) != 0)
       {
         printf ("child exited with %d\n", WEXITSTATUS (status));
         return 1;
       }
      else if (WIFSIGNALED (status))
       {
         printf ("child killed by signal %d\n", WTERMSIG (status));
         return 1;
       }
    }
  return 0;
}

Here is the call graph for this function:

int test ( void  )

Definition at line 39 of file tst-gettext6.c.

{
  pthread_t th[4];
  unsetenv ("LANGUAGE");
  unsetenv ("OUTPUT_CHARSET");
  textdomain ("tstgettext6");
  bindtextdomain ("tstgettext6", OBJPFX "domaindir");
  setlocale (LC_ALL, "ja_JP.UTF-8");
  pthread_barrier_init (&b, NULL, 4);
  for (int i = 0; i < 4; i++)
    if (pthread_create (&th[i], NULL, tf, NULL))
      {
       puts ("pthread_create failed");
       return 1;
      }
  for (int i = 0; i < 4; i++)
    pthread_join (th[i], NULL);
  return 0;
}

Here is the call graph for this function:

static void* tf ( void *  arg) [static]

Definition at line 32 of file tst-gettext6.c.

{
  pthread_barrier_wait (&b);
  return gettext ("Operation not permitted");
}

Here is the call graph for this function:


Variable Documentation

pthread_barrier_t b

Definition at line 29 of file tst-gettext6.c.