зеркало из https://github.com/microsoft/git.git
135 строки
3.0 KiB
C
135 строки
3.0 KiB
C
|
#include <winsock2.h>
|
||
|
|
||
|
/*
|
||
|
* things that are not available in header files
|
||
|
*/
|
||
|
|
||
|
typedef int pid_t;
|
||
|
#define hstrerror strerror
|
||
|
|
||
|
#define S_IFLNK 0120000 /* Symbolic link */
|
||
|
#define S_ISLNK(x) (((x) & S_IFMT) == S_IFLNK)
|
||
|
#define S_ISSOCK(x) 0
|
||
|
#define S_IRGRP 0
|
||
|
#define S_IWGRP 0
|
||
|
#define S_IXGRP 0
|
||
|
#define S_ISGID 0
|
||
|
#define S_IROTH 0
|
||
|
#define S_IXOTH 0
|
||
|
|
||
|
#define WIFEXITED(x) ((unsigned)(x) < 259) /* STILL_ACTIVE */
|
||
|
#define WEXITSTATUS(x) ((x) & 0xff)
|
||
|
#define WIFSIGNALED(x) ((unsigned)(x) > 259)
|
||
|
|
||
|
#define SIGKILL 0
|
||
|
#define SIGCHLD 0
|
||
|
#define SIGPIPE 0
|
||
|
#define SIGHUP 0
|
||
|
#define SIGQUIT 0
|
||
|
#define SIGALRM 100
|
||
|
|
||
|
#define F_GETFD 1
|
||
|
#define F_SETFD 2
|
||
|
#define FD_CLOEXEC 0x1
|
||
|
|
||
|
struct passwd {
|
||
|
char *pw_name;
|
||
|
char *pw_gecos;
|
||
|
char *pw_dir;
|
||
|
};
|
||
|
|
||
|
struct pollfd {
|
||
|
int fd; /* file descriptor */
|
||
|
short events; /* requested events */
|
||
|
short revents; /* returned events */
|
||
|
};
|
||
|
#define POLLIN 1
|
||
|
#define POLLHUP 2
|
||
|
|
||
|
typedef void (__cdecl *sig_handler_t)(int);
|
||
|
struct sigaction {
|
||
|
sig_handler_t sa_handler;
|
||
|
unsigned sa_flags;
|
||
|
};
|
||
|
#define sigemptyset(x) (void)0
|
||
|
#define SA_RESTART 0
|
||
|
|
||
|
struct itimerval {
|
||
|
struct timeval it_value, it_interval;
|
||
|
};
|
||
|
#define ITIMER_REAL 0
|
||
|
|
||
|
#define st_blocks st_size/512 /* will be cleaned up later */
|
||
|
#define lstat stat
|
||
|
|
||
|
/*
|
||
|
* trivial stubs
|
||
|
*/
|
||
|
|
||
|
static inline int readlink(const char *path, char *buf, size_t bufsiz)
|
||
|
{ errno = ENOSYS; return -1; }
|
||
|
static inline int symlink(const char *oldpath, const char *newpath)
|
||
|
{ errno = ENOSYS; return -1; }
|
||
|
static inline int link(const char *oldpath, const char *newpath)
|
||
|
{ errno = ENOSYS; return -1; }
|
||
|
static inline int fchmod(int fildes, mode_t mode)
|
||
|
{ errno = ENOSYS; return -1; }
|
||
|
static inline int fork(void)
|
||
|
{ errno = ENOSYS; return -1; }
|
||
|
static inline unsigned int alarm(unsigned int seconds)
|
||
|
{ return 0; }
|
||
|
static inline int fsync(int fd)
|
||
|
{ return 0; }
|
||
|
static inline int getppid(void)
|
||
|
{ return 1; }
|
||
|
static inline void sync(void)
|
||
|
{}
|
||
|
static inline int getuid()
|
||
|
{ return 1; }
|
||
|
static inline struct passwd *getpwnam(const char *name)
|
||
|
{ return NULL; }
|
||
|
static inline int fcntl(int fd, int cmd, long arg)
|
||
|
{
|
||
|
if (cmd == F_GETFD || cmd == F_SETFD)
|
||
|
return 0;
|
||
|
errno = EINVAL;
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
* simple adaptors
|
||
|
*/
|
||
|
|
||
|
static inline int mingw_mkdir(const char *path, int mode)
|
||
|
{
|
||
|
return mkdir(path);
|
||
|
}
|
||
|
#define mkdir mingw_mkdir
|
||
|
|
||
|
static inline int waitpid(pid_t pid, unsigned *status, unsigned options)
|
||
|
{
|
||
|
if (options == 0)
|
||
|
return _cwait(status, pid, 0);
|
||
|
errno = EINVAL;
|
||
|
return -1;
|
||
|
}
|
||
|
|
||
|
|
||
|
static inline int pipe(int filedes[2])
|
||
|
{ return _pipe(filedes, 8192, 0); }
|
||
|
|
||
|
/*
|
||
|
* implementations of missing functions
|
||
|
*/
|
||
|
|
||
|
unsigned int sleep (unsigned int seconds);
|
||
|
int mkstemp(char *template);
|
||
|
int gettimeofday(struct timeval *tv, void *tz);
|
||
|
int poll(struct pollfd *ufds, unsigned int nfds, int timeout);
|
||
|
struct tm *gmtime_r(const time_t *timep, struct tm *result);
|
||
|
struct tm *localtime_r(const time_t *timep, struct tm *result);
|
||
|
int getpagesize(void); /* defined in MinGW's libgcc.a */
|
||
|
struct passwd *getpwuid(int uid);
|
||
|
int setitimer(int type, struct itimerval *in, struct itimerval *out);
|
||
|
int sigaction(int sig, struct sigaction *in, struct sigaction *out);
|