ft_ls/src/main.c
Gregory Tertyshny f5860b88e1 broke everything
2017-04-01 21:16:41 +03:00

91 lines
2.7 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* main.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: gtertysh <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2017/03/25 18:26:51 by gtertysh #+# #+# */
/* Updated: 2017/03/25 18:27:42 by gtertysh ### ########.fr */
/* */
/* ************************************************************************** */
#include "ft_ls.h"
// complide with -O3 flag!!
void free_str_lst(t_list *curr_cont)
{
char *tmp;
t_list *tmp1;
while (curr_cont)
{
tmp1 = curr_cont->next;
if (curr_cont->content)
{
tmp = (char *)curr_cont->content;
free(tmp);
}
free(curr_cont);
curr_cont = tmp1;
}
}
void init_base_structs(t_ft_ls *s_ls, t_flags *flgs, t_col_len *padd,
t_list **fil_dir)
{
fil_dir[FILS] = NULL;
fil_dir[DIRS] = NULL;
s_ls->flgs = flgs;
s_ls->max_cols_padd = padd;
s_ls->first_print = 1;
s_ls->files_print = 0;
s_ls->dir_content_total = 0;
}
void ft_ls_start(t_ft_ls *s_ls, t_list **file_and_dirs, int no_error_operands)
{
if (file_and_dirs[FILS])
{
s_ls->files_print = 1;
ft_ls_fil(s_ls, operands_parse(file_and_dirs[FILS], s_ls));
s_ls->files_print = 0;
s_ls->first_print = 0;
}
if (file_and_dirs[DIRS])
{
sort_paths(&file_and_dirs[DIRS]);
if (ft_lst_len(file_and_dirs[FILS]) == 0 &&
ft_lst_len(file_and_dirs[DIRS]) == 1)
if (!s_ls->flgs->R)
s_ls->one_dir = 1;
ft_ls_dir(s_ls, operands_parse(file_and_dirs[DIRS], s_ls), NULL);
}
if (no_error_operands && (!file_and_dirs[DIRS] && !file_and_dirs[FILS]))
{
s_ls->one_dir = 1;
fill_path_lst(&file_and_dirs[DIRS], "./");
ft_ls_dir(s_ls, operands_parse(file_and_dirs[DIRS], s_ls), NULL);
}
}
int main(int argc, char **argv)
{
static t_flags flgs;
static t_col_len padding;
static t_ft_ls s_ls;
t_list **file_and_dirs;
int no_error_operands;
file_and_dirs = malloc(sizeof(t_list *) * 2);
init_base_structs(&s_ls, &flgs, &padding, file_and_dirs);
no_error_operands = parse_input(argc, argv, file_and_dirs, s_ls.flgs);
ft_ls_start(&s_ls, file_and_dirs, no_error_operands);
free_str_lst(file_and_dirs[FILS]);
free_str_lst(file_and_dirs[DIRS]);
free(file_and_dirs);
// while (1)
// ;
return 0;
}