pacutils-mtree(3) pacutils-mtree pacutils-mtree(3) pacutils-mtree - mtree #include typedef struct pu_mtree_t { char *path; char *type; uid_t uid; gid_t gid; mode_t mode; off_t size; char *md5digest; char *sha256digest; } pu_mtree_t; typedef struct { FILE *stream; int eof; pu_mtree_t defaults; } pu_mtree_reader_t; pu_mtree_reader_t *pu_mtree_reader_open_stream(FILE *stream); pu_mtree_reader_t *pu_mtree_reader_open_package(alpm_handle_t *h, alpm_pkg_t *p); pu_mtree_t *pu_mtree_reader_next(pu_mtree_reader_t *reader, pu_mtree_t *dest); void pu_mtree_reader_free(pu_mtree_reader_t *reader); void pu_mtree_free(pu_mtree_t *mtree); /* deprecated */ alpm_list_t *pu_mtree_load_pkg_mtree(alpm_handle_t *handle, alpm_pkg_t *pkg); mtree mtree libarchive "md5digest" "sha256digest" libarchive. mtree libalpm. pu_mtree_reader_t *pu_mtree_reader_open_stream(FILE *stream); . pu_mtree_reader_t *pu_mtree_reader_open_package(alpm_handle_t *h, alpm_pkg_t *p); mtree . "p" . pu_mtree_t *pu_mtree_reader_next(pu_mtree_reader_t *reader, pu_mtree_t *dest); mtree. "dest" "NULL" "pu_mtree_t" . . . void pu_mtree_free(pu_mtree_t *mtree); "pu_mtree_t". void pu_mtree_reader_free(pu_mtree_reader_t *reader); "pu_mtree_reader_t". alpm_list_t *pu_mtree_load_pkg_mtree(alpm_handle_t *handle, alpm_pkg_t *pkg); mtree "pkg". : "pu_mtree_reader_open_package" . md5 : pu_mtree_t *m; pu_mtree_reader_t *r; if((r = pu_mtree_reader_open_package(handle, pkg)) == NULL) { fprintf(stderr, "error: unable to load mtree data for '%s'\n", alpm_pkg_get_name(pkg)); return; } while((m = pu_mtree_reader_next(r, NULL))) { const char *md5 = m->md5digest; printf("%s: %s\n", m->path, md5 && md5[0] != '\0' ? md5 : "(no md5sum provided)"); pu_mtree_free(m); } if(!reader->eof) { fprintf(stderr, "error: unable to read mtree data for '%s'\n", alpm_pkg_get_name(pkg)); } pu_mtree_reader_free(r); alpm_pkg_mtree_open(3), alpm_pkg_mtree_next(3), alpm_pkg_mtree_close(3) mtree(5) - description of "pu_mtree_t" members 3 . . : . pacutils 4 2025 pacutils-mtree(3)