request assistance resolving a std.net.curl sementation fault

anonymouse anony at mouse.com
Fri May 19 10:57:56 UTC 2023


What am I doing wrong here?

```D
import std.net.curl: Curl, CurlOption, CurlException;
import std.file: exists;
import std.stdio: File, writefln;
import core.thread: Thread;

void downloadFile(string url, string filename)
{
     while (true) {
         try {
             File fp;
             if (filename.exists())
                 fp.open(filename, "a");
             else
                 fp.open(filename, "w");
             Curl curl;
             curl.initialize();
             curl.onProgress = delegate int(size_t dltotal, size_t 
dlnow, size_t ultotal, size_t ulnow)
             {
                 writefln("Progress: %s of %s", dlnow, dltotal);
                 return 0;
             };
             curl.set(CurlOption.url, url~filename);
             curl.set(CurlOption.resume_from_large, fp.size());

             // Start the download
             curl.set(CurlOption.writedata, &fp);
             curl.perform();

             // Close the file
             fp.close();
             writefln("Download as %s complete.", filename);
             break;
         } catch (CurlException e) {
             writefln("Error while downloading: %s", e.msg);

             // Wait for a bit before retrying
             Thread.sleep(imported!"core.time".seconds(10));
         }
     }
}

void main()
{
     string url = 
"https://downloads.dlang.org/releases/2.x/2.103.1/";
     string filename = "dmd.2.103.1.dmg";

     downloadFile(url, filename);
}
```
Output:
```
./download_file
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
Progress: 0 of 0
zsh: segmentation fault  ./download_file
```

Thanks.

--anonymouse


More information about the Digitalmars-d-learn mailing list