VirtualBox

source: kBuild/trunk/src/kmk/kmkbuiltin/mscfakes.h@ 1864

Last change on this file since 1864 was 1710, checked in by bird, 17 years ago

kmk: Made chmod build on windows. Some cleanup of the bsdisms.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.2 KB
Line 
1/* $Id: mscfakes.h 1710 2008-09-02 21:50:04Z bird $ */
2/** @file
3 *
4 * Unix fakes for MSC.
5 *
6 * Copyright (c) 2005-2007 knut st. osmundsen <[email protected]>
7 *
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with This program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 *
23 */
24
25#ifndef __mscfakes_h__
26#define __mscfakes_h__
27#ifdef _MSC_VER
28
29#include <io.h>
30#include <direct.h>
31#include <time.h>
32#include <stdarg.h>
33#include <malloc.h>
34#include "getopt.h"
35
36#if defined(MSC_DO_64_BIT_IO) && _MSC_VER >= 1400 /* We want 64-bit file lengths here when possible. */
37# define off_t __int64
38# define stat _stat64
39# define fstat _fstat64
40# define lseek _lseeki64
41#else
42# undef stat
43# define stat(_path, _st) my_other_stat(_path, _st)
44extern int my_other_stat(const char *, struct stat *);
45#endif
46
47
48
49#define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
50#define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG)
51#define S_ISLNK(m) 0
52#define S_IRWXU (_S_IREAD | _S_IWRITE | _S_IEXEC)
53#define S_IXUSR _S_IEXEC
54#define S_IWUSR _S_IWRITE
55#define S_IRUSR _S_IREAD
56#define S_IRWXG 0000070
57#define S_IRGRP 0000040
58#define S_IWGRP 0000020
59#define S_IXGRP 0000010
60#define S_IRWXO 0000007
61#define S_IROTH 0000004
62#define S_IWOTH 0000002
63#define S_IXOTH 0000001
64#define S_ISUID 0004000
65#define S_ISGID 0002000
66#define ALLPERMS 0000777
67
68#define PATH_MAX _MAX_PATH
69#define MAXPATHLEN _MAX_PATH
70
71#define EX_OK 0
72#define EX_OSERR 1
73#define EX_NOUSER 1
74#define EX_USAGE 1
75
76#define STDIN_FILENO 0
77#define STDOUT_FILENO 1
78#define STDERR_FILENO 2
79
80#define F_OK 0
81#define X_OK 1
82#define W_OK 2
83#define R_OK 4
84
85#define EFTYPE EINVAL
86
87#define _PATH_DEVNULL "/dev/null"
88
89#define MAX(a,b) ((a) >= (b) ? (a) : (b))
90
91typedef int mode_t;
92typedef unsigned short nlink_t;
93typedef unsigned short uid_t;
94typedef unsigned short gid_t;
95typedef long ssize_t;
96typedef unsigned long u_long;
97typedef unsigned int u_int;
98typedef unsigned short u_short;
99
100#ifndef timerisset
101struct timeval
102{
103 long tv_sec;
104 long tv_usec;
105};
106#endif
107
108struct iovec
109{
110 char *iov_base;
111 size_t iov_len;
112};
113
114typedef __int64 intmax_t;
115typedef unsigned __int64 uintmax_t;
116
117#define chown(path, uid, gid) 0 /** @todo implement fchmod! */
118char *dirname(char *path);
119#define fsync(fd) 0
120#define fchown(fd,uid,gid) 0
121#define fchmod(fd, mode) 0 /** @todo implement fchmod! */
122#define geteuid() 0
123#define getegid() 0
124#define lstat(path, s) stat(path, s)
125int lchmod(const char *path, mode_t mode);
126int msc_chmod(const char *path, mode_t mode);
127#define chmod msc_chmod
128#define lchown(path, uid, gid) chown(path, uid, gid)
129#define lutimes(path, tvs) utimes(path, tvs)
130int link(const char *pszDst, const char *pszLink);
131int mkdir_msc(const char *path, mode_t mode);
132#define mkdir(path, mode) mkdir_msc(path, mode)
133#define mkfifo(path, mode) -1
134#define mknod(path, mode, devno) -1
135int mkstemp(char *temp);
136#define readlink(link, buf, size) -1
137#define reallocf(old, size) realloc(old, size)
138int rmdir_msc(const char *path);
139#define rmdir(path) rmdir_msc(path)
140intmax_t strtoimax(const char *nptr, char **endptr, int base);
141uintmax_t strtoumax(const char *nptr, char **endptr, int base);
142#define strtoll(a,b,c) strtoimax(a,b,c)
143#define strtoull(a,b,c) strtoumax(a,b,c)
144int asprintf(char **strp, const char *fmt, ...);
145int vasprintf(char **strp, const char *fmt, va_list ap);
146#if _MSC_VER < 1400
147int snprintf(char *buf, size_t size, const char *fmt, ...);
148#else
149#define snprintf _snprintf
150#endif
151size_t strlcpy(char *, const char *, size_t);
152int symlink(const char *pszDst, const char *pszLink);
153int utimes(const char *pszPath, const struct timeval *paTimes);
154int writev(int fd, const struct iovec *vector, int count);
155
156#endif /* _MSC_VER */
157#endif
158
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette