-/* $Id: chars.c,v 1.72 2017/08/23 10:50:15 schwarze Exp $ */
+/* $Id: chars.c,v 1.78 2018/12/15 19:30:26 schwarze Exp $ */
/*
* 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
* purpose with or without fee is hereby granted, provided that the above
#include <ctype.h>
#include <stddef.h>
#include <stdint.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
{ " ", ascii_nbrsp, 0x00a0 },
{ "~", ascii_nbrsp, 0x00a0 },
{ "0", " ", 0x2002 },
- { "|", "", 0 },
- { "^", "", 0 },
- { "&", "", 0 },
- { "%", "", 0 },
{ ":", ascii_break, 0 },
- /* XXX The following three do not really belong here. */
- { "t", "", 0 },
- { "c", "", 0 },
- { "}", "", 0 },
/* Lines. */
{ "ba", "|", 0x007c },
{ "br", "|", 0x2502 },
{ "ul", "_", 0x005f },
+ { "_", "_", 0x005f },
{ "ru", "_", 0x005f },
{ "rn", "-", 0x203e },
{ "bb", "|", 0x00a6 },
{ "sh", "#", 0x0023 },
{ "CR", "<cr>", 0x21b5 },
{ "OK", "\\/", 0x2713 },
- { "CL", "<club>", 0x2663 },
- { "SP", "<spade>", 0x2660 },
- { "HE", "<heart>", 0x2665 },
- { "DI", "<diamond>", 0x2666 },
+ { "CL", "C", 0x2663 },
+ { "SP", "S", 0x2660 },
+ { "HE", "H", 0x2665 },
+ { "DI", "D", 0x2666 },
/* Legal symbols. */
{ "co", "(C)", 0x00a9 },
{ "mo", "<element\037of>", 0x2208 },
{ "nm", "<not\037element\037of>", 0x2209 },
{ "sb", "<proper\037subset>", 0x2282 },
- { "nb", "(!=", 0x2284 },
+ { "nb", "<not\037subset>", 0x2284 },
{ "sp", "<proper\037superset>", 0x2283 },
- { "nc", "!=)", 0x2285 },
+ { "nc", "<not\037superset>", 0x2285 },
{ "ib", "<subset\037or\037equal>", 0x2286 },
{ "ip", "<superset\037or\037equal>", 0x2287 },
{ "ca", "<intersection>", 0x2229 },
{ "/_", "<angle>", 0x2220 },
{ "pp", "<perpendicular>", 0x22a5 },
{ "is", "<integral>", 0x222b },
- { "integral", "'\b,\bI", 0x222b },
- { "sum", "E", 0x2211 },
- { "product", "TT", 0x220f },
- { "coproduct", "U", 0x2210 },
+ { "integral", "<integral>", 0x222b },
+ { "sum", "<sum>", 0x2211 },
+ { "product", "<product>", 0x220f },
+ { "coproduct", "<coproduct>", 0x2210 },
{ "gr", "<nabla>", 0x2207 },
{ "sr", "<sqrt>", 0x221a },
- { "sqrt", "\\/", 0x221a },
+ { "sqrt", "<sqrt>", 0x221a },
{ "lc", "|~", 0x2308 },
{ "rc", "~|", 0x2309 },
{ "lf", "|_", 0x230a },
{ "Ah", "<Aleph>", 0x2135 },
{ "Im", "<Im>", 0x2111 },
{ "Re", "<Re>", 0x211c },
- { "wp", "P", 0x2118 },
+ { "wp", "p", 0x2118 },
{ "pd", "<del>", 0x2202 },
{ "-h", "/h", 0x210f },
{ "hbar", "/h", 0x210f },
{ "ho", ",", 0x02db },
{ "ha", "^", 0x005e },
{ "ti", "~", 0x007e },
+ { "u02DC", "~", 0x02dc },
/* Accented letters. */
{ "'A", "'\bA", 0x00c1 },
{ "'I", "'\bI", 0x00cd },
{ "'O", "'\bO", 0x00d3 },
{ "'U", "'\bU", 0x00da },
+ { "'Y", "'\bY", 0x00dd },
{ "'a", "'\ba", 0x00e1 },
{ "'e", "'\be", 0x00e9 },
{ "'i", "'\bi", 0x00ed },
{ "'o", "'\bo", 0x00f3 },
{ "'u", "'\bu", 0x00fa },
+ { "'y", "'\by", 0x00fd },
{ "`A", "`\bA", 0x00c0 },
{ "`E", "`\bE", 0x00c8 },
{ "`I", "`\bI", 0x00cc },
{ "Eu", "EUR", 0x20ac },
{ "eu", "EUR", 0x20ac },
{ "Ye", "=\bY", 0x00a5 },
- { "Po", "GBP", 0x00a3 },
+ { "Po", "-\bL", 0x00a3 },
{ "Cs", "o\bx", 0x00a4 },
{ "Fn", ",\bf", 0x0192 },
end = p + sz;
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
end = p + sz;
ln = ohash_find(&mchars, ohash_qlookupi(&mchars, p, &end));
- if (ln == NULL) {
- *rsz = 1;
- return sz == 1 ? p : NULL;
- }
+ if (ln == NULL)
+ return NULL;
*rsz = strlen(ln->ascii);
return ln->ascii;