diff options
-rw-r--r-- | pjlib/src/pj/file_io_win32.c | 11 |
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; } |