View | Details | Raw Unified | Return to bug 44281
Collapse All | Expand All

(-)nawk/distinfo (-1 / +1 lines)
Line 1 Link Here
1
MD5 (awk.tar.gz) = 65f0afae31a1ed77dd21de5a15be570d
1
MD5 (awk.tar.gz) = 1e2ef4bce7e538c8bf513ac21120bb26
(-)nawk/files/patch-ba (-34 / +35 lines)
Lines 1-10 Link Here
1
--- b.c.orig	Sun Sep 24 17:18:38 2000
1
--- b.c.orig	Sat Oct 19 14:29:49 2002
2
+++ b.c	Fri Nov  3 01:59:32 2000
2
+++ b.c	Sat Oct 19 14:38:33 2002
3
@@ -27,6 +27,9 @@
3
@@ -27,6 +27,9 @@
4
 #define	DEBUG
4
 #define	DEBUG
5
 
5
 
6
 #include <ctype.h>
6
 #include <ctype.h>
7
+#ifdef	__FreeBSD__
7
+#ifdef __FreeBSD__
8
+#include <limits.h>
8
+#include <limits.h>
9
+#endif
9
+#endif
10
 #include <stdio.h>
10
 #include <stdio.h>
Lines 14-78 Link Here
14
 fa	*fatab[NFA];
14
 fa	*fatab[NFA];
15
 int	nfatab	= 0;	/* entries in fatab */
15
 int	nfatab	= 0;	/* entries in fatab */
16
 
16
 
17
+#ifdef	__FreeBSD__
17
+#ifdef __FreeBSD__
18
+static int
18
+static int
19
+collate_range_cmp(a, b)
19
+collate_range_cmp(a, b)
20
+int a, b;
20
+int a, b;
21
+{
21
+{
22
+	int r;
22
+       int r;
23
+	static char s[2][2];
23
+       static char s[2][2];
24
+
24
+
25
+	if ((unsigned char)a == (unsigned char)b)
25
+       if ((unsigned char)a == (unsigned char)b)
26
+		return 0;
26
+               return 0;
27
+	s[0][0] = a;
27
+       s[0][0] = a;
28
+	s[1][0] = b;
28
+       s[1][0] = b;
29
+	if ((r = strcoll(s[0], s[1])) == 0)
29
+       if ((r = strcoll(s[0], s[1])) == 0)
30
+		r = (unsigned char)a - (unsigned char)b;
30
+               r = (unsigned char)a - (unsigned char)b;
31
+	return r;
31
+       return r;
32
+}
32
+}
33
+#endif
33
+#endif
34
+
34
+
35
 fa *makedfa(char *s, int anchor)	/* returns dfa for reg expr s */
35
 fa *makedfa(const char *s, int anchor)	/* returns dfa for reg expr s */
36
 {
36
 {
37
 	int i, use, nuse;
37
 	int i, use, nuse;
38
@@ -287,6 +308,9 @@
38
@@ -287,6 +308,9 @@
39
 	int i, c, c2;
39
 	int i, c, c2;
40
 	uschar *p = (uschar *) argp;
40
 	uschar *p = (uschar *) argp;
41
 	uschar *op, *bp;
41
 	uschar *op, *bp;
42
+#ifdef	__FreeBSD__
42
+#ifdef __FreeBSD__
43
+ 	int c3;
43
+	int c3;
44
+#endif
44
+#endif
45
 	static uschar *buf = 0;
45
 	static uschar *buf = 0;
46
 	static int bufsz = 100;
46
 	static int bufsz = 100;
47
 
47
 
48
@@ -303,6 +327,22 @@
48
@@ -303,6 +327,23 @@
49
 				c2 = *p++;
49
 				c2 = *p++;
50
 				if (c2 == '\\')
50
 				if (c2 == '\\')
51
 					c2 = quoted((char **) &p);
51
 					c2 = quoted((char **) &p);
52
+#ifdef	__FreeBSD__
52
+#ifdef __FreeBSD__
53
+ 				if (collate_range_cmp(c, c2) > 0) {
53
+                               if (collate_range_cmp(c, c2) > 0) {
54
+ 					bp--;
54
+                                       bp--;
55
+ 					i--;
55
+                                       i--;
56
+ 					continue;
56
+                                       continue;
57
+ 				}
57
+                               }
58
+ 				for (c3 = 0; c3 < (1 << CHAR_BIT) - 1; c3++) {
58
+                               for (c3 = 0; c3 < (1 << CHAR_BIT) - 1; c3++) {
59
+ 					if (collate_range_cmp(c, c3) <= 0 &&
59
+                                       if (collate_range_cmp(c, c3) <= 0 &&
60
+ 					    collate_range_cmp(c3, c2) <= 0) {
60
+                                           collate_range_cmp(c3, c2) <= 0) {
61
+ 						if (!adjbuf(&buf, &bufsz, bp-buf+2, 100, &bp, 0))
61
+                                               if (!adjbuf(&buf, &bufsz, bp-buf+2, 100, &bp, 0))
62
+ 							FATAL("out of space for character class [%.10s...] 2", p);
62
+                                                       FATAL("out of space for character class [%.10s...] 2", p);
63
+ 						*bp++ = c3 + 1;
63
+                                               *bp++ = c3 + 1;
64
+ 						i++;
64
+                                               i++;
65
+ 					}
65
+                                       }
66
+ 				}
66
+                               }
67
+#else /*FreeBSD*/
67
+#else /*FreeBSD*/
68
+                                        
68
 				if (c > c2) {	/* empty; ignore */
69
 				if (c > c2) {	/* empty; ignore */
69
 					bp--;
70
 					bp--;
70
 					i--;
71
 					i--;
71
@@ -314,6 +354,7 @@
72
@@ -314,6 +355,7 @@
72
 					*bp++ = ++c;
73
 					*bp++ = ++c;
73
 					i++;
74
 					i++;
74
 				}
75
 				}
75
+#endif /*FreeBSD*/
76
+#endif /*FreeBSD*/                                
76
 				continue;
77
 				continue;
77
 			}
78
 			}
78
 		}
79
 		}

Return to bug 44281