fopen() fails when trying to open file stored in iCloud Drive

I have a collection of .pcap files in iCloud Drive that I need to parse using low level C APIs.

To open the file, I need to use fopen(). However, it appears that when the file hasn't been downloaded/sync'ed, meaning it's in iCloud but not yet on disk, then fopen() fails with "No such file or directory."

I thought fetching the file from iCloud would be transparent to any file system APIs, including low-level C APIs, when trying to open the file, but that doesn't seem to be the case.

If I use NSOpenPanel first to choose the file from iCloud Drive and then pass the path to fopen(), it works because NSOpenPanel triggers the file's download. But, in the scenario I'm testing, I'm trying to drag and drop the file from Finder, retrieving the path to the file from the pasteboard, and passing it to fopen(), but that doesn't work unless the file has already been sync'ed/downloaded from iCloud.

What would be the right way to ensure that fopen() works with files stored in iCloud Drive?

Thanks,
Adrian
Answered by DTS Engineer in 659292022
What you need to do here is a coordinated read per NSFileCoordinator.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@apple.com"
Accepted Answer
What you need to do here is a coordinated read per NSFileCoordinator.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@apple.com"
Thank you, Quinn. That was exactly what needed to be done.

Adrian
fopen() fails when trying to open file stored in iCloud Drive
 
 
Q