1 /* 2 * This file and its contents are supplied under the terms of the 3 * Common Development and Distribution License ("CDDL"), version 1.0. 4 * You may only use this file in accordance with the terms of version 5 * 1.0 of the CDDL. 6 * 7 * A full copy of the text of the CDDL should have accompanied this 8 * source. A copy of the CDDL is also available via the Internet at 9 * http://www.illumos.org/license/CDDL. 10 */ 11 12 /* 13 * Copyright 2013 Garrett D'Amore <garrett@damore.org> 14 * Copyright 2010 Nexenta Systems, Inc. All rights reserved. 15 */ 16 #include "lint.h" 17 #include <ctype.h> 18 #include <locale.h> 19 #include "localeimpl.h" 20 #include "lctype.h" 21 22 #pragma weak _tolower = tolower 23 #pragma weak _toupper = toupper 24 25 int 26 tolower_l(int c, locale_t loc) 27 { 28 return (((unsigned)c > 255) ? c : loc->ctype->lc_trans_lower[c]); 29 } 30 31 int 32 toupper_l(int c, locale_t loc) 33 { 34 return (((unsigned)c > 255) ? c : loc->ctype->lc_trans_upper[c]); 35 } 36 37 #undef tolower 38 int 39 tolower(int c) 40 { 41 return (isascii(c) ? __trans_lower[c] : tolower_l(c, uselocale(NULL))); 42 } 43 44 #undef toupper 45 int 46 toupper(int c) 47 { 48 return (isascii(c) ? __trans_upper[c] : toupper_l(c, uselocale(NULL))); 49 }