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); }
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; }
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); }