mirror of
https://github.com/fdiskyou/Zines.git
synced 2025-03-09 00:00:00 +01:00
110 lines
2.5 KiB
Text
110 lines
2.5 KiB
Text
---[ Phrack Magazine Volume 7, Issue 51 September 01, 1997, article 17 of 17
|
|
|
|
|
|
-------------------------[ Phrack Magzine Extraction Utility
|
|
|
|
|
|
--------[ Phrack Staff
|
|
|
|
This time around, you have the option of using the C version of extract,
|
|
or the PERL version, contributed by Daos.
|
|
|
|
|
|
---------------------8<------------CUT-HERE----------->8---------------------
|
|
|
|
/* extract.c by Phrack Staff and sirsyko
|
|
*
|
|
* (c) 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---------------------
|
|
|
|
# Daos <daos@nym.alias.net>
|
|
|
|
<++> extract.pl
|
|
#!/bin/sh -- # -*- perl -*- -n
|
|
eval 'exec perl $0 -S ${1+"$@"}' if 0;
|
|
|
|
$opening=0;
|
|
|
|
if (/^\<\+\+\>/) {$curfile = substr($_ , 5); $opening=1;};
|
|
if (/^\<\-\-\>/) {close ct_ex; $opened=0;};
|
|
if ($opening) {
|
|
chop $curfile;
|
|
$sex_dir= substr( $curfile, 0, ((rindex($curfile,'/'))) ) if ($curfile =~ m/\//);
|
|
eval {mkdir $sex_dir, "0777";};
|
|
open(ct_ex,">$curfile");
|
|
print "Attempting extraction of $curfile\n";
|
|
$opened=1;
|
|
}
|
|
if ($opened && !$opening) {print ct_ex $_};
|
|
<-->
|
|
|
|
----[ EOF
|