1#serial 5
2
3# Define some macros required for proper operation of code in lib/*.c
4# on MSDOS/Windows systems.
5
6# From Jim Meyering.
7
8AC_DEFUN([jm_AC_DOS],
9  [
10    AC_CACHE_CHECK([whether system is Windows or MSDOS], [ac_cv_win_or_dos],
11      [
12        AC_TRY_COMPILE([],
13        [#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__
14neither MSDOS nor Windows
15#endif],
16        [ac_cv_win_or_dos=yes],
17        [ac_cv_win_or_dos=no])
18      ])
19
20    if test x"$ac_cv_win_or_dos" = xyes; then
21      ac_fs_accepts_drive_letter_prefix=1
22      ac_fs_backslash_is_file_name_separator=1
23    else
24      ac_fs_accepts_drive_letter_prefix=0
25      ac_fs_backslash_is_file_name_separator=0
26    fi
27
28    AH_VERBATIM(FILESYSTEM_PREFIX_LEN,
29    [#if FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX
30# define FILESYSTEM_PREFIX_LEN(Filename) \
31  ((Filename)[0] && (Filename)[1] == ':' ? 2 : 0)
32#else
33# define FILESYSTEM_PREFIX_LEN(Filename) 0
34#endif])
35
36    AC_DEFINE_UNQUOTED([FILESYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX],
37      $ac_fs_accepts_drive_letter_prefix,
38      [Define on systems for which file names may have a so-called
39       `drive letter' prefix, define this to compute the length of that
40       prefix, including the colon.])
41
42    AH_VERBATIM(ISSLASH,
43    [#if FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR
44# define ISSLASH(C) ((C) == '/' || (C) == '\\')
45#else
46# define ISSLASH(C) ((C) == '/')
47#endif])
48
49    AC_DEFINE_UNQUOTED([FILESYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR],
50      $ac_fs_backslash_is_file_name_separator,
51      [Define if the backslash character may also serve as a file name
52       component separator.])
53  ])
54