Comments (1)
int untar_file_to(const char *tar_name, const char dest_path) {
mtar_t tar;
/ Open archive for reading */
int ret = mtar_open(&tar, tar_name, "r");
if (MTAR_ESUCCESS != ret) {
return ret;
}
mtar_header_t h;
while ((mtar_read_header(&tar, &h)) != MTAR_ENULLRECORD) {
printf("%s (%d bytes)\n", h.name, h.size);
char dest_file[512] = {};
snprintf(dest_file, sizeof(dest_file) / sizeof(char), "%s/%s", dest_path, h.name);
if ('/' == h.name[strlen(h.name) - 1]) {
mkdir(dest_file, 0777);
mtar_next(&tar);
continue;
}
FILE *f = fopen(dest_file, "w");
if (!f) {
return MTAR_EOPENFAIL;
}
char p;
p = calloc(1, h.size + 1);
if (MTAR_ESUCCESS != mtar_read_data(&tar, p, h.size)) {
free(p);
fclose(f);
mtar_close(&tar);
return MTAR_EREADFAIL;
}
fwrite(p, 1, h.size, f);
free(p);
fclose(f);
mtar_next(&tar);
}
/ Close archive */
mtar_close(&tar);
return 0;
}
from microtar.
Related Issues (16)
- data is alvays 1970 HOT 1
- Archiving gz files HOT 3
- microtar from mem.. -6 bad checksum
- microtar from mem HOT 1
- Support writing files without knowing their size
- Finalize prohibits writing more later
- Bypass file name characters limit (99)
- Overwrite file?
- unable to use on tar.xz HOT 3
- c++ version HOT 1
- Stack overflow inside mtar_write_file_header
- An empty archive can be written but not read back
- Doc issue / make it very explicit that the mtar_t needs to be memset when using custom stream
- No support for tarballs larger than 4GB HOT 1
- makefile and test.c
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from microtar.