diff options
| author | chris.lu@gmail.com <chris.lu@gmail.com@282b0af5-e82d-9cf1-ede4-77906d7719d0> | 2012-07-16 17:15:16 +0000 |
|---|---|---|
| committer | chris.lu@gmail.com <chris.lu@gmail.com@282b0af5-e82d-9cf1-ede4-77906d7719d0> | 2012-07-16 17:15:16 +0000 |
| commit | d46e58820048de46e631258a8d85a2fe70221f3f (patch) | |
| tree | e81bfef0118a51aba8282598b20d470721b8f00f /weed-fs/src | |
| parent | eb9456d7d5195b8bae17cc13a9561ee5e4a0af6b (diff) | |
| download | seaweedfs-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.go | 13 |
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) |
