You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.2 KiB
71 lines
1.2 KiB
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
func fileOpen(fname string) {
|
|
f, err := os.Open(fname)
|
|
|
|
if err != nil && os.IsNotExist(err) {
|
|
// create file if it doesn't exist
|
|
if f, err = os.Create(fname); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
state.rows = []string{""}
|
|
state.Cy = 0
|
|
state.Cx = 0
|
|
} else if err != nil {
|
|
log.Fatal(err)
|
|
} else {
|
|
fread := bufio.NewScanner(f)
|
|
fread.Split(bufio.ScanLines)
|
|
state.rows = nil
|
|
for fread.Scan() {
|
|
state.rows = append(state.rows, fread.Text())
|
|
}
|
|
|
|
if len(state.rows) == 0 || (len(state.rows) == 1 && state.rows[0] == "") {
|
|
state.rows = []string{""}
|
|
}
|
|
}
|
|
|
|
f.Close()
|
|
|
|
state.file = fname
|
|
}
|
|
|
|
func fileSave() {
|
|
f, err := os.Create(state.file)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer f.Close()
|
|
|
|
bytesWritten := 0
|
|
charsWritten := 0
|
|
linesWritten := 0
|
|
for _, row := range state.rows {
|
|
bw, err := fmt.Fprintf(f, "%s\n", row)
|
|
if err != nil {
|
|
log.Fatalf("COULD NOT SAVE FILE: %v", err)
|
|
}
|
|
bytesWritten += bw
|
|
charsWritten += len([]rune(row)) + 1
|
|
linesWritten++
|
|
}
|
|
|
|
state.StatusLines[1] = fmt.Sprintf(
|
|
"'%s' saved. %dL, %dC, %d bytes",
|
|
state.file,
|
|
linesWritten,
|
|
charsWritten,
|
|
bytesWritten,
|
|
)
|
|
|
|
}
|