Another issue is the use of a literal '/' in functions that take apart
file names. On Windows, we need to support the backslashes as well.
Here's the patch (it needs a part of the change to system.h I sent in
the previous mail):
--- src/parse-gram.y~0 2013-08-02 18:35:13 +0300
+++ src/parse-gram.y 2014-10-06 14:18:31 +0300
@@ -36,6 +36,7 @@
#include "c-ctype.h"
#include "complain.h"
#include "conflicts.h"
+ #include "dirname.h"
#include "files.h"
#include "getargs.h"
#include "gram.h"
@@ -326,13 +327,14 @@ prologue_declaration:
| "%skeleton" STRING
{
char const *skeleton_user = $2;
- if (strchr (skeleton_user, '/'))
+ if (strchr (skeleton_user, '/')
+ || (ISSLASH ('\\') && _mbschr (skeleton_user, '\\')))
{
size_t dir_length = strlen (current_file);
char *skeleton_build;
- while (dir_length && current_file[dir_length - 1] != '/')
+ while (dir_length && !ISSLASH (current_file[dir_length - 1]))
--dir_length;
- while (dir_length && current_file[dir_length - 1] == '/')
+ while (dir_length && ISSLASH (current_file[dir_length - 1]))
--dir_length;
skeleton_build =
xmalloc (dir_length + 1 + strlen (skeleton_user) + 1);