/****************************************************************************
**
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the qmake spec of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** GNU Lesser General Public License Usage
** This file may be used under the terms of the GNU Lesser General Public
** License version 2.1 as published by the Free Software Foundation and
** appearing in the file LICENSE.LGPL included in the packaging of this
** file. Please review the following information to ensure the GNU Lesser
** General Public License version 2.1 requirements will be met:
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU General
** Public License version 3.0 as published by the Free Software Foundation
** and appearing in the file LICENSE.GPL included in the packaging of this
** file. Please review the following information to ensure the GNU General
** Public License version 3.0 requirements will be met:
** http://www.gnu.org/copyleft/gpl.html.
**
** Other Usage
** Alternatively, this file may be used in accordance with the terms and
** conditions contained in a signed written agreement between you and Nokia.
**
**
**
**
**
** $QT_END_LICENSE$
**
****************************************************************************/

#ifndef QPLATFORMDEFS_H
#define QPLATFORMDEFS_H

#ifdef UNICODE
#ifndef _UNICODE
#define _UNICODE
#endif
#endif

// Get Qt defines/settings

#include "qglobal.h"
#define Q_FS_FAT

#define _POSIX_
#include <limits.h>
#undef _POSIX_

#include <tchar.h>
#include <io.h>
#include <direct.h>
#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <sys/stat.h>
#include <dos.h>
#include <stdlib.h>
#include <search.h>
#include <windows.h>

#if __BORLANDC__ >= 0x550
// Borland Builder 6

#ifdef QT_LARGEFILE_SUPPORT
#  define QT_STATBUF		struct stati64		// non-ANSI defs
#  define QT_STATBUF4TSTAT	struct stati64		// non-ANSI defs
#  define QT_STAT		::_stati64
#  define QT_FSTAT		::fstati64
#  define QT_LSEEK		::_lseeki64
#  define QT_TSTAT		::_tstati64
#else
#  define QT_STATBUF		struct stat		// non-ANSI defs
#  define QT_STATBUF4TSTAT	struct _stat		// non-ANSI defs
#  define QT_STAT		::stat
#  define QT_FSTAT		::fstat
#  define QT_LSEEK		::_lseek
#  define QT_TSTAT		::_tstat
#endif

#define QT_STAT_REG		_S_IFREG
#define QT_STAT_DIR		_S_IFDIR
#define QT_STAT_MASK		_S_IFMT

#if defined(_S_IFLNK)
#  define QT_STAT_LNK		_S_IFLNK
#endif

#include "../common/c89/qplatformdefs.h"

#ifdef QT_LARGEFILE_SUPPORT
#undef QT_FSEEK
#undef QT_FTELL
#undef QT_OFF_T

#define QT_FSEEK                ::_fseeki64
#define QT_FTELL                ::_ftelli64
#define QT_OFF_T                __int64
#endif

#define QT_FILENO		_fileno
#define QT_OPEN			::open
#define QT_CLOSE		::_close

#define QT_READ			::_read
#define QT_WRITE		::_write
#define QT_ACCESS		::_access
#define QT_GETCWD		::_getcwd
#define QT_CHDIR		::chdir
#define QT_MKDIR		::_mkdir
#define QT_RMDIR		::_rmdir
#define QT_OPEN_LARGEFILE       O_LARGEFILE
#define QT_OPEN_RDONLY		_O_RDONLY
#define QT_OPEN_WRONLY		_O_WRONLY
#define QT_OPEN_RDWR		_O_RDWR
#define QT_OPEN_CREAT		_O_CREAT
#define QT_OPEN_TRUNC		_O_TRUNC
#define QT_OPEN_APPEND		_O_APPEND

#if defined(O_TEXT)
#  define QT_OPEN_TEXT		_O_TEXT
#  define QT_OPEN_BINARY	_O_BINARY
#endif

#else
// Borland Builder 5

#ifdef QT_LARGEFILE_SUPPORT
#  define QT_STATBUF		struct stati64		// non-ANSI defs
#  define QT_STATBUF4TSTAT	struct stati64		// non-ANSI defs
#  define QT_STAT		::stati64
#  define QT_FSTAT		::fstati64
#  define QT_LSEEK		::lseeki64
#  define QT_TSTAT		::tstati64
#else
#  define QT_STATBUF		struct stat		// non-ANSI defs
#  define QT_STATBUF4TSTAT	struct stat		// non-ANSI defs
#  define QT_STAT		::stat
#  define QT_FSTAT		::fstat
#  define QT_LSEEK		::lseek
#  define QT_TSTAT		::tstat
#endif

#define QT_STAT_REG		S_IFREG
#define QT_STAT_DIR		S_IFDIR
#define QT_STAT_MASK		S_IFMT

#if defined(S_IFLNK)
#  define QT_STAT_LNK		S_IFLNK
#endif

#define QT_FILENO		fileno
#define QT_OPEN			::open
#define QT_CLOSE		::close

#define QT_READ			::read
#define QT_WRITE		::write
#define QT_ACCESS		::access

#if defined(Q_OS_OS2EMX)
    // This is documented in the un*x to OS/2-EMX Porting FAQ:
    // http://homepages.tu-darmstadt.de/~st002279/os2/porting.html
#  define QT_GETCWD		::_getcwd2
#  define QT_CHDIR		::_chdir2
#else
#  define QT_GETCWD		::getcwd
#  define QT_CHDIR		::chdir
#endif

#define QT_MKDIR		::mkdir
#define QT_RMDIR		::rmdir
#define QT_OPEN_LARGEFILE       O_LARGEFILE
#define QT_OPEN_RDONLY		O_RDONLY
#define QT_OPEN_WRONLY		O_WRONLY
#define QT_OPEN_RDWR		O_RDWR
#define QT_OPEN_CREAT		O_CREAT
#define QT_OPEN_TRUNC		O_TRUNC
#define QT_OPEN_APPEND		O_APPEND

#if defined(O_TEXT)
#  define QT_OPEN_TEXT		O_TEXT
#  define QT_OPEN_BINARY	O_BINARY
#endif

#endif // __BORLANDC__ >= 0x550

// Borland Builder 5 and 6

#define QT_SIGNAL_ARGS		int

#define QT_VSNPRINTF		::_vsnprintf
#define QT_SNPRINTF		::_snprintf

# define F_OK	0
# define X_OK	1
# define W_OK	2
# define R_OK	4


#endif // QPLATFORMDEFS_H
