Index: wp-admin/includes/misc.php
===================================================================
--- wp-admin/includes/misc.php	(revision 26820)
+++ wp-admin/includes/misc.php	(working copy)
@@ -56,26 +56,32 @@
  *
  * @since 1.5.0
  *
- * @param unknown_type $filename
- * @param unknown_type $marker
+ * @param string $filename
+ * @param string $marker
+ * @param object $wp_filesystem
  * @return array An array of strings from a file (.htaccess ) from between BEGIN and END markers.
  */
-function extract_from_markers( $filename, $marker ) {
+function extract_from_markers( $filename, $marker, $wp_filesystem = null ) {
 	$result = array ();
 
-	if (!file_exists( $filename ) ) {
+	if ( null == $wp_filesystem ) {
+		WP_Filesystem();
+		global $wp_filesystem;
+	}
+
+	if ( ! $wp_filesystem->exists( $filename ) ) {
 		return $result;
 	}
 
-	if ( $markerdata = explode( "\n", implode( '', file( $filename ) ) ));
-	{
+	if ( $markerdata = $wp_filesystem->get_contents_array( $filename ) ) {
 		$state = false;
 		foreach ( $markerdata as $markerline ) {
-			if (strpos($markerline, '# END ' . $marker) !== false)
+			$markerline = rtrim( $markerline );
+			if ( "# END {$marker}" === $markerline )
 				$state = false;
 			if ( $state )
 				$result[] = $markerline;
-			if (strpos($markerline, '# BEGIN ' . $marker) !== false)
+			if ( "# BEGIN {$marker}" === $markerline )
 				$state = true;
 		}
 	}
@@ -92,56 +98,63 @@
  *
  * @since 1.5.0
  *
- * @param unknown_type $filename
- * @param unknown_type $marker
- * @param unknown_type $insertion
+ * @param string $filename
+ * @param string $marker
+ * @param array $insertion
+ * @param object $wp_filesystem
  * @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 ) ) {
+function insert_with_markers( $filename, $marker, $insertion, $wp_filesystem = null ) {
+	if ( null == $wp_filesystem ) {
+		WP_Filesystem();
+		global $wp_filesystem;
+	}
+
+	if ( ! $wp_filesystem->exists( $filename ) || $wp_filesystem->is_writable( $filename ) ) {
+		if ( ! $wp_filesystem->exists( $filename ) ) {
 			$markerdata = '';
 		} else {
-			$markerdata = explode( "\n", implode( '', file( $filename ) ) );
+			$markerdata = $wp_filesystem->get_contents_array( $filename );
 		}
 
-		if ( !$f = @fopen( $filename, 'w' ) )
-			return false;
+		$new_markerdata = array();
 
 		$foundit = false;
 		if ( $markerdata ) {
 			$state = true;
 			foreach ( $markerdata as $n => $markerline ) {
-				if (strpos($markerline, '# BEGIN ' . $marker) !== false)
+				$markerline = rtrim( $markerline );
+				if ( "# BEGIN {$marker}" === $markerline )
 					$state = false;
 				if ( $state ) {
-					if ( $n + 1 < count( $markerdata ) )
-						fwrite( $f, "{$markerline}\n" );
-					else
-						fwrite( $f, "{$markerline}" );
+					$new_markerdata[] = $markerline;
 				}
-				if (strpos($markerline, '# END ' . $marker) !== false) {
-					fwrite( $f, "# BEGIN {$marker}\n" );
+				if ( "# END {$marker}" === $markerline ) {
+					$new_markerdata[] = "# BEGIN {$marker}";
 					if ( is_array( $insertion ))
 						foreach ( $insertion as $insertline )
-							fwrite( $f, "{$insertline}\n" );
-					fwrite( $f, "# END {$marker}\n" );
+							$new_markerdata[] = $insertline;
+					$new_markerdata[] = "# END {$marker}";
 					$state = true;
 					$foundit = true;
 				}
 			}
 		}
 		if (!$foundit) {
-			fwrite( $f, "\n# BEGIN {$marker}\n" );
+			$new_markerdata[] = '';
+			$new_markerdata[] = "# BEGIN {$marker}";
 			foreach ( $insertion as $insertline )
-				fwrite( $f, "{$insertline}\n" );
-			fwrite( $f, "# END {$marker}\n" );
+				$new_markerdata[] = $insertline;
+			$new_markerdata[] = "# END {$marker}";
 		}
-		fclose( $f );
-		return true;
-	} else {
-		return false;
+		
+		if( $wp_filesystem->put_contents( $filename, implode( "\n", $new_markerdata ) ) ) {
+			return true;
+		}
+
 	}
+	
+	return false;
 }
 
 /**
