# HG changeset patch # User ertzing # Date 1177080073 25200 # Node ID 1aabbe15006fd5c6d4179f55c799534bdc3febf5 # Parent 1f78881a5f3ce0acc9ae794395853b70c2bc82ca [svn] - Add a useful vfs_fsize() implementation to curl diff -r 1f78881a5f3c -r 1aabbe15006f ChangeLog --- a/ChangeLog Fri Apr 20 06:51:44 2007 -0700 +++ b/ChangeLog Fri Apr 20 07:41:13 2007 -0700 @@ -1,3 +1,12 @@ +2007-04-20 13:51:44 +0000 Ralf Ertzinger + revision [2072] + + - Make flacng use vfs_fsize() + + trunk/src/flacng/seekable_stream_callbacks.c | 34 +++++++++------------------ + 1 file changed, 12 insertions(+), 22 deletions(-) + + 2007-04-20 13:50:15 +0000 Ralf Ertzinger revision [2070] diff -r 1f78881a5f3c -r 1aabbe15006f src/curl/curl.c --- a/src/curl/curl.c Fri Apr 20 06:51:44 2007 -0700 +++ b/src/curl/curl.c Fri Apr 20 07:41:13 2007 -0700 @@ -941,7 +941,35 @@ off_t curl_vfs_fsize_impl(VFSFile * file) { - return -1; + CurlHandle *handle = file->handle; + + if (handle->length == -1) + { + if (!handle->thread) + { + // We need a HEAD to find out the length + handle->no_data = 1; + if (DEBUG_CONNECTION) + g_print("Request for head info\n"); + curl_manage_request(handle); + if (DEBUG_CONNECTION) + g_print("Completed\n"); + handle->no_data = 0; + } + else + { + // Wait a bit? + } + } + + if (handle->length <= 0) + { + if (DEBUG_SEEK) + g_print("Tried to get the length of a file with unknown length\n"); + // don't know how long it is... + return -1; + } + return handle->length; } gchar *