コード例 #1
0
ファイル: groups.c プロジェクト: AlainODea/illumos-gate
int
main(int argc, char *argv[])
{
	int xval = 0;
	struct passwd *pw;

	ngroups_max = sysconf(_SC_NGROUPS_MAX);

	if (ngroups_max < 0) {
		(void) fprintf(stderr,
			"groups: could not get configuration info\n");
		exit(1);
	}

	if (ngroups_max == 0)
		exit(0);

	if (argc == 1) {

		if ((pw = getpwuid(getuid())) == NULL) {
			(void) fprintf(stderr, "groups: No passwd entry\n");
			xval = 1;
		} else
			showgroups(pw);

	} else while (*++argv) {

		if ((pw = getpwnam(*argv)) == NULL) {
			(void) fprintf(stderr,
				"groups: %s : No such user\n", *argv);
			xval = 1;
		} else {
			if (argc > 2)
				(void) printf("%s : ", *argv);
			showgroups(pw);
		}
	}

	return (xval);

}
コード例 #2
0
ファイル: chatclient.c プロジェクト: maofeichen/InGMU
/* try to join a group */
int joinagroup(int sock)
{
  Packet *  pkt;
  char      bufr[MAXPKTLEN];
  char *    bufrptr;
  int       bufrlen;
  char *    gname;
  char *    mname;
  
  /* send a list group request */
  sendpkt(sock, LIST_GROUPS, 0, NULL);

  /* recv a list group reply */
  pkt = recvpkt(sock);
  if (!pkt) {
    fprintf(stderr, "error: server died\n");
    exit(1);
  }
  
  if (pkt->type != LIST_GROUPS) {
    fprintf(stderr, "error: unexpected reply from server\n");
    exit(1);
  }

  /* display groups */
  showgroups(pkt->lent, pkt->text);

  /* read in group name */
  printf("which group? ");
  fgets(bufr, MAXPKTLEN, stdin);
  bufr[strlen(bufr)-1] = '\0';

  /* may want to quit */
  if (strcmp(bufr, "") == 0 ||
      strncmp(bufr, QUIT_STRING, strlen(QUIT_STRING)) == 0) {
    close(sock);
    exit(0);
  }
  gname = strdup(bufr);

  /* read in member name */
  printf("what nickname? ");
  fgets(bufr, MAXPKTLEN, stdin);
  bufr[strlen(bufr)-1] = '\0';

  /* may want to quit */
  if (strcmp(bufr, "") == 0 ||
      strncmp(bufr, QUIT_STRING, strlen(QUIT_STRING)) == 0) {
    close(sock);
    exit(0);
  }
  mname = strdup(bufr);
    
  /* send a join group message */
  bufrptr = bufr;
  strcpy(bufrptr, gname);
  bufrptr += strlen(bufrptr) + 1;
  strcpy(bufrptr, mname);
  bufrptr += strlen(bufrptr) + 1;
  bufrlen = bufrptr - bufr;
  sendpkt(sock, JOIN_GROUP, bufrlen, bufr);

  /* read the reply */
  pkt = recvpkt(sock);
  if (!pkt) {
    fprintf(stderr, "error: server died\n");
    exit(1);
  }
  if (pkt->type != JOIN_ACCEPTED && pkt->type != JOIN_REJECTED) {
    fprintf(stderr, "error: unexpected reply from server\n");
    exit(1);
  }

  /* if rejected display the reason */
  if (pkt->type == JOIN_REJECTED) {
    printf("admin: %s\n", pkt->text);
    free(gname);
    free(mname);
    return(0);
  } else {
    printf("admin: joined '%s' as '%s'\n", gname, mname);
    free(gname);
    free(mname);
    return(1);
  }
}