some norm

This commit is contained in:
Jack Halford 2017-03-19 22:34:49 +01:00
parent 4a5f7b61d7
commit d0b13b7bd5
2 changed files with 11 additions and 13 deletions

View file

@ -19,10 +19,11 @@ char *ft_strtok(char *s, const char *delim)
if (s == 0) if (s == 0)
s = lasts; s = lasts;
do { if ((ch = *s++) == 0)
if ((ch = *s++) == 0) return (0);
while (ft_strchr(delim, ch))
if ((ch = *s) == 0)
return (0); return (0);
} while (ft_strchr(delim, ch));
--s; --s;
lasts = s + ft_strcspn(s, delim); lasts = s + ft_strcspn(s, delim);
if (*lasts != 0) if (*lasts != 0)

View file

@ -26,7 +26,8 @@ t_cliopts g_read_opts[] =
void bt_read_usage(void) void bt_read_usage(void)
{ {
ft_dprintf(2, "{red}read: usage: read [-ers] [-u fd] [-t timeout] [-p prompt] [-a array] [-n nchars] [-d delim] [name ...]{eoc}\n"); ft_dprintf(2, "{red}read: usage: read [-ers] [-u fd] [-t timeout]
[-p prompt] [-n nchars] [-d delim] [name ...]{eoc}\n");
} }
int bt_read_init(t_read *data, char **av) int bt_read_init(t_read *data, char **av)
@ -39,9 +40,9 @@ int bt_read_init(t_read *data, char **av)
data->timeout = 0; data->timeout = 0;
data->input = NULL; data->input = NULL;
if ((cliopts_get(av, g_read_opts, data))) if ((cliopts_get(av, g_read_opts, data)))
return(ft_perror()); return(ft_perror() ? 2 : 2);
DG("opts=%b", data->opts); if (bt_read_terminit(data) < 0)
bt_read_terminit(data); return (-1);
return (0); return (0);
} }
@ -61,7 +62,6 @@ int bt_read_loop(t_read *data)
if ((ret = read(data->fd, buf, 1)) <= 0) if ((ret = read(data->fd, buf, 1)) <= 0)
return (ret); return (ret);
buf[ret] = 0; buf[ret] = 0;
DG("read [%c]", *buf);
if (!esc && *buf == data->delim) if (!esc && *buf == data->delim)
break ; break ;
esc = esc ? 0 : !(data->opts & READ_OPT_LR) && (*buf == '\\'); esc = esc ? 0 : !(data->opts & READ_OPT_LR) && (*buf == '\\');
@ -81,7 +81,6 @@ int bt_read_assign(t_read *data)
char *ifs; char *ifs;
char *tok; char *tok;
DG("assigning");
input = data->input; input = data->input;
names = *data->names ? data->names : (char*[]){"REPLY", NULL}; names = *data->names ? data->names : (char*[]){"REPLY", NULL};
ifs = ft_getenv(data_singleton()->local_var, "IFS"); ifs = ft_getenv(data_singleton()->local_var, "IFS");
@ -90,8 +89,6 @@ int bt_read_assign(t_read *data)
tok = ft_strtok(input, ifs); tok = ft_strtok(input, ifs);
while (*names) while (*names)
{ {
DG("tok=%s", tok);
DG("name=%s", *names);
builtin_setenv("setenv", (char*[]){"setenv", *names, tok}, NULL); builtin_setenv("setenv", (char*[]){"setenv", *names, tok}, NULL);
ifs = names[1] ? ifs : NULL; ifs = names[1] ? ifs : NULL;
tok = ft_strtok(NULL, ifs); tok = ft_strtok(NULL, ifs);
@ -108,8 +105,8 @@ int builtin_read(const char *path, char *const av[], char *const envp[])
(void)path; (void)path;
(void)envp; (void)envp;
ret = 0; ret = 0;
if (bt_read_init(&data, (char **)av)) if ((ret = bt_read_init(&data, (char **)av)) != 0)
ret = 2; ;
else if ((ret = bt_read_loop(&data))) else if ((ret = bt_read_loop(&data)))
; ;
else if (bt_read_assign(&data)) else if (bt_read_assign(&data))