How do I hook into Tar with BASH?
Posted
by
orb
on Super User
See other posts from Super User
or by orb
Published on 2013-10-21T23:05:14Z
Indexed on
2013/10/22
3:58 UTC
Read the original article
Hit count: 350
Long Story Short
I am working with Tar archives that contain PNG images in base64 encoding. I would like to use BASH (or whatever else works) to hook into the extraction function of Tar to decode PNG images from base64 encoding to standard PNG encoding after the files are unpacked. A simple cat $input-file | base64 -d >$output-file
will successfully decode the images.
Is there a way I can hook into tar -xf
so that users do not have to do any (or minimal) extra work to decode the images?
In the GNU Tar documentation (http://www.gnu.org/software/tar/manual/html_chapter/Backups.html#SEC97) I found that there are in fact variables reserved to hold the names of functions I desire to be hooked into various moments in Tar program execution. However, the documentation explains that these variables, along with other variables that can be set to configure Tar, are located in a file named backup-specs
. Unfortunately, the path to this file is not given. Further, running sudo find / -name backup-specs
tells me that this file is not present on my Ubuntu version 13.04 system.
Background Information not included in the Long Story Short
I have been working on a browser-based (WebGL) particle effect creation application (http://www.particleeffect.org), (https://github.com/cgrabowski/webgl-particle-effect-editor), (https://github.com/cgrabowski/webgl-particle-effect). I have began to write a client-side-only solution for saving and loading effect data as a tar archive. However, since client-side JavaScript has limited capability to process binary data, the images used as textures in the effect are saved with base64 encoding. I have been able to implement saving effect data as a Tar archive (haven't pushed that to Github yet). However, the images present in said Tar archive cannot be manipulated unless they are decoded from base64 encoding.
© Super User or respective owner