aboutsummaryrefslogtreecommitdiffstats
path: root/comms/hylafax/files/patch-ae
blob: 9b5f246ea875be6b02cbbdd89d0f172703f25606 (plain) (blame)
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
For multilingualization (iso-2022 variant encodings).
Some part of this is biased to Japanization, however, it should
give some hints to asian people.

*** util/TypeRules.c++.orig Wed Nov 27 08:20:45 1996
--- util/TypeRules.c++  Sun Apr 20 23:43:42 1997
***************
*** 48,54 ****
  }
  
  static const char* typeNames[] =
!     { "ascii", "string", "address", "byte", "short", "long" };
  static const char* opNames[] =
      { "<any>", "=", "!=", "<", "<=", ">", ">=", "&", "^", "!" };
  static const char* resultNames[] = { "tiff", "postscript", "error" };
--- 48,54 ----
  }
  
  static const char* typeNames[] =
!     { "ascii", "asciiesc", "string", "address", "byte", "short", "long" };
  static const char* opNames[] =
      { "<any>", "=", "!=", "<", "<=", ">", ">=", "&", "^", "!" };
  static const char* resultNames[] = { "tiff", "postscript", "error" };
***************
*** 65,71 ****
    );
    if (type == STRING)
        printf(" \"%s\"", value.s);
!   else if (type != ASCII) {
        if (op == ANY)
        printf(" <any value>");
        else
--- 65,71 ----
    );
    if (type == STRING)
        printf(" \"%s\"", value.s);
!   else if (type != ASCII && type != ASCIIESC) {
        if (op == ANY)
        printf(" <any value>");
        else
***************
*** 83,88 ****
--- 83,89 ----
      const u_char* cp = (const u_char*) data;
      switch (type) {
      case ASCII:
+       {
    u_int i;
    for (i = 0; i < size; i++)
        if (!isprint(cp[i]) && !isspace(cp[i])) {
***************
*** 92,97 ****
--- 93,111 ----
        }
    ok = TRUE;
    goto done;
+        }
+     case ASCIIESC:
+        {
+   u_int i;
+   for (i = 0; i < size; i++)
+       if (!isprint(cp[i]) && !isspace(cp[i]) && cp[i] != '\033') {
+       if (verbose)
+           printf("failed (unprintable char %#x)\n", cp[i]);
+       return (FALSE);
+       }
+   ok = TRUE;
+   goto done;
+        }
      case STRING:
    ok = (strncmp((const char*)(cp+off), value.s,
        fxmin((u_int) strlen(value.s), (u_int)(size-off))) == 0);
***************
*** 307,312 ****
--- 321,328 ----
        rule.type = TypeRule::STRING;
    else if (strncasecmp(tp, "ascii", cp-tp) == 0)
        rule.type = TypeRule::ASCII;
+   else if (strncasecmp(tp, "asciiesc", cp-tp) == 0)
+       rule.type = TypeRule::ASCIIESC;
    else if (strncasecmp(tp, "addr", cp-tp) == 0)
        rule.type = TypeRule::ADDR;
    else {
***************
*** 317,323 ****
        cp++;
    rule.op = TypeRule::EQ;     // default is '='
    const char* vp = cp;
!   if (rule.type != TypeRule::STRING && rule.type != TypeRule::ASCII) {
        // numeric value
        switch (*vp) {
        case '=':   rule.op = TypeRule::EQ; cp++; break;
--- 333,340 ----
        cp++;
    rule.op = TypeRule::EQ;     // default is '='
    const char* vp = cp;
!   if (rule.type != TypeRule::STRING && rule.type != TypeRule::ASCII
!    && rule.type != TypeRule::ASCIIESC) {
        // numeric value
        switch (*vp) {
        case '=':   rule.op = TypeRule::EQ; cp++; break;
*** util/TypeRules.h.orig   Sun Apr 20 23:22:28 1997
--- util/TypeRules.h    Sun Apr 20 23:21:11 1997
***************
*** 130,135 ****
--- 130,136 ----
      fxBool    cont;   // continuation
      enum {
    ASCII,      // ascii-only string
+   ASCIIESC,   // ascii-only string + escape char (iso-2022 variants)
    STRING,     // byte string
    ADDR,       // address of match
    BYTE,       // 8 bits
*** util/typerules.orig Sun Apr 20 23:22:49 1997
--- util/typerules  Sun Apr 20 23:24:45 1997
***************
*** 128,133 ****
--- 128,138 ----
  >15     string          ascii     ps  %F/textfmt -B -f Courier-Bold\
                            -p 11 -s %s >%o <%i
  #
+ # Japanization (should help other iso-2022 variants too)
+ #
+ #>15  string      asciiesc    ps  a2ps-j -l '' -p -ns -nt <%i >%o
+ #0    asciiesc    x       ps  a2ps-j -l '' -p -ns -nt <%i >%o
+ #
  # This causes anything else with ascii-only data to be treated as text.
  #
  0 ascii       x       ps  %F/textfmt -B -f Courier-Bold\