(root)/
fontconfig-2.14.2/
src/
fcwindows.h
       1  /*
       2   * fontconfig/src/fcwindows.h
       3   *
       4   * Copyright © 2013  Google, Inc.
       5   *
       6   * Permission to use, copy, modify, distribute, and sell this software and its
       7   * documentation for any purpose is hereby granted without fee, provided that
       8   * the above copyright notice appear in all copies and that both that
       9   * copyright notice and this permission notice appear in supporting
      10   * documentation, and that the name of the author(s) not be used in
      11   * advertising or publicity pertaining to distribution of the software without
      12   * specific, written prior permission.  The authors make no
      13   * representations about the suitability of this software for any purpose.  It
      14   * is provided "as is" without express or implied warranty.
      15   *
      16   * THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
      17   * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
      18   * EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
      19   * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
      20   * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
      21   * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
      22   * PERFORMANCE OF THIS SOFTWARE.
      23   *
      24   * Google Author(s): Behdad Esfahbod
      25   */
      26  
      27  #ifndef _FCWINDOWS_H_
      28  #define _FCWINDOWS_H_
      29  
      30  #ifdef HAVE_CONFIG_H
      31  #include <config.h>
      32  #endif
      33  
      34  #ifdef _WIN32
      35     /* Request Windows Vista for building.  This is required to
      36      * get MemoryBarrier on mingw32... */
      37  #  if defined(_WIN32_WINNT) && _WIN32_WINNT < 0x0600
      38  #    undef _WIN32_WINNT
      39  #  endif
      40  #  ifndef _WIN32_WINNT
      41  #    define _WIN32_WINNT 0x0600
      42  #  endif
      43  #  define WIN32_LEAN_AND_MEAN
      44  #  define WIN32_EXTRA_LEAN
      45  #  define STRICT
      46  #  include <windows.h>
      47  #  include <io.h>
      48  
      49  #if defined(_MSC_VER)
      50  #include <BaseTsd.h>
      51  typedef SSIZE_T ssize_t;
      52  #endif
      53  
      54  #define FC_UINT64_FORMAT	"I64u"
      55  
      56  #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
      57  
      58  #ifndef S_ISDIR
      59  #define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
      60  #endif
      61  
      62  #ifndef F_OK
      63  #define F_OK 0
      64  #endif
      65  #ifndef X_OK
      66  #define X_OK 0 /* no execute bit on windows */
      67  #endif
      68  #ifndef W_OK
      69  #define W_OK 2
      70  #endif
      71  #ifndef R_OK
      72  #define R_OK 4
      73  #endif
      74  
      75  /* MingW provides dirent.h / openddir(), but MSVC does not */
      76  #ifndef HAVE_DIRENT_H
      77  
      78  #define HAVE_STRUCT_DIRENT_D_TYPE 1
      79  
      80  typedef struct DIR DIR;
      81  
      82  typedef enum {
      83    DT_UNKNOWN = 0,
      84    DT_DIR,
      85    DT_REG,
      86  } DIR_TYPE;
      87  
      88  typedef struct dirent {
      89      const char *d_name;
      90      DIR_TYPE d_type;
      91  } dirent;
      92  
      93  #define opendir(dirname) FcCompatOpendirWin32(dirname)
      94  #define closedir(d)      FcCompatClosedirWin32(d)
      95  #define readdir(d)       FcCompatReaddirWin32(d)
      96  
      97  DIR * FcCompatOpendirWin32 (const char *dirname);
      98  
      99  struct dirent * FcCompatReaddirWin32 (DIR *dir);
     100  
     101  int FcCompatClosedirWin32 (DIR *dir);
     102  
     103  #endif /* HAVE_DIRENT_H */
     104  
     105  #endif /* _WIN32 */
     106  
     107  #endif /* _FCWINDOWS_H_ */