memcpy (nonoption_flags, orig_str, len); memset (&nonoption_flags[len], '\0',
memcpy (__getopt_nonoption_flags, orig_str, len); memset (&__getopt_nonoption_flags[len], '\0',
_getopt_initialize (argc, argv, optstring)     int argc;     char *const *argv;     const char *optstring;{  /* Start processing options with ARGV-element 1 (since ARGV-element 0     is the program name); the sequence of previously skipped     non-option ARGV-elements is empty.  */  first_nonopt = last_nonopt = optind = 1;  nextchar = NULL;  posixly_correct = getenv ("POSIXLY_CORRECT");  /* Determine how to handle the ordering of options and nonoptions.  */  if (optstring[0] == '-')    {      ordering = RETURN_IN_ORDER;      ++optstring;    }  else if (optstring[0] == '+')    {      ordering = REQUIRE_ORDER;      ++optstring;    }  else if (posixly_correct != NULL)    ordering = REQUIRE_ORDER;  else    ordering = PERMUTE;#ifdef _LIBC  if (posixly_correct == NULL      && argc == original_argc && argv == original_argv)    {      /* Bash 2.0 puts a special variable in the environment for each	 command it runs, specifying which ARGV elements are the results of	 file name wildcard expansion and therefore should not be	 considered as options.  */      if (nonoption_flags_max_len == 0)	{	  char var[100];	  const char *orig_str;	  sprintf (var, "_%d_GNU_nonoption_argv_flags_", getpid ());	  orig_str = getenv (var);	  if (orig_str == NULL || orig_str[0] == '\0')	    nonoption_flags_max_len = -1;	  else	    {	      int len = nonoption_flags_max_len = strlen (orig_str);	      if (nonoption_flags_max_len < argc)		nonoption_flags_max_len = argc;	      nonoption_flags = (char *) malloc (nonoption_flags_max_len);	      if (nonoption_flags == NULL)		nonoption_flags_max_len = -1;	      else		{		  memcpy (nonoption_flags, orig_str, len);		  memset (&nonoption_flags[len], '\0',			  nonoption_flags_max_len - len);		}	    }	}      nonoption_flags_len = nonoption_flags_max_len;    }  else    nonoption_flags_len = 0;#endif  return optstring;}