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

📄 putenv.c

📁 早期freebsd实现
💻 C
字号:
/****************************************************************//*								*//*	putenv(3)						*//*								*//*		Change or add an environment entry		*//*								*//****************************************************************//*   origination        1987-Oct-7               T. Holm	*//****************************************************************//*Path: hoptoad!pacbell!ames!ll-xn!mit-eddie!uw-beaver!ssc-vax!uvicctr!tholmFrom: tholm@uvicctr.UUCP (Terrence W. Holm)Newsgroups: comp.os.minixSubject: putenv(3)Message-ID: <395@uvicctr.UUCP>Date: 5 May 88 06:40:52 GMTOrganization: University of Victoria, Victoria B.C. CanadaEFTH Minix report #2  - May 1988 -  putenv(3)This is an implementation of putenv(3) that wewrote for Minix. Please consider this a publicdomain program.*/#include <stdio.h>#define  PSIZE  sizeof(char *)extern  char  **environ;char  *strchr();char  *malloc();/****************************************************************//*								*//*      int							*//*	putenv( entry )						*//*								*//*		The "entry" should follow the form 		*//*		"NAME=VALUE". This routine will search the 	*//*		user environment for "NAME" and replace its 	*//*		value with "VALUE".				*//*								*//*		Note that "entry" is not copied, it is used 	*//*		as the environment entry. This means that it 	*//*		must not be unallocated or otherwise modifed 	*//*		by the caller, unless it is replaced by a 	*//*		subsequent putenv().				*//*								*//*		If the name is not found in the environment, 	*//*		then a new vector of pointers is allocated, 	*//*		"entry" is put at the end and the global 	*//*		variable "environ" is updated.			*//*								*//*		This function normally returns NULL, but -1	*//*		is returned if it can not allocate enough 	*//*		space using malloc(3), or "entry" does not	*//*		contain a '='.					*//*								*//****************************************************************/intputenv( entry )  char *entry;{  unsigned length;  unsigned size;  char     *temp;  char     **p;  char     **new_environ;  /*  Find the length of the "NAME="  */  temp = strchr(entry,'=');  if ( temp == 0 )    return( -1 );  length = (unsigned) (temp - entry + 1);  /*  Scan through the environment looking for "NAME="  */  for ( p=environ; *p != 0 ; p++ )    if ( strncmp( entry, *p, length ) == 0 )      {      *p = entry;      return( 0 );      }  /*  The name was not found, build a bigger environment  */  size = p - environ;  new_environ = (char **) malloc( (size+2)*PSIZE );  if ( new_environ == (char **) NULL )    return( -1 );  memcpy ((char *) new_environ, (char *) environ, size*PSIZE );  new_environ[size]   = entry;  new_environ[size+1] = NULL;  environ = new_environ;  return(0);}

⌨️ 快捷键说明

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