version 1.31, 2011/01/02 10:10:57 |
version 1.35, 2011/04/20 22:50:22 |
|
|
/* $Id$ */ |
/* $Id$ */ |
/* |
/* |
* Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> |
* Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv> |
|
* Copyright (c) 2011 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 <string.h> |
#include <string.h> |
|
|
#include "mandoc.h" |
#include "mandoc.h" |
#include "chars.h" |
#include "out.h" |
|
|
#define PRINT_HI 126 |
#define PRINT_HI 126 |
#define PRINT_LO 32 |
#define PRINT_LO 32 |
|
|
#define CHARS_BOTH (CHARS_CHAR | CHARS_STRING) |
#define CHARS_BOTH (CHARS_CHAR | CHARS_STRING) |
}; |
}; |
|
|
#define LINES_MAX 351 |
#define LINES_MAX 353 |
|
|
#define CHAR(in, ch, code) \ |
#define CHAR(in, ch, code) \ |
{ NULL, (in), (ch), (code), CHARS_CHAR }, |
{ NULL, (in), (ch), (code), CHARS_CHAR }, |
Line 91 chars_init(enum chars type) |
|
Line 92 chars_init(enum chars type) |
|
* (they're in-line re-ordered during lookup). |
* (they're in-line re-ordered during lookup). |
*/ |
*/ |
|
|
tab = malloc(sizeof(struct ctab)); |
tab = mandoc_malloc(sizeof(struct ctab)); |
if (NULL == tab) { |
htab = mandoc_calloc(PRINT_HI - PRINT_LO + 1, sizeof(struct ln **)); |
perror(NULL); |
|
exit((int)MANDOCLEVEL_SYSERR); |
|
} |
|
|
|
htab = calloc(PRINT_HI - PRINT_LO + 1, sizeof(struct ln **)); |
|
if (NULL == htab) { |
|
perror(NULL); |
|
exit((int)MANDOCLEVEL_SYSERR); |
|
} |
|
|
|
for (i = 0; i < LINES_MAX; i++) { |
for (i = 0; i < LINES_MAX; i++) { |
hash = (int)lines[i].code[0] - PRINT_LO; |
hash = (int)lines[i].code[0] - PRINT_LO; |
|
|
Line 149 chars_res2cp(void *arg, const char *p, size_t sz) |
|
Line 141 chars_res2cp(void *arg, const char *p, size_t sz) |
|
if (NULL == ln) |
if (NULL == ln) |
return(-1); |
return(-1); |
return(ln->unicode); |
return(ln->unicode); |
|
} |
|
|
|
|
|
/* |
|
* Numbered character to literal character, |
|
* represented as a null-terminated string for additional safety. |
|
*/ |
|
const char * |
|
chars_num2char(const char *p, size_t sz) |
|
{ |
|
int i; |
|
static char c[2]; |
|
|
|
if (sz > 3) |
|
return(NULL); |
|
i = atoi(p); |
|
if (i < 0 || i > 255) |
|
return(NULL); |
|
c[0] = (char)i; |
|
c[1] = '\0'; |
|
return(c); |
} |
} |
|
|
|
|