--- /dev/null
+#include <stddef.h>
+#include <string.h>
+#include "robodoc.h"
+#include "folds.h"
+
+
+/****v* ROBODoc/fold_start_markers
+ * NAME
+ * fold_start_markers
+ * FUNCTION
+ * Strings for fold start.
+ * SOURCE
+ */
+fold_mark_t fold_start_markers[] =
+{
+ {"/*{{{", "*/"}, /* C, C++ */
+ {"--{{{", "\n"}, /* Occam, line ends with newline */
+ {"#{{{", "\n"}, /* Various scripts, line ends with newline */
+ {NULL, NULL}
+};
+
+/****/
+
+
+/****v* ROBODoc/fold_end_markers
+ * NAME
+ * fold_start_end
+ * FUNCTION
+ * Strings for fold end.
+ * SOURCE
+ */
+fold_mark_t fold_end_markers[] =
+{
+ {"/*}}}", "*/"},
+ {"--}}}", "\n"},
+ {"#}}}", "\n"},
+ {NULL, NULL}
+};
+
+/****/
+
+int extra_flags = 0;
+
+/****v* ROBODoc/fold
+* NAME
+* fold
+* FUNCTION
+* Fold counter - true global.
+* SOURCE
+*/
+
+int fold = 0;
+
+/****/
+
+
+
+/****f* ROBODoc/RB_Check_Fold_End [3.0h]
+* NAME
+* RB_Check_Fold_End
+* AUTHOR
+* PetteriK
+* FUNCTION
+* See if a fold end is found.
+* RETURN VALUE
+* 1 if end mark is found
+* SOURCE
+*/
+
+char
+RB_Check_Fold_End (char *cur_char)
+{
+ fold_mark_t *t = fold_end_markers;
+ char found = 0;
+
+ while (found == 0 && t->start != NULL)
+ {
+ if (strncmp (t->start, cur_char, strlen (t->start)) == 0)
+ {
+ found = 1;
+ break;
+ }
+ t++; /* try the next fold mark string */
+ }
+ return found;
+}
+
+/*******/
+
+/****f* ROBODoc/RB_Check_Fold_Start
+ * NAME
+ * RB_Check_Fold_Start
+ * AUTHOR
+ * PetteriK
+ * FUNCTION
+ * Check if a fold start is found.
+ * RETURN VALUE
+ * Pointer to the item body, fold mark and name skipped.
+ * SIDE EFFECTS
+ * *found = 1 if fold mark is found. Fold name is copied to *foldname.
+ *******
+ */
+
+char *
+RB_Check_Fold_Start (char *cur_char, char *foldname, char *found)
+{
+ int n = 0;
+ fold_mark_t *t = fold_start_markers;
+
+ *found = 0;
+ while (*found == 0 && t->start != NULL)
+ {
+ if (strncmp (t->start, cur_char, strlen (t->start)) == 0)
+ {
+ *found = 1;
+ break;
+ }
+ t++; /* try the next fold mark string */
+ }
+ if (*found == 0)
+ {
+ return cur_char; /* not found, get out of here */
+ }
+ cur_char += strlen (t->start); /* skip fold mark */
+ /* get the fold name */
+ while (strncmp (t->end, cur_char, strlen (t->end)) != 0)
+ {
+ foldname[n++] = *cur_char++;
+ }
+ /* if fold mark does not end with newline, skip chars... */
+ if (t->end[0] != '\n')
+ {
+ cur_char += strlen (t->end);
+ }
+ foldname[n] = '\0';
+ while (*cur_char != '\n')
+ {
+ cur_char++; /* not so sure about this */
+ }
+ return cur_char;
+}