store += append
authornsz <nsz@port70.net>
Wed, 16 Nov 2011 12:09:12 +0000 (13:09 +0100)
committernsz <nsz@port70.net>
Wed, 16 Nov 2011 12:09:12 +0000 (13:09 +0100)
store/store.go

index 2595f88..b05c79e 100644 (file)
@@ -41,8 +41,7 @@ func (c *Conn) Ensure(name string) (err error) {
 
 func (c *Conn) Set(name, k string, v []byte) (err error) {
        fn := filepath.Join(c.path, name, k)
-       // os.O_SYNC
-       f, err := os.Create(fn+".tmp")
+       f, err := os.OpenFile(fn+".tmp", os.O_CREATE|os.O_TRUNC|os.O_WRONLY|os.O_SYNC, 0666)
        if err != nil {
                return
        }
@@ -55,6 +54,17 @@ func (c *Conn) Set(name, k string, v []byte) (err error) {
        return
 }
 
+func (c *Conn) Append(name, k string, v []byte) (err error) {
+       fn := filepath.Join(c.path, name, k)
+       f, err := os.OpenFile(fn, os.O_CREATE|os.O_APPEND|os.O_WRONLY|os.O_SYNC, 0666)
+       if err != nil {
+               return
+       }
+       defer f.Close()
+       _, err = f.Write(v)
+       return
+}
+
 func (c *Conn) Close() (err error) {
        return
 }