flush = fn () => TextIO.flushOut TextIO.stdOut,
linewidth = 80}
- fun getFname path =
- let
- fun look i =
- if i < 0 then
- path
- else if String.sub (path, i) = #"/" then
- String.extract (path, i+1, NONE)
- else
- look (i-1)
- in
- look (size path - 1)
- end
+ val getFname = OS.Path.file
- fun removeExt path =
- let
- val len = size path
-
- fun look i =
- if i >= len then
- path
- else if String.sub (path, i) = #"." then
- String.substring (path, 0, i)
- else
- look (i+1)
- in
- look 0
- end
+ val removeExt = OS.Path.base
fun getExt path =
- let
- val len = size path
-
- fun look i =
- if i >= len then
- path
- else if String.sub (path, i) = #"." then
- String.extract (path, i+1, NONE)
- else
- look (i+1)
- in
- look 0
- end
+ case OS.Path.ext path of
+ NONE => path
+ | SOME ext => ext
val upperOffset = ord #"A" - ord #"a"
fun toUpper ch =