1 /* 2 * Copyright (C) the libgit2 contributors. All rights reserved. 3 * 4 * This file is part of libgit2, distributed under the GNU GPL v2 with 5 * a Linking Exception. For full terms see the included COPYING file. 6 */ 7 #ifndef INCLUDE_win32_posix_h__ 8 #define INCLUDE_win32_posix_h__ 9 10 #include "common.h" 11 #include "../posix.h" 12 #include "win32-compat.h" 13 #include "path_w32.h" 14 #include "utf-conv.h" 15 #include "dir.h" 16 17 extern unsigned long git_win32__createfile_sharemode; 18 extern int git_win32__retries; 19 20 typedef SOCKET GIT_SOCKET; 21 22 #define p_lseek(f,n,w) _lseeki64(f, n, w) 23 24 extern int p_fstat(int fd, struct stat *buf); 25 extern int p_lstat(const char *file_name, struct stat *buf); 26 extern int p_stat(const char* path, struct stat *buf); 27 28 extern int p_utimes(const char *filename, const struct p_timeval times[2]); 29 extern int p_futimes(int fd, const struct p_timeval times[2]); 30 31 extern int p_readlink(const char *path, char *buf, size_t bufsiz); 32 extern int p_symlink(const char *old, const char *new); 33 extern int p_link(const char *old, const char *new); 34 extern int p_unlink(const char *path); 35 extern int p_mkdir(const char *path, mode_t mode); 36 extern int p_fsync(int fd); 37 extern char *p_realpath(const char *orig_path, char *buffer); 38 39 extern int p_recv(GIT_SOCKET socket, void *buffer, size_t length, int flags); 40 extern int p_send(GIT_SOCKET socket, const void *buffer, size_t length, int flags); 41 extern int p_inet_pton(int af, const char* src, void* dst); 42 43 extern int p_vsnprintf(char *buffer, size_t count, const char *format, va_list argptr); 44 extern int p_snprintf(char *buffer, size_t count, const char *format, ...) GIT_FORMAT_PRINTF(3, 4); 45 extern int p_mkstemp(char *tmp_path); 46 extern int p_chdir(const char* path); 47 extern int p_chmod(const char* path, mode_t mode); 48 extern int p_rmdir(const char* path); 49 extern int p_access(const char* path, mode_t mode); 50 extern int p_ftruncate(int fd, git_off_t size); 51 52 /* p_lstat is almost but not quite POSIX correct. Specifically, the use of 53 * ENOTDIR is wrong, in that it does not mean precisely that a non-directory 54 * entry was encountered. Making it correct is potentially expensive, 55 * however, so this is a separate version of p_lstat to use when correct 56 * POSIX ENOTDIR semantics is required. 57 */ 58 extern int p_lstat_posixly(const char *filename, struct stat *buf); 59 60 extern struct tm * p_localtime_r(const time_t *timer, struct tm *result); 61 extern struct tm * p_gmtime_r(const time_t *timer, struct tm *result); 62 63 /* Use the bundled regcomp */ 64 #define p_regcomp regcomp 65 66 #endif 67