<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/faster_csv.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -147,7 +147,7 @@ class TimelogController &lt; ApplicationController
     
     respond_to do |format|
       format.html { render :layout =&gt; !request.xhr? }
-      format.csv  { send_data(report_to_csv(@criterias, @periods, @hours).read, :type =&gt; 'text/csv; header=present', :filename =&gt; 'timelog.csv') }
+      format.csv  { send_data(report_to_csv(@criterias, @periods, @hours), :type =&gt; 'text/csv; header=present', :filename =&gt; 'timelog.csv') }
     end
   end
   
@@ -202,7 +202,7 @@ class TimelogController &lt; ApplicationController
                                     :include =&gt; [:project, :activity, :user, {:issue =&gt; [:tracker, :assigned_to, :priority]}],
                                     :conditions =&gt; cond.conditions,
                                     :order =&gt; sort_clause)
-          send_data(entries_to_csv(@entries).read, :type =&gt; 'text/csv; header=present', :filename =&gt; 'timelog.csv')
+          send_data(entries_to_csv(@entries), :type =&gt; 'text/csv; header=present', :filename =&gt; 'timelog.csv')
         }
       end
     end</diff>
      <filename>app/controllers/timelog_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -15,8 +15,6 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
-require 'csv'
-
 module IssuesHelper
   include ApplicationHelper
 
@@ -146,8 +144,7 @@ module IssuesHelper
   def issues_to_csv(issues, project = nil)
     ic = Iconv.new(l(:general_csv_encoding), 'UTF-8')    
     decimal_separator = l(:general_csv_decimal_separator)
-    export = StringIO.new
-    CSV::Writer.generate(export, l(:general_csv_separator)) do |csv|
+    export = FCSV.generate(:col_sep =&gt; l(:general_csv_separator)) do |csv|
       # csv header fields
       headers = [ &quot;#&quot;,
                   l(:field_status), 
@@ -197,7 +194,6 @@ module IssuesHelper
         csv &lt;&lt; fields.collect {|c| begin; ic.iconv(c.to_s); rescue; c.to_s; end }
       end
     end
-    export.rewind
     export
   end
 end</diff>
      <filename>app/helpers/issues_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -81,8 +81,7 @@ module TimelogHelper
     ic = Iconv.new(l(:general_csv_encoding), 'UTF-8')    
     decimal_separator = l(:general_csv_decimal_separator)
     custom_fields = TimeEntryCustomField.find(:all)
-    export = StringIO.new
-    CSV::Writer.generate(export, l(:general_csv_separator)) do |csv|
+    export = FCSV.generate(:col_sep =&gt; l(:general_csv_separator)) do |csv|
       # csv header fields
       headers = [l(:field_spent_on),
                  l(:field_user),
@@ -115,7 +114,6 @@ module TimelogHelper
         csv &lt;&lt; fields.collect {|c| begin; ic.iconv(c.to_s); rescue; c.to_s; end }
       end
     end
-    export.rewind
     export
   end
   
@@ -124,8 +122,7 @@ module TimelogHelper
   end
   
   def report_to_csv(criterias, periods, hours)
-    export = StringIO.new
-    CSV::Writer.generate(export, l(:general_csv_separator)) do |csv|
+    export = FCSV.generate(:col_sep =&gt; l(:general_csv_separator)) do |csv|
       # Column headers
       headers = criterias.collect {|criteria| l(@available_criterias[criteria][:label]) }
       headers += periods
@@ -144,7 +141,6 @@ module TimelogHelper
       row &lt;&lt; &quot;%.2f&quot; %total
       csv &lt;&lt; row
     end
-    export.rewind
     export
   end
   </diff>
      <filename>app/helpers/timelog_helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -14,6 +14,13 @@ rescue LoadError
   # RMagick is not available
 end
 
+if RUBY_VERSION &lt; '1.9'
+  require 'faster_csv'
+else
+  require 'csv'
+  FCSV = CSV
+end
+
 REDMINE_SUPPORTED_SCM = %w( Subversion Darcs Mercurial Cvs Bazaar Git Filesystem )
 
 # Permissions</diff>
      <filename>lib/redmine.rb</filename>
    </modified>
    <modified>
      <diff>@@ -95,7 +95,7 @@ module Redmine
         page = nil
         if args.size &gt; 0
           page = Wiki.find_page(args.first.to_s, :project =&gt; @project)
-        elsif obj.is_a?(WikiContent)
+        elsif obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version)
           page = obj.page
         else
           raise 'With no argument, this macro can be called from wiki pages only.'</diff>
      <filename>lib/redmine/wiki_formatting/macros.rb</filename>
    </modified>
    <modified>
      <diff>@@ -180,10 +180,13 @@ class IssuesControllerTest &lt; ActionController::TestCase
   end
   
   def test_index_csv_with_project
+    Setting.default_language = 'en'
+    
     get :index, :format =&gt; 'csv'
     assert_response :success
     assert_not_nil assigns(:issues)
     assert_equal 'text/csv', @response.content_type
+    assert @response.body.starts_with?(&quot;#,&quot;)
 
     get :index, :project_id =&gt; 1, :format =&gt; 'csv'
     assert_response :success</diff>
      <filename>test/functional/issues_controller_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>c3bae6b407445417970bef6c7d657577c0b97403</id>
    </parent>
    <parent>
      <id>27e3fa2bed6bd9ca543d22053c3f1c1eab01e051</id>
    </parent>
  </parents>
  <author>
    <name>Riccardo Cambiassi</name>
    <email>riccardo@headshift.com</email>
  </author>
  <url>http://github.com/bru/redmine/commit/388812df1765769cf422cb52c4b4967acf4bd970</url>
  <id>388812df1765769cf422cb52c4b4967acf4bd970</id>
  <committed-date>2009-11-04T06:35:42-08:00</committed-date>
  <authored-date>2009-11-04T06:35:42-08:00</authored-date>
  <message>Merge branch 'master' of git://github.com/edavis10/redmine</message>
  <tree>6cf8bcbe96f541284f7077abc9c4c2866403cd22</tree>
  <committer>
    <name>Riccardo Cambiassi</name>
    <email>riccardo@headshift.com</email>
  </committer>
</commit>
