summaryrefslogtreecommitdiff
path: root/Build/source/texk/lacheck/lacheck-1.26-PATCHES/patch-06-buffer-overrun
blob: 1386c338f3398910e361d75b8a3f4019e6400627 (plain)
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
diff -ur lacheck-1.26.orig/lacheck.l lacheck-1.26/lacheck.l
--- lacheck-1.26.orig/lacheck.l	2012-06-19 15:11:14.000000000 +0200
+++ lacheck-1.26/lacheck.l	2012-06-22 11:04:33.000000000 +0200
@@ -144,7 +144,6 @@
 #define CG_ITALIC gstack[gstackp-1].italic
 #define CG_FILE gstack[gstackp-1].s_file
 
-char *bg_command(char *name);
 void pop(void);
 void push(const char *p_name, int p_type, int p_line);
 void linecount(void);
@@ -157,7 +156,6 @@
 
   /* global variables */
 
-char returnval[100];
 int line_count = 1;
 int warn_count = 0;
 char *file_name;
@@ -962,72 +960,58 @@
     free(gstack[gstackp].s_file);
 }
 
-char *bg_command(char *name)
+static void print_bg_command(char *name)
 {
     
     switch (CG_TYPE) {
 	
     case 2:
-	(void) strcpy( returnval, "\\begin{" );
-	(void) strcat( returnval, (char *) name);
-	(void) strcat( returnval, "}" );
+	printf("\\begin{%s}", name);
 	break;
 	
     case 3:
-	(void) strcpy( returnval, "beginning of file " );
-	(void) strcat( returnval, (char *) name);
+	printf("beginning of file %s", name);
 	break;
     
     case 4:
-	(void) strcpy( returnval, "math begin " );
-	(void) strcat( returnval, (char *) name);
+	printf("math begin %s", name);
 	break;
     
     case 5:
-	(void) strcpy( returnval, "display math begin " );
-	(void) strcat( returnval, (char *) name);
+	printf("display math begin %s", name);
 	break;
     
     default:
-    	(void) strcpy( returnval, name );
+	printf("%s", name);
 	
     }
-    
-    return ((char *)returnval);
 }
 
-static char *eg_command(char *name, int type)
+static void print_eg_command(char *name, int type)
 {
     
     switch (type) {
 	
     case 2:
-	(void) strcpy( returnval, "\\end{" );
-	(void) strcat( returnval, (char *) name);
-	(void) strcat( returnval, "}" );
+	printf("\\end{%s}", name);
 	break;
 	
     case 3:
-	(void) strcpy( returnval, "end of file " );
-	(void) strcat( returnval, (char *) name);
+	printf("end of file %s", name);
 	break;
     
     case 4:
-	(void) strcpy( returnval, "math end " );
-	(void) strcat( returnval, (char *) name);
+	printf("math end %s", name);
 	break;
     
     case 5:
-	(void) strcpy( returnval, "display math end " );
-	(void) strcat( returnval, (char *) name);
+	printf("display math end %s", name);
 	break;
     
     default:
-    	(void) strcpy( returnval, name );
+	printf("%s", name);
 	break;
     }
-    
-    return ((char *)returnval);
 }
 
 
@@ -1072,15 +1056,17 @@
 
 void print_bad_match(char *end_command, int type)
 {
-	  printf("\"%s\", line %d: <- unmatched \"%s\"\n",
+	  printf("\"%s\", line %d: <- unmatched \"",
 	         file_name, 
-		 line_count, 
-		 eg_command( end_command , type) ) ;
+		 line_count);
+	  print_eg_command(end_command, type);
+	  printf("\"\n");
 
-	  printf("\"%s\", line %d: -> unmatched \"%s\"\n",
+	  printf("\"%s\", line %d: -> unmatched \"",
 	         CG_FILE, 
-		 CG_LINE, 
-		 bg_command( CG_NAME ) ) ;
+		 CG_LINE);
+	  print_bg_command(CG_NAME);
+	  printf("\"\n");
 	  warn_count += 2;
 }
 
@@ -1088,10 +1074,11 @@
 {
     if ( gstackp == 0 )
 	{
-	 printf("\"%s\", line %d: \"%s\" found at top level\n",
-	       file_name, 
-	       line_count, 
-	       eg_command( end_command, type )) ;
+	 printf("\"%s\", line %d: \"",
+	        file_name, 
+		line_count);
+	 print_eg_command(end_command, type);
+	 printf("\" found at top level\n");
 	 ++warn_count;
          return(0);
 	}