⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getopt_xmds_init.c

📁 XMDS is a code generator that integrates equations. You write them down in human readable form in a
💻 C
字号:
/* Perform additional initialization for getopt_xmds functions in GNU libc.   Copyright (C) 1997, 1998, 2001 Free Software Foundation, Inc.   This file is part of the GNU C Library.   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.   The GNU C Library is free software; you can redistribute it and/or   modify it under the terms of the GNU Lesser General Public   License as published by the Free Software Foundation; either   version 2.1 of the License, or (at your option) any later version.   The GNU C Library is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   Lesser General Public License for more details.   You should have received a copy of the GNU Lesser General Public   License along with the GNU C Library; if not, write to the Free   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA   02111-1307 USA.  *//*  $Id: getopt_xmds_init.c,v 1.4 2004/10/21 09:37:54 paultcochrane Exp $*//*! @file getopt_xmds_init.c  @brief Initialisation file for GNU getopt_xmds() routines  More detailed explanation...*//*  some compilers throw a warning here, as the ifdef below doesn't get executed  causing no executable statements to be in the file.  I'm adding a single assignment here to stop this*//*!   Dummy value to get around problems with some compilers producing  an error when they don't generate any code from the following ifdef*/int dummyIntegerValue = 0;#ifdef USE_NONOPTION_FLAGS/* Attention: this file is *not* necessary when the GNU getopt_xmds functions   are used outside the GNU libc.  Some additional functionality of the   getopt_xmds functions in GNU libc require this additional work.  */#include <getopt_xmds.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#include <stdio-common/_itoa.h>/* Variable to synchronize work.  */char *__getopt_xmds_nonoption_flags;/* Remove the environment variable "_<PID>_GNU_nonoption_argv_flags_" if   it is still available.  If the getopt_xmds functions are also used in the   application it does not exist anymore since it was saved for the use   in getopt_xmds.  */void__getopt_xmds_clean_environment (char **env){  /* 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.  */  static const char envvar_tail[] = "_GNU_nonoption_argv_flags_=";  char var[50];  char *cp, **ep;  size_t len;  /* Construct the "_<PID>_GNU_nonoption_argv_flags_=" string.  We must     not use `sprintf'.  */  cp = memcpy (&var[sizeof (var) - sizeof (envvar_tail)], envvar_tail,	       sizeof (envvar_tail));  cp = _itoa_word (__getpid (), cp, 10, 0);  /* Note: we omit adding the leading '_' since we explicitly test for     it before calling strncmp.  */  len = (var + sizeof (var) - 1) - cp;  for (ep = env; *ep != NULL; ++ep)    if ((*ep)[0] == '_'	&& __builtin_expect (strncmp (*ep + 1, cp, len) == 0, 0))      {	/* Found it.  Store this pointer and move later ones back.  */	char **dp = ep;	__getopt_xmds_nonoption_flags = &(*ep)[len];	do	  dp[0] = dp[1];	while (*dp++);	/* Continue the loop in case the name appears again.  */      }}#endif	/* USE_NONOPTION_FLAGS */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -