Merge fputc with fputs
This commit is contained in:
parent
f92f5f784d
commit
772a121dd8
@ -29,12 +29,6 @@ int main() {
|
||||
case VFS_OPEN:
|
||||
vfs_msg->flags=0;
|
||||
break;
|
||||
case VFS_PUTC: {
|
||||
char str[]={(char)vfs_msg->data,'\0'};
|
||||
vga_write_string(&str[0]);
|
||||
vfs_msg->flags=0;
|
||||
break;
|
||||
}
|
||||
case VFS_PUTS: {
|
||||
char* data=malloc(sizeof(char)*vfs_msg->data);
|
||||
Message msg;
|
||||
|
24
libc/stdio.c
24
libc/stdio.c
@ -64,27 +64,13 @@ FILE* fopen(char* filename,char* mode) {
|
||||
int putc(int c, FILE* stream) __attribute__ ((alias ("fputc")));
|
||||
|
||||
int fputc(int c, FILE* stream) {
|
||||
vfs_message* msg_data=make_msg(VFS_PUTC,0,0,*stream,c);
|
||||
Message msg;
|
||||
msg.from=box;
|
||||
msg.to=VFS_MBOX;
|
||||
msg.msg=msg_data;
|
||||
msg.size=sizeof(vfs_message);
|
||||
mailbox_send_msg(&msg);
|
||||
yieldToPID(VFS_PID);
|
||||
mailbox_get_msg(box,&msg,sizeof(vfs_message));
|
||||
while (msg.from==0) {
|
||||
yieldToPID(VFS_PID);
|
||||
mailbox_get_msg(box,&msg,sizeof(vfs_message));
|
||||
}
|
||||
vfs_message* vfs_msg=(vfs_message*)msg.msg;
|
||||
if (vfs_msg->flags) {
|
||||
free(msg.msg);
|
||||
return EOF;
|
||||
} else {
|
||||
free(msg.msg);
|
||||
char str[]={c,'\0'};
|
||||
if (fputs(str,stream)==0) {
|
||||
return c;
|
||||
} else {
|
||||
return EOF;
|
||||
}
|
||||
return EOF;
|
||||
}
|
||||
|
||||
int fputs(const char* s, FILE* stream) {
|
||||
|
@ -3,7 +3,6 @@
|
||||
|
||||
typedef enum {
|
||||
VFS_OPEN,
|
||||
VFS_PUTC,
|
||||
VFS_PUTS,
|
||||
VFS_GETC,
|
||||
VFS_CLOSE,
|
||||
|
24
vfs/main.c
24
vfs/main.c
@ -127,27 +127,6 @@ void vfs_fopen(vfs_message* vfs_msg,uint32_t from) {
|
||||
vfs_msg->flags=2;
|
||||
}
|
||||
|
||||
void vfs_putc(vfs_message* vfs_msg,uint32_t from) {
|
||||
uint32_t fd=vfs_msg->fd;
|
||||
vfs_file file_info=fd_tables[from][fd];
|
||||
strcpy(&vfs_msg->path[0],file_info.path);
|
||||
strcpy(&vfs_msg->mode[0],file_info.mode);
|
||||
vfs_msg->pos=file_info.pos;
|
||||
Message msg;
|
||||
msg.from=box;
|
||||
msg.to=drvs[file_info.mntpnt->type];
|
||||
msg.size=sizeof(vfs_message);
|
||||
msg.msg=vfs_msg;
|
||||
mailbox_send_msg(&msg);
|
||||
yield();
|
||||
vfs_msg=get_message(&msg);
|
||||
if (vfs_msg->flags!=0) {
|
||||
return;
|
||||
}
|
||||
fd_tables[from][fd].pos++;
|
||||
vfs_msg->flags=0;
|
||||
}
|
||||
|
||||
void vfs_puts(vfs_message* vfs_msg,uint32_t from) {
|
||||
char* data=malloc(sizeof(char)*vfs_msg->data);
|
||||
Message msg;
|
||||
@ -254,9 +233,6 @@ int main() {
|
||||
case VFS_OPEN:
|
||||
vfs_fopen(vfs_msg,msg.from);
|
||||
break;
|
||||
case VFS_PUTC:
|
||||
vfs_putc(vfs_msg,msg.from);
|
||||
break;
|
||||
case VFS_PUTS:
|
||||
vfs_puts(vfs_msg,msg.from);
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user