aboutsummaryrefslogtreecommitdiffstats
path: root/src/ft_get_map.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ft_get_map.c')
-rw-r--r--src/ft_get_map.c63
1 files changed, 60 insertions, 3 deletions
diff --git a/src/ft_get_map.c b/src/ft_get_map.c
index a45052c..1c672e6 100644
--- a/src/ft_get_map.c
+++ b/src/ft_get_map.c
@@ -3,18 +3,75 @@
#include <stddef.h>
#include <stdlib.h>
+/* static char */
+/* **ft_split_lines(char *line, int count) */
+/* { */
+/* } */
+
+static int
+ft_linecpy(char *line, char *mapL)
+{
+ size_t i;
+
+ i = 0;
+ while (i < ft_strlen(line))
+ {
+ mapL[i] = line[i];
+ i += 2;
+ }
+ mapL[i + 1] = '\n';
+ return (0);
+}
+
+static int
+ft_check_err(char *line, size_t size, t_win *wlist)
+{
+ size_t i;
+
+ i = 1;
+ if (ft_strlen(line) != size)
+ return (-1);
+ while (i < ft_strlen(line) && line[i])
+ {
+ if (line[i] != ' ')
+ return (ft_map_error(11, wlist));
+ i += 2;
+ }
+ return (0);
+}
int
ft_get_map(int fd, t_win *wlist)
{
size_t i;
+ size_t len;
char *line;
+ char *mapL;
- ft_free_words(wlist->clist->map, NULL);
- i = 0;
- if (!(wlist->clist->map = (char**)malloc(40 * sizeof(char*))))
+ /* ft_free_words(wlist->clist->map, NULL); */
+ /* if (!(wlist->clist->map = (char**)malloc(40 * sizeof(char*)))) */
+ /* return (-1); */
+ if (get_next_line(fd, &line) > 0)
+ {
+ len = ft_strlen(line);
+ ft_check_err(line, len, wlist);
+ if (!(mapL = (char*)malloc((len + 1) * sizeof(char))))
+ ft_linecpy(line, mapL);
+ ft_memdel(line);
+ }
+ else
return (-1);
+ i = 1;
while (get_next_line(fd, &line) > 0)
{
+ ft_check_err(line, len, wlist);
+ mapL = (char*)ft_nrealloc(mapL, ((len + 1) * i) * sizeof(char), (((len + 1) * i) + ft_strlen(line) + 1) * sizeof(char));
+ ft_linecpy(line, mapL);
+ ft_memdel(line);
+ i++;
}
+ mapL[(i * (len + 1)) + 1] = '\0';
+ ft_printf("mapL [%s]\n", mapL);
+ wlist->clist->map = ft_split(mapL, '\n');
+ ft_memdel(mapL);
return (0);
}