File: checker.c

package info (click to toggle)
the 3.0-1
  • links: PTS
  • area: main
  • in suites: potato
  • size: 4,132 kB
  • ctags: 4,916
  • sloc: ansic: 63,656; sh: 1,566; makefile: 439
file content (436 lines) | stat: -rw-r--r-- 11,919 bytes parent folder | download | duplicates (8)
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
/* This file should only be used and compiled if you want to use checker.
 * It contains wrappers fr PDCurses for X11.
 */
#define CURSES_LIBRARY
#include <xcurses.h>
/* Set the include path either to the checker install path or copy 
 * checker_api.h to a standard path:
 */
#include <checker_api.h>

#ifdef __CHECKER__
#  error This file can only be compiled without checkergcc. Use gcc for this file and checkergcc for the rest of your files!
#endif

#define CHECK_WIN(win) stubs_chkr_check_addr(win,sizeof(WINDOW),CHKR_TW,"win")

extern void chkr_XCursesExit(void) __asm__ ("chkr.XCursesExit");
void chkr_XCursesExit(void)
{
   XCursesExit();
}

extern int chkr_PDC_chadd(register WINDOW *win, chtype ch,bool xlat, bool advance) __asm__ ("chkr.PDC_chadd");
int chkr_PDC_chadd(register WINDOW *win, chtype ch,bool xlat, bool advance)
{
   CHECK_WIN(win);
   return(PDC_chadd(win,ch,xlat,advance));
}

extern int chkr_PDC_getclipboard(char **contents, long *length) __asm__ ("chkr.PDC_getclipboard");
int chkr_PDC_getclipboard(char **contents, long *length)
{
   int rc;
   
   stubs_chkr_check_addr(contents, sizeof (char **), CHKR_MW, "contents");
   stubs_chkr_check_addr(length, sizeof (long *), CHKR_MW, "length");
   if ((rc = PDC_getclipboard(contents,length)) == PDC_CLIP_SUCCESS)
      stubs_chkr_set_right(*contents, *length, CHKR_RW);
   return(rc);
}

extern int chkr_PDC_setclipboard(char *contents, long length) __asm__ ("chkr.PDC_setclipboard");
int chkr_PDC_setclipboard(char *contents, long length)
{
   stubs_chkr_check_addr(contents, length, CHKR_RO, "contents");
   return(PDC_setclipboard(contents,length));
}

extern void chkr_PDC_set_title(char *title) __asm__ ("chkr.PDC_set_title");
void chkr_PDC_set_title(char *title)
{
   stubs_chkr_check_str(title, CHKR_RO, "title");
   PDC_set_title(title);
}

extern int chkr_PDC_ungetch(int ch) __asm__ ("chkr.PDC_ungetch");
int chkr_PDC_ungetch(int ch)
{
   return(PDC_ungetch(ch));
}

extern int chkr_beep(void) __asm__ ("chkr.beep");
int chkr_beep(void)
{
   return(beep());
}

extern int chkr_cbreak(void) __asm__ ("chkr.cbreak");
int chkr_cbreak(void)
{
   return(cbreak());
}

extern int chkr_curs_set(int arg) __asm__ ("chkr.curs_set");
int chkr_curs_set(int arg)
{
   return(curs_set(arg));
}

extern int chkr_delwin(WINDOW *win) __asm__ ("chkr.delwin");
int chkr_delwin(WINDOW *win)
{
   CHECK_WIN(win);
   return(delwin(win));
}

extern int chkr_doupdate(void) __asm__ ("chkr.doupdate");
int chkr_doupdate(void)
{
   return(doupdate());
}

extern int chkr_endwin(void) __asm__ ("chkr.endwin");
int chkr_endwin(void)
{
   return(endwin());
}

extern int chkr_init_pair(short a,short b,short c) __asm__ ("chkr.init_pair");
int chkr_init_pair(short a,short b,short c)
{
   return(init_pair(a,b,c));
}

extern WINDOW * chkr_initscr(void) __asm__ ("chkr.initscr");
WINDOW * chkr_initscr(void)
{
   WINDOW *retval = initscr();
   SCREEN *NewSP;
   if (retval != NULL)
      {
         stubs_chkr_set_right(retval,sizeof(WINDOW), CHKR_RW);
         stubs_chkr_set_right(stdscr,sizeof(WINDOW), CHKR_RW);
         stubs_chkr_set_right(curscr,sizeof(WINDOW), CHKR_RW);
         /* SP was allocated by calloc which is implemented with errors
            by checker. We redo it.
          */
         NewSP = malloc(sizeof(SCREEN));
         *NewSP = *SP;
         stubs_chkr_set_right(NewSP,sizeof(SCREEN),CHKR_RW);
         SP = NewSP;
      }
   return(retval);
}

extern WINDOW * chkr_Xinitscr(int argc,char argv[]) __asm__ ("chkr.Xinitscr");
WINDOW * chkr_Xinitscr(void)
{
   WINDOW *retval = initscr();
   SCREEN *NewSP;
   int i;

   if (argv != NULL)
      stubs_chkr_check_addr(argv, sizeof(char *) * argc, CHKR_RO, "argv");
   for (i = 0;i <argc,i++)
      stubs_chkr_check_str(argv[i], CHKR_RO, "argv[i]");
   retval = Xinitscr(argc,argv);
   if (retval != NULL)
      {
         stubs_chkr_set_right(retval,sizeof(WINDOW), CHKR_RW);
         stubs_chkr_set_right(stdscr,sizeof(WINDOW), CHKR_RW);
         stubs_chkr_set_right(curscr,sizeof(WINDOW), CHKR_RW);
         /* SP was allocated by calloc which is implemented with errors
            by checker. We redo it.
          */
         NewSP = malloc(sizeof(SCREEN));
         *NewSP = *SP;
         stubs_chkr_set_right(NewSP,sizeof(SCREEN),CHKR_RW);
         SP = NewSP;
      }
   return(retval);
}

extern int chkr_mouse_set(unsigned long ul) __asm__ ("chkr.mouse_set");
int chkr_mouse_set(unsigned long ul)
{
   return(mouse_set(ul));
}

extern WINDOW * chkr_newwin(int nlines, int ncols, int begy, int begx) __asm__ ("chkr.newwin");
WINDOW * chkr_newwin(int nlines, int ncols, int begy, int begx)
{
   WINDOW *retval = newwin(nlines,ncols,begy,begx);
   if (retval != NULL)
      stubs_chkr_set_right(retval,sizeof(WINDOW), CHKR_RW);
   return(retval);
}

extern int chkr_nodelay(WINDOW *win,int arg) __asm__ ("chkr.nodelay");
int chkr_nodelay(WINDOW *win,int arg)
{
   CHECK_WIN(win);
   return(nodelay(win,arg));
}

extern int chkr_noecho(void) __asm__ ("chkr.noecho");
int chkr_noecho(void)
{
   return(noecho());
}

extern int chkr_notimeout(WINDOW *win,bool arg) __asm__ ("chkr.notimeout");
int chkr_notimeout(WINDOW *win,bool arg)
{
   return(notimeout(win,arg));
}

extern int chkr_raw(void) __asm__ ("chkr.raw");
int chkr_raw(void)
{
   return(raw());
}

extern int chkr_raw_output(bool arg) __asm__ ("chkr.raw_output");
int chkr_raw_output(bool arg)
{
   return(raw_output(arg));
}

extern int chkr_request_mouse_pos(void) __asm__ ("chkr.request_mouse_pos");
int chkr_request_mouse_pos(void)
{
   return(request_mouse_pos());
}

extern int chkr_reset_prog_mode(void) __asm__ ("chkr.reset_prog_mode");
int chkr_reset_prog_mode(void)
{
   return(reset_prog_mode());
}

extern int chkr_resize_term(int nlines,int ncols) __asm__ ("chkr.resize_term");
int chkr_resize_term(int nlines,int ncols)
{
   return(resize_term(nlines,ncols));
}

extern int chkr_sb_get_horz(int *total,int *viewport,int *cur) __asm__ ("chkr.sb_get_horz");
int chkr_sb_get_horz(int *total,int *viewport,int *cur)
{
   int retval;
   stubs_chkr_check_addr(total, sizeof (int), CHKR_MW, "total");
   stubs_chkr_check_addr(viewport, sizeof (int), CHKR_MW, "viewport");
   stubs_chkr_check_addr(cur, sizeof (int), CHKR_MW, "cur");
   retval = sb_get_horz(total,viewport,cur);
   if (retval == OK)
      {
         stubs_chkr_set_right(total,sizeof(int), CHKR_RW);
         stubs_chkr_set_right(viewport,sizeof(int), CHKR_RW);
         stubs_chkr_set_right(cur,sizeof(int), CHKR_RW);
      }
   return(retval);
}

extern int chkr_sb_get_vert(int *total,int *viewport,int *cur) __asm__ ("chkr.sb_get_vert");
int chkr_sb_get_vert(int *total,int *viewport,int *cur)
{
   int retval;
   stubs_chkr_check_addr(total, sizeof (int), CHKR_MW, "total");
   stubs_chkr_check_addr(viewport, sizeof (int), CHKR_MW, "viewport");
   stubs_chkr_check_addr(cur, sizeof (int), CHKR_MW, "cur");
   retval = sb_get_vert(total,viewport,cur);
   if (retval == OK)
      {
         stubs_chkr_set_right(total,sizeof(int), CHKR_RW);
         stubs_chkr_set_right(viewport,sizeof(int), CHKR_RW);
         stubs_chkr_set_right(cur,sizeof(int), CHKR_RW);
      }
   return(retval);
}

extern int chkr_sb_init(void) __asm__ ("chkr.sb_init");
int chkr_sb_init(void)
{
   return(sb_init());
}

extern int chkr_sb_refresh(void) __asm__ ("chkr.sb_refresh");
int chkr_sb_refresh(void)
{
   return(sb_refresh());
}

extern int chkr_sb_set_horz(int total,int viewport,int cur) __asm__ ("chkr.sb_set_horz");
int chkr_sb_set_horz(int total,int viewport,int cur)
{
   return(sb_set_horz(total,viewport,cur));
}

extern int chkr_sb_set_vert(int total,int viewport,int cur) __asm__ ("chkr.sb_set_vert");
int chkr_sb_set_vert(int total,int viewport,int cur)
{
   return(sb_set_vert(total,viewport,cur));
}

extern int chkr_slk_clear(void) __asm__ ("chkr.slk_clear");
int chkr_slk_clear(void)
{
   return(slk_clear());
}

extern int chkr_slk_init(int fmt) __asm__ ("chkr.slk_init");
int chkr_slk_init(int fmt)
{
   return(slk_init(fmt));
}

extern int chkr_slk_noutrefresh(void) __asm__ ("chkr.slk_noutrefresh");
int chkr_slk_noutrefresh(void)
{
   return(slk_noutrefresh());
}

extern int chkr_slk_set(int labnum,char *label,int fmt) __asm__ ("chkr.slk_set");
int chkr_slk_set(int labnum,char *label,int fmt)
{
   if (label != NULL)
      stubs_chkr_check_str(label, CHKR_RO, "label");
   return(slk_set(labnum,label,fmt));
}

extern int chkr_slk_touch(void) __asm__ ("chkr.slk_touch");
int chkr_slk_touch(void)
{
   return(slk_touch());
}

extern int chkr_start_color(void) __asm__ ("chkr.start_color");
int chkr_start_color(void)
{
   return(start_color());
}

extern int chkr_typeahead(int filedes) __asm__ ("chkr.typeahead");
int chkr_typeahead(int filedes)
{
   if (filedes != -1)
      fd_used_by_prog(filedes);
   return(typeahead(filedes));
}

extern int chkr_waddchnstr(WINDOW *win,chtype *ch,int n) __asm__ ("chkr.waddchnstr");
int chkr_waddchnstr(WINDOW *win,chtype *ch,int n)
{
   CHECK_WIN(win);
   stubs_chkr_check_addr(ch, sizeof (chtype) * n, CHKR_MW, "ch");
   return(waddchnstr(win,ch,n));
}

extern int chkr_waddstr(WINDOW *win,char *str) __asm__ ("chkr.waddstr");
int chkr_waddstr(WINDOW *win,char *str)
{
   CHECK_WIN(win);
   stubs_chkr_check_str(str, CHKR_RO, "str");
   return(waddstr(win,str));
}

extern int chkr_wattrset(WINDOW *win,attr_t attrs) __asm__ ("chkr.wattrset");
int chkr_wattrset(WINDOW *win,attr_t attrs)
{
   CHECK_WIN(win);
   return(wattrset(win,attrs));
}

extern int chkr_wbkgd(WINDOW *win,chtype ch) __asm__ ("chkr.wbkgd");
int chkr_wbkgd(WINDOW *win,chtype ch)
{
   CHECK_WIN(win);
   return(wbkgd(win,ch));
}

extern int chkr_wborder(WINDOW *win, chtype ls, chtype rs, chtype ts,chtype bs, chtype tl, chtype tr, chtype bl, chtype br) __asm__ ("chkr.wborder");
int chkr_wborder(WINDOW *win, chtype ls, chtype rs, chtype ts,chtype bs, chtype tl, chtype tr, chtype bl, chtype br)
{
   CHECK_WIN(win);
   return(wborder(win,ls,rs,ts,bs,tl,tr,bl,br));
}

extern int chkr_wclrtobot(WINDOW *win) __asm__ ("chkr.wclrtobot");
int chkr_wclrtobot(WINDOW *win)
{
   CHECK_WIN(win);
   return(wclrtobot(win));
}

extern int chkr_wdelch(WINDOW *win) __asm__ ("chkr.wdelch");
int chkr_wdelch(WINDOW *win)
{
   CHECK_WIN(win);
   return(wdelch(win));
}

extern int chkr_wgetch(WINDOW *win) __asm__ ("chkr.wgetch");
int chkr_wgetch(WINDOW *win)
{
   CHECK_WIN(win);
   return(wgetch(win));
}

extern int chkr_whline(WINDOW *win,chtype ch,int n) __asm__ ("chkr.whline");
int chkr_whline(WINDOW *win,chtype ch,int n)
{
   CHECK_WIN(win);
   return(whline(win,ch,n));
}

extern int chkr_winsch(WINDOW *win,chtype ch) __asm__ ("chkr.winsch");
int chkr_winsch(WINDOW *win,chtype ch)
{
   CHECK_WIN(win);
   return(winsch(win,ch));
}

extern void chkr_wmouse_position(WINDOW *win,int *y,int *x) __asm__ ("chkr.wmouse_position");
void chkr_wmouse_position(WINDOW *win,int *y,int *x)
{
   CHECK_WIN(win);
   stubs_chkr_check_addr(y, sizeof (int), CHKR_MW, "y");
   stubs_chkr_check_addr(x, sizeof (int), CHKR_MW, "x");
   wmouse_position(win,y,x);
}

extern int chkr_wmove(WINDOW *win,int y,int x) __asm__ ("chkr.wmove");
int chkr_wmove(WINDOW *win,int y,int x)
{
   CHECK_WIN(win);
   return(wmove(win,y,x));
}

extern int chkr_wnoutrefresh(WINDOW *win) __asm__ ("chkr.wnoutrefresh");
int chkr_wnoutrefresh(WINDOW *win)
{
   CHECK_WIN(win);
   return(wnoutrefresh(win));
}

extern int chkr_wrefresh(WINDOW *win) __asm__ ("chkr.wrefresh");
int chkr_wrefresh(WINDOW *win)
{
   CHECK_WIN(win);
   return(wrefresh(win));
}

extern int chkr_wtouchln(WINDOW *win,int arg1,int arg2,int arg3) __asm__ ("chkr.wtouchln");
int chkr_wtouchln(WINDOW *win,int arg1,int arg2,int arg3)
{
   CHECK_WIN(win);
   return(wtouchln(win,arg1,arg2,arg3));
}

extern int chkr_wvline(WINDOW *win,chtype arg1,int arg2) __asm__ ("chkr.wvline");
int chkr_wvline(WINDOW *win,chtype arg1,int arg2)
{
   CHECK_WIN(win);
   return(wvline(win,arg1,arg2));
}