1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * * Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * * Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in 12 * the documentation and/or other materials provided with the 13 * distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 18 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 19 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 22 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 23 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 25 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * SUCH DAMAGE. 27 */ 28 29 #include <langinfo.h> 30 31 #include <stdlib.h> 32 33 char* nl_langinfo(nl_item item) { 34 const char* result = ""; 35 switch (item) { 36 case CODESET: result = (MB_CUR_MAX == 1) ? "ASCII" : "UTF-8"; break; 37 38 case D_T_FMT: result = "%F %T %z"; break; 39 case D_FMT: result = "%F"; break; 40 case T_FMT: result = "%T"; break; 41 case T_FMT_AMPM: result = "%I:%M:%S %p"; break; 42 case AM_STR: result = "AM"; break; 43 case PM_STR: result = "PM"; break; 44 case DAY_1: result = "Sunday"; break; 45 case DAY_2: result = "Monday"; break; 46 case DAY_3: result = "Tuesday"; break; 47 case DAY_4: result = "Wednesday"; break; 48 case DAY_5: result = "Thursday"; break; 49 case DAY_6: result = "Friday"; break; 50 case DAY_7: result = "Saturday"; break; 51 case ABDAY_1: result = "Sun"; break; 52 case ABDAY_2: result = "Mon"; break; 53 case ABDAY_3: result = "Tue"; break; 54 case ABDAY_4: result = "Wed"; break; 55 case ABDAY_5: result = "Thu"; break; 56 case ABDAY_6: result = "Fri"; break; 57 case ABDAY_7: result = "Sat"; break; 58 case MON_1: result = "January"; break; 59 case MON_2: result = "February"; break; 60 case MON_3: result = "March"; break; 61 case MON_4: result = "April"; break; 62 case MON_5: result = "May"; break; 63 case MON_6: result = "June"; break; 64 case MON_7: result = "July"; break; 65 case MON_8: result = "August"; break; 66 case MON_9: result = "September"; break; 67 case MON_10: result = "October"; break; 68 case MON_11: result = "November"; break; 69 case MON_12: result = "December"; break; 70 case ABMON_1: result = "Jan"; break; 71 case ABMON_2: result = "Feb"; break; 72 case ABMON_3: result = "Mar"; break; 73 case ABMON_4: result = "Apr"; break; 74 case ABMON_5: result = "May"; break; 75 case ABMON_6: result = "Jun"; break; 76 case ABMON_7: result = "Jul"; break; 77 case ABMON_8: result = "Aug"; break; 78 case ABMON_9: result = "Sep"; break; 79 case ABMON_10: result = "Oct"; break; 80 case ABMON_11: result = "Nov"; break; 81 case ABMON_12: result = "Dec"; break; 82 case ERA: result = ""; break; 83 case ERA_D_FMT: result = ""; break; 84 case ERA_D_T_FMT: result = ""; break; 85 case ERA_T_FMT: result = ""; break; 86 case ALT_DIGITS: result = ""; break; 87 88 case RADIXCHAR: result = "."; break; 89 case THOUSEP: result = ""; break; 90 91 case YESEXPR: result = "^[yY]"; break; 92 case NOEXPR: result = "^[nN]"; break; 93 94 case CRNCYSTR: result = ""; break; 95 96 default: break; 97 } 98 return const_cast<char*>(result); 99 } 100 101 char* nl_langinfo_l(nl_item item, locale_t) { 102 return nl_langinfo(item); 103 } 104