xref: /nrf52832-nimble/rt-thread/components/net/uip/apps/webserver/makefsdata (revision 104654410c56c573564690304ae786df310c91fc)
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