[packages/lftp] - rel 3; round to block size per file when doing du
arekm
arekm at pld-linux.org
Mon Nov 17 11:56:26 CET 2014
commit 5749762bd9070afa6a7b14aeb10606e2c12b82de
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Mon Nov 17 11:56:20 2014 +0100
- rel 3; round to block size per file when doing du
lftp-du-block.patch | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++
lftp.spec | 4 ++-
2 files changed, 100 insertions(+), 1 deletion(-)
---
diff --git a/lftp.spec b/lftp.spec
index 7cf3f46..6ec1420 100644
--- a/lftp.spec
+++ b/lftp.spec
@@ -24,7 +24,7 @@ Summary(pt_BR.UTF-8): Sofisticado programa de transferência de arquivos (client
Summary(zh_CN.UTF-8): lftp 客户端程序
Name: lftp
Version: 4.6.0
-Release: 2
+Release: 3
License: GPL v3+
Group: Applications/Networking
Source0: http://lftp.yar.ru/ftp/%{name}-%{version}.tar.xz
@@ -41,6 +41,7 @@ Patch2: aliases.patch
Patch3: %{name}-pl.po-update.patch
Patch4: lftp-4.3.8-gets.patch
Patch5: %{name}-am.patch
+Patch6: lftp-du-block.patch
URL: http://lftp.yar.ru/
BuildRequires: autoconf >= 2.60
BuildRequires: automake
@@ -99,6 +100,7 @@ o arquivo FEATURES para uma lista mais detalhada.
%patch3 -p1
%patch4 -p1
%patch5 -p1
+%patch6 -p1
%{__rm} po/stamp-po
diff --git a/lftp-du-block.patch b/lftp-du-block.patch
new file mode 100644
index 0000000..b137093
--- /dev/null
+++ b/lftp-du-block.patch
@@ -0,0 +1,97 @@
+commit beabec486f7ad680c70292384049eb45c5ac081d
+Author: Alexander V. Lukyanov <lavv17f at gmail.com>
+Date: Fri Nov 14 20:42:32 2014 +0300
+
+ du: round file sizes up to block size
+
+diff --git a/src/FindJobDu.cc b/src/FindJobDu.cc
+index 822baed..e2e19df 100644
+--- a/src/FindJobDu.cc
++++ b/src/FindJobDu.cc
+@@ -107,6 +107,13 @@ const char *FinderJob_Du::MakeFileName(const char *n)
+ return size_stack.count()>0 ? dir_file(size_stack.last()->dir,n) : n;
+ }
+
++off_t FinderJob_Du::BlockCeil(off_t size) const
++{
++ size+=output_block_size-1;
++ size-=size%output_block_size;
++ return size;
++}
++
+ FinderJob::prf_res FinderJob_Du::ProcessFile(const char *d,const FileInfo *fi)
+ {
+ if(buf->Broken())
+@@ -127,7 +134,7 @@ FinderJob::prf_res FinderJob_Du::ProcessFile(const char *d,const FileInfo *fi)
+ return PRF_OK; /* can't count this one */
+
+ /* add this file to the current dir */
+- long long add = fi->size;
++ long long add = BlockCeil(fi->size);
+ if (file_count)
+ add = 1;
+ if(size_stack.count()>0)
+@@ -137,7 +144,7 @@ FinderJob::prf_res FinderJob_Du::ProcessFile(const char *d,const FileInfo *fi)
+ if(all_files || stack_ptr == -1) {
+ /* this is <, where Pop() is <=, since the file counts in depth */
+ if(max_print_depth == -1 || stack_ptr < max_print_depth)
+- print_size(fi->size, MakeFileName(fi->name));
++ print_size(BlockCeil(fi->size), MakeFileName(fi->name));
+ }
+
+ return PRF_OK;
+@@ -172,7 +179,7 @@ void FinderJob_Du::print_size (long long n_blocks, const char *string)
+ /* We get blocks in bytes, since we don't know the remote system's
+ * block size. */
+ buf->Format("%s\t%s\n",
+- human_readable (n_blocks, buffer, human_opts, 1, output_block_size),
++ human_readable (n_blocks, buffer, human_opts, 1, human_opts?1:output_block_size),
+ string);
+ }
+
+diff --git a/src/FindJobDu.h b/src/FindJobDu.h
+index 9dfbc33..820d79f 100644
+--- a/src/FindJobDu.h
++++ b/src/FindJobDu.h
+@@ -51,6 +51,7 @@ class FinderJob_Du : public FinderJob
+ Ref<ArgV> args;
+
+ void print_size (long long n_blocks, const char *string);
++ off_t BlockCeil(off_t size) const;
+
+ // prepends last directory name
+ const char *MakeFileName(const char *n);
+diff --git a/src/commands.cc b/src/commands.cc
+index b14b71b..20e908f 100644
+--- a/src/commands.cc
++++ b/src/commands.cc
+@@ -2983,6 +2983,7 @@ CMD(du)
+ break;
+ case 'b':
+ blocksize = 1;
++ human_opts = 0;
+ break;
+ case 'c':
+ print_totals=true;
+@@ -3000,18 +3001,18 @@ CMD(du)
+ file_count=true;
+ break;
+ case 'h':
+- blocksize=1;
+- human_opts|=human_autoscale|human_SI|human_base_1024;
++ human_opts |= human_autoscale|human_SI|human_base_1024;
+ break;
+ case 'H':
+- blocksize=1;
+ human_opts |= human_autoscale|human_SI;
+ break;
+ case 'k': /* the default; here for completeness */
+ blocksize = 1024;
++ human_opts = 0;
+ break;
+ case 'm':
+ blocksize = 1024*1024;
++ human_opts = 0;
+ break;
+ case 's':
+ summarize_only = true;
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/lftp.git/commitdiff/5749762bd9070afa6a7b14aeb10606e2c12b82de
More information about the pld-cvs-commit
mailing list