diff options
| author | dx <aryadevchavali1@gmail.com> | 2020-05-20 16:24:57 +0100 | 
|---|---|---|
| committer | dx <aryadevchavali1@gmail.com> | 2020-05-20 16:24:57 +0100 | 
| commit | 1a2d0ffdbfb69a2858fb45facfb18468106edd9a (patch) | |
| tree | 78a52eace964ed3e79e37a5bda71288c22333a21 | |
| parent | 505a5ac2a4c57d5daa03046366ac38a2e3182b94 (diff) | |
| download | mdhtml-1a2d0ffdbfb69a2858fb45facfb18468106edd9a.tar.gz mdhtml-1a2d0ffdbfb69a2858fb45facfb18468106edd9a.tar.bz2 mdhtml-1a2d0ffdbfb69a2858fb45facfb18468106edd9a.zip  | |
+function to get the lines of some given file
Uses the dynamic array to alleviate the burdens of computing specific
memory sizes. Terminates lines for parsing.
| -rw-r--r-- | Converter/includes/compiler.h | 3 | ||||
| -rw-r--r-- | Converter/src/compiler.c | 30 | 
2 files changed, 33 insertions, 0 deletions
diff --git a/Converter/includes/compiler.h b/Converter/includes/compiler.h index 6e1eca8..8d84b71 100644 --- a/Converter/includes/compiler.h +++ b/Converter/includes/compiler.h @@ -15,4 +15,7 @@ int find_string(string src, string query, size_t sz_src, size_t sz_query);  /* Check if a given character is a text token*/  bool is_token(char c); +/* Given a file, get the lines */ +char **get_lines(char *filename); +  #endif // __COMPILER_H_ diff --git a/Converter/src/compiler.c b/Converter/src/compiler.c index e2dd74b..ddbe6ff 100644 --- a/Converter/src/compiler.c +++ b/Converter/src/compiler.c @@ -1,4 +1,5 @@  #include "../includes/compiler.h" +#include "../includes/array.h"  #include <stdio.h>  #include <string.h> @@ -189,3 +190,32 @@ string compile_line(string line, size_t size_of_line, string line_or_source)    return compiled_line;  } + +char **get_lines(char *filename) +{ +  FILE *fp; +  char **lines, *line; +  array_t *arr; +  int i; + +  array_init(arr); + +  fp = fopen(filename, "r"); + +  while(!feof(fp)) +  { +    // Get line +    line = malloc(sizeof(*line) * 1024); +    fgets(line, 1024, fp); + +    // Terminate line +    for (i = 0; line[i] != '\n'; ++i); +    line[i] = '\0'; +    array_append(arr, line); +  } + +  lines = (char**)arr->data; +  free(arr); + +  return lines; +}  | 
