PatchworkOS
19e446b
A non-POSIX operating system.
Theme:
Default
Round
Robot
Loading...
Searching...
No Matches
sread.c
Go to the documentation of this file.
1
#include <
stdio.h
>
2
#include <
stdlib.h
>
3
#include <
sys/fs.h
>
4
5
char
*
reads
(
fd_t
fd)
6
{
7
uint64_t
size = 4096;
8
char
*
buffer
=
malloc
(size);
9
if
(
buffer
==
NULL
)
10
{
11
return
NULL
;
12
}
13
14
uint64_t
totalRead = 0;
15
while
(1)
16
{
17
if
(totalRead == size)
18
{
19
size *= 2;
20
char
* newBuffer =
realloc
(
buffer
, size);
21
if
(newBuffer ==
NULL
)
22
{
23
free
(
buffer
);
24
return
NULL
;
25
}
26
buffer
= newBuffer;
27
}
28
29
uint64_t
bytesRead =
read
(fd,
buffer
+ totalRead, size - totalRead);
30
if
(bytesRead ==
ERR
)
31
{
32
free
(
buffer
);
33
return
NULL
;
34
}
35
36
if
(bytesRead == 0)
37
{
38
break
;
39
}
40
totalRead += bytesRead;
41
}
42
43
if
(totalRead + 1 < size)
44
{
45
char
* newBuffer =
realloc
(
buffer
, totalRead + 1);
46
if
(newBuffer !=
NULL
)
47
{
48
buffer
= newBuffer;
49
}
50
}
51
52
buffer
[totalRead] =
'\0'
;
53
return
buffer
;
54
}
buffer
EFI_PHYSICAL_ADDRESS buffer
Definition
main.c:237
reads
char * reads(fd_t fd)
Wrapper for reading a file directly into a null-terminated string.
Definition
sread.c:5
read
size_t read(fd_t fd, void *buffer, size_t count)
System call for reading from files.
Definition
read.c:8
NULL
#define NULL
Pointer error value.
Definition
NULL.h:25
ERR
#define ERR
Integer error value.
Definition
ERR.h:17
fd_t
__UINT64_TYPE__ fd_t
File descriptor type.
Definition
fd_t.h:10
fs.h
uint64_t
__UINT64_TYPE__ uint64_t
Definition
stdint.h:17
stdio.h
stdlib.h
realloc
_PUBLIC void * realloc(void *ptr, size_t size)
Definition
realloc.c:13
malloc
_PUBLIC void * malloc(size_t size)
Definition
malloc.c:5
free
_PUBLIC void free(void *ptr)
Definition
free.c:11
src
libstd
user
functions
fs
sread.c
Generated on Sat Jan 24 2026 10:59:25 for PatchworkOS by
1.9.8