void btos_open_std_streams(){ if(std_streams_open) return; char buffer[BT_MAX_PATH]; size_t s=bt_getenv("STDIN", buffer, BT_MAX_PATH); if(s){ bt_handle input=bt_fopen(buffer, FS_Read); btos_set_specific_filenum(0, input, buffer); }else{ btos_set_specific_filenum_virt(0, &null_virt_handle); } memset(buffer, 0, BT_MAX_PATH); s=bt_getenv("STDOUT", buffer, BT_MAX_PATH); if(s){ bt_handle output=bt_fopen(buffer, FS_Write | FS_AtEnd); btos_set_specific_filenum(1, output, buffer); }else{ btos_set_specific_filenum_virt(1, &null_virt_handle); } memset(buffer, 0, BT_MAX_PATH); s=bt_getenv("STDERR", buffer, BT_MAX_PATH); if(s){ bt_handle output=bt_fopen(buffer, FS_Write | FS_AtEnd); btos_set_specific_filenum(2, output, buffer); }else{ btos_set_specific_filenum_virt(2, &null_virt_handle); } std_streams_open = true; }
void get_string(char *buffer, size_t bytes){ if(!bt_stdin){ if(!bt_getenv("INPUT_DEVICE", &bt_stdin_device[5], 250)) return; bt_stdin=bt_fopen(bt_stdin_device, FS_Read); } size_t pos=bt_fseek(bt_stdout, 0, true); size_t i=0; char x[2]={'a', '\0'}; uint32_t c; while(true){ bt_fread(bt_stdin, sizeof(c), (char*)&c); x[0]=KB_char(c); if(x[0]==0x08){ if(i>0) buffer[--i]=0; }else if(x[0]) buffer[i++]=x[0]; if(x[0]=='\n' || i==bytes){ print_string("\n"); return; } bt_fseek(bt_stdout, pos, false); print_string(buffer); size_t newpos=bt_fseek(bt_stdout, 0, true); print_string(" "); bt_fseek(bt_stdout, newpos, false); } }
void print_string(const char *s){ if(!bt_stdout){ if(!bt_getenv("DISPLAY_DEVICE", &bt_stdout_device[5], 250)) return; bt_stdout=bt_fopen(bt_stdout_device, FS_Write); } bt_fwrite(bt_stdout, strlen(s), s); }
void file_contents(){ print_string("Contents of \"INIT:/config.ini\":\n"); bt_filehandle file=bt_fopen("INIT:/config.ini", FS_Read); char c[32]={0}; while(bt_fread(file, 31, c)){ print_string(c); memset(c, 0, 32); } bt_fclose(file); }
void ata_test(){ char buf[513]={0}; bt_filehandle ata=bt_fopen("DEV:/ATA0P0", FS_Read); bt_fread(ata, 512, buf); print_string("The contents of the first sector of the ATA0P0 device is:\n"); print_string(buf); print_string("\n"); bt_fread(ata, 512, buf); print_string("The contents of the second sector of the ATA0P0 device is:\n"); print_string(buf); bt_fclose(ata); print_string("\n"); }
void file_contents2(char *input){ input[strlen(input)-1]=0; print_string("Contents of \""); print_string(&input[2]); print_string("\":\n"); bt_filehandle file=bt_fopen(&input[2], FS_Read); if(!file) return; char c[32]={0}; while(bt_fread(file, 31, c)){ print_string(c); memset(c, 0, 32); } bt_fclose(file); }