1 /*
2  * h_site_group.c
3  *
4  * (C)1998-2011 by Marc Huber <Marc.Huber@web.de>
5  * All rights reserved.
6  *
7  * $Id: h_site_group.c,v 1.11 2015/03/14 06:11:26 marc Exp marc $
8  *
9  */
10 
11 #include "headers.h"
12 
13 static const char rcsid[] __attribute__ ((used)) = "$Id: h_site_group.c,v 1.11 2015/03/14 06:11:26 marc Exp marc $";
14 
h_site_group(struct context * ctx,char * arg)15 void h_site_group(struct context *ctx, char *arg)
16 {
17     int i = NGROUPS_MAX;
18     u_int u;
19 
20     DebugIn(DEBUG_COMMAND);
21 
22     if (1 == sscanf(arg, "%u", &u))
23 	for (i = 0; i < ctx->gids_size && (gid_t) u != ctx->gids[i]; i++);
24     else
25 	for (i = 0; i < ctx->gids_size && strcmp(arg, lookup_gid(ctx, ctx->gids[i])); i++);
26 
27     if (i < ctx->gids_size) {
28 	ctx->gid = ctx->gids[i];
29 	reply(ctx, MSG_200_Group_id_changed);
30     } else if (i == ctx->gids_size)
31 	replyf(ctx, MSG_501_Syntax, MSG_SITE_GROUP);
32     else
33 	reply(ctx, MSG_550_Group_id_deny);
34 
35     DebugOut(DEBUG_COMMAND);
36 }
37