- fprintf( newconf, " -zone \"%.*s\"",
- ((struct ziptab *)l->l_data)->zt_len,
- ((struct ziptab *)l->l_data)->zt_name );
+ /* codepage conversion */
+ if ((size_t)(-1) == (len = convert_string_allocate(CH_MAC, CH_UNIX,
+ ((struct ziptab *)l->l_data)->zt_name,
+ ((struct ziptab *)l->l_data)->zt_len,
+ &zonename)) ) {
+ if ( NULL ==
+ (zonename = strdup(((struct ziptab *)l->l_data)->zt_name))) {
+ LOG(log_error, logtype_atalkd, "malloc: %s", strerror(errno) );
+ return( -1 );
+ }
+ len = ((struct ziptab *)l->l_data)->zt_len;
+ }
+ fprintf( newconf, " -zone \"%.*s\"", (int)len, zonename);
+ free(zonename);