aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/mds-kbdc/make-tree.c8
-rw-r--r--src/mds-kbdc/mds-kbdc.c5
-rw-r--r--src/mds-kbdc/raw-data.c3
-rw-r--r--test-files/mds-kbdc/make-tree/valid/empty_file5
-rw-r--r--test-files/mds-kbdc/make-tree/valid/perfectly_empty_file0
5 files changed, 18 insertions, 3 deletions
diff --git a/src/mds-kbdc/make-tree.c b/src/mds-kbdc/make-tree.c
index cdfae40..fab402b 100644
--- a/src/mds-kbdc/make-tree.c
+++ b/src/mds-kbdc/make-tree.c
@@ -1027,6 +1027,14 @@ int parse_to_tree(const char* restrict filename, mds_kbdc_parsed_t* restrict res
}
}
+ /* Warn about empty files. */
+ if (result->tree == NULL)
+ {
+ char* line = NULL;
+ char* end = NULL;
+ NEW_ERROR(0, WARNING, "file is empty");
+ }
+
free(keyword_stack);
free(tree_stack);
return 0;
diff --git a/src/mds-kbdc/mds-kbdc.c b/src/mds-kbdc/mds-kbdc.c
index a2b5b70..318fc3c 100644
--- a/src/mds-kbdc/mds-kbdc.c
+++ b/src/mds-kbdc/mds-kbdc.c
@@ -20,6 +20,7 @@
#include "globals.h"
#include "make-tree.h"
#include "simplify-tree.h"
+#include "process-includes.h"
#include <libmdsserver/macros.h>
@@ -52,8 +53,8 @@ int main(int argc_, char** argv_)
mds_kbdc_parsed_initialise(&result);
process (parse_to_tree(argv[1], &result));
- //process (simplify_tree(&result));
- //process (process_includes(&result));
+ process (simplify_tree(&result));
+ process (process_includes(&result));
/* TODO process (validate_tree(&result)); */
/* TODO process (eliminate_dead_code(&result)); */
/* TODO process (compile_layout(&result)); */
diff --git a/src/mds-kbdc/raw-data.c b/src/mds-kbdc/raw-data.c
index a1f8ec3..b0985fe 100644
--- a/src/mds-kbdc/raw-data.c
+++ b/src/mds-kbdc/raw-data.c
@@ -115,7 +115,8 @@ static char* read_file(const char* restrict pathname, size_t* restrict size)
}
/* Shrink the buffer so it is not excessively large. */
- fail_if (xxrealloc(old, content, buf_ptr, char));
+ if (buf_ptr) /* Simplest way to handle empty files: let the have the initial allocation size. */
+ fail_if (xxrealloc(old, content, buf_ptr, char));
/* Close file decriptor for the file. */
close(fd);
diff --git a/test-files/mds-kbdc/make-tree/valid/empty_file b/test-files/mds-kbdc/make-tree/valid/empty_file
new file mode 100644
index 0000000..e3fe2c3
--- /dev/null
+++ b/test-files/mds-kbdc/make-tree/valid/empty_file
@@ -0,0 +1,5 @@
+# prefectly_empty_file should yeild the same error message.
+
+# : warning: file is empty
+#
+
diff --git a/test-files/mds-kbdc/make-tree/valid/perfectly_empty_file b/test-files/mds-kbdc/make-tree/valid/perfectly_empty_file
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test-files/mds-kbdc/make-tree/valid/perfectly_empty_file