Menu

Tree [163c0c] master /
 History

HTTPS access


File Date Author Commit
 CHANGES.txt 2016-03-18 Nutchanon Wetchasit Nutchanon Wetchasit [576ff6] adding support for displaying current volume label
 COPYING.txt 2014-08-21 Nachanon Vetjasit Nachanon Vetjasit [8f423e] Initial commit
 ISOLABEL.txt 2016-03-18 Nutchanon Wetchasit Nutchanon Wetchasit [d1ed5d] updating manual page for label viewing usage
 LICENSE.txt 2016-03-18 Nutchanon Wetchasit Nutchanon Wetchasit [76c6a6] updating author name
 Makefile 2016-03-18 Nutchanon Wetchasit Nutchanon Wetchasit [76c6a6] updating author name
 Makefile.bcc 2016-03-18 Nutchanon Wetchasit Nutchanon Wetchasit [76c6a6] updating author name
 Makefile.iconv 2016-03-18 Nutchanon Wetchasit Nutchanon Wetchasit [0a9ccb] adding build support for external libiconv
 README.txt 2016-03-18 Nutchanon Wetchasit Nutchanon Wetchasit [f8565a] updating README for new usage and external icon...
 autogen.sh 2016-03-18 Nutchanon Wetchasit Nutchanon Wetchasit [76c6a6] updating author name
 isolabel.1 2016-03-18 Nutchanon Wetchasit Nutchanon Wetchasit [d1ed5d] updating manual page for label viewing usage
 isolabel.c 2016-03-18 Nutchanon Wetchasit Nutchanon Wetchasit [163c0c] updating help screen heading to include label v...

Read Me

isolabel is a simple volume label viewer and editor for ISO 9660 image file,
which allows you to view and change volume label of ISO 9660 (*.iso) image
after it was already authored.

Moreover, you can edit ISO 9660 and Joliet volume label separately, taking
advantage of fancy names in Joliet together with simpler, but longer name
in ISO 9660; something that tools like mkisofs/genisoimage
<https://alioth.debian.org/projects/debburn> does not allow you to do in
standard compliant way.

Currently, isolabel is written in ANSI C, with no external library dependency
requirement, thus portable to all platform with ANSI C compiler and library.

Project website: http://isolabel.sourceforge.net/

Contents
--------
1. Background
2. Principle of Operation
3. Installation
   3.1 System Requirement
   3.2 Compiling
   3.3 Installing
   3.4 Uninstalling
4. Running
5. Author


1. BACKGROUND
=============

This program was originally written because mkisofs/genisoimage didn't allow
me to set ISO 9660 and Joliet volume label separately. So when I tried to use
a fancy volume label (optimized for Joliet), ISO 9660 label became unreadable
on some systems. When I tried to use a primitive but longer volume label
(optimized for ISO 9660), Joliet label became truncated, much to my
frustration.

Proprietary Nero <http://www.nero.com/> and ImgBurn <http://www.imgburn.com/>
allows ISO 9660 and Joliet volume label to be specified separately, and in
standard standard compliant way. So I decided to roll my own workaround
for adding this functionality into mkisofs/genisoimage workflow.


2. PRINCIPLE OF OPERATION
=========================

To view or change a volume label of ISO 9660 image, isolabel open the
image file and search for volume descriptors at sector 16 onwards
(assuming 2048 bytes/sector).

If it's plain ISO 9660 label operation, isolabel will search until found a
sector with first byte equals to 0x01 (a primary volume descriptor), bytes at
offset 40 to 71 of that sector (volume identifier) will be displayed
(if requested); or replaced by the new ISO 9660 volume label, padded
to the right with spaces (byte 0x20), and re-written to the image file.

If it's a Joliet extension label change, isolabel will search until found a
sector with first byte equals to 0x02 (a supplementary volume descriptor)
*and* value of bytes at offset 88, 89, 90 equals to 0x25,0x2F,0x40 or
0x25,0x2F,0x43 or 0x25,0x2F,0x45, then bytes at offset 40 to 71 of that sector
will converted from big-endian UCS-2 to local character encoding and displayed
(if requested); or replaced by the new Joliet volume label, padded to the right
with spaces (volume label and spaces are encoded using big-endian UCS-2), then
re-written to the image file.

But if a sector with first byte equals to 0xFF was found before the desired
sector, it means that volume descriptors list was ended and the desired volume
descriptor cannot be found; isolabel will exit with failure status.

Further reading:
 - ECMA-119 (a.k.a. ISO 9660) specification
     <http://www.ecma-international.org/publications/standards/Ecma-119.htm>
 - Microsoft Joliet specification
     <ftp://ftp.microsoft.com/developr/drg/multimedia/Joliet/Joliet-RTF.rtf>


3. INSTALLATION
===============

3.1 System Requirement
----------------------
isolabel should run on any platform that have a C compiler.

For source version of isolabel; to use it you'd need:
 - C Compiler (that could compile at least ANSI C89)
 - Make (optional)

For Unix-like platform, '--joliet' option of isolabel will make use of iconv()
function to allow non-Latin 1 characters in Joliet volume label. On Windows
platform, it will use Windows API to provide this functionality. On other
system, only Latin 1 characters are allowed due to limited built-in converter.

This program have been tested using GNU C Compiler (GCC) 4.3.2, GNU Make 3.81
and ran on Debian GNU/Linux 5.0 i386. For Windows (native win32) port,
tested using Borland C Compiler 5.5, and ran on Microsoft Windows XP SP3.

Note: if you've just checked out isolabel from git repository,
      you also need to run this command in source directory before proceeding
      to the next step:
        $ ./autogen.sh

3.2 Compiling
-------------
To compile isolabel on Unix-like system, run this command in source directory

  $ make

This will produce an executable named 'isolabel' in the source directory.
Then proceed to the 'Installing' step to install it on your system.

Note: If you got an "undefined reference to 'libiconv_open'" or similar error,
your system might use an external libiconv for iconv() support. (Especially
if you're using Cygwin or other system that's not GNU/Linux) In that case you
could try compiling isolabel using 'make -f Makefile.iconv' instead.

To compile isolabel on Microsoft Windows system (e.g. with Borland C Compiler),
run this command in source directory

  :\> make -f Makefile.bcc

This will produce an executable named 'isolabel.exe' in the source directory.
Then you can manually copy 'isolabel.exe' to your desired installation
location. (Skip the 'Installing' step)

Alternatively, in case you didn't have the Make program, you can use your
platform's C compiler to compile 'isolabel.c' directly. Then you manually copy
the executable to desired location. (Skip the 'Installing' step)

3.3 Installing
--------------
If you wanted to install isolabel system-wide on Unix-like system,
use this command (as root):

  # make install

This will install isolabel binary to /usr/local/bin.

Alternatively, in case you need to install it just for yourself (like ~/bin),
prepend PREFIX=... in front of 'install' and it will place the binary in
'bin' subfolder (and manual page to 'share/man' subfolder) of your prefix.
Also you didn't need to be root to install it.

This example will install isolabel to your home folder (~/bin):

  $ make PREFIX=~ install

Note: If you previously used 'make -f Makefile.iconv' for compiling isolabel,
replace plain 'make' in installation commands with 'make -f Makefile.iconv'.

3.4 Uninstalling
----------------
To uninstall (on Unix-like system), you just need to do the same step as
installation, but change 'install' word to 'uninstall'.


4. RUNNING
==========

After you finished installation, you could run this command
to see available command line switches:

  $ isolabel --help

See ISOLABEL.txt for detailed usage, bugs and catches.
If you installed this on Unix-like system, you can view that documentation via
system's manual page viewer (e.g. using 'man isolabel').


5. AUTHOR
=========
isolabel is written by Nutchanon Wetchasit,
released as Free Software under GNU GPL.
For legal information, see LICENSE.txt
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.