From d46e58820048de46e631258a8d85a2fe70221f3f Mon Sep 17 00:00:00 2001 From: "chris.lu@gmail.com" Date: Mon, 16 Jul 2012 17:15:16 +0000 Subject: [PATCH] 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 --- weed-fs/src/pkg/storage/needle.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) 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)