@@ -6,10 +6,11 @@ import (
6
6
"os"
7
7
"path"
8
8
"path/filepath"
9
- "runtime"
10
9
"strings"
11
10
12
11
"github.com/syndtr/goleveldb/leveldb"
12
+ "github.com/syndtr/goleveldb/leveldb/util"
13
+ "github.com/upyun/upx/cache"
13
14
)
14
15
15
16
var db * leveldb.DB
@@ -31,20 +32,22 @@ type dbValue struct {
31
32
Items []* fileMeta `json:"items"`
32
33
}
33
34
34
- func getDBName () string {
35
- if runtime .GOOS == "windows" {
36
- return filepath .Join (os .Getenv ("USERPROFILE" ), ".upx.db" )
37
- }
38
- return filepath .Join (os .Getenv ("HOME" ), ".upx.db" )
39
- }
40
-
41
35
func makeDBKey (src , dst string ) ([]byte , error ) {
42
36
return json .Marshal (& dbKey {
43
37
SrcPath : src ,
44
38
DstPath : path .Join (session .Bucket , dst ),
45
39
})
46
40
}
47
41
42
+ func parseDBKey (key []byte ) (* dbKey , error ) {
43
+ dbkey := & dbKey {}
44
+ err := json .Unmarshal (
45
+ key ,
46
+ dbkey ,
47
+ )
48
+ return dbkey , err
49
+ }
50
+
48
51
func makeDBValue (filename string , md5 bool ) (* dbValue , error ) {
49
52
finfo , err := os .Stat (filename )
50
53
if err != nil {
@@ -120,16 +123,17 @@ func delDBValue(src, dst string) error {
120
123
121
124
func delDBValues (srcPrefix , dstPrefix string ) {
122
125
dstPrefix = path .Join (session .Bucket , dstPrefix )
123
- iter := db .NewIterator (nil , nil )
126
+ iter := db .NewIterator (
127
+ util .BytesPrefix ([]byte ("{" )),
128
+ nil ,
129
+ )
124
130
if ok := iter .First (); ! ok {
125
131
return
126
132
}
127
133
for {
128
- k := new (dbKey )
129
- key := iter .Key ()
130
- err := json .Unmarshal (key , k )
134
+ k , err := parseDBKey (iter .Key ())
131
135
if err != nil {
132
- PrintError ("decode %s: %v" , string (key ), err )
136
+ PrintError ("decode %s: %v" , string (iter . Key () ), err )
133
137
}
134
138
if strings .HasPrefix (k .SrcPath , srcPrefix ) && strings .HasPrefix (k .DstPath , dstPrefix ) {
135
139
PrintOnlyVerbose ("found %s => %s to delete" , k .SrcPath , k .DstPath )
@@ -182,9 +186,9 @@ func diffFileMetas(src []*fileMeta, dst []*fileMeta) []*fileMeta {
182
186
}
183
187
184
188
func initDB () (err error ) {
185
- db , err = leveldb . OpenFile ( getDBName (), nil )
189
+ db , err = cache . GetClient ( )
186
190
if err != nil {
187
- Print ("db %v %s" , err , getDBName ())
191
+ Print ("db %v %s" , err , cache . GetDBName ())
188
192
}
189
193
return err
190
194
}
0 commit comments