mirror of
https://github.com/PowerShell/Win32-OpenSSH.git
synced 2025-07-23 14:04:59 +02:00
making lseek explicitly adjust file offset.
This commit is contained in:
parent
946ed7d297
commit
ff96264aae
@ -1664,9 +1664,6 @@
|
||||
|
||||
#define BROKEN_SYS_TERMIO_H
|
||||
|
||||
#define strerror strerror_win32
|
||||
|
||||
#define strerror strerror_win32
|
||||
|
||||
// PRAGMA SYS PORT
|
||||
#define WITH_OPENSSL 1
|
||||
|
@ -223,7 +223,7 @@ createFile_flags_setup(int flags, int mode, struct createFile_flags* cf_flags) {
|
||||
if (c_s_flags & O_EXCL)
|
||||
cf_flags->dwCreationDisposition = CREATE_NEW;
|
||||
else
|
||||
cf_flags->dwCreationDisposition = OPEN_ALWAYS;
|
||||
cf_flags->dwCreationDisposition = CREATE_ALWAYS;
|
||||
}
|
||||
|
||||
if (c_s_flags & O_APPEND)
|
||||
@ -301,7 +301,7 @@ VOID CALLBACK ReadCompletionRoutine(
|
||||
/* initiate an async read */
|
||||
/* TODO: make this a void func, store error in context */
|
||||
int
|
||||
fileio_ReadFileEx(struct w32_io* pio) {
|
||||
fileio_ReadFileEx(struct w32_io* pio, unsigned int bytes_requested) {
|
||||
debug2("ReadFileEx io:%p", pio);
|
||||
|
||||
if (pio->read_details.buf == NULL) {
|
||||
@ -311,9 +311,13 @@ fileio_ReadFileEx(struct w32_io* pio) {
|
||||
debug2("ReadFileEx - ERROR: %d, io:%p", errno, pio);
|
||||
return -1;
|
||||
}
|
||||
pio->read_details.buf_size = READ_BUFFER_SIZE;
|
||||
}
|
||||
|
||||
if (FILETYPE(pio) == FILE_TYPE_DISK)
|
||||
pio->read_details.buf_size = min(bytes_requested, READ_BUFFER_SIZE);
|
||||
else
|
||||
pio->read_details.buf_size = READ_BUFFER_SIZE;
|
||||
|
||||
if (ReadFileEx(WINHANDLE(pio), pio->read_details.buf, pio->read_details.buf_size,
|
||||
&pio->read_overlapped, &ReadCompletionRoutine))
|
||||
pio->read_details.pending = TRUE;
|
||||
@ -353,7 +357,7 @@ fileio_read(struct w32_io* pio, void *dst, unsigned int max) {
|
||||
return -1;
|
||||
}
|
||||
else {
|
||||
if (-1 == fileio_ReadFileEx(pio)) {
|
||||
if (-1 == fileio_ReadFileEx(pio, max)) {
|
||||
if ((FILETYPE(pio) == FILE_TYPE_PIPE)
|
||||
&& (errno == ERROR_BROKEN_PIPE)) {
|
||||
/* write end of the pipe closed */
|
||||
@ -560,8 +564,8 @@ fileio_lseek(struct w32_io* pio, long offset, int origin) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
//NO-OP as we automatically move file pointer in async io callbacks for files
|
||||
//assert current postion in overlapped struct
|
||||
pio->read_overlapped.Offset = offset;
|
||||
pio->write_overlapped.Offset = offset;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -625,7 +629,7 @@ fileio_on_select(struct w32_io* pio, BOOL rd) {
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (fileio_ReadFileEx(pio) != 0) {
|
||||
if (fileio_ReadFileEx(pio, INT_MAX) != 0) {
|
||||
pio->read_details.error = errno;
|
||||
errno = 0;
|
||||
return;
|
||||
|
@ -1320,7 +1320,7 @@ process_rmdir(u_int32_t id)
|
||||
static void
|
||||
process_realpath(u_int32_t id)
|
||||
{
|
||||
char resolvedname[PATH_MAX];
|
||||
char resolvedname[PATH_MAX+ 1];
|
||||
char *path;
|
||||
int r;
|
||||
//#ifdef WIN32_FIXME
|
||||
|
Loading…
x
Reference in New Issue
Block a user