예제 #1
0
int					ft_printf(const char *format_string, ...)
{
	va_list			arguments;
	t_format		format;

	if (!format_string)
	{
		ft_putendl_fd("ft_printf: format string must be valid", 2);
		exit(1);
	}
	ft_bzero(&format, sizeof(t_format));
	format.string = format_string;
	va_start(arguments, format_string);
	handle_format(&format, arguments);
	va_end(arguments);
	return (format.written);
}
예제 #2
0
파일: hist2.c 프로젝트: jalcim/42sh
void	ft_regististory(t_linez *l)
{
	int	fd;

	fd = open("hist_cmd", O_CREAT | O_WRONLY | O_TRUNC, 0666);
	while (l->prev)
		l = l->prev;
	while (l && l->line)
	{
		if (ft_isprint(l->line[0]))
		{
			replace_char(l->line, '\n', '\0');
			ft_putendl_fd(l->line, fd);
		}
		l = l->next;
	}
}
예제 #3
0
파일: sh_builtins.c 프로젝트: gj42/ft_sh1
void	sh_builtin_exit(char **av)
{
	unsigned char	val;

	val = 0;
	if (av && av[1])
	{
		if (ft_isdigit(av[1][0]))
			val = ft_atoi(av[1]);
		else
		{
			ft_putendl_fd("exit: Expression Syntax.", 2);
			return ;
		}
	}
	exit(val);
}
예제 #4
0
파일: str_list.c 프로젝트: cmehay/our_42sh
void	ms_str_lstdel(t_str **l_str, int fd)
{
	t_str	*current;
	t_str	*next;

	current = *l_str;
	while (current)
	{
		ft_putendl_fd(current->str, fd);
		next = current->next;
		cool_free(current->str);
		cool_free(current);
		if (next == NULL)
			break ;
		current = next;
	}
	current = NULL;
}
예제 #5
0
static void		pipe_error(char *err, int p, t_env *e)
{
	if (err)
	{
		ft_putstr_fd("21sh: ", 2);
		ft_putendl_fd(err, 2);
		e->ret = 1;
	}
	else if (e->ret == 512)
	{
		ft_putchar('\n');
		e->ret = 130;
	}
	if (p > -1)
		close(p);
	init_sigint(0);
	redefine_term();
}
예제 #6
0
void	check_tab(char **tab)
{
	int fd;

	while (*tab)
	{
		if ((fd = open(*tab, O_RDONLY)) != -1)
			close(fd);
		else
		{
			ft_putstr_fd("ls: ", 2);
			ft_putstr_fd(*tab, 2);
			ft_putendl_fd(": No such file or directory 0", 2);
			exit(-1);
		}
		tab++;
	}
}
예제 #7
0
파일: errors2.c 프로젝트: Zethir/42sh
int		numeric_error(char **cmd)
{
	int				i;

	i = 0;
	while (cmd[1][i])
	{
		if (cmd[1][i] < '0' || cmd[1][i] > '9')
		{
			ft_putstr_fd("42sh: history: ", 2);
			ft_putstr_fd(cmd[1], 2);
			ft_putendl_fd(": numeric argument required", 2);
			return (1);
		}
		i++;
	}
	return (0);
}
예제 #8
0
void	open_client_message(int cs)
{
	char	*cs_tostr;
	char	*str;
	char	*tmp;

	cs_tostr = ft_itoa(cs);
	str = ft_strcolor("NEW_CLIENT     [", 'n', 'n', 47);
	tmp = ft_strcolor(cs_tostr, 'n', 'n', 15);
	str = ft_strijoind(str, tmp, 0);
	ft_strdel(&tmp);
	tmp = ft_strcolor("]", 'n', 'n', 47);
	str = ft_strijoind(str, tmp, "\n", 0);
	ft_strdel(&tmp);
	ft_putstr(str);
	ft_putendl_fd(cs_tostr, cs);
	ft_stridel(&cs_tostr, &str, 0);
}
예제 #9
0
int			main(int argc, char **argv)
{
	if (argc < 1)
	{
		ft_putendl("And then...?");
		return (1);
	}
	if (tgetent(NULL, getenv("TERM")) == 1)
	{
		ft_select(argv);
	}
	else
	{
		ft_putendl_fd("Error: Terminal not found", 2);
		return (1);
	}
	return (0);
}
예제 #10
0
파일: init.c 프로젝트: vplotton/work
static t_bool	init_env(t_env **env)
{
	int		i;

	i = -1;
	if (init_map(env) == FALSE)
	{
		ft_putendl_fd("Error: map not created", 2);
		return (FALSE);
	}
	(*env)->pl = ft_memalloc(MAX_PLAYER * sizeof(t_player));
	while (++i < MAX_PLAYER)
		(*env)->pl[i].used = FALSE;
	(*env)->nb = 0;
	(*env)->t_nb = 0;
	ft_bzero((*env)->t, sizeof((*env)->t));
	return (TRUE);
}
예제 #11
0
파일: setenv.c 프로젝트: Horsell/42
int	ft_setenv(t_env *e)
{
	char	*env_var;

	if (e->ac == 3)
	{
		free(e->env[e->ec]);
		e->env[e->ec] = malloc(sizeof(char) * 10);
		e->env[e->ec + 1] = malloc(sizeof(char) * 1);
		e->env[e->ec + 1] = NULL;
		env_var = ft_strjoin(e->av[1], "=");
		e->env[e->ec] = ft_strjoin(env_var, e->av[2]);
		ft_putendl(e->env[e->ec]);
		e->ec++;
	}
	else
		ft_putendl_fd("Syntax error, use : setenv var value", 2);
	return (2);
}
예제 #12
0
파일: exec.c 프로젝트: tmerlier/42sh
void			exec_env(char **str, int *i, int isnew_env, char **env)
{
	pid_t	pid;

	if ((pid = fork()) < 0)
	{
		ft_putendl_fd("Fork fail", 2);
		return ;
	}
	if (!pid)
	{
		if (ft_strchr(*str, '/'))
			exec_file(str, isnew_env, env);
		else
			exec_bin(str, isnew_env, env);
	}
	else
		waitpid(pid, i, 0);
}
예제 #13
0
void			do_unsetenv(t_lst *list, char **cmd)
{
	int		len;
	int		i;

	i = 0;
	len = ft_tablen(cmd);
	if (len == 1)
		ft_putendl_fd("unsetenv: Too few arguments.", 2);
	else if (len > 1)
	{
		while (cmd[++i])
		{
			if (ft_strcmp(cmd[i], "="))
				cmd[i] = ft_strcat(cmd[i], "=");
			list_remove_node(&list, cmd[i]);
		}
	}
}
예제 #14
0
파일: ft_atoi.c 프로젝트: jalcim/libft
int ft_atoi(const char *buf)
{
  int nb;
  int compt;

  nb = 0;
  compt = -1;
  while (buf[++compt] && buf[compt] != '\n')
    {
      if (buf[compt] > '9' || buf[compt] < '0')
	{
	  ft_putstr_fd("ft_atoi bad argument:\t", 2);
	  ft_putendl_fd(buf, 2);
	}
      else
	nb = (nb * 10) + (buf[compt] - '0'); 
    }
  return (nb);
}
예제 #15
0
파일: parser.c 프로젝트: kube/RT
static int	count_indentation(char *line, int line_number)
{
	int		i;

	i = 0;
	while (is_space(line[i]))
	{
		if (line[i] != '\t')
		{
			ft_putstr_fd("Line ", 2);
			ft_putnbr_fd(line_number, 2);
			ft_putendl_fd(":\tERROR! Bad Indentation.", 2);
			exit(1);
		}
		else
			i++;
	}
	return (i);
}
예제 #16
0
static void		pipe_left(t_node *tree, int *pipe_fd, t_data *data)
{
	char	*line;

	close(pipe_fd[0]);
	get_tmpfd(&data->tmp_pipein, "/.temp_pipein");
	read_tree(tree->left);
	lseek(data->tmp_pipein, 0, SEEK_SET);
	while (get_next_line(data->tmp_pipein, &line) > 0)
	{
		ft_putendl_fd(line, pipe_fd[1]);
		ft_strdel(&line);
	}
	remove_tmp("/.temp_pipein");
	if (g_pid.built == 0 || WEXITSTATUS(g_pid.id) != 0)
		exit(EXIT_FAILURE);
	else
		exit(EXIT_SUCCESS);
}
예제 #17
0
파일: ft_see.c 프로젝트: jdG-/zap
void			ft_see(t_cmd *cmd, t_game *g)
{
	t_var	var;
	char	*msg;
	char	*del;

	msg = NULL;
	var = init_var(g, cmd);
	msg = check_case(g, var, msg, 1);
	var.i = 1;
	del = msg;
	msg = ft_strtrim(msg);
	free(del);
	msg = ft_strjoin_free("{", msg, 2);
	msg = ft_strjoin_free(msg, ",", 1);
	ft_while(g, cmd, var, &msg);
	msg = ft_strjoin_free(msg, "}", 1);
	ft_putendl_fd(msg, cmd->fd);
}
예제 #18
0
파일: main.c 프로젝트: Chr0nos/ft_ls
int			main(int ac, char **av)
{
	t_list	*targets;
	int		flags;

	if (ac == 1)
		ls_dir(get_newrdir(".", NONE), 0, 0, 0);
	else if (checkpute(ac, av))
		ft_putendl_fd("ls: fts_open: No such file or directory", 2);
	else
	{
		targets = NULL;
		flags = parser(ac, av, &targets);
		if (flags >= 0)
			pre_parse(targets, flags);
		ft_lstdel(&targets, 0);
	}
	return (0);
}
예제 #19
0
파일: main.c 프로젝트: jaybi42/fdf
static int	new_map(char *map)
{
	char	*new_map;
	char	*buff;
	int		fd;

	buff = ft_strjoin("samples/", map);
	new_map = ft_strjoin(buff, ".fdf");
	free(buff);
	fd = open(new_map, O_RDONLY);
	free(new_map);
	if (fd <= 0)
		fd = open(map, O_RDONLY);
	if (fd <= 0)
	{
		ft_putendl_fd("Error opening the file.", 2);
		return (0);
	}
	return (fd);
}
예제 #20
0
static int				ft_unsetenv(char **cmd, t_mlist *mlist)
{
	t_list				*tmp;
	t_list				*cur;

	cur = mlist->env;
	if (ft_count_tab(cmd) == 1)
		return (!ft_putendl_fd("unsetenv: Too few arguments.", 2));
	if ((tmp = ft_get_env(cmd[1], mlist->env)) == NULL)
		return (1);
	while (cur && cur->next && cur->next != tmp)
		cur = cur->next;
	if (mlist->env && tmp == mlist->env)
		mlist->env = mlist->env->next;
	else if (cur && tmp)
		cur->next = tmp->next;
	free(tmp->content);
	free(tmp);
	return (1);
}
예제 #21
0
파일: ft_env.c 프로젝트: maafterchef/42_2
void	ft_env(t_env *e, char **b_tab)
{
	t_list	*env;

	env = e->env;
	if (ft_tablen(b_tab) != 1)
	{
		ft_putstr_fd("env: ", 2);
		ft_putstr_fd(b_tab[1], 2);
		ft_putendl_fd(": No such file or directory", 2);
	}
	else
	{
		while (env)
		{
			ft_putendl(env->content);
			env = env->next;
		}
	}
}
예제 #22
0
static void build_ip_header(t_env *env, struct iphdr *header)
{
	ft_bzero(header, sizeof(*header));
	header->version = 4;
	header->ihl = 5;
	header->tos = 0;
	header->tot_len = sizeof(t_packet);
	header->id = ICMP_ECHO;
	header->frag_off = 0;
	header->ttl = 255;
	header->protocol = IPPROTO_ICMP;
	header->check = 0;
	if (inet_pton(AF_INET, env->ip, &header->daddr) != 1)
	{
		ft_putendl_fd("ft_ping: can't pton ip", 2);
		exit(EXIT_FAILURE);
	}
	header->saddr = 0;
	header->check = 0;
}
예제 #23
0
static char	*change_into_number(char *av)
{
	char	*var_name;
	int		number;

	if (!(var_name = ft_strcdup(av, '=')))
		return (av);
	if (!(ft_strcmp(var_name, "SHLVL")))
	{
		if (!(number = ft_atoi(ft_strchr(av, '=') + 1)))
		{
			free(var_name);
			free(av);
			ft_putendl_fd("Error : SHLVL must be a number", 2);
			return (NULL);
		}
	}
	free(var_name);
	return (av);
}
예제 #24
0
void	init_circle(t_scene **scene, t_vec3 center, unsigned int color, float radius)
{
	t_circle	*circle;
	t_scene		*new_obj;

	circle = (t_circle *)malloc(sizeof(t_circle));
	new_obj = (t_scene *)malloc(sizeof(t_scene));
	if (circle == NULL || new_obj == NULL)
	{
		ft_putendl_fd("Fatal error : Failed malloc in init_circle", 2);
		exit(-1);
	}
	init_coord(&circle->center, center.x, center.y, center.z);
	circle->r = radius;
	new_obj->type = CIRCLE;
	new_obj->object = circle;
	new_obj->color = color;
	new_obj->next = *scene;
	*scene = new_obj;
}
예제 #25
0
void			write_pipefile(void)
{
	char	*line;
	t_data	*data;
	t_fd	*tmp;

	data = init_data(0);
	tmp = data->infildes;
	lseek(data->tmp_pipeout, data->offset, SEEK_SET);
	while (tmp)
	{
		while (get_next_line(tmp->fildes, &line) > 0)
		{
			ft_putendl_fd(line, data->tmp_pipeout);
			ft_strdel(&line);
		}
		tmp = tmp->next;
	}
	lseek(data->tmp_pipeout, 0, SEEK_SET);
}
예제 #26
0
int			main(void)
{
	t_map		*map;

	map = NULL;
	map = ft_lemin_parser(map);
	if (map != NULL)
	{
		ft_display_instructions(map);
		ft_multi_pathfinding(map);
		if (map->roads->first == NULL)
		{
			ft_putendl_fd("Error, no path to finish Lem-in", 2);
			return (0);
		}
		ft_init_ants(map);
		ft_exec_lemin(map);
	}
	return (0);
}
예제 #27
0
파일: ft_error.c 프로젝트: vilsbole/42sh
int		ft_error(char *cmd, char *msg, char *arg)
{
	if (cmd != NULL)
		ft_putstr_fd(cmd, 2);
	else
		ft_putstr_fd(FTSH_NAME, 2);
	if (msg != NULL)
	{
		ft_putstr_fd(": ", 2);
		ft_putstr_fd(msg, 2);
	}
	if (arg != NULL)
	{
		ft_putstr_fd(": ", 2);
		ft_putendl_fd(arg, 2);
	}
	else
		ft_putchar_fd('\n', 2);
	return (1);
}
예제 #28
0
int				main(int argc, char **argv)
{
	t_e		e;

	if (argc == 1)
		return (0);
	e.l_a = ft_create_list1(argv, &e, argc);
	e.l_b = ft_create_racine();
	if (e.l_a == NULL || e.l_b == NULL || (!(ft_check_doublon1(&e))))
	{
		ft_putendl_fd("Error", 2);
		return (-1);
	}
	if (!(checker_calc(&e)))
		return (1);
	checker_resolv(&e);
	ft_free_list_cir(e.l_a);
	ft_free_list_cir(e.l_b);
	return (0);
}
예제 #29
0
파일: wait_server.c 프로젝트: gtandeo/ft_p
static void	wait_get(int sock, char *command)
{
	char	*line;
	char	*file_name;
	int		fd;

	if (wait_server_pass(sock))
		return ;
	file_name = get_file_name(command);
	if ((fd = open(file_name, O_CREAT | O_WRONLY | O_APPEND, S_IRUSR | S_IWUSR
		| S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) == -1)
		return ;
	while (get_next_line(sock, &line) > 0 && ft_strcmp(line, "\033"))
	{
		ft_putendl_fd(line, fd);
		free(line);
	}
	free(file_name);
	close(fd);
}
예제 #30
0
void	init_client(int s, t_env *e, t_client client)
{
	int		father;
	t_play	player;

	father = fork();
	if (father > 0)
		return ;
	if (father == 0)
	{
		if ((s = client_init(client.port, client.host)) < 0)
		{
			ft_putendl_fd("Client init error\n", 2);
			exit(0);
		}
		printf("SON\n");
		player = init_play(s, client);
		ft_loop(s, e, player);
	}
}