All pastes #645326 Raw Edit

yini

public php v1 · immutable
#645326 ·published 2007-08-04 12:48 UTC
rendered paste body
<?phpfunction YINI_parse($filename){	if(($file = fopen($filename,"r")))	{		$curtag = "";		$parse = array();		while($string = fgets($file))		{			$string = str_replace(array("\r","\n"),"",$string);			$len = strlen($string);						$pos = strpos($string,"=");			if($pos === false)			{				if($string{0} == "[" and $string{$len - 1} == "]")					$curtag = substr($string,1,$len-2);			} else $parse[$curtag][substr($string,0,$pos)] = substr($string,$pos + 1);		}		fclose($file);		return $parse;	}	return false;}function YINI_get($filename,$tag,$key){	if(($file = fopen($filename,"r")))	{		$curtag = "";		$parse = array();		while($string = fgets($file))		{			$string = str_replace(array("\r","\n"),"",$string);			$len = strlen($string);						$pos = strpos($string,"=");			if($pos === false)			{				if($string{0} == "[" and $string{$len - 1} == "]")					$curtag = substr($string,1,$len-2);			} else if($curtag == $tag and $key == substr($string,0,$pos))			{				fclose($file);				return substr($string,$pos + 1);			}		}		fclose($file);	}	return false;}function YINI_set($filename,$tag,$key,$value){	if(($file = fopen($filename,"r")) and ($tmp = tmpfile()))	{		$parse = array();		$intag = false;		$set = false;		while($string = fgets($file))		{			$string = str_replace(array("\r","\n"),"",$string);			$len = strlen($string);						$pos = strpos($string,"=");			if($pos === false)			{				if($string{0} == "[" and $string{$len - 1} == "]")				{					if(substr($string,1,$len-2) == $tag) $intag = true;					else if($intag)					{						if(!$set)						{							fwrite($tmp,$key."=".$value."\r\n");							$set = true;						}					} else $intag = false;					fwrite($tmp,$string."\r\n");				}			} else if($intag and $key == substr($string,0,$pos))			{				fwrite($tmp,$key."=".$value."\r\n");				$set = true;			} else fwrite($tmp,$string."\r\n");		}		fclose($file);		if(!$set)		{			if($intag) fwrite($tmp,$key."=".$value."\r\n");			else fwrite($tmp,"[".$tag."]\r\n".$key."=".$value."\r\n");		}		fseek($tmp, 0);		if(($file = fopen($filename,"w")))		{			while($string = fgets($tmp)) fwrite($file,$string);			fclose($file);			fclose($tmp);			return true;		}		fclose($tmp);	}	return false;}function YINI_isset($filename,$tag,$key){	if(($file = fopen($filename,"r")))	{		$curtag = "";		$parse = array();		while($string = fgets($file))		{			$string = str_replace(array("\r","\n"),"",$string);			$len = strlen($string);						$pos = strpos($string,"=");			if($pos === false)			{				if($string{0} == "[" and $string{$len - 1} == "]")					$curtag = substr($string,1,$len-2);			} else if($curtag == $tag and $key == substr($string,0,$pos))			{				fclose($file);				return true;			}		}		fclose($file);	}	return false;}function YINI_unset($filename,$tag,$key){	if(($file = fopen($filename,"r")) and ($tmp = tmpfile()))	{		$parse = array();		$intag = false;		$set = false;		while($string = fgets($file))		{			$string = str_replace(array("\r","\n"),"",$string);			$len = strlen($string);						$pos = strpos($string,"=");			if($pos === false)			{				if($string{0} == "[" and $string{$len - 1} == "]")				{					if(substr($string,1,$len-2) == $tag) $intag = true;					else if($intag)					{						if(!$set)						{							fclose($file);							fclose($tmp);							return false;						}					} else $intag = false;					fwrite($tmp,$string."\r\n");				}			} else if($intag and $key == substr($string,0,$pos))			{				$set = true;			} else fwrite($tmp,$string."\r\n");		}		fclose($file);		if(!$set)		{			fclose($tmp);			return false;		}		fseek($tmp, 0);		if(($file = fopen($filename,"w")))		{			while($string = fgets($tmp)) fwrite($file,$string);			fclose($file);			fclose($tmp);			return true;		}		fclose($tmp);	}	return false;}?>