@@ -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 (" \t Default 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+
225239func 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