aboutsummaryrefslogtreecommitdiff
path: root/weed-fs/src
diff options
context:
space:
mode:
authorchris.lu@gmail.com <chris.lu@gmail.com@282b0af5-e82d-9cf1-ede4-77906d7719d0>2012-07-16 17:15:16 +0000
committerchris.lu@gmail.com <chris.lu@gmail.com@282b0af5-e82d-9cf1-ede4-77906d7719d0>2012-07-16 17:15:16 +0000
commitd46e58820048de46e631258a8d85a2fe70221f3f (patch)
treee81bfef0118a51aba8282598b20d470721b8f00f /weed-fs/src
parenteb9456d7d5195b8bae17cc13a9561ee5e4a0af6b (diff)
downloadseaweedfs-d46e58820048de46e631258a8d85a2fe70221f3f.tar.xz
seaweedfs-d46e58820048de46e631258a8d85a2fe70221f3f.zip
simplify delta of file id, for multi-versioning of a file
git-svn-id: https://weed-fs.googlecode.com/svn/trunk@54 282b0af5-e82d-9cf1-ede4-77906d7719d0
Diffstat (limited to 'weed-fs/src')
-rw-r--r--weed-fs/src/pkg/storage/needle.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/weed-fs/src/pkg/storage/needle.go b/weed-fs/src/pkg/storage/needle.go
index a7ae80857..8d2ad9f60 100644
--- a/weed-fs/src/pkg/storage/needle.go
+++ b/weed-fs/src/pkg/storage/needle.go
@@ -8,6 +8,7 @@ import (
"net/http"
"os"
"pkg/util"
+ "strconv"
"strings"
)
@@ -30,6 +31,7 @@ func NewNeedle(r *http.Request) (n *Needle, e error) {
return
}
part, _ := form.NextPart()
+ log.Println("uploading file " + part.FileName())
data, _ := ioutil.ReadAll(part)
n.Data = data
@@ -52,7 +54,18 @@ func (n *Needle) ParsePath(fid string) {
}
return
}
+ delta := ""
+ deltaIndex := strings.LastIndex(fid, "_")
+ if deltaIndex > 0 {
+ fid, delta = fid[0:deltaIndex], fid[deltaIndex+1:]
+ }
n.Key, n.Cookie = ParseKeyHash(fid)
+ if delta != "" {
+ d, e := strconv.ParseUint(delta, 10, 64)
+ if e == nil {
+ n.Key += d
+ }
+ }
}
func (n *Needle) Append(w io.Writer) uint32 {
header := make([]byte, 16)