Пример #1
0
int
group_member (gid_t gid)
{
  int i;
  int found;
  struct group_info gi;

  if (! get_group_info (&gi))
    return 0;

  /* Search through the list looking for GID. */
  found = 0;
  for (i = 0; i < gi.n_groups; i++)
    {
      if (gid == gi.group[i])
        {
          found = 1;
          break;
        }
    }

  free_group_info (&gi);

  return found;
}
int
group_member (gid_t gid)
{
#ifndef HAVE_GETGROUPS
  return ((gid == getgid ()) || (gid == getegid ()));
#else
  int i;
  int found;
  struct group_info gi;

  if (! get_group_info (&gi))
    return 0;

  /* Search through the list looking for GID. */
  found = 0;
  for (i = 0; i < gi.n_groups; i++)
    {
      if (gid == gi.group[i])
	{
	  found = 1;
	  break;
	}
    }

  free_group_info (&gi);

  return found;
#endif /* HAVE_GETGROUPS */
}
Пример #3
0
Файл: fbxkb.c Проект: kba/fbxkb
static GdkFilterReturn
filter( XEvent *xev, GdkEvent *event, gpointer data)
{
    XkbEvent *xkbev;

    ENTER;
    if (xev->type != xkb_event_type)
        RET(GDK_FILTER_CONTINUE);
   
    xkbev = (XkbEvent *) xev;
    DBG("XkbTypeEvent %d \n", xkbev->any.xkb_type);
    if (xkbev->any.xkb_type == XkbStateNotify) {
        DBG("XkbStateNotify: group=%d\n", xkbev->state.group);
        cur_group = xkbev->state.group;
        if (cur_group >= ngroups) {
            ERR("current group is bigger then total group number");
            cur_group = 0;
        }
        gui_update();
    } else if (xkbev->any.xkb_type == XkbNewKeyboardNotify) {         
        DBG("XkbNewKeyboardNotify\n");
        free_group_info();
        get_group_info();
        gui_update();
        gui_extra_rebuild();
    }
    RET(GDK_FILTER_REMOVE);
}