mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-12-17 04:12:34 +03:00
e5c041df96
Correction of various mistakes in functions of work with files. For work with files 70 function is used. Functions for work with memory are changed for use of the new manager of memory. git-svn-id: svn://kolibrios.org@610 a494cfbc-eb01-0410-851d-a64ba20cac60
57 lines
1.2 KiB
C
57 lines
1.2 KiB
C
#include <stdio.h>
|
|
#include <mesys.h>
|
|
|
|
int fwrite(void *buffer,int size,int count,FILE* file)
|
|
{
|
|
dword res;
|
|
dword fullsize;
|
|
|
|
if ((file->mode & 3==FILE_OPEN_READ) && (file->mode & FILE_OPEN_PLUS==0)) return 0;
|
|
|
|
if (file->mode & 3==FILE_OPEN_APPEND)
|
|
file->filepos=file->filesize;
|
|
fullsize=count*size;
|
|
|
|
if ((file->filesize)<(file->filepos+fullsize)) file->filesize=file->filepos+fullsize;
|
|
|
|
if (file->mode & 3==FILE_OPEN_APPEND)
|
|
{
|
|
file->filepos==file->filesize;
|
|
res=_ksys_appendtofile(file->filename,file->filepos,fullsize,buffer);
|
|
if (res==0)
|
|
{
|
|
file->filepos+=fullsize;
|
|
fullsize=fullsize/size;
|
|
return(fullsize);
|
|
}
|
|
else return(0);
|
|
|
|
}
|
|
|
|
if (file->mode & 3==FILE_OPEN_WRITE)
|
|
{
|
|
if (file->filepos==0)
|
|
{ //file mot craeted yet
|
|
res=_ksys_rewritefile(file->filename,fullsize,buffer);
|
|
if (res==0)
|
|
{
|
|
file->filepos+=fullsize;
|
|
fullsize=fullsize/count;
|
|
return(fullsize);
|
|
}
|
|
else return(0);
|
|
}
|
|
else
|
|
{
|
|
res=_ksys_appendtofile(file->filename,file->filepos,fullsize,buffer);
|
|
if (res==0)
|
|
{
|
|
file->filepos+=fullsize;
|
|
fullsize=fullsize/count;
|
|
return(fullsize);
|
|
}
|
|
else return(0);
|
|
}
|
|
}
|
|
else return(0);
|
|
} |