if (output_path == NULL) error (4, errno, _("cannot create directory for output files"));
main (int argc, char *argv[]){  const char *output_path;  int cannot_write_why;  struct charmap_t *charmap;  struct localedef_t global;  int remaining;  /* Set initial values for global variables.  */  copy_list = NULL;  posix_conformance = getenv ("POSIXLY_CORRECT") != NULL;  error_print_progname = error_print;  /* Set locale.  Do not set LC_ALL because the other categories must     not be affected (according to POSIX.2).  */  setlocale (LC_MESSAGES, "");  setlocale (LC_CTYPE, "");  /* Initialize the message catalog.  */  textdomain (_libc_intl_domainname);  /* Parse and process arguments.  */  argp_err_exit_status = 4;  argp_parse (&argp, argc, argv, 0, &remaining, NULL);  /* POSIX.2 requires to be verbose about missing characters in the     character map.  */  verbose |= posix_conformance;  if (argc - remaining != 1)    {      /* We need exactly one non-option parameter.  */      argp_help (&argp, stdout, ARGP_HELP_SEE | ARGP_HELP_EXIT_ERR,		 program_invocation_short_name);      exit (4);    }  /* The parameter describes the output path of the constructed files.     If the described files cannot be written return a NULL pointer.  */  output_path  = construct_output_path (argv[remaining]);  cannot_write_why = errno;  /* Now that the parameters are processed we have to reset the local     ctype locale.  (P1003.2 4.35.5.2)  */  setlocale (LC_CTYPE, "POSIX");  /* Look whether the system really allows locale definitions.  POSIX     defines error code 3 for this situation so I think it must be     a fatal error (see P1003.2 4.35.8).  */  if (sysconf (_SC_2_LOCALEDEF) < 0)    error (3, 0, _("FATAL: system does not define `_POSIX2_LOCALEDEF'"));  /* Process charmap file.  */  charmap = charmap_read (charmap_file, verbose, be_quiet, 1);  /* Add the first entry in the locale list.  */  memset (&global, '\0', sizeof (struct localedef_t));  global.name = input_file ?: "/dev/stdin";  global.needed = ALL_LOCALES;  locales = &global;  /* Now read the locale file.  */  if (locfile_read (&global, charmap) != 0)    error (4, errno, _("cannot open locale definition file `%s'"), input_file);  /* Perhaps we saw some `copy' instructions.  */  while (1)    {      struct localedef_t *runp = locales;      while (runp != NULL && (runp->needed & runp->avail) == runp->needed)	runp = runp->next;      if (runp == NULL)	/* Everything read.  */	break;      if (locfile_read (runp, charmap) != 0)	error (4, errno, _("cannot open locale definition file `%s'"),	       runp->name);    }  /* Check the categories we processed in source form.  */  check_all_categories (locales, charmap);  /* We are now able to write the data files.  If warning were given we     do it only if it is explicitly requested (--force).  */  if (error_message_count == 0 || force_output != 0)    {      if (cannot_write_why != 0)	error (4, cannot_write_why, _("cannot write output files to `%s'"),	       output_path);      else	write_all_categories (locales, charmap, output_path);    }  else    error (4, 0, _("no output file produced because warning were issued"));  /* This exit status is prescribed by POSIX.2 4.35.7.  */  exit (error_message_count != 0);}