< prev index next >

src/java.instrument/unix/native/libinstrument/EncodingSupport_md.c

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2004, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 61,71 **** * Initialize all utf processing. */ static void utfInitialize(void) { ! char *codeset; /* Set the locale from the environment */ (void)setlocale(LC_ALL, ""); /* Get the codeset name */ --- 61,71 ---- * Initialize all utf processing. */ static void utfInitialize(void) { ! const char* codeset; /* Set the locale from the environment */ (void)setlocale(LC_ALL, ""); /* Get the codeset name */
*** 75,84 **** --- 75,98 ---- return; } UTF_DEBUG(("Codeset = %s\n", codeset)); + #ifdef MACOSX + /* On Mac, if US-ASCII, but with no env hints, use UTF-8 */ + const char* env_lang = getenv("LANG"); + const char* env_lc_all = getenv("LC_ALL"); + const char* env_lc_ctype = getenv("LC_CTYPE"); + + if (strcmp(codeset,"US-ASCII") == 0 && + (env_lang == NULL || strlen(env_lang) == 0) && + (env_lc_all == NULL || strlen(env_lc_all) == 0) && + (env_lc_ctype == NULL || strlen(env_lc_ctype) == 0)) { + codeset = "UTF-8"; + } + #endif + /* If we don't need this, skip it */ if (strcmp(codeset, "UTF-8") == 0 || strcmp(codeset, "utf8") == 0 ) { UTF_DEBUG(("NO iconv() being used because it is not needed\n")); return; }
*** 144,153 **** --- 158,168 ---- output[outputLen] = 0; return outputLen; } /* Failed to do the conversion */ + UTF_DEBUG(("iconv() failed to do the conversion\n")); return -1; } /* Just copy bytes */ outputLen = len;
< prev index next >