Subversion Repositories Kolibri OS

Rev

Rev 647 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 647 Rev 6433
Line 4... Line 4...
4
int fwrite(void *buffer,int size,int count,FILE* file)
4
int fwrite(void *buffer,int size,int count,FILE* file)
5
{
5
{
6
	dword res;
6
	dword res;
7
	dword fullsize;
7
	dword fullsize;
Line -... Line 8...
-
 
8
 
-
 
9
    if(!file || !buffer)
8
 
10
    {
-
 
11
        errno = E_INVALIDPTR;
-
 
12
        return EOF;
Line -... Line 13...
-
 
13
    }
-
 
14
 
-
 
15
 
-
 
16
	if ((file->mode & 3)==FILE_OPEN_READ)
-
 
17
    {
-
 
18
        errno = E_ACCESS;
-
 
19
        return 0;
9
	if (file->mode==FILE_OPEN_READ)	return 0;
20
    }
10
 
21
 
-
 
22
	if ((file->mode &3)==FILE_OPEN_APPEND)
11
	if (file->mode==FILE_OPEN_APPEND)
23
		file->filepos=file->filesize;
Line 12... Line 24...
12
		file->filepos=file->filesize;
24
 
Line 13... Line 25...
13
        fullsize=count*size;		
25
    fullsize=count*size;
Line 27... Line 39...
27
		}
39
		}
28
		else return(0);
40
		else return(0);
Line 29... Line 41...
29
	
41
 
30
	}
42
	}
31
	*/
43
	*/
32
	if ((file->mode==FILE_OPEN_WRITE) || (file->mode==FILE_OPEN_APPEND))
44
	if ((file->mode &3)==FILE_OPEN_WRITE || (file->mode&3)==FILE_OPEN_APPEND) // always true, as read checked previous
33
	{
45
	{
34
		if (file->filepos==0)
46
		if (file->filepos==0)
35
		{	//file mot craeted yet
47
		{	//file mot created yet
36
			res=_ksys_rewritefile(file->filename,fullsize,buffer);
48
			res=_ksys_rewritefile(file->filename,fullsize,buffer);
37
			if (res==0)
49
			if (res==0)
38
			{
50
			{
39
				file->filepos+=fullsize;
51
				file->filepos+=fullsize;
40
				fullsize=fullsize/count;
52
				fullsize=fullsize/count;
-
 
53
				return(fullsize);
-
 
54
			} else
-
 
55
            {
-
 
56
                errno = -res;
41
				return(fullsize);
57
                return(0);
42
			}
-
 
43
			else return(0);
58
            }
44
		}
59
		}
45
		else
60
		else
46
		{	
61
		{
47
			res=_ksys_appendtofile(file->filename,file->filepos,fullsize,buffer);	
62
			res=_ksys_appendtofile(file->filename,file->filepos,fullsize,buffer);
48
			if (res==0)
63
			if (res==0)
49
			{
64
			{
50
				file->filepos+=fullsize;
65
				file->filepos+=fullsize;
51
				fullsize=fullsize/count;
66
				fullsize=fullsize/count;
-
 
67
				return(fullsize);
-
 
68
			} else
-
 
69
            {
-
 
70
                errno = -res;
52
				return(fullsize);
71
                return(0);
53
			}
-
 
54
			else return(0);
72
            }
55
		}
73
		}
56
	}
74
	}
57
	else return(0);
75
	else return(0);
58
}
76
}