bufCreate creates a new file with the given name and returns a corresponding bufWriter. If name is empty, bufCreate uses a temporary file.
(name string)
| 461 | // corresponding bufWriter. If name is empty, bufCreate uses a |
| 462 | // temporary file. |
| 463 | func bufCreate(name string) *bufWriter { |
| 464 | var ( |
| 465 | f *os.File |
| 466 | err error |
| 467 | ) |
| 468 | if name != "" { |
| 469 | f, err = os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600) |
| 470 | } else { |
| 471 | f, err = ioutil.TempFile("", "csearch") |
| 472 | } |
| 473 | if err != nil { |
| 474 | log.Fatal(err) |
| 475 | } |
| 476 | return &bufWriter{ |
| 477 | name: f.Name(), |
| 478 | buf: make([]byte, 0, 256<<10), |
| 479 | file: f, |
| 480 | } |
| 481 | } |
| 482 | |
| 483 | func (b *bufWriter) write(x []byte) { |
| 484 | n := cap(b.buf) - len(b.buf) |