wcwidth PoC: accept command line args

pull/922/head
nick black 4 years ago
parent 268e3b8742
commit 90e98ada07
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -2,15 +2,34 @@
#include <wchar.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
int main(void){
int main(int argc, char **argv){
if(!setlocale(LC_ALL, "")){
return EXIT_FAILURE;
}
if(argc > 1){
while(*++argv){
const char* arg = *argv;
while(*arg){
mbstate_t mbs = {};
wchar_t w;
size_t conv = mbrtowc(&w, arg, strlen(arg), &mbs);
if(conv == (size_t)-1 || conv == (size_t)-2){
fprintf(stderr, "Invalid UTF-8: %s\n", arg);
return EXIT_FAILURE;
}
int width = wcwidth(w);
printf("w(0x%05x): %d %lc\n", w, width, w);
arg += conv;
}
}
return EXIT_SUCCESS;
}
for(int i = 0 ; i < 128 ; ++i){
wchar_t w = i;
printf("w('%02x'): %d%c\t", i, wcwidth(w), iscntrl(i) ? '!' : ' ');
printf("w(0x%02x): %d%c\t", i, wcwidth(w), iscntrl(i) ? '!' : ' ');
if(i % 4 == 3){
printf("\n");
}

Loading…
Cancel
Save