mirror of
https://github.com/Fennix-Project/Userspace.git
synced 2025-05-25 22:14:28 +00:00
If filename is invalid, fopen should return NULL
This commit is contained in:
parent
f4ca629a8f
commit
87c7e0f286
@ -9,8 +9,12 @@ FILE *stderr;
|
||||
|
||||
FILE *fopen(const char *filename, const char *mode)
|
||||
{
|
||||
void *KPrivate = (void *)syscall2(_FileOpen, (uint64_t)filename, (uint64_t)mode);
|
||||
if (IsSyscallError(KPrivate))
|
||||
return NULL;
|
||||
|
||||
FILE *FilePtr = malloc(sizeof(FILE));
|
||||
FilePtr->KernelPrivate = (void *)syscall2(_FileOpen, (uint64_t)filename, (uint64_t)mode);
|
||||
FilePtr->KernelPrivate = KPrivate;
|
||||
return FilePtr;
|
||||
}
|
||||
|
||||
@ -24,6 +28,13 @@ size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
|
||||
return syscall4(_FileWrite, (uint64_t)stream->KernelPrivate, stream->offset, (uint64_t)ptr, size * nmemb);
|
||||
}
|
||||
|
||||
int fclose(FILE *fp)
|
||||
{
|
||||
void *KP = fp->KernelPrivate;
|
||||
free(fp);
|
||||
return syscall1(_FileClose, (uint64_t)KP);
|
||||
}
|
||||
|
||||
int fseek(FILE *stream, long offset, int whence)
|
||||
{
|
||||
switch (whence)
|
||||
@ -47,13 +58,6 @@ long ftell(FILE *stream)
|
||||
return stream->offset;
|
||||
}
|
||||
|
||||
int fclose(FILE *fp)
|
||||
{
|
||||
void *KP = fp->KernelPrivate;
|
||||
free(fp);
|
||||
return syscall1(_FileClose, (uint64_t)KP);
|
||||
}
|
||||
|
||||
int fflush(FILE *stream)
|
||||
{
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user