summaryrefslogtreecommitdiff
path: root/pjlib/src
diff options
context:
space:
mode:
Diffstat (limited to 'pjlib/src')
-rw-r--r--pjlib/src/pj/file_io_win32.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/pjlib/src/pj/file_io_win32.c b/pjlib/src/pj/file_io_win32.c
index 622ddd82..ee7edef8 100644
--- a/pjlib/src/pj/file_io_win32.c
+++ b/pjlib/src/pj/file_io_win32.c
@@ -59,6 +59,7 @@ PJ_DEF(pj_status_t) pj_file_open( pj_pool_t *pool,
dwDesiredAccess |= GENERIC_WRITE;
if ((flags & PJ_O_APPEND) == PJ_O_APPEND) {
dwDesiredAccess |= FILE_APPEND_DATA;
+ dwCreationDisposition |= OPEN_EXISTING;
} else {
dwDesiredAccess &= ~(FILE_APPEND_DATA);
dwCreationDisposition |= CREATE_ALWAYS;
@@ -86,6 +87,16 @@ PJ_DEF(pj_status_t) pj_file_open( pj_pool_t *pool,
return PJ_RETURN_OS_ERROR(GetLastError());
}
+ if ((flags & PJ_O_APPEND) == PJ_O_APPEND) {
+ pj_status_t status;
+
+ status = pj_file_setpos(hFile, 0, PJ_SEEK_END);
+ if (status != PJ_SUCCESS) {
+ pj_file_close(hFile);
+ return status;
+ }
+ }
+
*fd = hFile;
return PJ_SUCCESS;
}