CAO: A Bug Fix

A quick mention that CAO (“Composition-At-Once”) has been updated to fix a mildly serious bug.

CAO turns standalone FLACs into single-file ‘superFLACs’ with an embedded cuesheet, so you still know within the one big file where all the separate tracks are meant to start and finish. CAO can also use that same information to split a superFLAC apart back into its constituent single-file FLACs. It’s an important design requirement of CAO, in other words, that it should always be completely reversible: what it joins together, it should be able to split apart later, should the user so desire.

Well, CAO fulfils that goal admirably… unless you are running on Windows! I don’t run on Windows, so I tend to forget that Windows is cursed with an almost-hopeless file system that cannot cope with much of what counts as the English language for most people. In other words, it cannot store files which have names that contain ‘illegal characters’ such as colons and question marks.

And I had overlooked this not-so-minor limitation! In other words, if you had used my CCDT tagger to set the title for a track to ‘Who me? Surely: you cannot be serious!‘, CCDT would have tagged the file exactly as you see it there, question marks and colons included, but it would have made the physical file name ‘NTFS-safe’ and turned the physical file name into ‘Who me_ Surely_ you cannot be serious!.flac‘ -the ‘illegal characters’ would have been replaced by underscores (and, bizarrely, exclamation marks are not considered illegal by NTFS!) But with CAO, I forgot this detail.

So, let’s say you start with two files, called ‘Ahimé?.flac’ and ‘Cielo? Ma: non!.flac’, both belonging to an album called ‘Questions?’. You run CAO to join these two files together. No drama: CAO creates a single new file called Questions_.flac, with an NTFS-safe physical file name, containing an embedded cuesheet describing the two constituent ‘sub-files’. No problems and everything works fine.

But if you then tried to reverse the process and ran the command cao ––asunder, on an NTFS file system, the split apart process would have failed -because, directed by the cuesheet that knows that file one should be called ‘Ahimé?’, CAO would try to create a physical file called ‘Ahime?.flac’… and the question mark would not be permitted. On a ‘proper’ file system such as ZFS or ext4, the extra punctuation characters don’t cause problems, so CAO splitting of a superFLAC would have worked fine (which is why I didn’t notice the problem before now!) But on NTFS, the extraction would fail. My own specific situation is that I copy my music files to a SAMBA share (so the music can be played all over the house): and question marks and colons (and other characters) prevent you copying a file to even a SAMBA share that is hosted on a Linux box running on ZFS. SAMBA itself steps in to declare such characters illegal, too. Which is why this is a problem even for entirely Linux-running households!

Anyway, long story short, version  1.09 of CAO now makes all physical file names NTFS (and SAMBA!) safe, whether combining single-file FLACs into a superFLAC or splitting a superFLAC back into its constituent files. If you use Windows, or USB drives formatted with FAT32 or NTFS, or SAMBA to share files around a network… you need the new updated version of CAO quite urgently!

As ever, updates to CAO are best and most easily achieved by running cao ––checkver, if you already are running a reasonably recent version. Failing that, type these three commands:

bash abc_installer --cao

Or, if you prefer, simply download the script and install it manually.

Leave a Reply

Your email address will not be published. Required fields are marked *