views:

290

answers:

4

Are there any good free C/C++ libraries that enable reading from common devices with filesystems such as UDF, and ISO9660 and extracting files/metadata etc.?

So far all I've been able to find is GNUs libcdio which is promising, and some "Magic UDF" which has so many hits I'm disgusted, pushes other results in Google, and comes with a pretty extreme looking price tag.

Cross-platform support is preferable (personal preference of course), and Windows compatibility is an unfortunate requirement. The less restrictive the license, the better, I have yet to investigate how compatible libcdio's GPLv3 license is.

Note this question is still open, I'll accept another answer if someone locates such a library.

A: 

See: http://www.thefreecountry.com/sourcecode/cpp.shtml

luizleroy
I cannot find anything related there, at least not by searching for text "ISO", "UDF" or "9660".
Ringding
Free, but nothing related to UDF, ISO, or any other image formats.
Matt Joiner
A: 

There are a lot of open source library for this but reliability is question.

On Windows You can use Image Mastering API. It comes with Window SDK , Work on both XP & Vista

http://msdn.microsoft.com/en-us/library/aa364806%28VS.85%29.aspx

sat
It appears IMAPI is for burning and creating images only. It doesn't open existing images or devices.
Matt Joiner
A: 

7-Zip supports extracting files from UDF and ISO disk images, and is mostly LGPL licensed. Specifically, the UDF implementation code appears to be in CPP/7zip/Archive/Udf/UdfIn.cpp.

bk1e
The 7z program appears to tap into COM, but there are is no actual UDF implementation code in the library.
Matt Joiner
@Anacrolix: The COM component it uses is part of the 7-Zip source tree.
bk1e
+2  A: 

After extensive investigation, I ended up rolling my own solution to perform the operations on UDF that I required. I'm unable to open the source, in all it was about 800 lines of C++. However here are several links which got me through:

A few words of warning: Previous experience implementing ISO9660/ECMA-119 helped me significantly. Knowledge of how block devices operate and interface with the operating system is helpful. Information surrounding the physical layout and separation of sessions is somewhat mythical and difficult to grok.

Matt Joiner