Пример #1
0
void	create_user_db(char *username, char *crypt_passwd, char *homedirectory)
{
  char	*c, *data;
  int	i, fd, length, length1, length2, length3;

  c = "\n";
  length1 = my_strlen(username);
  length2 = my_strlen(crypt_passwd);
  length3 = my_strlen(homedirectory);
  length = length1 + length2 + length3 + 2;
  data = xmalloc(sizeof (char) * length);
  for (i = 0; i < length1; i++)
    data[i] = username[i];
  data[length1] = ':';
  for (i = length1 + 1; i < length1 + length2 + 1; i++)
    data[i] = crypt_passwd[i - length1 - 1];
  data[length1 + length2 + 1] = ':';
  for (i = length1 + length2 + 2; i < length; i++)
    data[i] = homedirectory[i - length1 - length2 - 2];
  if ((fd = open("users.db", O_WRONLY | O_APPEND)) == -1)
    exit_perror("open");
  if (write(fd, data, length) == -1)
    exit_perror("write");
  if (write(fd, c, 1) == -1)
    exit_perror("write");
  close(fd);
}
Пример #2
0
int			main_serv(t_ftpserv *ftpserv)
{
  int			newsockfd;
  struct sockaddr_in	cli_addr;
  int			pid;
  t_client		*newclient;
  int			clilen;

  ftpserv->sockfd = make_listen_socket(ftpserv);
  clilen = sizeof (cli_addr);
  while (42)
    {
      newsockfd = accept(ftpserv->sockfd,
			 (struct sockaddr *) &cli_addr,
			 &clilen);
      if ((pid = fork()) == -1)
	exit_perror("fork");
      if (pid == 0)
	{
	  newclient = make_newclient(newsockfd);
	  serv_cl(ftpserv, newclient);
	  exit(0);
	}
    }
  return 0;
}
Пример #3
0
void	*xshmat(int shmid, const void *shmaddr, int shmflg)
{
  void	*addr;

  addr = shmat(shmid, shmaddr, shmflg);
  if (addr == (void *) -1)
    {
      errno = EINVAL;
      exit_perror("shmat");
    }
  return (addr);
}