Skip to content

Commit e15bb88

Browse files
committed
micro: Generalize exit behavior
1 parent 9592bb1 commit e15bb88

1 file changed

Lines changed: 23 additions & 32 deletions

File tree

cmd/micro/micro.go

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func InitFlags() {
9898
fmt.Println("Version:", util.Version)
9999
fmt.Println("Commit hash:", util.CommitHash)
100100
fmt.Println("Compiled on", util.CompileDate)
101-
os.Exit(0)
101+
exit(0)
102102
}
103103

104104
if *flagOptions {
@@ -114,7 +114,7 @@ func InitFlags() {
114114
fmt.Printf("-%s value\n", k)
115115
fmt.Printf(" \tDefault value: '%v'\n", v)
116116
}
117-
os.Exit(0)
117+
exit(0)
118118
}
119119

120120
if util.Debug == "OFF" && *flagDebug {
@@ -135,7 +135,7 @@ func DoPluginFlags() {
135135
CleanConfig()
136136
}
137137

138-
os.Exit(0)
138+
exit(0)
139139
}
140140
}
141141

@@ -222,12 +222,26 @@ func LoadInput(args []string) []*buffer.Buffer {
222222
return buffers
223223
}
224224

225+
func exit(rc int) {
226+
for _, b := range buffer.OpenBuffers {
227+
if !b.Modified() {
228+
b.Fini()
229+
}
230+
}
231+
232+
if screen.Screen != nil {
233+
screen.Screen.Fini()
234+
}
235+
236+
os.Exit(rc)
237+
}
238+
225239
func main() {
226240
defer func() {
227241
if util.Stdout.Len() > 0 {
228242
fmt.Fprint(os.Stdout, util.Stdout.String())
229243
}
230-
os.Exit(0)
244+
exit(0)
231245
}()
232246

233247
var err error
@@ -287,7 +301,7 @@ func main() {
287301
if err != nil {
288302
fmt.Println(err)
289303
fmt.Println("Fatal: Micro could not initialize a Screen.")
290-
os.Exit(1)
304+
exit(1)
291305
}
292306
m := clipboard.SetMethod(config.GetGlobalOption("clipboard").(string))
293307
clipErr := clipboard.Initialize(m)
@@ -306,7 +320,7 @@ func main() {
306320
for _, b := range buffer.OpenBuffers {
307321
b.Backup()
308322
}
309-
os.Exit(1)
323+
exit(1)
310324
}
311325
}()
312326

@@ -434,40 +448,17 @@ func DoEvent() {
434448
case f := <-timerChan:
435449
f()
436450
case <-sighup:
437-
for _, b := range buffer.OpenBuffers {
438-
if !b.Modified() {
439-
b.Fini()
440-
}
441-
}
442-
os.Exit(0)
451+
exit(0)
443452
case <-util.Sigterm:
444-
for _, b := range buffer.OpenBuffers {
445-
if !b.Modified() {
446-
b.Fini()
447-
}
448-
}
449-
450-
if screen.Screen != nil {
451-
screen.Screen.Fini()
452-
}
453-
os.Exit(0)
453+
exit(0)
454454
}
455455

456456
if e, ok := event.(*tcell.EventError); ok {
457457
log.Println("tcell event error: ", e.Error())
458458

459459
if e.Err() == io.EOF {
460460
// shutdown due to terminal closing/becoming inaccessible
461-
for _, b := range buffer.OpenBuffers {
462-
if !b.Modified() {
463-
b.Fini()
464-
}
465-
}
466-
467-
if screen.Screen != nil {
468-
screen.Screen.Fini()
469-
}
470-
os.Exit(0)
461+
exit(0)
471462
}
472463
return
473464
}

0 commit comments

Comments
 (0)