summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.c-torture/compile/20010408-1.c
blob: 9aa3597a24a9a9814c4b4733740681061faa0b76 (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
extern struct win *windows, *wtab[];
struct win
{
  struct win *w_next;
};

struct auser;

struct comm
{
  char *name;
  int flags;
};

extern struct comm comms[];

extern int WindowByNoN (char *);
extern int FindCommnr (char *);
extern int AclSetPermCmd (struct auser *, char *, struct comm *);
extern int AclSetPermWin (struct auser *, struct auser *, char *, struct win *);


int
  AclSetPerm(uu, u, mode, s)
    struct auser *uu, *u;
char *mode, *s;
{
  struct win *w;
  int i;
  char *p, ch;

  do 
    {
    }
  while (0);

  while (*s)
    {
      switch (*s)
	{  
	case '*':
	  return AclSetPerm(uu, u, mode, "#?");
	case '#':
	  if (uu)
	    AclSetPermWin(uu, u, mode, (struct win *)1);
	  else
	    for (w = windows; w; w = w->w_next)
	      AclSetPermWin((struct auser *)0, u, mode, w);
	  s++;
	  break;
	case '?':
	  if (uu)
	    AclSetPermWin(uu, u, mode, (struct win *)0);
	  else
	    for (i = 0; i <= 174; i++)
	      AclSetPermCmd(u, mode, &comms[i]);
	  s++;
	  break;
	default:
	  for (p = s; *p && *p != ' ' && *p != '\t' && *p != ','; p++)
	    ;
	  if ((ch = *p))
	    *p++ = '\0';
	  if ((i = FindCommnr(s)) != -1)
	    AclSetPermCmd(u, mode, &comms[i]);
	  else if (((i = WindowByNoN(s)) >= 0) && wtab[i])
	    AclSetPermWin((struct auser *)0, u, mode, wtab[i]);
	  else
	    return -1;
	  if (ch)
	    p[-1] = ch;
	  s = p;
	}
    }

  return 0;
}