int server_client_receive_analize(t_trame **list_trame, \ char *buffer) { int i; char **tab; i = 0; if ((tab = my_strtok(buffer, " ", 0)) == NULL) return (EXIT_FAILURE); while (tab[i]) { if (is_number(tab[i]) == 1) { if ((server_client_add_trame(list_trame, my_getnbr(tab[i]), tab[i + 1])) == EXIT_FAILURE) return (EXIT_FAILURE); i++; } else (*list_trame)->buffer = my_strconcat((*list_trame)->buffer, tab[i]); if (tab[i] != NULL) i++; } return (EXIT_SUCCESS); }
void testMY_STRCONCAT(void){ char* str = NULL; if(temp_file != NULL){ str = my_strconcat("test", "ing"); CU_ASSERT_STRING_EQUAL(str, "testing"); free(str); str = my_strconcat("test", NULL); CU_ASSERT_STRING_EQUAL(str, "test"); free(str); str = my_strconcat(NULL, "ing"); CU_ASSERT_STRING_EQUAL(str, "ing"); free(str); str = my_strconcat(NULL, NULL); CU_ASSERT(str == NULL); } }
char *server_distribution_send_plage(int x0, int x1) { char *buffer; char *buffer_x0; char *buffer_x1; if ((buffer_x0 = server_int_to_str(x0)) == NULL) return (NULL); if ((buffer_x1 = server_int_to_str(x1)) == NULL) return (NULL); if ((buffer = my_strconcat(buffer_x0, "-")) == NULL) return (NULL); if ((buffer = my_strconcat(buffer, buffer_x1)) == NULL) return (NULL); free(buffer_x0); free(buffer_x1); return (buffer); }
void exe_mkfile(t_dir* lroot, char* name){ char* fullname; t_metafile *f; // printf("Dir fullname: %s \n", lroot->fullname); fullname = (char*)xmalloc(sizeof(char)* 1); fullname[0] = '\0'; fullname = my_strconcat(fullname, lroot->fullname); fullname = my_strconcat(fullname, name); f = (t_metafile*)xmalloc(sizeof(t_metafile)*1); f->fullname = (char*)xmalloc(sizeof(char)*my_strlen(fullname)*1); my_strcpy(f->fullname, fullname); f->fullname[my_strlen(fullname)] = '\0'; f->path = (char*)xmalloc(sizeof(char)*(my_strlen(lroot->path)+1)); my_strcpy(f->path,lroot->path); f->path[my_strlen(lroot->path)] = '\0'; f->filesize = 0; f->tv = time_stamp(); f->LFile = create_Lfile(f->filesize); f->filename = (char*)xmalloc(sizeof(char)*(my_strlen(name)+1)); my_strcpy(f->filename, name); f->path[my_strlen(lroot->path)] = '\0'; /* printf("1: %s\n", f->filename); printf("2: %s\n", f->fullname); printf("3: %s\n", f->path); printf("4: %i\n", f->filesize); printf("5: %d\n", (int)f->tv); print_Ldisk(); */ p_push(lroot->GFiles, f, 0); gl_filecount++; }
int main(int argc, char **argv) { char c, *user, *pwd, *homedir; user = "******"; pwd = "\0"; homedir = "\0"; write_stdout("\n\t**ADD A USER IN DATABANK**\n\n"); write_stdout("<enter your login>\n"); while ((read(STDIN_FILENO, &c, 1) != -1) && (c != '\n')) user = my_strconcat(user, c); write_stdout("<enter your password>\n"); while ((read(STDIN_FILENO, &c, 1) != -1) && (c != '\n')) pwd = my_strconcat(pwd, c); write_stdout("<enter your homedirectory>\n"); while ((read(STDIN_FILENO, &c, 1) != -1) && (c != '\n')) homedir = my_strconcat(homedir, c); add_user_db(user, pwd, homedir); write_stdout("<you are now a member of our databank>\n"); return 0; }
void changeUserNick(struct s_node **head, int userfd, char *newNick) { struct user *currentUser = NULL; while (*head != NULL) { currentUser = (struct user *)(*head)->elem; if (currentUser->fd == userfd) currentUser->nick = my_strconcat(newNick, ""); else *head = (*head)->next; } }
char *server_client_trame(t_client *client, char *trame, char *buffer) { int retrn; trame = my_strconcat(trame, buffer); if ((retrn = server_client_receive_is_valide(trame)) > -1) { server_client_receive_action(client, \ server_client_receive_cut_trame(trame)); trame = my_strdup(&trame[retrn + 1]); } return (trame); }
int main(int argc, char *argv[]) { int listener, newsockfd, portno, i, j, bytesRead; fd_set master, readfd; struct s_node *userList = NULL; struct user *newUser = NULL; socklen_t clilen; char buffer[256]; char *messageSending; struct sockaddr_in serv_addr, cli_addr; int n, maxFileDescriptors = 0; char **parsedInput; if (argc < 2) { my_str("Usage: /server [port]\n"); exit(1); } listener = socket(AF_INET, SOCK_STREAM, 0); if (listener < 0) { my_str("ERROR opening socket"); exit(1); } my_bzero((char *) &serv_addr, sizeof(serv_addr)); portno = my_atoi(argv[1]); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(portno); my_memset(&(serv_addr.sin_zero), '\0', 8); if (bind(listener, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) { my_str("Binding failed.\n"); exit(1); } listen(listener,5); FD_ZERO(&master); FD_ZERO(&readfd); FD_SET(listener, &master); maxFileDescriptors = listener; my_str("Server is now online!\n\n"); while(1) { readfd = master; if (select(maxFileDescriptors + 1, &readfd, NULL, NULL, NULL) < 0) error("select() failed!\n"); for(i = 3; i <= maxFileDescriptors; i++) { if(FD_ISSET(i, &readfd)) { if(i == listener) /* we got a new connection */ { my_str("Got a new connection!\n"); clilen = sizeof(cli_addr); newsockfd = accept(listener, (struct sockaddr *) &cli_addr, &clilen); if (newsockfd < 0) error("ERROR on accept"); /* read in username */ my_bzero(buffer, 256); bytesRead = read(newsockfd, buffer, 255); if (bytesRead > 0) /* was valid username */ { newUser = (struct user *)malloc(sizeof(struct user)); newUser->fd = newsockfd; newUser->nick = my_strconcat(buffer, ""); /* hacky lmao */ add_node(new_node(newUser, NULL, NULL), &userList); my_str("New user entry: "); my_str(buffer); my_char('\n'); messageSending = my_strconcat(buffer, " has connected."); for(j = 3; j <= maxFileDescriptors; j++) { if(FD_ISSET(j, &master)) { if(j != listener && j != i) { if (write(j, messageSending, my_strlen(messageSending)) < 0) error("write() error!\n"); } } } } else my_str("no nickname received...\n"); FD_SET(newsockfd, &master); if (newsockfd > maxFileDescriptors) maxFileDescriptors = newsockfd; } else /* we got text */ { bytesRead = read(i, buffer, 255); messageSending = ""; if (bytesRead > 1) /* got a message, not just a newline */ { buffer[bytesRead] = '\0'; if (buffer[0] == '/') /* special command */ { parsedInput = my_str2vect(buffer); if (my_strcmp(parsedInput[0], "/nick") == 0) { if (parsedInput[1] != NULL) { messageSending = my_strconcat(getUserNick(userList, i), " changed their nick to "); removeUser(&userList, i); newUser = (struct user *)malloc(sizeof(struct user)); newUser->fd = i; newUser->nick = parsedInput[1]; add_node(new_node(newUser, NULL, NULL), &userList); messageSending = my_strconcat(messageSending, getUserNick(userList, i)); } } else if (my_strcmp(parsedInput[0], "/me") == 0) { messageSending = my_strconcat(getUserNick(userList, i), " "); messageSending = my_strconcat(messageSending, my_vect2str(&parsedInput[1])); }else if (my_strcmp(parsedInput[0], "/exit") == 0) { messageSending = ""; }else /* invalid command */ { if (write(i, "Invalid command.", my_strlen("Invalid command.")) < 0) error("wrote() error!\n"); } } else /* normal message */ { messageSending = my_strconcat(getUserNick(userList, i), ": "); messageSending = my_strconcat(messageSending, buffer); } if (my_strcmp(messageSending, "") != 0) /* if wrote message to send, send it */ { my_str(messageSending); my_char('\n'); for(j = 3; j <= maxFileDescriptors; j++) { if(FD_ISSET(j, &master)) { if(j != listener && j != i) { if (write(j, messageSending, my_strlen(messageSending)) < 0) error("write() error!\n"); } } } } } else if (bytesRead == 0) /* we closed the file descriptor on client */ { messageSending = my_strconcat("SERVER: ", getUserNick(userList, i)); messageSending = my_strconcat(messageSending, " disconnected.\n"); my_str(messageSending); removeUser(&userList, i); for(j = 3; j <= maxFileDescriptors; j++) { if(FD_ISSET(j, &master)) { if(j != listener && j != i) { /* change to "SERVER: /nick disconnected" */ if (write(j, messageSending, my_strlen(messageSending)) < 0) error("write() error!\n"); } } } close(i); FD_CLR(i, &master); continue; } else if (bytesRead < 0) error("Read error...\n"); } } } } return 0; }