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