### Eclipse Workspace Patch 1.0
#P wordpress-trunk
Index: wp-admin/includes/misc.php
===================================================================
--- wp-admin/includes/misc.php	(revision 17562)
+++ wp-admin/includes/misc.php	(working copy)
@@ -65,50 +65,59 @@
  * @return bool True on write success, false on failure.
  */
 function insert_with_markers( $filename, $marker, $insertion ) {
-	if (!file_exists( $filename ) || is_writeable( $filename ) ) {
-		if (!file_exists( $filename ) ) {
-			$markerdata = '';
-		} else {
-			$markerdata = explode( "\n", implode( '', file( $filename ) ) );
-		}
+	$file_exists = file_exists( $filename );
 
-		if ( !$f = @fopen( $filename, 'w' ) )
+	if (!$file_exists) {
+		$r = @file_put_contents( $filename, '' );
+		if ( false  === $r )
 			return false;
+		chmod( $filename, FS_CHMOD_FILE );
+		$lines = array();
+	} else {
+		$lines = file( $filename, FILE_IGNORE_NEW_LINES );
+	}
 
-		$foundit = false;
-		if ( $markerdata ) {
-			$state = true;
-			foreach ( $markerdata as $n => $markerline ) {
-				if (strpos($markerline, '# BEGIN ' . $marker) !== false)
-					$state = false;
-				if ( $state ) {
-					if ( $n + 1 < count( $markerdata ) )
-						fwrite( $f, "{$markerline}\n" );
-					else
-						fwrite( $f, "{$markerline}" );
-				}
-				if (strpos($markerline, '# END ' . $marker) !== false) {
-					fwrite( $f, "# BEGIN {$marker}\n" );
-					if ( is_array( $insertion ))
-						foreach ( $insertion as $insertline )
-							fwrite( $f, "{$insertline}\n" );
-					fwrite( $f, "# END {$marker}\n" );
-					$state = true;
-					$foundit = true;
-				}
-			}
+	if ( !is_writable($filename) )
+		return false;
+
+	$marker_begin = "# BEGIN $marker";
+	$marker_end = "# END $marker";
+	$buffer = array();
+	$foundit = array();
+	$state = true;
+	foreach ($lines as $line) {
+		if ( false !== strpos( $line, $marker_begin ) )
+			$state = false;
+		if ( $state )
+			$buffer[] = $line;
+		if ( false !== strpos( $line, $marker_end ) ) {
+			$foundit[] = count( $buffer );
+			$buffer[] = ''; # placeholder
 		}
-		if (!$foundit) {
-			fwrite( $f, "\n# BEGIN {$marker}\n" );
-			foreach ( $insertion as $insertline )
-				fwrite( $f, "{$insertline}\n" );
-			fwrite( $f, "# END {$marker}\n" );
-		}
-		fclose( $f );
-		return true;
+	}
+
+	if ( 0 === count( $foundit ) ) {
+		$foundit[] = count( $buffer );
+		$buffer[] = ''; # placeholder
 	} else {
+		// backwards compat: non array insertions are ignored if markers were found
+		// @todo this should be streamlined
+		if (!is_array($insertion))
+			$insertion = array();
+	}
+
+	array_unshift($insertion, $marker_begin );
+	$insertion[] = $marker_end;
+	$insertion = implode( "\n", $insertion );
+	
+	foreach( $foundit as $index )
+		$buffer[$index] = $insertion;
+	$buffer = implode( "\n", $buffer);
+
+	if ( false === @file_put_contents( $filename, $buffer) )
 		return false;
-	}
+
+	return true;
 }
 
 /**
