Пример #1
0
int		analyse_rd(int *i, t_env *env, char **arg, int *k)
{
	int		j;

	j = ((char)*(unsigned int *)(env->rd) == '\t') ? srchsmtg(arg, *k, i) : 0;
	if (*(unsigned int *)(env->rd) == 127 && (j = 1) && (*i) > 0)
		delete(&arg, k, i);
	else if ((char)*(unsigned int *)(env->rd) == '\n' && \
			(arg[*k][ft_strlen(arg[*k])] = *(unsigned int *)(env->rd)))
		return (0);
	else if (*(unsigned int *)(env->rd) == 4479771 && (j = 1))
		left(arg, i, k);
	else if (*(unsigned int *)(env->rd) == 4414235)
		j = right(j, arg, i, k) > 0 ? 1 : 2;
	else if (*(unsigned int *)(env->rd) == 4348699)
		j = down(arg, k, j, i) > 0 ? 1 : 2;
	else if (*(unsigned int *)(env->rd) == 4283163)
		j = up(arg, k, j, i) > 0 ? 1 : 2;
	else if (j != 0)
		erase_c(4, &(env->term));
	else
		j = ft_isprint((char)*(unsigned int *)env->rd) - 1;
	move_curs(arg, k, i, &(env->term));
	if (j != 0)
		return (0);
	return (1);
}
Пример #2
0
static char	*sort_chain(char *str, int *cur)
{
  int		tmp;
  char		*str2;

  tmp = *cur;
  *cur = move_curs(str, *cur);
  if (str[*cur] == '|' || str[*cur] == ';')
    return (check_around(tmp, *cur, str, str[*cur]));
  else if (str[*cur] == '>' && (str2 = check_redir(str, cur, tmp)))
    return (str2);
  else if (str[*cur] == '<' && (str2 = check_left_redir(str, tmp, cur)))
    return (str2);
  else if (str[*cur] == '&' && (str2 = check_and(tmp, cur, str)))
    return (str2);
  else if (!str[*cur])
    return (cut_chain(tmp, *cur, str));
  else
    return (NULL);
}