summaryrefslogtreecommitdiffstats
path: root/src/fopenmkdir.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fopenmkdir.c')
-rw-r--r--src/fopenmkdir.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/fopenmkdir.c b/src/fopenmkdir.c
new file mode 100644
index 0000000..e4c4d68
--- /dev/null
+++ b/src/fopenmkdir.c
@@ -0,0 +1,33 @@
+#include <mkdirp.c>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+FILE * fopen_mkdir(char* filename, char* mode) {
+ FILE * file_to_return;
+ file_to_return = fopen(filename, mode);
+ if(file_to_return == NULL) {
+ char folder_of_file[256];
+ strcpy(folder_of_file, filename);
+ char * p;
+ p = strrchr(folder_of_file, '/');
+ if (!p) {
+ printf("[fopenmkdir.c] filename contains no slash.\n");
+ return NULL;
+ } else {
+ printf("folder is %s\n", folder_of_file);
+ printf("filename is %s\n", filename);
+ *p = '\0';
+ }
+ if(mkdir_p(folder_of_file) != 0) {
+ return NULL;
+ }
+ file_to_return = fopen(filename, mode);
+ if(file_to_return == NULL) {
+ return NULL;
+ }
+ return file_to_return;
+ } else {
+ return file_to_return;
+ }
+}