diff options
Diffstat (limited to 'erts/emulator/drivers')
-rw-r--r-- | erts/emulator/drivers/win32/win_efile.c | 98 |
1 files changed, 49 insertions, 49 deletions
diff --git a/erts/emulator/drivers/win32/win_efile.c b/erts/emulator/drivers/win32/win_efile.c index fb746f1f54..7ab0e09072 100644 --- a/erts/emulator/drivers/win32/win_efile.c +++ b/erts/emulator/drivers/win32/win_efile.c @@ -29,20 +29,20 @@ #include <wchar.h> #include "erl_efile.h" -// 1 = file name ops -// 2 = file descr ops -// 4 = errors -// 8 = path name conversion -#define SVERK_TRACE_MASK 0 - -#if !SVERK_TRACE_MASK -# define SVERK_TRACE(M,S) -# define SVERK_TRACE1(M,FMT,A) -# define SVERK_TRACE2(M,FMT,A,B) +#define DBG_TRACE_MASK 0 +/* 1 = file name ops + * 2 = file descr ops + * 4 = errors + * 8 = path name conversion + */ +#if !DBG_TRACE_MASK +# define DBG_TRACE(M,S) +# define DBG_TRACE1(M,FMT,A) +# define DBG_TRACE2(M,FMT,A,B) #else -# define SVERK_TRACE(M,S) do { if ((M)&SVERK_TRACE_MASK) fwprintf(stderr, L"SVERK TRACE %d: %s\r\n", __LINE__, (WCHAR*)(S)); }while(0) -# define SVERK_TRACE1(M,FMT,A) do { if ((M)&SVERK_TRACE_MASK) fwprintf(stderr, L"SVERK TRACE %d: " L##FMT L"\r\n", __LINE__, (A)); }while(0) -# define SVERK_TRACE2(M,FMT,A,B) do { if ((M)&SVERK_TRACE_MASK) fwprintf(stderr, L"SVERK TRACE %d: " L##FMT L"\r\n", __LINE__, (A), (B)); }while(0) +# define DBG_TRACE(M,S) do { if ((M)&DBG_TRACE_MASK) fwprintf(stderr, L"DBG_TRACE %d: %s\r\n", __LINE__, (WCHAR*)(S)); }while(0) +# define DBG_TRACE1(M,FMT,A) do { if ((M)&DBG_TRACE_MASK) fwprintf(stderr, L"DBG_TRACE %d: " L##FMT L"\r\n", __LINE__, (A)); }while(0) +# define DBG_TRACE2(M,FMT,A,B) do { if ((M)&DBG_TRACE_MASK) fwprintf(stderr, L"DBG_TRACE %d: " L##FMT L"\r\n", __LINE__, (A), (B)); }while(0) #endif /* @@ -275,7 +275,7 @@ check_error(int result, Efile_error* errInfo) if (result < 0) { errInfo->posix_errno = errno; errInfo->os_errno = GetLastError(); - SVERK_TRACE2(4, "ERROR os_error=%d errno=%d @@@@@@@@@@@@@@@@@@@@@@@@@@@@", + DBG_TRACE2(4, "ERROR os_error=%d errno=%d @@@@@@@@@@@@@@@@@@@@@@@@@@@@", errInfo->os_errno, errInfo->posix_errno); return 0; } @@ -287,7 +287,7 @@ save_last_error(Efile_error* errInfo) { errInfo->posix_errno = errno; errInfo->os_errno = GetLastError(); - SVERK_TRACE2(4, "ERROR os_error=%d errno=%d $$$$$$$$$$$$$$$$$$$$$$$$$$$$$", + DBG_TRACE2(4, "ERROR os_error=%d errno=%d $$$$$$$$$$$$$$$$$$$$$$$$$$$$$", errInfo->os_errno, errInfo->posix_errno); } @@ -312,7 +312,7 @@ set_os_errno(Efile_error* errInfo, DWORD os_errno) { errInfo->os_errno = os_errno; errInfo->posix_errno = errno_map(os_errno); - SVERK_TRACE2(4, "ERROR os_error=%d errno=%d ############################", + DBG_TRACE2(4, "ERROR os_error=%d errno=%d ############################", errInfo->os_errno, errInfo->posix_errno); return 0; } @@ -359,11 +359,11 @@ static void ensure_wpath_max(Efile_call_state* state, WCHAR** pathp, size_t max) int unc_fixup = 0; if (path[0] == 0) { - SVERK_TRACE(8,"Let empty path pass through"); + DBG_TRACE(8, L"Let empty path pass through"); return; } - SVERK_TRACE1(8,"IN: %s", path); + DBG_TRACE1(8,"IN: %s", path); if (path[1] == L':' && ISSLASH(path[2])) { /* absolute path */ if (len >= max) { @@ -396,7 +396,7 @@ static void ensure_wpath_max(Efile_call_state* state, WCHAR** pathp, size_t max) fullLen = GetFullPathNameW(path, 4 + absLen, fullPath+4, NULL); if (fullLen >= 4+absLen) { *pathp = path; - SVERK_TRACE2(8,"ensure_wpath FAILED absLen=%u %s", (int)absLen, path); + DBG_TRACE2(8,"ensure_wpath FAILED absLen=%u %s", (int)absLen, path); return; } /* GetFullPathNameW can return paths longer than MAX_PATH without the \\?\ prefix. @@ -443,7 +443,7 @@ static void ensure_wpath_max(Efile_call_state* state, WCHAR** pathp, size_t max) } } } - SVERK_TRACE1(8,"OUT: %s", *pathp); + DBG_TRACE1(8,"OUT: %s", *pathp); } int @@ -454,7 +454,7 @@ efile_mkdir(Efile_error* errInfo, /* Where to return error codes. */ WCHAR* wname = (WCHAR*)name; int ret; - SVERK_TRACE(1, name); + DBG_TRACE(1, name); call_state_init(&state, errInfo); ensure_wpath_max(&state, &wname, 248); /* Yes, 248 limit for normal paths */ @@ -473,7 +473,7 @@ efile_rmdir(Efile_error* errInfo, /* Where to return error codes. */ Efile_call_state state; int ret; - SVERK_TRACE(1, name); + DBG_TRACE(1, name); call_state_init(&state, errInfo); ret = do_rmdir(&state, name); call_state_free(&state); @@ -567,7 +567,7 @@ efile_delete_file(Efile_error* errInfo, /* Where to return error codes. */ { Efile_call_state state; int ret; - SVERK_TRACE(1, name); + DBG_TRACE(1, name); call_state_init(&state, errInfo); ret = do_delete_file(&state, name); call_state_free(&state); @@ -657,7 +657,7 @@ efile_rename(Efile_error* errInfo, char* src, char* dst) { Efile_call_state state; int ret; - SVERK_TRACE(1, src); + DBG_TRACE(1, src); call_state_init(&state, errInfo); ret = do_rename(&state, src, dst); call_state_free(&state); @@ -892,18 +892,18 @@ efile_getdcwd(Efile_error* errInfo, /* Where to return error codes. */ { WCHAR *wbuffer = (WCHAR *) buffer; size_t wbuffer_size = size / 2; - SVERK_TRACE(1, L"#getdcwd#"); + DBG_TRACE(1, L"#getdcwd#"); if (_wgetdcwd(drive, wbuffer, wbuffer_size) == NULL) { return check_error(-1, errInfo); } - SVERK_TRACE1(8, "getdcwd OS=%s", wbuffer); + DBG_TRACE1(8, "getdcwd OS=%s", wbuffer); if (wcsncmp(wbuffer, L"\\\\?\\", 4) == 0) { wmemmove(wbuffer, wbuffer+4, wcslen(wbuffer+4)+1); } for ( ; *wbuffer; wbuffer++) if (*wbuffer == L'\\') *wbuffer = L'/'; - SVERK_TRACE1(8, "getdcwd ERLANG=%s", (WCHAR*)buffer); + DBG_TRACE1(8, "getdcwd ERLANG=%s", (WCHAR*)buffer); return 1; } @@ -913,7 +913,7 @@ efile_readdir(Efile_error* errInfo, char* name, EFILE_DIR_HANDLE* dir_handle, { Efile_call_state state; int ret; - SVERK_TRACE(dir_handle?2:1, name); + DBG_TRACE(dir_handle?2:1, name); call_state_init(&state, errInfo); ret = do_readdir(&state, name, dir_handle, buffer, size); call_state_free(&state); @@ -1000,7 +1000,7 @@ efile_openfile(Efile_error* errInfo, char* name, int flags, int* pfd, Sint64* pS { Efile_call_state state; int ret; - SVERK_TRACE1(1, "openfile(%s)", name); + DBG_TRACE1(1, "openfile(%s)", name); call_state_init(&state, errInfo); ret = do_openfile(&state, name, flags, pfd, pSize); call_state_free(&state); @@ -1101,7 +1101,7 @@ efile_may_openfile(Efile_error* errInfo, char *name) DWORD attr; int ret; - SVERK_TRACE(1, name); + DBG_TRACE(1, name); call_state_init(&state, errInfo); ensure_wpath(&state, &wname); if ((attr = GetFileAttributesW(wname)) == INVALID_FILE_ATTRIBUTES) { @@ -1122,7 +1122,7 @@ void efile_closefile(fd) int fd; /* File descriptor for file to close. */ { - SVERK_TRACE(2, L""); + DBG_TRACE(2, L""); CloseHandle((HANDLE) fd); } @@ -1143,7 +1143,7 @@ efile_fdatasync(errInfo, fd) Efile_error* errInfo; /* Where to return error codes. */ int fd; /* File descriptor for file to sync. */ { - SVERK_TRACE(2, L""); + DBG_TRACE(2, L""); /* Not available in Windows, just call regular fsync */ return efile_fsync(errInfo, fd); } @@ -1153,7 +1153,7 @@ efile_fsync(errInfo, fd) Efile_error* errInfo; /* Where to return error codes. */ int fd; /* File descriptor for file to sync. */ { - SVERK_TRACE(2, L""); + DBG_TRACE(2, L""); if (!FlushFileBuffers((HANDLE) fd)) { return check_error(-1, errInfo); } @@ -1166,7 +1166,7 @@ efile_fileinfo(Efile_error* errInfo, Efile_info* pInfo, { Efile_call_state state; int ret; - SVERK_TRACE(1, L""); + DBG_TRACE(1, L""); call_state_init(&state, errInfo); ret = do_fileinfo(&state, pInfo, orig_name, info_for_link); call_state_free(&state); @@ -1365,7 +1365,7 @@ do_write_info(Efile_call_state* state, DWORD tempAttr; WCHAR *wname = (WCHAR *) name; - SVERK_TRACE(1, name); + DBG_TRACE(1, name); ensure_wpath(state, &wname); @@ -1446,7 +1446,7 @@ size_t count; /* Number of bytes to write. */ Sint64 offset; /* where to write it */ { int res; - SVERK_TRACE(2, L""); + DBG_TRACE(2, L""); res = efile_seek(errInfo, fd, offset, EFILE_SEEK_SET, NULL); if (res) { return efile_write(errInfo, EFILE_MODE_WRITE, fd, buf, count); @@ -1466,7 +1466,7 @@ size_t count; /* Number of bytes to read. */ size_t* pBytesRead; /* Where to return number of bytes read. */ { int res; - SVERK_TRACE(2, L""); + DBG_TRACE(2, L""); res = efile_seek(errInfo, fd, offset, EFILE_SEEK_SET, NULL); if (res) { return efile_read(errInfo, EFILE_MODE_READ, fd, buf, count, pBytesRead); @@ -1489,7 +1489,7 @@ size_t count; /* Number of bytes to write. */ OVERLAPPED overlapped; OVERLAPPED* pOverlapped = NULL; - SVERK_TRACE(2, L""); + DBG_TRACE(2, L""); if (flags & EFILE_MODE_APPEND) { memset(&overlapped, 0, sizeof(overlapped)); overlapped.Offset = 0xffffffff; @@ -1519,7 +1519,7 @@ efile_writev(Efile_error* errInfo, /* Where to return error codes */ OVERLAPPED overlapped; OVERLAPPED* pOverlapped = NULL; - SVERK_TRACE(2, L""); + DBG_TRACE(2, L""); ASSERT(iovcnt >= 0); if (flags & EFILE_MODE_APPEND) { @@ -1557,7 +1557,7 @@ size_t* pBytesRead; /* Where to return number of bytes read. */ { DWORD nbytes = 0; - SVERK_TRACE(2, L""); + DBG_TRACE(2, L""); if (!ReadFile((HANDLE) fd, buf, count, &nbytes, NULL)) return set_error(errInfo); @@ -1577,7 +1577,7 @@ Sint64* new_location; /* Resulting new location in file. */ { LARGE_INTEGER off, new_loc; - SVERK_TRACE(2, L""); + DBG_TRACE(2, L""); switch (origin) { case EFILE_SEEK_SET: origin = FILE_BEGIN; break; case EFILE_SEEK_CUR: origin = FILE_CURRENT; break; @@ -1609,7 +1609,7 @@ Efile_error* errInfo; /* Where to return error codes. */ int *fd; /* File descriptor for file to truncate. */ int flags; { - SVERK_TRACE(2, L""); + DBG_TRACE(2, L""); if (!SetEndOfFile((HANDLE) (*fd))) return set_error(errInfo); return 1; @@ -1768,7 +1768,7 @@ efile_readlink(Efile_error* errInfo, char* name, char* buffer, size_t size) { Efile_call_state state; int ret; - SVERK_TRACE(1, name); + DBG_TRACE(1, name); call_state_init(&state, errInfo); ret = !!do_readlink(&state, name, buffer, size); call_state_free(&state); @@ -1863,7 +1863,7 @@ efile_altname(Efile_error* errInfo, char* orig_name, char* buffer, size_t size) { Efile_call_state state; int ret; - SVERK_TRACE(1, orig_name); + DBG_TRACE(1, orig_name); call_state_init(&state, errInfo); ret = do_altname(&state, orig_name, buffer, size); call_state_free(&state); @@ -1956,7 +1956,7 @@ efile_link(Efile_error* errInfo, char* old, char* new) WCHAR *wold = (WCHAR *) old; WCHAR *wnew = (WCHAR *) new; int ret; - SVERK_TRACE(1, old); + DBG_TRACE(1, old); call_state_init(&state, errInfo); ensure_wpath(&state, &wold); ensure_wpath(&state, &wnew); @@ -1973,7 +1973,7 @@ efile_symlink(Efile_error* errInfo, char* old, char* new) { Efile_call_state state; int ret; - SVERK_TRACE2(1, "symlink(%s <- %s)", old, new); + DBG_TRACE2(1, "symlink(%s <- %s)", old, new); call_state_init(&state, errInfo); ret = do_symlink(&state, old, new); call_state_free(&state); @@ -1991,7 +1991,7 @@ do_symlink(Efile_call_state* state, char* old, char* new) WCHAR *wold = (WCHAR *) old; WCHAR *wnew = (WCHAR *) new; - SVERK_TRACE(1, old); + DBG_TRACE(1, old); if ((hModule = LoadLibrary("kernel32.dll")) != NULL) { typedef BOOLEAN (WINAPI * CREATESYMBOLICLINKFUNCPTR) ( LPCWSTR lpSymlinkFileName, @@ -2030,7 +2030,7 @@ int efile_fadvise(Efile_error* errInfo, int fd, Sint64 offset, Sint64 length, int advise) { - SVERK_TRACE(2, L""); + DBG_TRACE(2, L""); /* posix_fadvise is not available on Windows, do nothing */ errno = ERROR_SUCCESS; return check_error(0, errInfo); @@ -2039,7 +2039,7 @@ efile_fadvise(Efile_error* errInfo, int fd, Sint64 offset, int efile_fallocate(Efile_error* errInfo, int fd, Sint64 offset, Sint64 length) { - SVERK_TRACE(2, L""); + DBG_TRACE(2, L""); /* No file preallocation method available in Windows. */ errno = errno_map(ERROR_NOT_SUPPORTED); SetLastError(ERROR_NOT_SUPPORTED); |