home *** CD-ROM | disk | FTP | other *** search
-
- ---[ 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
-