MCPcopy Create free account
hub / github.com/LemonOSProject/LemonOS / Write

Method Write

Kernel/src/characterbuffer.cpp:15–46  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

13}
14
15size_t CharacterBuffer::Write(char* _buffer, size_t size){
16 acquireLock(&(this->lock));
17
18 if((bufferPos + size) > bufferSize) {
19 char* oldBuf = buffer;
20 buffer = (char*)kmalloc(bufferPos + size + 128);
21 memcpy(buffer, oldBuf, bufferSize);
22 bufferSize = bufferPos + size + 128;
23 kfree(oldBuf);
24 }
25
26 size_t written = 0;
27
28 for(unsigned i = 0; i < size; i++){
29 if(_buffer[i] == '\b' /*Backspace*/ && !ignoreBackspace){
30 if(bufferPos > 0) {
31 bufferPos--;
32 written++;
33 }
34 continue;
35 } else {
36 buffer[bufferPos++] = _buffer[i];
37 written++;
38 }
39
40 if(_buffer[i] == '\n' || _buffer[i] == '\0') lines++;
41 }
42
43 releaseLock(&(this->lock));
44
45 return written;
46}
47
48size_t CharacterBuffer::Read(char* _buffer, size_t count){
49 acquireLock(&(this->lock));

Callers

nothing calls this directly

Calls 3

kmallocFunction · 0.85
memcpyFunction · 0.85
kfreeFunction · 0.85

Tested by

no test coverage detected