version 1.76, 2018/08/21 16:06:48 |
version 1.78, 2018/12/15 19:30:26 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2011, 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org> |
* Copyright (c) 2011,2014,2015,2017,2018 Ingo Schwarze <schwarze@openbsd.org> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
|
|
#include <ctype.h> |
#include <ctype.h> |
#include <stddef.h> |
#include <stddef.h> |
#include <stdint.h> |
#include <stdint.h> |
|
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
#include <string.h> |
#include <string.h> |
|
|
Line 47 static struct ln lines[] = { |
|
Line 48 static struct ln lines[] = { |
|
{ " ", ascii_nbrsp, 0x00a0 }, |
{ " ", ascii_nbrsp, 0x00a0 }, |
{ "~", ascii_nbrsp, 0x00a0 }, |
{ "~", ascii_nbrsp, 0x00a0 }, |
{ "0", " ", 0x2002 }, |
{ "0", " ", 0x2002 }, |
{ "|", "", 0 }, |
|
{ "^", "", 0 }, |
|
{ "&", "", 0 }, |
|
{ ")", "", 0 }, |
|
{ "%", "", 0 }, |
|
{ ":", ascii_break, 0 }, |
{ ":", ascii_break, 0 }, |
/* XXX The following three do not really belong here. */ |
|
{ "t", "", 0 }, |
|
{ "c", "", 0 }, |
|
{ "}", "", 0 }, |
|
|
|
/* Lines. */ |
/* Lines. */ |
{ "ba", "|", 0x007c }, |
{ "ba", "|", 0x007c }, |
{ "br", "|", 0x2502 }, |
{ "br", "|", 0x2502 }, |
{ "ul", "_", 0x005f }, |
{ "ul", "_", 0x005f }, |
|
{ "_", "_", 0x005f }, |
{ "ru", "_", 0x005f }, |
{ "ru", "_", 0x005f }, |
{ "rn", "-", 0x203e }, |
{ "rn", "-", 0x203e }, |
{ "bb", "|", 0x00a6 }, |
{ "bb", "|", 0x00a6 }, |
Line 464 mchars_spec2cp(const char *p, size_t sz) |
|
Line 457 mchars_spec2cp(const char *p, size_t sz) |
|
|
|
end = p + sz; |
end = p + sz; |
ln = ohash_find(&mchars, ohash_qlookupi(&mchars, p, &end)); |
ln = ohash_find(&mchars, ohash_qlookupi(&mchars, p, &end)); |
return ln != NULL ? ln->unicode : sz == 1 ? (unsigned char)*p : -1; |
return ln != NULL ? ln->unicode : -1; |
} |
} |
|
|
int |
int |
Line 494 mchars_spec2str(const char *p, size_t sz, size_t *rsz) |
|
Line 487 mchars_spec2str(const char *p, size_t sz, size_t *rsz) |
|
|
|
end = p + sz; |
end = p + sz; |
ln = ohash_find(&mchars, ohash_qlookupi(&mchars, p, &end)); |
ln = ohash_find(&mchars, ohash_qlookupi(&mchars, p, &end)); |
if (ln == NULL) { |
if (ln == NULL) |
*rsz = 1; |
return NULL; |
return sz == 1 ? p : NULL; |
|
} |
|
|
|
*rsz = strlen(ln->ascii); |
*rsz = strlen(ln->ascii); |
return ln->ascii; |
return ln->ascii; |