diff options
Diffstat (limited to 'src/tty.c')
| -rw-r--r-- | src/tty.c | 67 |
1 files changed, 52 insertions, 15 deletions
@@ -1,32 +1,69 @@ #include<stdbool.h> #include<stddef.h> #include<stdint.h> -bool stringcmp(char *str1,char *str2); -size_t pieces(char pieces[][15],char *buffer); + +#include"string.h" +#include"stdio.h" + +#define CMD_LENGTH 20 + void clear(); -void terminal_writestring(const char* data); -void terminal_putchar(char c); -void echo(size_t numberof,char parts[][15]) +size_t pieces(char pieces[][CMD_LENGTH],char *buffer) +{ + for(size_t x=0;x<CMD_LENGTH;x++) for(size_t y=0;y<CMD_LENGTH;y++) pieces[x][y]='\0'; + + size_t i=0,j=0,r=0; + while(buffer[i]==' '&&buffer[i]!='\0') i++; + for(;buffer[i]!='\0';i++) + { + if(buffer[i]==' ') + { + while(buffer[i]==' '&&buffer[i]!='\0') i++; + j=0; + r++; + i--; + } + else + { + pieces[r][j++]=buffer[i]; + } + } + return r+1; +} + +void echo(size_t numberof,char parts[][CMD_LENGTH]) { for(size_t i=1;i<numberof;i++) { - terminal_writestring(parts[i]); - terminal_putchar(' '); + printf("%s ",parts[i]); } - terminal_putchar('\n'); + printf("\n"); +} + +void merge(char parts[][CMD_LENGTH]) +{ + char *str1=parts[1]; + char *str2=parts[2]; + stringcat(str1,str2); + printf("%s\n",str1); +} + +void ls(size_t numberof,char parts[][CMD_LENGTH]) +{ + size_t i=numberof; + char *part=parts[0]; + printf("filesystem not implemented yet\n"); } void tty(char *buffer) { - char parts[15][15]; + char parts[CMD_LENGTH][CMD_LENGTH]; size_t numberof=pieces(parts,buffer); if(stringcmp(parts[0],"clear")) clear(); else if(stringcmp(parts[0],"echo")) echo(numberof,parts); - else - { - terminal_writestring("command not found: "); - terminal_writestring(parts[0]); - terminal_putchar('\n'); - } + else if(stringcmp(parts[0],"merge")) merge(parts); + else if(stringcmp(parts[0],"ls")) ls(numberof,parts); + else if(stringcmp(parts[0],"number")) printf("number times two is %d\n",stoi(parts[1])*2); + else printf("command not found: %s\n",parts[0]); } |
