void ft_strarray_add_first(char ***ar, char *str) { char **ret; char *s; int i; ret = NULL; i = 0; ret = (char **)ft_memalloc(sizeof(char *) * (ft_strarray_len(*ar) + 2)); s = (char *)ft_memalloc(sizeof(char) * ct_w(*ar, str)); if (ret && s && str) { ret[0] = s; while (*str) *s++ = *str++; *s++ = '\0'; while ((*ar)[i]) { ret[i + 1] = s; ft_strcpy(s, (*ar)[i]); s += ft_strlen(ret[i + 1]) + 1; i++; } ft_strarray_del(ar); *ar = ret; } }
int ftls_parse_cli_args_osx(t_env *e, int ac, char **av) { int i; int j; char c; char **buf; if (!(buf = ft_strarray_dup(av))) return (1); if ((c = ft_parse_options_keep_doubles(buf, e->supported_option, &(e->cli_option)))) return (ftls_print_error_illegal_option(e, av[0], c)); if (!(e->cli_notopt = (char**)ft_memalloc(sizeof(char*) * (ac + 1)))) return (1); i = 0; j = -1; while (++i < ac) { if (buf[i][0] && (e->iscli = 1) && ftls_isfile(buf[i], e->progname, 1)) e->cli_notopt[++j] = ft_strdup(buf[i]); else if (!ft_strlen(buf[i]) && !ft_strlen(av[i])) exit(ft_printf("%s: fts_open: No such file or directory\n", av[0])); } ft_strarray_del(&buf); return (0); }
void sv_receive_command(t_sv_prop *sv, int cl) { int rd; int ret_cmd; if ((rd = E(-1, recv(CL_SOCK(cl), sv->fds[cl].rd, BUF_SIZE, 0), ERR_RECV, NO_EXIT)) > 0) { printf("[sv_receive_command] [client : %d] [commande : %s] [lu : %d]\n", cl, sv->fds[cl].rd, rd); sv->cmd->cmda = lexer(sv->fds[cl].rd); ret_cmd = execute(sv, cl); if (!ret_cmd) pterr(ERR_CMD_NOT_FOUND); ft_strarray_del(&(sv->cmd->cmda)); //ft_bzero(sv->fds[cl].rd, rd); ft_bzero(sv->fds[cl].rd, BUF_SIZE + 1); } else clean_fd(&(sv->fds[cl])); }