From af207e6cd8ea27b58a0e82f720d0fe75a33cd76b Mon Sep 17 00:00:00 2001
From: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
Date: Sun, 3 Oct 2010 13:31:58 +0000
Subject: [PATCH] 2010-10-03  Tatsuhiro Tsujikawa 
 <t-tujikawa@users.sourceforge.net>

	Print message when performing slow file allocation at first time.
	* src/SingleFileAllocationIterator.cc
	* src/SingleFileAllocationIterator.h
---
 ChangeLog                           |  6 ++++++
 src/SingleFileAllocationIterator.cc | 23 ++++++++++++++++++++---
 src/SingleFileAllocationIterator.h  |  3 +++
 3 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d3e3f404..d93be9bf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-10-03  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Print message when performing slow file allocation at first time.
+	* src/SingleFileAllocationIterator.cc
+	* src/SingleFileAllocationIterator.h
+
 2010-10-02  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Fixed compile error on OpenBSD4.7(i386). In openssl.m4, we first
diff --git a/src/SingleFileAllocationIterator.cc b/src/SingleFileAllocationIterator.cc
index 019c2ce7..96d91f76 100644
--- a/src/SingleFileAllocationIterator.cc
+++ b/src/SingleFileAllocationIterator.cc
@@ -33,18 +33,28 @@
  */
 /* copyright --> */
 #include "SingleFileAllocationIterator.h"
+
+#include <cstring>
+#include <cstdlib>
+
 #include "BinaryStream.h"
 #include "util.h"
 #include "a2io.h"
-#include <cstring>
-#include <cstdlib>
+#include "Logger.h"
+#include "LogFactory.h"
 
 namespace aria2 {
 
 #define BUFSIZE (256*1024)
 #define ALIGNMENT 512
 
-SingleFileAllocationIterator::SingleFileAllocationIterator(BinaryStream* stream, off_t offset, uint64_t totalLength):stream_(stream), offset_(offset), totalLength_(totalLength), buffer_(0)
+SingleFileAllocationIterator::SingleFileAllocationIterator
+(BinaryStream* stream, off_t offset, uint64_t totalLength):
+  stream_(stream),
+  offset_(offset),
+  totalLength_(totalLength),
+  buffer_(0),
+  logger_(LogFactory::getInstance())
 {
   if(offset_%ALIGNMENT != 0) {
     stream_->disableDirectIO();
@@ -62,6 +72,13 @@ SingleFileAllocationIterator::~SingleFileAllocationIterator()
 
 void SingleFileAllocationIterator::init()
 {
+  static bool noticeDone = false;
+  if(!noticeDone) {
+    noticeDone = true;
+    logger_->notice("Allocating disk space. Use --file-allocation=none to"
+                    " disable it. See --file-allocation option in man page for"
+                    " more details.");
+  }
 #ifdef HAVE_POSIX_MEMALIGN
   buffer_ = reinterpret_cast<unsigned char*>
     (util::allocateAlignedMemory(ALIGNMENT, BUFSIZE));
diff --git a/src/SingleFileAllocationIterator.h b/src/SingleFileAllocationIterator.h
index 11df3b6d..3efc0d9e 100644
--- a/src/SingleFileAllocationIterator.h
+++ b/src/SingleFileAllocationIterator.h
@@ -40,6 +40,7 @@
 namespace aria2 {
 
 class BinaryStream;
+class Logger;
 
 class SingleFileAllocationIterator:public FileAllocationIterator
 {
@@ -51,6 +52,8 @@ private:
   uint64_t totalLength_;
 
   unsigned char* buffer_;
+
+  Logger* logger_;
 public:
   SingleFileAllocationIterator(BinaryStream* stream, off_t offset, uint64_t totalLength);