Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
there is no dirname() windows
authorMartin Quinson <martin.quinson@loria.fr>
Sun, 13 Sep 2015 13:33:43 +0000 (15:33 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Sun, 13 Sep 2015 13:33:43 +0000 (15:33 +0200)
src/surf/surfxml_parse.c

index ad461b9..c82a307 100644 (file)
@@ -7,7 +7,9 @@
 #include <errno.h>
 #include <math.h>
 #include <stdarg.h> /* va_arg */
+#ifndef _MSC_VER
 #include <libgen.h>
+#endif
 
 #include "xbt/misc.h"
 #include "xbt/log.h"
@@ -1028,8 +1030,18 @@ void surf_parse_open(const char *file)
 
   if (!surf_parsed_filename_stack)
     surf_parsed_filename_stack = xbt_dynar_new(sizeof(char *), &xbt_free_ref);
+
+#ifdef _MSC_VER
+  /* There is no dirname on windows... */
+  char drive[_MAX_DRIVE];
+  char dir[_MAX_DIR];
+  errno_t err;
+  err = _splitpath_s(file, drive, _MAX_DRIVE, dir, _MAX_DIR, NULL,0, NULL,0);
+  char *dir = bprintf("%s%s",drive,dir);
+#else
   surf_parsed_filename = xbt_strdup(file);
   char *dir = dirname(surf_parsed_filename);
+#endif
   xbt_dynar_push(surf_path, &dir);
 
   surf_file_to_parse = surf_fopen(file, "r");