Revision: 294 Author: nieklinnenbank Date: Mon Aug 3 14:28:50 2009 Log: DeviceServer now correctly updates FileDescriptor::position. Additionally, this patchs makes 'cat /dev/vga0' execute correctly. http://code.google.com/p/freenos/source/detail?r=294 Modified: /trunk/srv/DeviceServer.h ======================================= --- /trunk/srv/DeviceServer.h Sun Aug 2 04:48:54 2009 +++ /trunk/srv/DeviceServer.h Mon Aug 3 14:28:50 2009 @@ -360,7 +360,7 @@ result = dev->read(buffer, msg->size, msg->offset); /* Did it complete successfully? */ - if (result > 0) + if (result >= 0) { msg->result = ESUCCESS; msg->size = result; @@ -377,9 +377,10 @@ /* Take care that we may need to try again. */ msg->result = result; } - /* Send a reply if processed. */ + /* Update FileDescriptor and send a reply if processed. */ if (msg->result != EAGAIN) { + getFileDescriptor(files, msg->from, msg->fd)->position += msg->size; msg->ipc(msg->from, Send, sizeof(*msg)); } /* Release memory. And return. */ @@ -416,7 +417,7 @@ result = dev->write(buffer, msg->size, msg->offset); /* Did it complete successfully? */ - if (result > 0) + if (result >= 0) { msg->result = ESUCCESS; msg->size = result; @@ -430,6 +431,7 @@ /* Send a reply if processed. */ if (msg->result != EAGAIN) { + getFileDescriptor(files, msg->from, msg->fd)->position += msg->size; msg->ipc(msg->from, Send, sizeof(*msg)); } /* Release memory. And return. */