1 /***********************************************************************
3 * This software is part of the ast package *
4 * Copyright (c) 1985-2010 AT&T Intellectual Property *
5 * and is licensed under the *
6 * Common Public License, Version 1.0 *
7 * by AT&T Intellectual Property *
9 * A copy of the License is available at *
10 * http://www.opensource.org/licenses/cpl1.0.txt *
11 * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
13 * Information and Software Systems Research *
17 * Glenn Fowler <gsf@research.att.com> *
18 * David Korn <dgk@research.att.com> *
19 * Phong Vo <kpv@research.att.com> *
21 ***********************************************************************/
25 * AT&T Bell Laboratories
27 * generate ast traps for botched standard prototypes
30 #include <sys/types.h>
32 #include "FEATURE/lib"
33 #include "FEATURE/sys"
36 extern int getgroups(int, gid_t
*);
43 if (sizeof(int) > sizeof(gid_t
))
48 gid_t groups
[32 * sizeof(int) / sizeof(gid_t
)];
50 r
= sizeof(int) / sizeof(gid_t
);
51 if ((n
= getgroups((sizeof(groups
) / sizeof(groups
[0])) / r
, groups
)) > 0)
52 for (i
= 1; i
<= n
; i
++)
54 groups
[i
] = ((gid_t
)0);
55 if (getgroups(i
, groups
) != i
)
57 if (groups
[i
] != ((gid_t
)0))
59 groups
[i
] = ((gid_t
)-1);
60 if (getgroups(i
, groups
) != i
)
62 if (groups
[i
] != ((gid_t
)-1))
68 printf("#undef getgroups\n");
69 printf("#define getgroups _ast_getgroups /* implementation botches gid_t* arg */\n");