view src/tac.go @ 24:f904a5f5b3cf

ut: small fix.
author pyon@macmini
date Mon, 09 Jul 2018 20:57:21 +0900
parents de451fa0c9cd
children
line wrap: on
line source

package main

import (
    "bufio"
    "flag"
    "fmt"
    "os"
)

func main() {
    flag.Parse()

    files := flag.Args()

    var lines []string

    // Input
    if len( files ) == 0 {
        lines = ReverseLines( os.Stdin, nil )
    } else {
        for _, arg := range files {
            f, err := os.Open( arg )
            if err != nil {
                fmt.Fprintf( os.Stderr, "tac : %v\n", err )
                continue
            }
            l := ReverseLines( f, nil )
            f.Close()
            lines = append( lines, l... )
        }
    }

    // Output
    for _, line := range lines {
        fmt.Println( line )
    }
}

func ReverseLines( f *os.File, l []string ) []string {
    input := bufio.NewScanner( f )
    for input.Scan() {
        l = append( l, input.Text() )
    }
    for i, j := 0, len(l) - 1; i < j; i, j = i + 1, j - 1 {
        l[i], l[j] = l[j], l[i]
    }
    return l
}