--- libaitsync/src/aitsync.c 2012/11/13 10:00:30 1.3.2.1 +++ libaitsync/src/aitsync.c 2012/11/13 10:30:44 1.3.2.2 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: aitsync.c,v 1.3.2.1 2012/11/13 10:00:30 misho Exp $ +* $Id: aitsync.c,v 1.3.2.2 2012/11/13 10:30:44 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -80,7 +80,7 @@ sync_GetError() // sync_SetErr() Set error to variables for internal use!!! inline void -syncSetErr(int eno, char *estr, ...) +sync_SetErr(int eno, char *estr, ...) { va_list lst; @@ -111,15 +111,16 @@ syncSignature(const char *csInput, const char *csSig, sync_chunk_t sc; char szTemp[MAXPATHLEN]; - inf = syncOpen(csInput, O_RDONLY, 0); + /* open work files */ + inf = sync_Open(csInput, O_RDONLY, 0); if (inf == -1) return inf; if (compress & 2) - f = syncTemp(szTemp, MAXPATHLEN); + f = sync_Temp(szTemp, MAXPATHLEN); else - f = syncOpen(csSig, O_WRONLY, 0); + f = sync_Open(csSig, O_WRONLY, 0); if (f == -1) { - syncClose(inf); + sync_Close(inf); return f; } @@ -127,42 +128,41 @@ syncSignature(const char *csInput, const char *csSig, memset(buf, 0, CHUNK_MAX); ret = read(inf, buf, CHUNK_MAX); if (ret == -1) { - SETERR; + LOGERR; break; } - // fill chunk + /* fill chunk */ sync_mksig(i, off, buf, ret, &sc); if (write(f, &sc, sizeof sc) == -1) { - SETERR; + LOGERR; break; } } /* Signatures is READY */ - // build compressed delta file if (compress & 2) { - outf = syncOpen(csSig, O_WRONLY, 0); + /* build compressed delta file */ + outf = sync_Open(csSig, O_WRONLY, 0); if (outf == -1) { ret = outf; goto end; } if (sync_Deflate(f, outf, Z_DEFAULT_COMPRESSION) == -1) { - syncClose(outf); + sync_Close(outf); unlink(csSig); ret = -1; goto end; } - syncClose(outf); + sync_Close(outf); } end: - syncClose(f); + sync_Close(f); if (compress & 2) unlink(szTemp); - - syncClose(inf); + sync_Close(inf); return ret; } @@ -191,37 +191,37 @@ syncDelta(const char *csInput, const char *csSig, cons /* load signatures */ if (compress & 2) { - f = syncOpen(csSig, O_RDONLY, 0); + f = sync_Open(csSig, O_RDONLY, 0); if (-1 == f) return f; - sigf = syncTemp(szTemp, MAXPATHLEN); + sigf = sync_Temp(szTemp, MAXPATHLEN); if (-1 == sigf) { - syncClose(f); + sync_Close(f); return sigf; } if (sync_Inflate(f, sigf) == -1) { - syncClose(sigf); - syncClose(f); + sync_Close(sigf); + sync_Close(f); unlink(szTemp); return -1; } else - syncClose(f); + sync_Close(f); } else { - sigf = syncOpen(csSig, O_RDONLY, 0); + sigf = sync_Open(csSig, O_RDONLY, 0); if (-1 == sigf) return sigf; } if (fstat(sigf, &sb) == -1) { - SETERR; - syncClose(sigf); + LOGERR; + sync_Close(sigf); if (compress & 2) unlink(szTemp); return -1; } else { if (!sb.st_size) { - syncClose(sigf); + sync_Close(sigf); if (compress & 2) unlink(szTemp); return 1; @@ -229,8 +229,8 @@ syncDelta(const char *csInput, const char *csSig, cons cnt = sb.st_size / sizeof(sync_chunk_t); if (sb.st_size % sizeof(sync_chunk_t)) { - syncSetErr(ENOEXEC, "Error:: signature file is broken!\n"); - syncClose(sigf); + sync_SetErr(ENOEXEC, "Error:: signature file is broken!\n"); + sync_Close(sigf); if (compress & 2) unlink(szTemp); return -1; @@ -238,13 +238,13 @@ syncDelta(const char *csInput, const char *csSig, cons } chunks = (sync_chunk_t*) mmap(0, sb.st_size, PROT_READ, MAP_PRIVATE, sigf, 0); if (MAP_FAILED == chunks) { - SETERR; - syncClose(sigf); + LOGERR; + sync_Close(sigf); if (compress & 2) unlink(szTemp); return -1; } else { - syncClose(sigf); + sync_Close(sigf); if (compress & 2) unlink(szTemp); } @@ -258,7 +258,7 @@ syncDelta(const char *csInput, const char *csSig, cons // build index from signature blocks tag_table = (sync_tag_t*) calloc(cnt, sizeof(sync_tag_t)); if (!tag_table) { - SETERR; + LOGERR; munmap(chunks, sb.st_size); return -1; } else { @@ -275,18 +275,18 @@ syncDelta(const char *csInput, const char *csSig, cons /* build delta patch */ - inf = syncOpen(csInput, O_RDONLY, 0); + inf = sync_Open(csInput, O_RDONLY, 0); if (inf == -1) { free(tag_table); munmap(chunks, sb.st_size); return inf; } if (compress & 1) - f = syncTemp(szTemp, MAXPATHLEN); + f = sync_Temp(szTemp, MAXPATHLEN); else - f = syncOpen(csDelta, O_WRONLY, 0); + f = sync_Open(csDelta, O_WRONLY, 0); if (f == -1) { - syncClose(inf); + sync_Close(inf); free(tag_table); munmap(chunks, sb.st_size); return f; @@ -294,7 +294,7 @@ syncDelta(const char *csInput, const char *csSig, cons for (i = 0, off = 0ll, ret = -1, blk = 0; (ret = read(inf, buf, CHUNK_MAX)); i++, off += ret) { if (ret == -1) { - SETERR; + LOGERR; break; } find = NULL; @@ -329,24 +329,24 @@ syncDelta(const char *csInput, const char *csSig, cons // write signature of current chunk ret = write(f, &sc, sizeof sc); if (-1 == ret) { - SETERR; + LOGERR; break; } // if write chunk len is differnt from requested len if (ret != sizeof sc) { - syncSetErr(ENOEXEC, "Error:: delta file signature is broken!\n"); + sync_SetErr(ENOEXEC, "Error:: delta file signature is broken!\n"); ret = -1; break; } // write current chunk ... ret = write(f, buf, sc.sc_len); if (-1 == ret) { - SETERR; + LOGERR; break; } // if write chunk len is differnt from requested len if (ret != sc.sc_len) { - syncSetErr(ENOEXEC, "Error:: delta file data is broken!\n"); + sync_SetErr(ENOEXEC, "Error:: delta file data is broken!\n"); ret = -1; break; } @@ -362,12 +362,12 @@ syncDelta(const char *csInput, const char *csSig, cons // write signature from chunk B blk = write(f, &sc, sizeof sc); if (-1 == blk) { - SETERR; + LOGERR; break; } // if write chunk len is differnt from requested len if (blk != sizeof sc) { - syncSetErr(ENOEXEC, "Error:: delta file end signature is broken!\n"); + sync_SetErr(ENOEXEC, "Error:: delta file end signature is broken!\n"); ret = -1; break; } @@ -380,7 +380,7 @@ syncDelta(const char *csInput, const char *csSig, cons goto end; fsync(f); if (fstat(f, &sb_f) == -1) { - SETERR; + LOGERR; ret = -1; goto end; } @@ -395,26 +395,26 @@ syncDelta(const char *csInput, const char *csSig, cons // build compressed delta file if (compress & 1) { - outf = syncOpen(csDelta, O_WRONLY, 0); + outf = sync_Open(csDelta, O_WRONLY, 0); if (outf == -1) { ret = outf; goto end; } if (sync_Deflate(f, outf, Z_DEFAULT_COMPRESSION) == -1) { - syncClose(outf); + sync_Close(outf); unlink(csDelta); ret = -1; goto end; } - syncClose(outf); + sync_Close(outf); } end: - syncClose(f); + sync_Close(f); if (compress & 1) unlink(szTemp); - syncClose(inf); + sync_Close(inf); free(tag_table); munmap(chunks, sb.st_size); return ret; @@ -442,64 +442,64 @@ syncPatch(const char *csInput, const char *csDelta, co sync_chunk_t sc, *suffix; if (compress & 1) { - f = syncOpen(csDelta, O_RDONLY, 0); + f = sync_Open(csDelta, O_RDONLY, 0); if (f == -1) return f; - d = syncTemp(szTemp, MAXPATHLEN); + d = sync_Temp(szTemp, MAXPATHLEN); if (d == -1) { - syncClose(f); + sync_Close(f); return d; } if (sync_Inflate(f, d) == -1) { - syncClose(d); - syncClose(f); + sync_Close(d); + sync_Close(f); unlink(szTemp); return -1; } else - syncClose(f); + sync_Close(f); } else { - d = syncOpen(csDelta, O_RDONLY, 0); + d = sync_Open(csDelta, O_RDONLY, 0); if (d == -1) return d; } if (fstat(d, &sb) == -1) { - SETERR; - syncClose(d); + LOGERR; + sync_Close(d); if (compress & 1) unlink(szTemp); return -1; } delta = mmap(0, sb.st_size, PROT_READ, MAP_PRIVATE, d, 0); if (MAP_FAILED == delta) { - SETERR; - syncClose(d); + LOGERR; + sync_Close(d); if (compress & 1) unlink(szTemp); return -1; } else { - syncClose(d); + sync_Close(d); if (compress & 1) unlink(szTemp); } if (sync_buildPatch(delta, sb.st_size, &pieces) == -1 || !pieces) { - syncSetErr(ENOEXEC, "Error:: patch file is broken!\n"); + sync_SetErr(ENOEXEC, "Error:: patch file is broken!\n"); munmap(delta, sb.st_size); return -1; } - inf = syncOpen(csInput, O_RDONLY, 0); + inf = sync_Open(csInput, O_RDONLY, 0); if (inf == -1) { if (pieces) free(pieces); munmap(delta, sb.st_size); return inf; } - outf = syncOpen(csPatch, O_WRONLY, 0); + outf = sync_Open(csPatch, O_WRONLY, 0); if (outf == -1) { - syncClose(inf); + sync_Close(inf); if (pieces) free(pieces); munmap(delta, sb.st_size); @@ -507,7 +507,7 @@ syncPatch(const char *csInput, const char *csDelta, co } if (fstat(inf, &sb) == -1) { - SETERR; + LOGERR; ret = -1; goto end; } else { @@ -527,21 +527,21 @@ syncPatch(const char *csInput, const char *csDelta, co if (off < sb.st_size) { readlen = read(inf, buf, CHUNK_MAX); if (readlen == -1) { - SETERR; + LOGERR; ret = -1; break; } // if suffix find, check for correct patch if (suffix) { if (suffix->sc_len != readlen || suffix->sc_off != off) { - syncSetErr(ENOEXEC, "Error:: patch file is broken! (wrong suffix pos)\n"); + sync_SetErr(ENOEXEC, "Error:: patch file is broken! (wrong suffix pos)\n"); ret = -1; break; } sync_mksig(i, off, buf, readlen, &sc); if (sc.sc_roll != suffix->sc_roll || memcmp(sc.sc_cksum, suffix->sc_cksum, MD5_DIGEST_LENGTH)) { - syncSetErr(ENOEXEC, "Error:: patch file is broken! (wrong suffix crc)\n"); + sync_SetErr(ENOEXEC, "Error:: patch file is broken! (wrong suffix crc)\n"); ret = -1; break; } @@ -558,7 +558,7 @@ syncPatch(const char *csInput, const char *csDelta, co // if delta chunk match! if (piece->pfx && piece->pfx->sc_off == off) { if (!piece->buf) { - syncSetErr(ENOEXEC, "Error:: patch file is broken! (missing data)\n"); + sync_SetErr(ENOEXEC, "Error:: patch file is broken! (missing data)\n"); ret = -1; break; } @@ -570,14 +570,14 @@ syncPatch(const char *csInput, const char *csDelta, co piece++; if (suffix && off >= sb.st_size) { - syncSetErr(ENOEXEC, "Error:: patch file is broken! (after eof find suffix)\n"); + sync_SetErr(ENOEXEC, "Error:: patch file is broken! (after eof find suffix)\n"); ret = -1; break; } } else if (off >= sb.st_size) { if (piece->pfx) { - syncSetErr(ENOEXEC, "Error:: patch file is broken! (after eof find prefix)\n"); + sync_SetErr(ENOEXEC, "Error:: patch file is broken! (after eof find prefix)\n"); ret = -1; } @@ -586,14 +586,14 @@ syncPatch(const char *csInput, const char *csDelta, co ret = write(outf, buffer, readlen); if (ret == -1 || ret != readlen) { - SETERR; + LOGERR; break; } } end: - syncClose(inf); - syncClose(outf); + sync_Close(inf); + sync_Close(outf); if (pieces) free(pieces); munmap(delta, sb.st_size);