]> git.pld-linux.org Git - packages/lftp.git/commitdiff
- rel 3; round to block size per file when doing du
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Mon, 17 Nov 2014 10:56:20 +0000 (11:56 +0100)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Mon, 17 Nov 2014 10:56:20 +0000 (11:56 +0100)
lftp-du-block.patch [new file with mode: 0644]
lftp.spec

diff --git a/lftp-du-block.patch b/lftp-du-block.patch
new file mode 100644 (file)
index 0000000..b137093
--- /dev/null
@@ -0,0 +1,97 @@
+commit beabec486f7ad680c70292384049eb45c5ac081d
+Author: Alexander V. Lukyanov <lavv17f@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;
index 7cf3f461acf49d757cbdef3ee6a9ce0ea7cecaa2..6ec14204774843811c85d56905cd5bc8efd89ef0 100644 (file)
--- 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
 
This page took 0.063295 seconds and 4 git commands to generate.