CFileCurl::Exists always returns true, with an FTP address

  Thread Rating:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Post Reply
mbuchoff Offline
Junior Member
Posts: 32
Joined: Jun 2007
Reputation: 0
Post: #1
This patch fixes it. Let me know how to clean it up and what else needs to be done so it can get accepted.

For simplicity, here is the old and new code:
Old: http://pastebin.com/pastebin.php?dl=m5c36b752
New: http://pastebin.com/pastebin.php?dl=ma05d1ab

Thanks.
find quote
mbuchoff Offline
Junior Member
Posts: 32
Joined: Jun 2007
Reputation: 0
Post: #2
I just updated it on Tracker, sorry about that.

For convenience:
old
new
(This post was last modified: 2008-11-04 16:46 by mbuchoff.)
find quote
jmarshall Offline
Team-XBMC Developer
Posts: 26,181
Joined: Oct 2003
Reputation: 175
Post: #3
Thanks for the patch - can you perhaps detail why it was failing in the trac ticket?

Thanks!
Jonathan

Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.


[Image: badge.gif]
find quote
mbuchoff Offline
Junior Member
Posts: 32
Joined: Jun 2007
Reputation: 0
Post: #4
Of course...

If CFileCurl::Exists is called on a HTTP address, g_curlinterface.easy_perform returns CURLE_HTTP_RETURNED_ERROR when the file doesn't exist. It returns CURLE_WRITE_ERROR if the http file does exist (since a write was called with a null write-buffer). Unfortunately, when dealing with an FTP file, it returns CURLE_WRITE_ERROR regardless of whether the file exists. Therefore, I needed to add a check when getting the content length to see what the content length was... if the file exists the length is at least zero (even with a file with no content), but if it fails, the length is -1.

I'm sure there is a more elegant way to do this, but I am a libCurl n00b.
find quote