[iso] Syslinux support improvements

* Allow the use of vanilla Syslinux by creating a /syslinux.cfg
  that references isolinux.cfg
* Fix #40 and #42
* Workaround for #44 by search and replace of ISO label in .cfg
* ISO9660 Joliet fixes
This commit is contained in:
Pete Batard 2012-02-21 00:08:31 +00:00
parent 3e51ed7160
commit f5939d18ab
6 changed files with 259 additions and 208 deletions

View file

@ -303,24 +303,26 @@ bool cdio_charset_to_utf8(char *src, size_t src_len, cdio_utf8_t **dst,
if (src == NULL || dst == NULL || src_charset == NULL || strcmp(src_charset, "UCS-2BE") != 0)
return false;
/* Compute UCS-2 src length */
if (src_len == (size_t)-1) {
for (src_len = 0; ((uint16_t*)src)[src_len] !=0; src_len++);
src_len <<=2;
} else {
src_len >>=1;
}
/* Eliminate empty strings */
if ((src_len < 2) || ((src[0] == 0) && (src[1] == 0))) {
if ((src_len < 1) || ((src[0] == 0) && (src[1] == 0))) {
*dst = NULL;
return false;
}
/* Perform byte reversal */
le_src = (wchar_t*)malloc(src_len+2);
for (i=0; i<src_len; i+=2) {
((char*)le_src)[i] = src[i+1];
((char*)le_src)[i+1] = src[i];
le_src = (wchar_t*)malloc(2*src_len+2);
for (i=0; i<src_len; i++) {
((char*)le_src)[2*i] = src[2*i+1];
((char*)le_src)[2*i+1] = src[2*i];
}
le_src[src_len/2] = 0;
le_src[src_len] = 0;
*dst = wchar_to_utf8(le_src);
free(le_src);