=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/snmp/snmpc.c,v retrieving revision 1.27 retrieving revision 1.28 diff -c -r1.27 -r1.28 *** src/usr.bin/snmp/snmpc.c 2020/06/30 19:26:40 1.27 --- src/usr.bin/snmp/snmpc.c 2020/08/03 14:45:54 1.28 *************** *** 1,4 **** ! /* $OpenBSD: snmpc.c,v 1.27 2020/06/30 19:26:40 martijn Exp $ */ /* * Copyright (c) 2019 Martijn van Duren --- 1,4 ---- ! /* $OpenBSD: snmpc.c,v 1.28 2020/08/03 14:45:54 martijn Exp $ */ /* * Copyright (c) 2019 Martijn van Duren *************** *** 29,34 **** --- 29,35 ---- #include #include #include + #include #include #include #include *************** *** 103,108 **** --- 104,110 ---- size_t walk_skip_len = 0; enum smi_oid_lookup oid_lookup = smi_oidl_short; enum smi_output_string output_string = smi_os_default; + int utf8 = 0; int main(int argc, char *argv[]) *************** *** 129,134 **** --- 131,148 ---- int ch; size_t i; + /* + * Determine if output can handle UTF-8 based on locale. + */ + setlocale(LC_CTYPE, ""); + utf8 = MB_CUR_MAX > 1; + /* + * SMIv2 allows for UTF-8 text at some locations. + * Set it explicitly so we can handle it on the input side. + */ + if (setlocale(LC_CTYPE, "en_US.UTF-8") == NULL) + errx(1, "setlocale(LC_CTYPE, \"en_US.UTF-8\") failed"); + if (pledge("stdio inet dns unix", NULL) == -1) err(1, "pledge"); *************** *** 1069,1075 **** } elm = elm->be_next; ! value = smi_print_element(elm, smi_print_hint, output_string, oid_lookup); if (value == NULL) return 0; --- 1083,1090 ---- } elm = elm->be_next; ! value = smi_print_element(&oid, elm, smi_print_hint, output_string, ! oid_lookup, utf8); if (value == NULL) return 0;