use NULL instead of (void*)0
[smdp.git] / src / parser.c
index c8120cd..04a0b49 100644 (file)
  */
 
 #include <ctype.h>
+#include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include "parser.h"
 
@@ -34,20 +36,21 @@ deck_t *markdown_load(FILE *input) {
     int l = 0;    // line length
     int hc = 0;   // header count
     int lc = 0;   // line count
-    int sc = 0;   // slide count
+    int sc = 1;   // slide count
     int bits = 0; // markdown bits
 
     deck_t *deck = new_deck();
-    slide_t *slide = new_slide();
+    slide_t *slide = deck->slide;
     line_t *line = NULL;
     line_t *tmp = NULL;
     cstring_t *text = cstring_init();
 
-    // assign first slide to deck
-    deck->slide = slide;
-    sc++;
-
     while ((c = fgetc(input)) != EOF) {
+        if (ferror(input)) {
+            fprintf(stderr, "markdown_load() failed to read input: %s\n", strerror(errno));
+            exit(EXIT_FAILURE);
+        }
+
         if(c == '\n') {
 
             // markdown analyse
@@ -266,7 +269,7 @@ deck_t *markdown_load(FILE *input) {
                     }
                     tmp = tmp->next;
                 }
-                
+
                 for(tmp = line; tmp != list_last_level_1; tmp = tmp->next) {
                     SET_BIT(tmp->bits, IS_UNORDERED_LIST_1);
                 }
@@ -337,12 +340,12 @@ int markdown_analyse(cstring_t *text) {
                     case 3: SET_BIT(bits, IS_UNORDERED_LIST_3); break;
                     default: break;
                 }
-                
+
                 break;
             }
         }
     }
-    
+
     if(!CHECK_BIT(bits, IS_UNORDERED_LIST_1) &&
        !CHECK_BIT(bits, IS_UNORDERED_LIST_2) &&
        !CHECK_BIT(bits, IS_UNORDERED_LIST_3)) {
@@ -518,4 +521,3 @@ int next_blank(cstring_t *text, int i) {
 int next_word(cstring_t *text, int i) {
     return next_nonblank(text, next_blank(text, i));
 }
-