*** empty log message ***

svn path=/trunk/; revision=1592
This commit is contained in:
jean 2001-02-01 16:51:03 +00:00
parent 65249c23ae
commit 5f529d5a90
4 changed files with 59 additions and 2 deletions

View file

@ -53,7 +53,7 @@ FILE* fopen(const char *file, const char *mode)
else
oflags |= (_fmode & (O_TEXT|O_BINARY));
fd = _open(file, oflags, 0);
fd = _open(file, oflags, 0666);
if (fd < 0)
return NULL;

View file

@ -6,6 +6,7 @@
#include <crtdll/internal/file.h>
#include <crtdll/fcntl.h>
#include <crtdll/io.h>
#include <errno.h>
long
@ -14,6 +15,12 @@ ftell(FILE *f)
long tres;
int adjust=0;
if (!f)
{
__set_errno(EBADF);
return -1;
}
if (f->_cnt < 0)
f->_cnt = 0;

View file

@ -35,8 +35,20 @@ _fstat(int fd, struct stat *statbuf)
statbuf->st_ctime = FileTimeToUnixTime( &FileInformation.ftCreationTime,NULL);
statbuf->st_atime = FileTimeToUnixTime( &FileInformation.ftLastAccessTime,NULL);
statbuf->st_mtime = FileTimeToUnixTime( &FileInformation.ftLastWriteTime,NULL);
if (statbuf->st_atime ==0)
statbuf->st_atime = statbuf->st_mtime;
if (statbuf->st_ctime ==0)
statbuf->st_ctime = statbuf->st_mtime;
statbuf->st_dev = fd;
statbuf->st_dev = FileInformation.dwVolumeSerialNumber;
statbuf->st_size = FileInformation.nFileSizeLow;
statbuf->st_nlink = FileInformation.nNumberOfLinks;
statbuf->st_mode = S_IREAD;
if (FileInformation.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
statbuf->st_mode |= S_IFDIR | S_IEXEC;
else
statbuf->st_mode |= S_IFREG;
if ( !(FileInformation.dwFileAttributes & FILE_ATTRIBUTE_READONLY))
statbuf->st_mode |= S_IWRITE;
return 0;
}

View file

@ -1,11 +1,23 @@
#include <windows.h>
#include <crtdll/sys/types.h>
#include <crtdll/sys/stat.h>
#include <crtdll/fcntl.h>
#include <crtdll/io.h>
#include <crtdll/errno.h>
int _stat( const char *path, struct stat *buffer )
{
WIN32_FIND_DATA wfd;
HANDLE fh;
fh = FindFirstFile (path,&wfd);
if ( fh == -1 )
{
__set_errno(ENOFILE);
return -1;
}
if ( ! (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
{
int fd = _open(path,_O_RDONLY);
int ret;
@ -13,5 +25,31 @@ int _stat( const char *path, struct stat *buffer )
_close(fd);
return ret;
}
buffer->st_ctime = FileTimeToUnixTime( &wfd.ftCreationTime,NULL);
buffer->st_atime = FileTimeToUnixTime( &wfd.ftLastAccessTime,NULL);
buffer->st_mtime = FileTimeToUnixTime( &wfd.ftLastWriteTime,NULL);
if (buffer->st_atime ==0)
buffer->st_atime = buffer->st_mtime;
if (buffer->st_ctime ==0)
buffer->st_ctime = buffer->st_mtime;
buffer->st_mode = S_IREAD;
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
buffer->st_mode |= S_IFDIR;
else
buffer->st_mode |= S_IFREG;
if ( ! (wfd.dwFileAttributes & FILE_ATTRIBUTE_READONLY))
buffer->st_mode |= S_IWRITE | S_IEXEC;
buffer->st_size = wfd.nFileSizeLow;
buffer->st_nlink = 1;
if (FindNextFile(fh,&wfd))
{
__set_errno(ENOFILE);
FindClose(fh);
return -1;
}
return 0;
}