Thread View: gnu.bash.bug
2 messages
2 total messages
Started by Steven Grady
Thu, 21 Sep 1989 03:48
Compiling on the PC/RT
Author: Steven Grady
Date: Thu, 21 Sep 1989 03:48
Date: Thu, 21 Sep 1989 03:48
20 lines
1274 bytes
1274 bytes
Does anyone know the correct configuration of the Makefile to get bash to compile on a pc/rt running AIX 2.2.1? I tried using OS=SYSV (confused by the existence of sys/wait.h) and OS=Bsd with the bsd compatibility library (got confused by NGROUPS. I can probably get it compiled, but I wanted to check if anyone else had done so.. BTW, on the PC/RT, NGROUPS (from /usr/include/grp.h) is 64*1024, which is a little bigger than on most bsd machines (16). Perhaps the group_member() function should have some conditional cpp lines in there to try using a smaller size, if necessary. (Who needs 256k of data taken up for such a stupid function?) Steven ...!ucbvax!grady grady@postgres.berkeley.edu "Say, isn't that a twenty-story-high Gumby-shaped robot approaching at about Mach 8?" "What do you know...? So it is."
Compiling on the PC/RT
Author: Brian Fox
Date: Fri, 22 Sep 1989 15:43
Date: Fri, 22 Sep 1989 15:43
70 lines
2770 bytes
2770 bytes
Date: 21 Sep 89 03:48:27 GMT
From: fxgrp!news@AMES.ARC.NASA.GOV (Steven Grady)
Organization: FXDevelopment, Mountain View, CA
Sender: bug-bash-request@prep.ai.mit.edu
Does anyone know the correct configuration of the Makefile to get
bash to compile on a pc/rt running AIX 2.2.1? I tried using
OS=SYSV (confused by the existence of sys/wait.h) and OS=Bsd
with the bsd compatibility library (got confused by NGROUPS.
I can probably get it compiled, but I wanted to check if anyone
else had done so..
BTW, on the PC/RT, NGROUPS (from /usr/include/grp.h) is 64*1024,
which is a little bigger than on most bsd machines (16). Perhaps
the group_member() function should have some conditional cpp lines
in there to try using a smaller size, if necessary. (Who needs
256k of data taken up for such a stupid function?)
Here is a version of group_member () (in execute_cmd.c) which should
solve your woes.
#ifndef SYSV
/* The number of groups (within 64) that this user is a member of. */
static int default_group_array_size = 0;
static int ngroups = 0;
static int *group_array = (int *)NULL;
#endif /* SYSV */
/* Return non-zero if GID is one that we have in our groups list. */
group_member (gid)
int gid;
{
#ifdef SYSV
return ((gid == getgid ()) || (gid == geteuid ()));
#else
register int i;
/* getgroups () returns the number of elements that it was able to
place into the array. We simply continue to call getgroups ()
until the number of elements placed into the array is smaller than
the physical size of the array. */
while (ngroups == default_group_array_size)
{
default_group_array_size += 64;
if (!group_array)
group_array = (int *)xmalloc (default_group_array_size * sizeof (int));
else
group_array =
(int *)xrealloc (group_array,
default_group_array_size * sizeof (int));
ngroups = getgroups (default_group_array_size, group_array);
}
/* In case of error, the user loses. */
if (ngroups < 0)
return (0);
/* Search through the list looking for GID. */
for (i = 0; i < ngroups; i++)
if (gid == group_array[i])
return (1);
return (0);
#endif /* SYSV */
}
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads