Added set_staus_header
diff --git a/system/libraries/Output.php b/system/libraries/Output.php
index 88a3046..2263fdf 100644
--- a/system/libraries/Output.php
+++ b/system/libraries/Output.php
@@ -94,7 +94,7 @@
 	}

 

 	// --------------------------------------------------------------------

-		

+

 	/**

 	 * Set Header

 	 *

@@ -107,9 +107,55 @@
 	 * @param	string

 	 * @return	void

 	 */	

-	function set_header($header)

+	function set_header($header, $replace = TRUE)

 	{

-		$this->headers[] = $header;

+		$this->headers[] = array($header, $replace);

+	}

+

+	// --------------------------------------------------------------------

+	

+	/**

+	 * Set HTTP Status Header

+	 *

+	 * @access	public

+	 * @param	int 	the status code

+	 * @param	string	

+	 * @return	void

+	 */	

+	function set_status_header($code, $text='')

+	{		

+		if ( ! in_array($code, array(200, 304, 401, 404)) AND $text == '')

+		{

+			show_error('You must submit a status message and a status code');

+		}

+	

+		if ($text == '')

+		{

+			switch($code)

+			{

+				case 200:	$text = 'OK';

+					break;

+				case 304:	$text = 'Not Modified';

+					break;

+				case 401:	$text = 'Unauthorized';

+					break;

+				case 404:	$text = 'Not Found';

+					break;

+			}

+		}

+	

+		if (substr(php_sapi_name(), 0, 3) == 'cgi')

+		{

+			@header("Status: {$code} {$text}", TRUE);

+		}

+		elseif ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1' OR $_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.0')

+		{

+			@header($_SERVER['SERVER_PROTOCOL']." {$code} {$text}", TRUE, $code);

+		}

+		else

+		{

+			@header("HTTP/1.1 {$code} {$text}", TRUE, $code);

+		}

 	}

 	

 	// --------------------------------------------------------------------

@@ -183,7 +229,7 @@
 

 		// Parse out the elapsed time and memory usage,

 		// then swap the pseudo-variables with the data

-				

+

 		$elapsed = $BM->elapsed_time('total_execution_time_start', 'total_execution_time_end');		

 		$output = str_replace('{elapsed_time}', $elapsed, $output);

 		

@@ -211,7 +257,7 @@
 		{

 			foreach ($this->headers as $header)

 			{

-				@header($header);

+				@header($header[0], $header[1]);

 			}

 		}		

 

@@ -296,7 +342,7 @@
 		

 		$cache_path .= md5($uri);

 

-		if ( ! $fp = @fopen($cache_path, 'wb'))

+		if ( ! $fp = @fopen($cache_path, FOPEN_WRITE_CREATE_DESTRUCTIVE))

 		{

 			log_message('error', "Unable to write cache file: ".$cache_path);

 			return;

@@ -342,7 +388,7 @@
 			return FALSE;

 		}

 	

-		if ( ! $fp = @fopen($filepath, 'rb'))

+		if ( ! $fp = @fopen($filepath, FOPEN_READ))

 		{

 			return FALSE;

 		}