1 /* $Id: write.c,v 1.6 2002/10/29 04:45:48 rex Exp $
4 * COPYRIGHT: See COPYING in the top level directory
5 * PROJECT: ReactOS POSIX+ Subsystem
6 * FILE: subsys/psx/lib/psxdll/unistd/write.c
7 * PURPOSE: Write on a file
8 * PROGRAMMER: KJK::Hyperion <noog@libero.it>
11 * 21/03/2002: Implemented write() (KJK::Hyperion <noog@libero.it>)
14 #include <ddk/ntddk.h>
17 #include <sys/types.h>
18 #include <psx/debug.h>
19 #include <psx/errno.h>
20 #include <psx/fdtable.h>
22 ssize_t
write(int fildes
, const void *buf
, size_t nbyte
)
24 __fildes_t fdDescriptor
;
26 IO_STATUS_BLOCK isbStatus
;
31 if(fcntl(fildes
, F_GETALL
, &fdDescriptor
) == -1)
33 ERR("fcntl() failed, errno %d", errno
);
37 if((fdDescriptor
.OpenFlags
&& O_APPEND
) == O_APPEND
)
39 TODO("move file pointer to the end");
42 INFO("handle for descriptor %d is %d", fildes
, fdDescriptor
.FileHandle
);
44 nErrCode
= NtWriteFile
46 fdDescriptor
.FileHandle
,
57 if(!NT_SUCCESS(nErrCode
))
59 ERR("NtWriteFile() failed with status 0x%08X", nErrCode
);
60 errno
= __status_to_errno(nErrCode
);
64 return (isbStatus
.Information
);