cURL / Mailing Lists / curl-users / Single Mail

curl-users

Re: curl and fallocate

From: Manfred Schwarb <manfred99_at_gmx.ch>
Date: Thu, 22 Jan 2015 11:59:52 +0100

Hi,

follow-up to thread athttp://curl.haxx.se/mail/archive-2014-02/0003.html:

Besides the fact that curl does not pre-allocate disk space (which is debatable),
the issue is that it is not possible at the moment to
externally pre-allocate disk space for files when doing downloads using curl.

Curl does unconditionally truncate zero-sized files even in resume mode,
which seems illogical to me.
May I suggest to not truncate output files in resume mode, in any case?

I.e. something like

--- tool_operate.c.orig 2015-01-22 11:01:39.891897312 +0100
+++ tool_operate.c 2015-01-22 11:12:08.800263622 +0100
@@ -602,15 +602,15 @@ static CURLcode operate_do(struct Global
                config->resume_from = 0;
            }

- if(config->resume_from) {
+ if(config->resume_from || config->resume_from_current) {
  #ifdef __VMS
              /* open file for output, forcing VMS output format into stream
                 mode which is needed for stat() call above to always work. */
- FILE *file = fopen(outfile, config->resume_from?"ab":"wb",
+ FILE *file = fopen(outfile, "ab",
                                 "ctx=stm", "rfm=stmlf", "rat=cr", "mrs=0");
  #else
              /* open file for output: */
- FILE *file = fopen(outfile, config->resume_from?"ab":"wb");
+ FILE *file = fopen(outfile, "ab");
  #endif
              if(!file) {
                helpf(global->errors, "Can't open '%s'!\n", outfile);

Then a work flow like the following would become possible:
   rm -f index.html
   fallocate -n -l 500000 index.html
   ~/software/curl-7.39.0.modified/src/curl -C - -o index.html http://localhost/index.html
   ls -l index.html
   du --block-size=1 index.html
   truncate -rindex.htmlindex.html
   du --block-size=1 index.html

What do you think?

Thanks,
Manfred
-------------------------------------------------------------------
List admin: http://cool.haxx.se/list/listinfo/curl-users
FAQ: http://curl.haxx.se/docs/faq.html
Etiquette: http://curl.haxx.se/mail/etiquette.html
Received on 2015-01-22