1 /* { dg-do compile } */
2 
3 typedef struct { char Vshow; } TScreen;
4 typedef struct _Misc { char Tshow; } Misc;
5 typedef struct _XtermWidgetRec { TScreen screen; Misc misc; } XtermWidgetRec, *XtermWidget;
6 extern XtermWidget term;
7 void Bell (XtermWidget, int, int);
8 void set_tek_visibility (int);
9 
10 void
handle_tekshow(void * gw,int allowswitch)11 handle_tekshow (void *gw, int allowswitch)
12 {
13   XtermWidget xw = term;
14   if (!((xw)->misc.Tshow))
15     set_tek_visibility (1);
16 }
17 
18 void
do_tekonoff(void * gw,void * closure,void * data)19 do_tekonoff (void *gw, void *closure, void *data)
20 {
21   handle_tekshow (gw, 0);
22 }
23 
24 void
do_vtonoff(void * gw,void * closure,void * data)25 do_vtonoff (void *gw, void *closure, void *data)
26 {
27 }
28 
29 void
handle_toggle(void (* proc)(void * gw,void * closure,void * data),int var,char ** params,unsigned int nparams,void * w,void * closure,void * data)30 handle_toggle (void (*proc) (void *gw, void *closure, void *data),
31 	       int var, char **params, unsigned int nparams, void *w,
32 	       void *closure, void *data)
33 {
34   XtermWidget xw = term;
35   int dir = -2;
36   switch (nparams)
37     {
38     case 0:
39       dir = -1;
40     }
41   switch (dir)
42     {
43     case 1:
44       (*proc) (w, closure, data);
45       Bell (xw, 2, 0);
46     }
47 }
48 
49 void
HandleVisibility(void * w,char ** params,unsigned int * param_count)50 HandleVisibility (void *w, char **params, unsigned int *param_count)
51 {
52   XtermWidget xw = term;
53   if (*param_count == 2)
54     switch (params[0][0])
55       {
56       case 'v':
57 	handle_toggle (do_vtonoff, (int) ((int) (&(xw)->screen)->Vshow),
58 		       params + 1, (*param_count) - 1, w, (void *) 0,
59 		       (void *) 0);
60 	handle_toggle (do_tekonoff, (int) ((int) ((xw)->misc.Tshow)),
61 		       params + 1, (*param_count) - 1, w, (void *) 0,
62 		       (void *) 0);
63       }
64 }
65