ISO Master

This is the old website, please go to the new website.

27 Oct 2007
1.2 is out. Viewing and editing files works really well. Basically there will be no more new features. All that's left to do is to fix some bug(s) with some weird el torito boot records that no longer work after ISO Master saves them.
Also I'm seriously considering making a windows version. I even started working on it. Turns out the win32 gui toolkit is really nasty. I'm a big fan of the win32 API but I never did GUI programming there. It's so horrible that I may give up and try to build the GTK version to run on windows (like the gimp and abiword).

13 Jul 2007
Found some more features to add to this one first. Working on editing text (or whatever) files from the ISO turns out to be quite a challenge. Every bit of progress that I make reveals some new problem I didn't yet think about. It's good fun anyway, no major headaches yet.

09 Jun 2007
1.0 is out. Amazing effort, I am still shocked at the large number of people who contributed. And I think it's time for me to find a new project :)

11 Apr 2007
ISO Master got it's first real review :) 5 starts out of 5, no less. Still there is a lot more work to do.
For example those several isolinux cds that just won't boot, I have to find the problem with them. And I have to at least attempt unicode filenames before the big 1.0
It still isn't in debian. It's in a queue of some sort, I'm not sure what it's waiting on, probably some reviewer's time.

18 Feb 2007
David sais ISO Master is getting into Debian soon. Very exciting. Of course a reviewer found a security bug, bless him he has no idea how many of those there are :)

14 Feb 2007
Looks like I got symbolic links working. Sadly the code is as ugly as all the rest, but it works. Most of the time :) It can't handle really long targets (over 250 chars) but I can live without that for a while.
I think I'm goint to try and add support for hard links in this version, it seems more important (and easier to do :)) than unicode for RockRidge/Joliet.

11 Jan 2007
0.7 is finally ready. No huge features added (except for i18n) but a lot of little usability improvements. Now I have a part time job and another project to work on so I figured I better release a version now or wait another 2-3 months.

31 Dec 2006
What a bummer, the cached writer I made uses so much CPU that it decreases performance by about x20 even for writing to the hard drive. Shame but at the same time it was an accident waiting to happen (too much potential for data loss). Oh well.

29 Dec 2006
Changed the library to work with more abstract data structures. Files and directories now share the same base. I thought this would simplify sorting a lot, but man was I wrong :) Sorting a linked list with nodes of different sizes turned out to be a two night job, one lousy function. I think it's more complicated than it needs to be but it works, so I'm not touching it again.

17 Dec 2006
Nice, ISO Master is now included in two distributions - Puppy and Gentoo :) And I think Klaus is going to put it into Knoppix (possibly just the DVD cause there might not be any room left on the CD) that's pretty neat.
A guy gave me an account on his 64bit BSD machine so I can test on that. Apparently ISO Master is in the Free BSD ports system already so I don't need to do any porting!
Got a bug report about an iso that will not open. Acronis something, and I found why it won't open - it had the root record inside the volume descriptor with the file identifier 0x01, though ISO9660 sais it should be 0x00. To give those guys an excuse, it took me a while to find where in the spec it sais that :) Section 7.6.2 second bullet.

09 Dec 2006
Well, it wasn't so bad. That Joliet mangling did knock me out after two days of hard work but looks like it's working. Not a bad improvement, I think it took me a couple of months to mangle 9660 :)
Interestingly I even managed to learn a bit about i18n and i think isomaster is now translatable, which is really neat. Will start asking around whether people are interested.
And not least of all version 0.6 is coming out today. Hope I didn't introduce any bugs.

13 Nov 2006
Looks like 0.5 was pretty good, only one bug report about long filenames. The xarchiver guy also wants long filename support for bkisofs so that's what I started working on now.
The task looked impossible when i started but bit by bit it's all coming together. Can now read filenames up to 255 chars in length. Will probably end up adding a dumb RockRidge chunk reading function to deal with the CE. Anyway looks like the hardest part will be the mangling of Joliet names. Not that again! :)
Tried to compile ISO Master on this G4 mac I have at school here, fixed a couple of files in bk and bkisofs now compiles. Unfortunately the state of GTK on OSX is deplorable, so no luck with the gui. Not unexpected.

29 Oct 2006
Version 0.5 is just about out. Couldn't get it to do anything bad. Even edited an image of the fedora dvd. Once i'm done with this release there won't be much progress cause I really need to dedicate more time to my other projects. Still, I feel confident this version is good enough to use for now, doesn't have any critical flaws. I hope!

21 Oct 2006
Fixed more bugs. The xarchiver author was (is?) thinking about using bkisofs for xarchiver. There are now 5 packages for iso master, even gentoo :) Progress is slow as usual but I think i'll have the next release out before the semester ends.

27 Sep 2006
Yay, i think it works now. So finally i can relax on this front and take care of the Mozilla work + homework. This 'work' word is annoying me :) Version 0.4 even had a release candidate that was tested by a volunteer, I guess ISO Master is turning into a real project :)

25 Sep 2006
Well, now i know first-hand what releasing in a hurry doesn. It would crash on pretty much anything but slackware because of bad memory access that i introduced in 0.3, fixed now i think, will have to go all over the place and apologise.

19 Sep 2006
Am releasing 0.3, hoping for some good feedback. Now that boot records are supported the number of applications for iso master has increased significantly. Will have to go around the internet marketing it (looking for people who could use an iso editor for linux).

18 Sep 2006
0.1 was so popular i got 0.2 out the door in the same week. The last couple of weeks I worked my ass off to get the boot record to work. I don't like begging but I had to email complete strangers for help with a project they are not interested in. Took a while but it's all good now. Just have to write up a supplement for el torito now, so nobody goes through this again.
0.3 is around the corner, with some neat new features.

26 Aug 2006
Realese 0.1 went quite well. Got no negative feedback, I guess it's not popular enough :) Submitted the project to freshmeat and got a lot of attention. DJ from the LUG Radio forums made a debina package for me, very nice of him.
Now I'm releaseing 0.2, with some usefull changes to it.

22 Aug 2006
After a lot of work and just as much luck I managed to make a usable version of the GUI. Fixed no less then 3 absolutely horrible bugs. Now the website needs to be updated.

14 Aug 2006
Well i figured i should put a note up here since i'm doing all this great work. Now that the APNG project is complete I have time to work on iso master. Figured that rather then completing the library (boot record support is especially important) i should make a usable GUI for what i've got so far. That's quite a bit as long as you don't want to work with bootable cds or fancy files (i.e. symbolic links).
It's looking good so far. By the end of the summer I am planning to have a working GTK app to work with ISO images. Then I have to update this website to have it easier for people to download + make bug reports, stuff like that.
Don't know how much time I'll have during the fall but the course list doesn't look promising. Still, after a release is out there i can make incremental updates to make it a bit better at a time, no need to spend two weeks working on a shady library function.

04 Jun 2006
Just to let visitors know, I am definitely planning to have a working version before the end of the summer. Possibly wihtout boot record support but with a gui and everything. Yeah.

05 May 2006
Woo! Fixed it, even works on windows now. A little bug in the joliet path tables (which, amazingly, windows actually uses). I feel on top of the world now. What's next, bring it on! Oh, El Torito? I'll take it easy :)
By the way, these two things weren't mentioned in the log so far for some reason: 1) my new systems teacher canceled my project by making it 'object-oriented' back in january, so i had to fork it for school 2) the mangling part is really difficult so i ended up copying much of it from the samba-3.0.21 code which was really easy to read and thus reusable, thanks guys.

25 Mar 2006
While my teachers were on strike I had some time to work on this project. Fixed some serious bugs. Quite horrible actually :) There is still one I know of left but i think i'll leave that for after school. As far as I can tell all of 9660 and RockRidge writing works the way I planned. Windows still has trouble with Joliet.

05 Jan 2006
Haha, mounted an image written by me and it looks perfect :)
I wonder if I'll manage to do any boot record stuff before monday, would be sweet.

04 Jan 2006
Bah I knew it was all school's fault. Spent most of my winter break (and it's not finished yet) working on the project. Lots of progress and i feel great.
Forgetting mangling for now started writing and it's just perfect. Can now do almost all writing 9660 and rockridge (just need to record the root dr location in the volume descriptor). Which means tomorrow i will be able to write a functional image.
Also before the break ends am planning to at least have joliet writing support and if i can filename mangling.
Other 2 major parts of the project are the boot record and the gui. Will probably have to push the deadline back to september if next semester is like the last one (most likely will be worse :).
Was thinking of allowing anonymous svn access to the code but who the hell would want it. If at least there was a gui. I don't know, maybe i'll do it just in case.

14 Nov 2005
No much time indeed. Attempted filename mangling as an actual systems iteration, what a disaster. Still, it was either that or nothing.
Have to design structures to hold data just before it is written. Then I can do both mangling and writing. If my experience with reading is a good example, writing it should not be much more difficult. Will just have to figure out how to write directory records before writing the directories.

10 Oct 2005
It's been a while since the last update because school is taking too much of my precious time. i do not get to work on my project in systems as I hoped. Still, some progress has been made. Can now add, delete and extract files and directories. I have to speed up if I am to finish the project before summer comes. Where am I going to find the time?

02 Sep 2005
Got this to work (in chronological order): deleting a file, extracting a file, extracting a directory (with all contents). Permissions are optionally kept. The structure holding the location on the image may yet be replaced depending on gtk requirements. Next step is deleting a directory. Then I'll try adding stuff and then writing the image. But I'm looking too far ahead.. feels good when things just work :)

27 Aug 2005
Ha! I can read all 3 filename types and posix permissions. svn r12. The new data structures worked ok for reading. Tomorrow will see whether they're any good for modifying.
Boot record looks like a lot of work. I think maybe I should be able to keep an existing boot record and if I have time support creating isolinux bootable cds. I know so little about this stuff I can't be sure. Will leave it for later.

25 Aug 2005
RockRidge is not pretty but at least it looks possible. Realised that the way I keep the directory structure is no good when it comes to changing it. Too many damned references. But then, why do I need to keep it as it is stored on disk? No reason it seems. So now I will be designing a better data structure to hold the information I need.
Tried to put my diagram of the 9660 directory structure on wikipedia (it's a really good diagram I think) but the page there describing how to insert an image is discouragingly long. Maybe when I have nothing else to do.

22 Aug 2005
The El Torito spec is shit. It may be worse then 9660. Got stuck figuring out where the size of the 'no emulation' image is written. If I don't know the size, how can I read it? Possibly the bios knows to stop reading when it gets some special instruction but I'll be damned if I want to mess with those things. Tomorrow will start grinding at RockRidge. Hopefully it's not as bad as I suspect.

20 Aug 2005
Can now read both 9660 and Joliet directory structures. Looks pretty :) that's svn rev 8. SUSP and RockRidge look like a nightmare. It might be easier to figure out El Torito so that's what I'll try to do next. Added the spec to the documentation page.

18 Aug 2005
It was slightly more complicated then I hoped but it seems to work flawlessly on the slackware cd. Don't have the energy to test it on other cds today. In any case svn rev 5 will display the full directory tree with 8.3 filenames.
The extra information used by rockridge/joliet is recorded in the data structures I think so it should be just a matter of parsing it. but it's never that easy :)
In any case I think cleanup time will be coming soon, it's getting harder and harder to find stuff in testread.c

17 Aug 2005
Hehe, C is so nice when it works :) I made a big drawing on a whiteboard of what the directory structure looks like physically. That helped design the data structure for the tree. It's just the coolest thing I've ever done. So simple but fully functional, don't have that feeling that something is artificial. Didn't have the guts to try to see if it works, will do that tomorrow.

13 Aug 2005
Renamed the project to ISO Master before it is too late. Took about 30 minutes :) I seem to have made this site properly because I only had to edit one file, change two strings and voila! New website :) The svn migration took most of the half hour because I had to delete the .svn folders from a checked out copy and delete all not-to-be-versioned files so I could do a `svn import`.
Oh yeah, I found a copy of the ISO9660 standard, 1998 version. I knew someone's gotta keep it on their website.

12 Aug 2005
God dammit. i really hope people don't stray too far from the standard because that would make my life very much more complicated. That stupid document is hard enough to read without worrying about how people may mess up. The slack10.1 image has a boot record before an svd, that's not good but i can live with. What's worse is that not all relevant info in the svd is a copy of the same info in the pvd. Shit.

11 Aug 2005
Using a hex editor and the ecma119 document started to write a test c program to read an image. Using a slackware10.1 image. Things are going ok. Am now able to display information from the pvd which is kinda cool (only because it's something real).

29 July 2005
Before I forget, got an idea for a project name: iso master. Sounds cool and it doesn't seem to be used.

27 July 2005
All the same? Boring? What was I thinking! This is C! Finished the gtk tutorial yesterday. That's really just the very basics. But at least now it is possible to fiddle with more complex topics.
For a few hours I was afraid gtk comes with no file list widget. That thought got me kind of upset since I have no desire to concentrate on the gui toolkit. But then i found out it does have both a filelist (with sorteable columns and all) and a tree. Exactly what I need. Still, learning those will take some time because they are quite complex. Think about it, how do you populate a filelist?
Finished the systems stuff for this semester. Got 100% mark, first time in Seneca. How did that happen..

22 June 2005
Am half-way through the gtk tutorial. All these stupid widget libraries are the same. At least this one is C, hope it won't be as sleep-inducing as java when I need to use it.
Kiso wants me to install libcdio. From reading the description, I now know i will not be doing any low-level stuff for reading :( well at least i can be sure to have a completed application before the deadline. And there is still the writing to do..

18 June 2005
Learned from linuxiso and an email that file-roller has a plugin for isos and there is a kiso app. The guy who told me about kiso said he was looking for a non-kde app, so i don't feel too bad about duplicating work though i felt discouraged for some time :)
Am so ridiculously busy ised will end up being a frontend, would be a real shame since the low-level tinkering is why i chose this project.

20 May 2005
Updated the documentation page. Found an unofficial copy of ISO9660 (hehe).

12 May 2005
Found the original document that was eventually adopted as the ISO9660 standard. It's a good 100 pages, printed it out.
John suggested that I may be planning too low-level, sais all this functionality already exists in linux. So I looked at the fs/isofs directory in the linux source code. Mkisofs is no longer maintained but I think the cdrtools guys may have taken over the project.
Looking at the kernel isofs files I'd say it's all inherently read-only. I should do my best to study how it works anyway, since it supports ISO9660 and all the fancy extentions.

10 May 2005
Yesterday got the go-ahead for the project from my systems teachers. That's good news, I was afraid that the lack of a database or web interface might cause a problem.
At this time the project is in the gathering requirements stage while I spend my time trying to figure out where to start.
Have a problem already :) can't find a free copy of the ISO9660 standard. ISO wants 200$ for it and I have no desire to pay. I will of course if I have no choice, but hope not.
Today will spend some time working on this site. god I wish I had a better eye for colours.

Help Wanted