X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=lib%2Fzpm.c;h=68d6fb9aabd44d134fc83ffa8145118e0b93a23b;hb=0ac06dd73a92022079bbd0d4eb770d2c6202c23c;hp=30ec7a669cae61ae2f8e50c2cb43f2c4f7b427b4;hpb=9ed8a8ffdb3c31be8d324a9a67a84aad59922c9f;p=zpackage diff --git a/lib/zpm.c b/lib/zpm.c index 30ec7a6..68d6fb9 100644 --- a/lib/zpm.c +++ b/lib/zpm.c @@ -478,51 +478,6 @@ int zpm_extract(struct zpm *pkg, char *hash, char *path, int mode) { return 1; } -/* flags 0, close mmap, flags 1, return mmap fd */ -int zpm_hash(char *path, char *hash, uint32_t flags) { - int fd; - void *content; - struct stat sbuf; - struct sha256_state md; - int j; - unsigned char tmp[32]; - - /* mmap the file */ - fd = open(path, O_RDONLY); - if (fd == -1) { - fprintf(stderr, "%s can't open %s: %s\n", __FUNCTION__, path,strerror(errno)); - return 0; - } - if (fstat(fd, &sbuf) == -1) { - fprintf(stderr, "%s can't fstat %s: %s\n", __FUNCTION__, path,strerror(errno)); - return 0; - } - /* not a regular file? */ - if (!S_ISREG(sbuf.st_mode)) { - /* TODO this is ok, just stored differently */ - fprintf(stderr, "%s non-regular files unsupported %s\n", __FUNCTION__, path); - return 0; - } - - content = mmap(0, sbuf.st_size, PROT_READ,MAP_PRIVATE, fd, 0); - close(fd); - if (!content) { - fprintf(stderr, "%s can't mmap %s: %s\n", __FUNCTION__, path,strerror(errno)); - return 0; - } - - /* get hash */ - sha256_init(&md); - sha256_process(&md, content, sbuf.st_size); - sha256_done(&md, tmp); - for (j=0;j<32;j++) { - sprintf(hash+j*2, "%02x", (unsigned)tmp[j]); - } - hash[64] = 0; - munmap(content, sbuf.st_size); - return flags ? fd : 1; -} - static sqlite3_stmt *run_for_hash(sqlite3 *db, char *sql, char *hash) { int rc; sqlite3_stmt *ifile;