Added: script for creating file system

pull/193/head
Karai Csaba 9 years ago committed by Thorsten von Eicken
parent c4cded360e
commit 3067718143
  1. 114
      createEspFs.pl
  2. BIN
      examples/web-server/GZipped.html.gz
  3. 3
      examples/web-server/LED.html
  4. 2
      html/web-server.html

@ -0,0 +1,114 @@
#!/usr/bin/perl
use strict;
use Data::Dumper;
my $dir = shift @ARGV;
my $out = shift @ARGV;
my $espfs = '';
my @structured = read_dir_structure($dir, "");
for my $file (@structured)
{
my $flags = 0;
my $name = $file;
my $compression = 0;
if( $name =~ /\.gz$/ )
{
$flags |= 2;
$name =~ s/\.gz$//;
}
my $head = '<!doctype html><html><head><title>esp-link</title><link rel=stylesheet href="/pure.css"><link rel=stylesheet href="/style.css"><meta name=viewport content="width=device-width, initial-scale=1"><script src="/ui.js"></script></head><body><div id=layout>';
open IF, "<", "$dir/$file" or die "Can't read file: $!";
my @fc = <IF>;
close(IF);
my $cnt = join("", @fc);
if( $name =~ /\.html$/ )
{
if( ! ( $flags & 2 ) )
{
$cnt = "$head$cnt";
}
else
{
printf("TODO: prepend headers to GZipped HTML content!\n");
}
}
$name .= chr(0);
$name .= chr(0) while( (length($name) & 3) != 0 );
my $size = length($cnt);
$espfs .= "ESfs";
$espfs .= chr($flags);
$espfs .= chr($compression);
$espfs .= chr( length($name) & 255 );
$espfs .= chr( length($name) / 256 );
$espfs .= chr( $size & 255 );
$espfs .= chr( ( $size / 0x100 ) & 255 );
$espfs .= chr( ( $size / 0x10000 ) & 255 );
$espfs .= chr( ( $size / 0x1000000 ) & 255 );
$espfs .= chr( $size & 255 );
$espfs .= chr( ( $size / 0x100 ) & 255 );
$espfs .= chr( ( $size / 0x10000 ) & 255 );
$espfs .= chr( ( $size / 0x1000000 ) & 255 );
$espfs .= $name;
$cnt .= chr(0) while( (length($cnt) & 3) != 0 );
$espfs .= $cnt;
}
$espfs .= "ESfs";
$espfs .= chr(1);
for(my $i=0; $i < 11; $i++)
{
$espfs .= chr(0);
}
open FH, ">", $out or die "Can't open file for write, $!";
print FH $espfs;
close(FH);
exit(0);
sub read_dir_structure
{
my ($dir, $base) = @_;
my @files;
opendir my $dh, $dir or die "Could not open '$dir' for reading: $!\n";
while (my $file = readdir $dh) {
if ($file eq '.' or $file eq '..') {
next;
}
my $path = "$dir/$file";
if( -d "$path" )
{
my @sd = read_dir_structure($path, "$base/$file");
push @files, @sd ;
}
else
{
push @files, "$base/$file";
}
}
close( $dh );
$_ =~ s/^\/// for(@files);
return @files;
}

@ -0,0 +1,3 @@
<div>
<h1>Hello</h1>
</div>

@ -15,4 +15,4 @@
</div> </div>
</div> </div>
</body></html>

Loading…
Cancel
Save