1*10465441SEvalZero#!/usr/bin/perl 2*10465441SEvalZero 3*10465441SEvalZeroopen(OUTPUT, "> httpd-fsdata.c"); 4*10465441SEvalZero 5*10465441SEvalZerochdir("httpd-fs"); 6*10465441SEvalZero 7*10465441SEvalZeroopendir(DIR, "."); 8*10465441SEvalZero@files = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); 9*10465441SEvalZeroclosedir(DIR); 10*10465441SEvalZero 11*10465441SEvalZeroforeach $file (@files) { 12*10465441SEvalZero 13*10465441SEvalZero if(-d $file && $file !~ /^\./) { 14*10465441SEvalZero print "Processing directory $file\n"; 15*10465441SEvalZero opendir(DIR, $file); 16*10465441SEvalZero @newfiles = grep { !/^\./ && !/(CVS|~)/ } readdir(DIR); 17*10465441SEvalZero closedir(DIR); 18*10465441SEvalZero printf "Adding files @newfiles\n"; 19*10465441SEvalZero @files = (@files, map { $_ = "$file/$_" } @newfiles); 20*10465441SEvalZero next; 21*10465441SEvalZero } 22*10465441SEvalZero} 23*10465441SEvalZero 24*10465441SEvalZeroforeach $file (@files) { 25*10465441SEvalZero if(-f $file) { 26*10465441SEvalZero 27*10465441SEvalZero print "Adding file $file\n"; 28*10465441SEvalZero 29*10465441SEvalZero open(FILE, $file) || die "Could not open file $file\n"; 30*10465441SEvalZero 31*10465441SEvalZero $file =~ s-^-/-; 32*10465441SEvalZero $fvar = $file; 33*10465441SEvalZero $fvar =~ s-/-_-g; 34*10465441SEvalZero $fvar =~ s-\.-_-g; 35*10465441SEvalZero # for AVR, add PROGMEM here 36*10465441SEvalZero print(OUTPUT "static const unsigned char data".$fvar."[] = {\n"); 37*10465441SEvalZero print(OUTPUT "\t/* $file */\n\t"); 38*10465441SEvalZero for($j = 0; $j < length($file); $j++) { 39*10465441SEvalZero printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1))); 40*10465441SEvalZero } 41*10465441SEvalZero printf(OUTPUT "0,\n"); 42*10465441SEvalZero 43*10465441SEvalZero 44*10465441SEvalZero $i = 0; 45*10465441SEvalZero while(read(FILE, $data, 1)) { 46*10465441SEvalZero if($i == 0) { 47*10465441SEvalZero print(OUTPUT "\t"); 48*10465441SEvalZero } 49*10465441SEvalZero printf(OUTPUT "%#02x, ", unpack("C", $data)); 50*10465441SEvalZero $i++; 51*10465441SEvalZero if($i == 10) { 52*10465441SEvalZero print(OUTPUT "\n"); 53*10465441SEvalZero $i = 0; 54*10465441SEvalZero } 55*10465441SEvalZero } 56*10465441SEvalZero print(OUTPUT "0};\n\n"); 57*10465441SEvalZero close(FILE); 58*10465441SEvalZero push(@fvars, $fvar); 59*10465441SEvalZero push(@pfiles, $file); 60*10465441SEvalZero } 61*10465441SEvalZero} 62*10465441SEvalZero 63*10465441SEvalZerofor($i = 0; $i < @fvars; $i++) { 64*10465441SEvalZero $file = $pfiles[$i]; 65*10465441SEvalZero $fvar = $fvars[$i]; 66*10465441SEvalZero 67*10465441SEvalZero if($i == 0) { 68*10465441SEvalZero $prevfile = "NULL"; 69*10465441SEvalZero } else { 70*10465441SEvalZero $prevfile = "file" . $fvars[$i - 1]; 71*10465441SEvalZero } 72*10465441SEvalZero print(OUTPUT "const struct httpd_fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, "); 73*10465441SEvalZero print(OUTPUT "data$fvar + ". (length($file) + 1) .", "); 74*10465441SEvalZero print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n"); 75*10465441SEvalZero} 76*10465441SEvalZero 77*10465441SEvalZeroprint(OUTPUT "#define HTTPD_FS_ROOT file$fvars[$i - 1]\n\n"); 78*10465441SEvalZeroprint(OUTPUT "#define HTTPD_FS_NUMFILES $i\n"); 79