diff options
author | Fabian Groffen <grobian@gentoo.org> | 2019-09-28 15:05:13 +0200 |
---|---|---|
committer | Fabian Groffen <grobian@gentoo.org> | 2019-09-28 15:05:13 +0200 |
commit | 03912c73fb68cdfe6f45f26fc4f5efd099e41262 (patch) | |
tree | ea771e1b31b656db87956f6f1d12b15ba5f550a7 /qpkg.c | |
parent | qmanifest: squash warning about extra tokens after ifdef directive (diff) | |
download | portage-utils-03912c73fb68cdfe6f45f26fc4f5efd099e41262.tar.gz portage-utils-03912c73fb68cdfe6f45f26fc4f5efd099e41262.tar.bz2 portage-utils-03912c73fb68cdfe6f45f26fc4f5efd099e41262.zip |
qpkg: fix tbz2 xpak generation
The xpak footer was missing causing files not to contain their metadata
(even though present in the file).
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
Diffstat (limited to 'qpkg.c')
-rw-r--r-- | qpkg.c | 23 |
1 files changed, 18 insertions, 5 deletions
@@ -105,12 +105,11 @@ qpkg_clean_dir(char *dirp, set *vdb) if ((st.st_size / KILOBYTE) > 1000) disp_units = MEGABYTE; num_all_bytes += st.st_size; - qprintf(" %s[%s%s %3s %s %s%s]%s %s%s/%s%s\n", - DKBLUE, NORM, GREEN, + qprintf(" %s[%s %3s %s %s] %s%s%s\n", + DKBLUE, GREEN, make_human_readable_str(st.st_size, 1, disp_units), - disp_units == MEGABYTE ? "M" : "K", - NORM, DKBLUE, NORM, CYAN, - basename(dirp), fnames[i]->d_name, NORM); + disp_units == MEGABYTE ? "MiB" : "KiB", + DKBLUE, BLUE, fnames[i]->d_name, NORM); } if (!pretend) unlink(buf); @@ -211,6 +210,7 @@ qpkg_make(depend_atom *atom) char filelist[BUFSIZE + 32]; char tbz2[BUFSIZE + 32]; size_t buflen; + size_t xpaksize; char *buf; int i; char *xpak_argv[2]; @@ -286,12 +286,25 @@ qpkg_make(depend_atom *atom) } pclose(fp); + /* get offset where xpak will start */ + stat(tbz2, &st); + xpaksize = st.st_size; + snprintf(buf, buflen, "%s/%s/%s", portvdb, atom->CATEGORY, atom_to_pvr(atom)); xpak_argv[0] = buf; xpak_argv[1] = NULL; xpak_create(AT_FDCWD, tbz2, 1, xpak_argv, 1, verbose); + stat(tbz2, &st); + + /* save tbz2 tail: OOOOSTOP */ + fp = fopen(tbz2, "a"); + WRITE_BE_INT32(buf, st.st_size - xpaksize); + fwrite(buf, 1, 4, fp); + fwrite("STOP", 1, 4, fp); + fclose(fp); + unlink(filelist); snprintf(buf, buflen, "%s/%s.tbz2", qpkg_bindir, atom_to_pvr(atom)); |