From 49481f0a690f958fb413ee5cd92186b0504ee46c Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Mon, 24 Oct 2022 22:13:43 +0800 Subject: [PATCH] =?UTF-8?q?:recycle:=20=E6=A1=8C=E9=9D=A2=E7=AB=AF?= =?UTF-8?q?=E5=86=85=E6=A0=B8=E8=BF=9B=E7=A8=8B=E7=AB=AF=E5=8F=A3=E5=8F=B7?= =?UTF-8?q?=E5=86=99=E5=85=A5=E6=96=87=E4=BB=B6=20`port.json`=20https://gi?= =?UTF-8?q?thub.com/siyuan-note/siyuan/issues/6337?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/conf.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/kernel/model/conf.go b/kernel/model/conf.go index e489ca151..b94bfa986 100644 --- a/kernel/model/conf.go +++ b/kernel/model/conf.go @@ -18,6 +18,7 @@ package model import ( "bytes" + "fmt" "os" "path/filepath" "runtime" @@ -396,6 +397,7 @@ func Close(force bool, execInstallPkg int) (exitCode int) { Conf.Close() sql.CloseDatabase() clearWorkspaceTemp() + clearPortJSON() go func() { time.Sleep(500 * time.Millisecond) @@ -607,6 +609,34 @@ func GetMaskedConf() (ret *AppConf, err error) { return } +func clearPortJSON() { + pid := fmt.Sprintf("%d", os.Getpid()) + portJSON := filepath.Join(util.HomeDir, ".config", "siyuan", "port.json") + pidPorts := map[string]string{} + var data []byte + var err error + + if gulu.File.IsExist(portJSON) { + data, err = os.ReadFile(portJSON) + if nil != err { + logging.LogWarnf("read port.json failed: %s", err) + } else { + if err = gulu.JSON.UnmarshalJSON(data, &pidPorts); nil != err { + logging.LogWarnf("unmarshal port.json failed: %s", err) + } + } + } + + delete(pidPorts, pid) + if data, err = gulu.JSON.MarshalIndentJSON(pidPorts, "", " "); nil != err { + logging.LogWarnf("marshal port.json failed: %s", err) + } else { + if err = os.WriteFile(portJSON, data, 0644); nil != err { + logging.LogWarnf("write port.json failed: %s", err) + } + } +} + func clearWorkspaceTemp() { os.RemoveAll(filepath.Join(util.TempDir, "bazaar")) os.RemoveAll(filepath.Join(util.TempDir, "export"))