"), "2004");
"), "2005");
main (int argc, char *argv[]){  register const struct conf *c;  /* Set locale.  Do not set LC_ALL because the other categories must     not be affected (according to POSIX.2).  */  setlocale (LC_CTYPE, "");  setlocale (LC_MESSAGES, "");  /* Initialize the message catalog.  */  textdomain (PACKAGE);  if (argc > 1 && strcmp (argv[1], "--version") == 0)    {      fprintf (stderr, "getconf (GNU %s) %s\n", PACKAGE, VERSION);      fprintf (stderr, gettext ("\Copyright (C) %s Free Software Foundation, Inc.\n\This is free software; see the source for copying conditions.  There is NO\n\warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\"), "2004");      fprintf (stderr, gettext ("Written by %s.\n"), "Roland McGrath");      return 0;    }  const char *getconf_dir = getenv ("GETCONF_DIR") ?: GETCONF_DIR;  size_t getconf_dirlen = strlen (getconf_dir);  const char *spec = NULL;  char buf[sizeof "POSIX_V6_LPBIG_OFFBIG"];  char *argv0 = argv[0];  if (argc > 1 && strncmp (argv[1], "-v", 2) == 0)    {      if (argv[1][2] == '\0')	{	  if (argc < 3)	    usage ();	  spec = argv[2];	  argv += 2;	  argc -= 2;	}      else	{	  spec = &argv[1][2];	  argv += 1;	  argc += 1;	}    }  else    {      char default_name[getconf_dirlen + sizeof "/default"];      memcpy (mempcpy (default_name, getconf_dir, getconf_dirlen),	      "/default", sizeof "/default");      int len = readlink (default_name, buf, sizeof buf - 1);      if (len > 0)	{	  buf[len] = '\0';	  spec = buf;	}    }  /* Check for the specifications we know.  */  if (spec != NULL)    {      int i;      for (i = 0; i < nspecs; ++i)	if (strcmp (spec, specs[i].name) == 0)	  break;      if (i == nspecs)	error (2, 0, _("unknown specification \"%s\""), spec);      switch (specs[i].num)	{#ifndef _POSIX_V6_ILP32_OFF32	  case _SC_V6_ILP32_OFF32:#endif#ifndef _POSIX_V6_ILP32_OFFBIG	  case _SC_V6_ILP32_OFFBIG:#endif#ifndef _POSIX_V6_LP64_OFF64	  case _SC_V6_LP64_OFF64:#endif#ifndef _POSIX_V6_LPBIG_OFFBIG	  case _SC_V6_LPBIG_OFFBIG:#endif	    {	      const char *args[argc + 3];	      size_t spec_len = strlen (spec);	      char getconf_name[getconf_dirlen + 1 + spec_len + 1];	      memcpy (mempcpy (mempcpy (getconf_name, getconf_dir,					getconf_dirlen),			       "/", 1), spec, spec_len + 1);	      args[0] = argv0;	      args[1] = "-v";	      args[2] = spec;	      memcpy (&args[3], &argv[1], argc * sizeof (argv[1]));	      execv (getconf_name, (char * const *) args);	      error (4, errno, _("Couldn't execute %s"), getconf_name);	    }	  default:	    break;	}    }  if (argc < 2 || argc > 3)    usage ();  for (c = vars; c->name != NULL; ++c)    if (strcmp (c->name, argv[1]) == 0	|| (strncmp (c->name, "_POSIX_", 7) == 0	    && strcmp (c->name + 7, argv[1]) == 0))      {	long int value;	size_t clen;	char *cvalue;	switch (c->call)	  {	  case PATHCONF:	    if (argc < 3)	      usage ();	    errno = 0;	    value = pathconf (argv[2], c->call_name);	    if (value == -1)	      {		if (errno)		  error (3, errno, "pathconf: %s", argv[2]);		else		  puts (_("undefined"));	      }	    else	      printf ("%ld\n", value);	    exit (0);	  case SYSCONF:	    if (argc > 2)	      usage ();	    value = sysconf (c->call_name);	    if (value == -1l)	      {		if (c->call_name == _SC_UINT_MAX		    || c->call_name == _SC_ULONG_MAX)		  printf ("%lu\n", value);		else		  puts (_("undefined"));	      }	    else	      printf ("%ld\n", value);	    exit (0);	  case CONFSTR:	    if (argc > 2)	      usage ();	    clen = confstr (c->call_name, (char *) NULL, 0);	    cvalue = (char *) malloc (clen);	    if (cvalue == NULL)	      error (3, 0, _("memory exhausted"));	    if (confstr (c->call_name, cvalue, clen) != clen)	      error (3, errno, "confstr");	    printf ("%.*s\n", (int) clen, cvalue);	    exit (0);	  }      }  error (2, 0, _("Unrecognized variable `%s'"), argv[1]);  /* NOTREACHED */  return 2;}