+
+ /* Unicode Volume Name */
+ /* Firstly convert name from unixcharset to UTF8-MAC */
+ flags = CONV_IGNORE;
+ tmpvlen = convert_charset(obj->options.unixcharset, CH_UTF8_MAC, 0, name, vlen, tmpname, AFPVOL_U8MNAMELEN, &flags);
+ if (tmpvlen <= 0) {
+ strcpy(tmpname, "???");
+ tmpvlen = 3;
+ }
+
+ /* Do we have to mangle ? */
+ if ( (flags & CONV_REQMANGLE) || (tmpvlen > obj->options.volnamelen)) {
+ if (tmpvlen + suffixlen > obj->options.volnamelen) {
+ flags = CONV_FORCE;
+ tmpvlen = convert_charset(obj->options.unixcharset, CH_UTF8_MAC, 0, name, vlen, tmpname, obj->options.volnamelen - suffixlen, &flags);
+ tmpname[tmpvlen != (size_t)-1 ? tmpvlen : 0] = 0;
+ }
+ strcat(tmpname, suffix);
+ tmpvlen = strlen(tmpname);
+ }
+
+ /* Secondly convert name from UTF8-MAC to UCS2 */
+ if ( 0 >= ( u8mvlen = convert_string(CH_UTF8_MAC, CH_UCS2, tmpname, tmpvlen, u8mtmpname, AFPVOL_U8MNAMELEN*2)) )
+ return -1;
+
+ LOG(log_debug, logtype_afpd, "createvol: Volume '%s' -> UTF8-MAC Name: '%s'", name, tmpname);
+
+ /* Maccharset Volume Name */
+ /* Firsty convert name from unixcharset to maccharset */
+ flags = CONV_IGNORE;
+ tmpvlen = convert_charset(obj->options.unixcharset, obj->options.maccharset, 0, name, vlen, tmpname, AFPVOL_U8MNAMELEN, &flags);
+ if (tmpvlen <= 0) {
+ strcpy(tmpname, "???");
+ tmpvlen = 3;