Commit bbcc3288 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

bindtextdomain: cleanup and fix error handling

parent 48ad4156
......@@ -35,30 +35,38 @@
int vlc_bindtextdomain (const char *domain)
{
int ret = 0;
#if defined (ENABLE_NLS)
/* Specify where to find the locales for current domain */
# if !defined (__APPLE__) && !defined (WIN32)
static const char path[] = LOCALEDIR;
if (bindtextdomain (domain, path) == NULL)
{
fprintf (stderr, "%s: text domain not found in %s\n", domain, path);
return -1;
}
# else
char *path = config_GetDataDirDefault();
char *buf;
char *datadir = config_GetDataDirDefault();
if (unlikely(datadir == NULL))
return -1;
if (unlikely(path == NULL))
char *upath;
int ret = asprintf (&upath, "%s" DIR_SEP "locale", datadir);
free (datadir);
if (unlikely(ret == -1))
return -1;
ret = asprintf (&buf, "%s" DIR_SEP "locale", path);
free (path);
path = ToLocaleDup (buf);
free (buf);
# endif
if (bindtextdomain (domain, path) == NULL)
char *lpath = ToLocaleDup (upath);
if (lpath == NULL || bindtextdomain (domain, lpath) == NULL)
{
fprintf (stderr, "%s: text domain not found in %s\n", domain, path);
ret = -1;
goto out;
free (lpath);
fprintf (stderr, "%s: text domain not found in %s\n", domain, upath);
free (upath);
return -1;
}
free (lpath);
free (upath);
# endif
/* LibVLC wants all messages in UTF-8.
* Unfortunately, we cannot ask UTF-8 for strerror_r(), strsignal_r()
......@@ -69,24 +77,17 @@ int vlc_bindtextdomain (const char *domain)
fprintf (stderr, "%s: UTF-8 encoding bot available\n", domain);
// Unbinds the text domain to avoid broken encoding
bindtextdomain (PACKAGE_NAME, "/DOES_NOT_EXIST");
ret = -1;
goto out;
return -1;
}
/* LibVLC does NOT set the default textdomain, since it is a library.
* This could otherwise break programs using LibVLC (other than VLC).
* textdomain (PACKAGE_NAME);
*/
out:
# if defined (__APPLE__) || defined (WIN32)
free (path);
# endif
#else /* !ENABLE_NLS */
(void)domain;
#endif
return ret;
return 0;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment