Update to 12.0-beta1
This commit is contained in:
+15
-18
@@ -146,9 +146,8 @@ static const char *GetLocalCode()
|
||||
* Convert between locales, which from and which to is set in the calling
|
||||
* functions OTTD2FS() and FS2OTTD().
|
||||
*/
|
||||
static const char *convert_tofrom_fs(iconv_t convd, const char *name)
|
||||
static const char *convert_tofrom_fs(iconv_t convd, const char *name, char *outbuf, size_t outlen)
|
||||
{
|
||||
static char buf[1024];
|
||||
/* There are different implementations of iconv. The older ones,
|
||||
* e.g. SUSv2, pass a const pointer, whereas the newer ones, e.g.
|
||||
* IEEE 1003.1 (2004), pass a non-const pointer. */
|
||||
@@ -158,15 +157,14 @@ static const char *convert_tofrom_fs(iconv_t convd, const char *name)
|
||||
const char *inbuf = name;
|
||||
#endif
|
||||
|
||||
char *outbuf = buf;
|
||||
size_t outlen = sizeof(buf) - 1;
|
||||
size_t inlen = strlen(name);
|
||||
char *buf = outbuf;
|
||||
|
||||
strecpy(outbuf, name, outbuf + outlen);
|
||||
|
||||
iconv(convd, nullptr, nullptr, nullptr, nullptr);
|
||||
if (iconv(convd, &inbuf, &inlen, &outbuf, &outlen) == (size_t)(-1)) {
|
||||
DEBUG(misc, 0, "[iconv] error converting '%s'. Errno %d", name, errno);
|
||||
Debug(misc, 0, "[iconv] error converting '{}'. Errno {}", name, errno);
|
||||
}
|
||||
|
||||
*outbuf = '\0';
|
||||
@@ -179,46 +177,45 @@ static const char *convert_tofrom_fs(iconv_t convd, const char *name)
|
||||
* @param name pointer to a valid string that will be converted
|
||||
* @return pointer to a new stringbuffer that contains the converted string
|
||||
*/
|
||||
const char *OTTD2FS(const char *name)
|
||||
std::string OTTD2FS(const std::string &name)
|
||||
{
|
||||
static iconv_t convd = (iconv_t)(-1);
|
||||
char buf[1024] = {};
|
||||
|
||||
if (convd == (iconv_t)(-1)) {
|
||||
const char *env = GetLocalCode();
|
||||
convd = iconv_open(env, INTERNALCODE);
|
||||
if (convd == (iconv_t)(-1)) {
|
||||
DEBUG(misc, 0, "[iconv] conversion from codeset '%s' to '%s' unsupported", INTERNALCODE, env);
|
||||
Debug(misc, 0, "[iconv] conversion from codeset '{}' to '{}' unsupported", INTERNALCODE, env);
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
return convert_tofrom_fs(convd, name);
|
||||
return convert_tofrom_fs(convd, name.c_str(), buf, lengthof(buf));
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert to OpenTTD's encoding from that of the local environment
|
||||
* @param name pointer to a valid string that will be converted
|
||||
* @param name valid string that will be converted
|
||||
* @return pointer to a new stringbuffer that contains the converted string
|
||||
*/
|
||||
const char *FS2OTTD(const char *name)
|
||||
std::string FS2OTTD(const std::string &name)
|
||||
{
|
||||
static iconv_t convd = (iconv_t)(-1);
|
||||
char buf[1024] = {};
|
||||
|
||||
if (convd == (iconv_t)(-1)) {
|
||||
const char *env = GetLocalCode();
|
||||
convd = iconv_open(INTERNALCODE, env);
|
||||
if (convd == (iconv_t)(-1)) {
|
||||
DEBUG(misc, 0, "[iconv] conversion from codeset '%s' to '%s' unsupported", env, INTERNALCODE);
|
||||
Debug(misc, 0, "[iconv] conversion from codeset '{}' to '{}' unsupported", env, INTERNALCODE);
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
return convert_tofrom_fs(convd, name);
|
||||
return convert_tofrom_fs(convd, name.c_str(), buf, lengthof(buf));
|
||||
}
|
||||
|
||||
#else
|
||||
const char *FS2OTTD(const char *name) {return name;}
|
||||
const char *OTTD2FS(const char *name) {return name;}
|
||||
#endif /* WITH_ICONV */
|
||||
|
||||
void ShowInfo(const char *str)
|
||||
@@ -246,7 +243,7 @@ void CocoaReleaseAutoreleasePool();
|
||||
int CDECL main(int argc, char *argv[])
|
||||
{
|
||||
/* Make sure our arguments contain only valid UTF-8 characters. */
|
||||
for (int i = 0; i < argc; i++) ValidateString(argv[i]);
|
||||
for (int i = 0; i < argc; i++) StrMakeValidInPlace(argv[i]);
|
||||
|
||||
#ifdef WITH_COCOA
|
||||
CocoaSetupAutoreleasePool();
|
||||
@@ -280,7 +277,7 @@ bool GetClipboardContents(char *buffer, const char *last)
|
||||
}
|
||||
|
||||
char *clip = SDL_GetClipboardText();
|
||||
if (clip != NULL) {
|
||||
if (clip != nullptr) {
|
||||
strecpy(buffer, clip, last);
|
||||
SDL_free(clip);
|
||||
return true;
|
||||
@@ -309,7 +306,7 @@ void OSOpenBrowser(const char *url)
|
||||
args[1] = url;
|
||||
args[2] = nullptr;
|
||||
execvp(args[0], const_cast<char * const *>(args));
|
||||
DEBUG(misc, 0, "Failed to open url: %s", url);
|
||||
Debug(misc, 0, "Failed to open url: {}", url);
|
||||
exit(0);
|
||||
}
|
||||
#endif /* __APPLE__ */
|
||||
|
||||
Reference in New Issue
Block a user