Windows fixes

pull/816/head
Alexander Medvednikov 2019-06-29 17:58:20 +02:00
parent 18082274ca
commit 18525922fd
3 changed files with 18 additions and 6 deletions

View File

@ -486,12 +486,15 @@ mut args := ''
// Find clang executable
fast_clang := '/usr/local/Cellar/llvm/8.0.0/bin/clang'
args := a.join(' ')
cmd := if os.file_exists(fast_clang) {
'$fast_clang -I. $args'
mut cmd := if os.file_exists(fast_clang) {
'$fast_clang $args'
}
else {
'cc -I. $args'
'cc $args'
}
$if windows {
cmd = 'gcc $args'
}
// Print the C command
if c.show_c_cmd || c.is_verbose {
println('\n==========\n$cmd\n=========\n')

View File

@ -179,13 +179,11 @@ fn (s mut Scanner) scan() ScanRes {
return scan_res(STRING, s.ident_string())
}
s.skip_whitespace()
// println('ws skipped')
// end of file
if s.pos >= s.text.len {
// println('scan(): returning EOF (pos >= len)')
return scan_res(EOF, '')
}
// println('!!!!! HANDLE CHAR pos=$s.pos')
// handle each char
c := s.text[s.pos]
mut nextc := `\0`
@ -481,6 +479,11 @@ fn (s mut Scanner) scan() ScanRes {
}
return scan_res(DIV, '')
}
$if windows {
if c == `\0` {
return scan_res(EOF, '')
}
}
println('(char code=$c) pos=$s.pos len=$s.text.len')
s.error('invalid character `${c.str()}`')
return scan_res(EOF, '')

View File

@ -77,8 +77,14 @@ fn parse_windows_cmd_line(cmd byteptr) []string {
// read_file reads the file in `path` and returns the contents.
pub fn read_file(path string) ?string {
mut res := ''
mut mode := 'r'
777 // TODO
// Need 'rb' on windows to avoid the \r\n mess.
$if windows {
mode = 'rb'
}
cpath := path.cstr()
fp := C.fopen(cpath, 'r')
fp := C.fopen(cpath, mode.cstr())
if isnil(fp) {
return error('failed to open file "$path"')
}