Dmitry Timoshkov <dmitry(a)codeweavers.com> writes:
@@ -1829,6 +1828,11 @@ struct fd *open_fd( struct fd *root, const char *name, int flags, mode_t *mode, return NULL; } ftruncate( fd->unix_fd, 0 ); + if (flags & O_CREAT) + { + fchmod( fd->unix_fd, *mode ); + fstat( fd->unix_fd, &st ); + }
You'd have to take umask into account. And I'd like to see some tests for this at the ntdll level.
@@ -178,7 +178,7 @@ static struct object *create_file( struct fd *root, const char *nameptr, data_si switch(create) { case FILE_CREATE: flags = O_CREAT | O_EXCL; break; - case FILE_OVERWRITE_IF: /* FIXME: the difference is whether we trash existing attr or not */ + case FILE_OVERWRITE_IF: /* the difference is whether we trash existing attr or not */
It's still a FIXME. -- Alexandre Julliard julliard(a)winehq.org