SMOLNET PORTAL home about changes
iRework additional data handling - dedup - deduplicating backup program	Err	bitreich.org	70
hgit clone git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/	URL:git://bitreich.org/dedup/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/dedup/	bitreich.org	70
1Log	/scm/dedup/log.gph	bitreich.org	70
1Files	/scm/dedup/files.gph	bitreich.org	70
1Refs	/scm/dedup/refs.gph	bitreich.org	70
1Tags	/scm/dedup/tag	bitreich.org	70
1README	/scm/dedup/file/README.gph	bitreich.org	70
1LICENSE	/scm/dedup/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit faf2fab2ac2febc631159913683d1c3dbc5166b3	/scm/dedup/commit/faf2fab2ac2febc631159913683d1c3dbc5166b3.gph	bitreich.org	70
1parent 01c8fce481e7a253ac9a96c4bbc877aab2945586	/scm/dedup/commit/01c8fce481e7a253ac9a96c4bbc877aab2945586.gph	bitreich.org	70
hAuthor: sin <sin@2f30.org>	URL:mailto:sin@2f30.org	bitreich.org	70
iDate:   Sun, 12 May 2019 16:36:27 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
iRework additional data handling	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M snap.c                              |      75 +++++++++++++++----------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 36 insertions(+), 39 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/snap.c b/snap.c	/scm/dedup/file/snap.c.gph	bitreich.org	70
i@@ -61,18 +61,12 @@ struct sctx {	Err	bitreich.org	70
i         struct shdr shdr;                        /* snapshot header */	Err	bitreich.org	70
i };	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-/* Read snapshot header */	Err	bitreich.org	70
i+/* Unpack snapshot header */	Err	bitreich.org	70
i static int	Err	bitreich.org	70
i-unpackshdr(int fd, struct shdr *shdr)	Err	bitreich.org	70
i+unpackshdr(unsigned char *buf, struct shdr *shdr)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        unsigned char buf[SHDRSIZE];	Err	bitreich.org	70
i         int n;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (xread(fd, buf, sizeof(buf)) != sizeof(buf)) {	Err	bitreich.org	70
i-                seterr("failed to read snapshot header: %s", strerror(errno));	Err	bitreich.org	70
i-                return -1;	Err	bitreich.org	70
i-        }	Err	bitreich.org	70
i-	Err	bitreich.org	70
i         n = unpack(buf, "'16'24qq",	Err	bitreich.org	70
i                    shdr->magic,	Err	bitreich.org	70
i                    shdr->header,	Err	bitreich.org	70
i@@ -83,11 +77,10 @@ unpackshdr(int fd, struct shdr *shdr)	Err	bitreich.org	70
i         return n;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-/* Write snapshot header */	Err	bitreich.org	70
i+/* Pack snapshot header */	Err	bitreich.org	70
i static int	Err	bitreich.org	70
i-packshdr(int fd, struct shdr *shdr)	Err	bitreich.org	70
i+packshdr(unsigned char *buf, struct shdr *shdr)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        unsigned char buf[SHDRSIZE];	Err	bitreich.org	70
i         int n;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         n = pack(buf, "'16'24qq",	Err	bitreich.org	70
i@@ -97,36 +90,25 @@ packshdr(int fd, struct shdr *shdr)	Err	bitreich.org	70
i                  shdr->nbd);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         assert(n == SHDRSIZE);	Err	bitreich.org	70
i-        if (xwrite(fd, buf, n) != n) {	Err	bitreich.org	70
i-                seterr("failed to write snapshot header: %s", strerror(errno));	Err	bitreich.org	70
i-                return -1;	Err	bitreich.org	70
i-        }	Err	bitreich.org	70
i         return n;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i static int	Err	bitreich.org	70
i initmdhead(struct sctx *sctx)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        unsigned char ad[SHDRSIZE];	Err	bitreich.org	70
i         struct shdr *shdr;	Err	bitreich.org	70
i         uint64_t i;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (lseek(sctx->fd, 0, SEEK_SET) < 0) {	Err	bitreich.org	70
i-                seterr("lseek: %s", strerror(errno));	Err	bitreich.org	70
i-                return -1;	Err	bitreich.org	70
i-        }	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        if (xread(sctx->fd, ad, sizeof(ad)) != sizeof(ad)) {	Err	bitreich.org	70
i-                seterr("failed to read snapshot header: %s\n", strerror(errno));	Err	bitreich.org	70
i-                return -1;	Err	bitreich.org	70
i-        }	Err	bitreich.org	70
i-	Err	bitreich.org	70
i         shdr = &sctx->shdr;	Err	bitreich.org	70
i         if (sctx->crypto) {	Err	bitreich.org	70
i+                unsigned char ad[SHDRSIZE];	Err	bitreich.org	70
i                 crypto_secretstream_xchacha20poly1305_state state;	Err	bitreich.org	70
i                 struct shdr *shdr;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i                 shdr = &sctx->shdr;	Err	bitreich.org	70
i+                if (packshdr(ad, shdr) < 0)	Err	bitreich.org	70
i+                        return -1;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i                 if (crypto_secretstream_xchacha20poly1305_init_pull(&state,	Err	bitreich.org	70
i                                                                     shdr->header,	Err	bitreich.org	70
i                                                                     param.key) != 0) {	Err	bitreich.org	70
i@@ -196,6 +178,7 @@ err0:	Err	bitreich.org	70
i int	Err	bitreich.org	70
i screat(char *path, int mode, struct sctx **sctx)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i+        unsigned char buf[SHDRSIZE];	Err	bitreich.org	70
i         struct shdr *shdr;	Err	bitreich.org	70
i         int crypto;	Err	bitreich.org	70
i         int fd;	Err	bitreich.org	70
i@@ -249,18 +232,24 @@ screat(char *path, int mode, struct sctx **sctx)	Err	bitreich.org	70
i         shdr->flags = (VMAJ << VMAJSHIFT) | VMIN;	Err	bitreich.org	70
i         shdr->nbd = 0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (packshdr(fd, shdr) < 0) {	Err	bitreich.org	70
i+        if (packshdr(buf, shdr) < 0) {	Err	bitreich.org	70
i                 free(*sctx);	Err	bitreich.org	70
i                 close(fd);	Err	bitreich.org	70
i                 return -1;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+        if (xwrite(fd, buf, SHDRSIZE) != SHDRSIZE) {	Err	bitreich.org	70
i+                seterr("failed to write snapshot header: %s", strerror(errno));	Err	bitreich.org	70
i+                return -1;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i         return 0;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i int	Err	bitreich.org	70
i sopen(char *path, int flags, int mode, struct sctx **sctx)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i+        unsigned char buf[SHDRSIZE];	Err	bitreich.org	70
i         struct shdr *shdr;	Err	bitreich.org	70
i         int crypto;	Err	bitreich.org	70
i         int fd;	Err	bitreich.org	70
i@@ -312,7 +301,12 @@ sopen(char *path, int flags, int mode, struct sctx **sctx)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         shdr = &(*sctx)->shdr;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if (unpackshdr(fd, shdr) < 0) {	Err	bitreich.org	70
i+        if (xread(fd, buf, SHDRSIZE) != SHDRSIZE) {	Err	bitreich.org	70
i+                seterr("failed to read snapshot header: %s", strerror(errno));	Err	bitreich.org	70
i+                return -1;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        if (unpackshdr(buf, shdr) < 0) {	Err	bitreich.org	70
i                 free(sctx);	Err	bitreich.org	70
i                 close(fd);	Err	bitreich.org	70
i                 return -1;	Err	bitreich.org	70
i@@ -419,23 +413,18 @@ ssync(struct sctx *sctx)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         shdr = &sctx->shdr;	Err	bitreich.org	70
i         if (sctx->crypto) {	Err	bitreich.org	70
i-                unsigned char ad[SHDRSIZE];	Err	bitreich.org	70
i+                unsigned char hdr[SHDRSIZE];	Err	bitreich.org	70
i                 crypto_secretstream_xchacha20poly1305_state state;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i                 crypto_secretstream_xchacha20poly1305_init_push(&state,	Err	bitreich.org	70
i                                                                 shdr->header,	Err	bitreich.org	70
i                                                                 param.key);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-                if (packshdr(sctx->fd, shdr) < 0)	Err	bitreich.org	70
i+                if (packshdr(hdr, shdr) < 0)	Err	bitreich.org	70
i                         return -1;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-                if (lseek(sctx->fd, 0, SEEK_SET) < 0) {	Err	bitreich.org	70
i-                        seterr("lseek: %s", strerror(errno));	Err	bitreich.org	70
i-                        return -1;	Err	bitreich.org	70
i-                }	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-                if (xread(sctx->fd, ad, sizeof(ad)) != sizeof(ad)) {	Err	bitreich.org	70
i-                        seterr("failed to read snapshot header: %s\n", strerror(errno));	Err	bitreich.org	70
i+                if (xwrite(sctx->fd, hdr, SHDRSIZE) != SHDRSIZE) {	Err	bitreich.org	70
i+                        seterr("failed to write snapshot header: %s", strerror(errno));	Err	bitreich.org	70
i                         return -1;	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -451,7 +440,7 @@ ssync(struct sctx *sctx)	Err	bitreich.org	70
i                         crypto_secretstream_xchacha20poly1305_push(&state,	Err	bitreich.org	70
i                                                                    buf, NULL,	Err	bitreich.org	70
i                                                                    mdnode->md, MDSIZE,	Err	bitreich.org	70
i-                                                                   ad, sizeof(ad), tag);	Err	bitreich.org	70
i+                                                                   hdr, SHDRSIZE, tag);	Err	bitreich.org	70
i                         if (xwrite(sctx->fd, buf, sizeof(buf)) != sizeof(buf)) {	Err	bitreich.org	70
i                                 seterr("failed to write block hash: %s",	Err	bitreich.org	70
i                                         strerror(errno));	Err	bitreich.org	70
i@@ -459,8 +448,16 @@ ssync(struct sctx *sctx)	Err	bitreich.org	70
i                         }	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i         } else {	Err	bitreich.org	70
i-                if (packshdr(sctx->fd, shdr) < 0)	Err	bitreich.org	70
i+                unsigned char hdr[SHDRSIZE];	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                if (packshdr(hdr, shdr) < 0)	Err	bitreich.org	70
i                         return -1;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                if (xwrite(sctx->fd, hdr, SHDRSIZE) != SHDRSIZE) {	Err	bitreich.org	70
i+                        seterr("failed to write snapshot header: %s", strerror(errno));	Err	bitreich.org	70
i+                        return -1;	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i                 TAILQ_FOREACH(mdnode, &sctx->mdhead, e) {	Err	bitreich.org	70
i                         if (xwrite(sctx->fd, mdnode->md, MDSIZE) != MDSIZE) {	Err	bitreich.org	70
i                                 seterr("failed to write block hash: %s",	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/dedup/commit/faf2fab2ac2febc6...
Content-Typetext/plain; charset=utf-8