


@ 401,6 +401,20 @@ int joliet_create_mangled_name(uint16_t *dest, uint16_t *src, int digits, 




return ISO_SUCCESS; 




} 









/*





* From Joliet specs: 




* "ISO 9660 (Section 7.5.1) states that the sum of the following shall not 




* exceed 30: 




*  If there is a file name, the length of the file name. 




*  If there is a file name extension, the length of the file name extension. 




* On Joliet compliant media, however, the sum as calculated above shall not 




* exceed 128 [bytes], to allow for longer file identifiers." 




* 




* I.e. the dot does not count. 




* 




* (We have an option to lift the limit from 64*2 to 103*2, which is the 




* maximum to fit into an ISO 9660 directory record.) 




*/ 




static 




int mangle_single_dir(Ecma119Image *t, JolietNode *dir) 




{ 



@ 481,25 +495,26 @@ int mangle_single_dir(Ecma119Image *t, JolietNode *dir) 




ext = dot + 1; 









extlen = ucslen(ext); 




max = maxchar + 1  extlen  1  digits; 




max = maxchar  extlen  digits; 




if (max <= 0) { 




/* this can happen if extension is too long */ 




if (extlen + max > 3) { 




/*





* reduce extension len, to give name an extra char 




* note that max is negative or 0 




*/ 




extlen = extlen + max  1; 




ext[extlen] = 0; 




max = maxchar + 2  extlen  1  digits; 




} else { 




/*





* This can happen if the extension is too long. 




* Reduce its length, to give name at least one 




* original character, if it has any. 




*/ 




max = (dot > full_name); 




extlen = maxchar  max  digits; 




if (extlen < 3) { 




/*





* error, we don't support extensions < 3 




* This can't happen with current limit of digits. 




* error, we do not reduce extensions to length < 3 




* 




* This cannot happen with current limit of digits 




* because maxchar is at least 64 and digits at most 7. 




*/ 




ret = ISO_ERROR; 




goto mangle_cleanup; 




} 




ext[extlen] = 0; 




} 




/* ok, reduce name by digits */ 




if (name + max < dot) { 



