Title : extract.c
Author : Phrack Staff
.oO Phrack 50 Oo.
Volume Seven, Issue Fifty
16 of 16
extract.c by Phrack Staff and sirsyko
---------------------8<------------CUT-HERE----------->8---------------------
/* extract.c by Phrack Staff and sirsyko
*
* Phrack Magazine, 1997
*
* Extracts textfiles from a specially tagged flatfile into a hierarchical
* directory strcuture. Use to extract source code from any of the articles
* in Phrack Magazine (first appeared in Phrack 50).
*
* gcc -o extract extract.c
*
* ./extract filename
*
*/
#include <stdio.h>
#include <sys/stat.h>
#include <string.h>
int main(int argc, char **argv){
char *s="<++> ",*e="<-->",b[256],*bp;
FILE *f,*o = NULL;
int l, n, i=0;
l = strlen(s);
n = strlen(e);
if(argc<2) {
printf("Usage: %s <inputfile>\n",argv[0]);
exit(1);
}
if(! (f=fopen(argv[1], "r"))) {
printf("Could not open input file.\n");
exit(1);
}
while(fgets(b, 256, f)){
if(!strncmp (b, s, l)){
b[strlen(b)-1] = '\0';
if((bp=strchr(b+l+1,'/')))
while (bp){
*bp='\0';
mkdir(b+l, 0700);
*bp='/';
bp=strchr(bp+1,'/');
}
if((o = fopen(b+l, "w")))
printf("- Extracting %s\n",b+l);
else {
printf("Could not extract '%s'\n",b+l);
exit(1);
}
}
else if(!strncmp (b, e, n)){
if(o) fclose(o);
else {
printf("Error closing file.\n");
exit(1);
}
}
else if(o) {
fputs(b, o);
i++;
}
}
if(!i) printf("No extraction tags found.\n");
return(0);
}
---------------------8<------------CUT-HERE----------->8---------------------
EOF