I am trying to make a tar file using c. For a reason I can not use
system("tar -cvf xxxx.tar xxxx");
my code is:
#include <stdio.h>
#include <libtar.h>
#include <fcntl.h>
int main(void) {
TAR *pTar;
char *tarFilename = "file.tar";
char *srcDir = "directory";
char *extractTo = ".";
tar_open(&pTar, tarFilename, NULL, O_WRONLY | O_CREAT, 0644, TAR_GNU);
tar_append_tree(pTar, srcDir, extractTo);
tar_close(pTar);
return (0);
}
After running this code, when I want to untar with
tar -xvf file.tar
I am getting an error
tar: This does not look like a tar archive
tar: Exiting with failure status due to previous errors
What is the problem with my c code ?
I think you need to call tar_append_eof http://linux.die.net/man/3/tar_append_eof before closing the tar file.
The tar_append_eof() function writes an EOF marker (two blocks of all zeros) to the tar file associated with t.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With