1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
#if !defined(lint) && !defined(DOS)
static char rcsid[] = "$Id: escapes.c 761 2007-10-23 22:35:18Z hubert@u.washington.edu $";
#endif
/*
* ========================================================================
* Copyright 2013-2017 Eduardo Chappa
* Copyright 2006 University of Washington
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* ========================================================================
*/
/*======================================================================
escapes.c
Implements known escape code matching
====*/
#include "../pith/headers.h"
#include "../pith/escapes.h"
/*------------------------------------------------------------------
This list of known escape sequences is taken from RFC's 1486 and 1554
and draft-apng-cc-encoding, and the X11R5 source with only a remote
understanding of what this all means...
NOTE: if the length of these should extend beyond 4 chars, fix
MAX_ESC_LEN in filter.c
----*/
#ifdef _WINDOWS
static char *known_escapes[] = {
"(B", "(J", "$@", "$B", /* RFC 1468 */
"(H",
NULL};
#else
static char *known_escapes[] = {
"(B", "(J", "$@", "$B", /* RFC 1468 */
"(H",
"$A", "$(C", "$(D", ".A", ".F", /* added by RFC 1554 */
"$)C", "$)A", "$*E", "$*X", /* those in apng-draft */
"$+G", "$+H", "$+I", "$+J", "$+K",
"$+L", "$+M",
")I", "-A", "-B", "-C", "-D", /* codes form X11R5 source */
"-F", "-G", "-H", "-L", "-M",
"-$(A", "$(B", "$)B", "$)D",
NULL};
#endif
int
match_escapes(char *esc_seq)
{
char **p;
int n;
for(p = known_escapes; *p && strncmp(esc_seq, *p, n = strlen(*p)); p++)
;
return(*p ? n + 1 : 0);
}
|