@@ -13,7 +13,6 @@ import (
13
13
"bufio"
14
14
"flag"
15
15
"fmt"
16
- "io"
17
16
"log"
18
17
"net/http"
19
18
"os"
@@ -321,16 +320,11 @@ func loadChars() {
321
320
flag .Set ("data" , * url + "UnicodeData.txt" )
322
321
}
323
322
input := open (* dataURL )
323
+ defer input .close ()
324
+ scanner := bufio .NewScanner (input )
324
325
var first rune = 0
325
- for {
326
- line , err := input .ReadString ('\n' )
327
- if err != nil {
328
- if err == io .EOF {
329
- break
330
- }
331
- logger .Fatal (err )
332
- }
333
- switch parseCategory (line [0 : len (line )- 1 ]) {
326
+ for scanner .Scan () {
327
+ switch parseCategory (scanner .Text ()) {
334
328
case SNormal :
335
329
if first != 0 {
336
330
logger .Fatalf ("bad state normal at %U" , lastChar )
@@ -351,23 +345,21 @@ func loadChars() {
351
345
first = 0
352
346
}
353
347
}
354
- input .close ()
348
+ if scanner .Err () != nil {
349
+ logger .Fatal (scanner .Err ())
350
+ }
355
351
}
356
352
357
353
func loadCasefold () {
358
354
if * casefoldingURL == "" {
359
355
flag .Set ("casefolding" , * url + "CaseFolding.txt" )
360
356
}
361
357
input := open (* casefoldingURL )
362
- for {
363
- line , err := input .ReadString ('\n' )
364
- if err != nil {
365
- if err == io .EOF {
366
- break
367
- }
368
- logger .Fatal (err )
369
- }
370
- if line [0 ] == '#' || len (strings .TrimSpace (line )) == 0 {
358
+ defer input .close ()
359
+ scanner := bufio .NewScanner (input )
360
+ for scanner .Scan () {
361
+ line := scanner .Text ()
362
+ if len (line ) == 0 || line [0 ] == '#' || len (strings .TrimSpace (line )) == 0 {
371
363
continue
372
364
}
373
365
field := strings .Split (line , "; " )
@@ -389,7 +381,9 @@ func loadCasefold() {
389
381
}
390
382
chars [p1 ].foldCase = rune (p2 )
391
383
}
392
- input .close ()
384
+ if scanner .Err () != nil {
385
+ logger .Fatal (scanner .Err ())
386
+ }
393
387
}
394
388
395
389
const progHeader = `// Generated by running
@@ -710,15 +704,12 @@ func printScriptOrProperty(doProps bool) {
710
704
return
711
705
}
712
706
input := open (* url + file )
713
- for {
714
- line , err := input .ReadString ('\n' )
715
- if err != nil {
716
- if err == io .EOF {
717
- break
718
- }
719
- logger .Fatal (err )
720
- }
721
- parseScript (line [0 :len (line )- 1 ], table )
707
+ scanner := bufio .NewScanner (input )
708
+ for scanner .Scan () {
709
+ parseScript (scanner .Text (), table )
710
+ }
711
+ if scanner .Err () != nil {
712
+ logger .Fatal (scanner .Err ())
722
713
}
723
714
input .close ()
724
715
0 commit comments