@@ -17,6 +17,7 @@ import (
17
17
"path/filepath"
18
18
"regexp"
19
19
"runtime"
20
+ "strconv"
20
21
"strings"
21
22
"time"
22
23
)
@@ -187,9 +188,10 @@ func spProgramRW(portname string, boardname string, boardname_rewrite string, fi
187
188
}
188
189
}
189
190
191
+ var oscmd * exec.Cmd
192
+
190
193
func spHandlerProgram (flasher string , cmdString []string ) {
191
194
192
- var oscmd * exec.Cmd
193
195
// if runtime.GOOS == "darwin" {
194
196
// sh, _ := exec.LookPath("sh")
195
197
// // prepend the flasher to run it via sh
@@ -262,6 +264,23 @@ func spHandlerProgram(flasher string, cmdString []string) {
262
264
}
263
265
}
264
266
267
+ func spHandlerProgramKill () {
268
+
269
+ // Kill the process if there is one running
270
+ if oscmd != nil && oscmd .Process .Pid > 0 {
271
+ h .broadcastSys <- []byte ("{\" ProgrammerStatus\" : \" PreKilled\" , \" Pid\" : " + strconv .Itoa (oscmd .Process .Pid ) + ", \" ProcessState\" : \" " + oscmd .ProcessState .String () + "\" }" )
272
+ oscmd .Process .Kill ()
273
+ h .broadcastSys <- []byte ("{\" ProgrammerStatus\" : \" Killed\" , \" Pid\" : " + strconv .Itoa (oscmd .Process .Pid ) + ", \" ProcessState\" : \" " + oscmd .ProcessState .String () + "\" }" )
274
+
275
+ } else {
276
+ if oscmd != nil {
277
+ h .broadcastSys <- []byte ("{\" ProgrammerStatus\" : \" KilledError\" , \" Msg\" : \" No current process\" , \" Pid\" : " + strconv .Itoa (oscmd .Process .Pid ) + ", \" ProcessState\" : \" " + oscmd .ProcessState .String () + "\" }" )
278
+ } else {
279
+ h .broadcastSys <- []byte ("{\" ProgrammerStatus\" : \" KilledError\" , \" Msg\" : \" No current process\" }" )
280
+ }
281
+ }
282
+ }
283
+
265
284
func formatCmdline (cmdline string , boardOptions map [string ]string ) (string , bool ) {
266
285
267
286
list := strings .Split (cmdline , "{" )
0 commit comments