#!/usr/bin/env perl # use File::Basename; use Text::Wrap; use strict; my $outfile = shift; my $varname = shift; open(my $DST, '>', $outfile) or die "Failed to open $outfile"; my $inputs = join "\n * ", @ARGV; print $DST < EOF my $N = 0; $Text::Wrap::break = ','; $Text::Wrap::columns = 78; $Text::Wrap::separator = ",\n"; for my $fname (@ARGV) { my $realfname = $fname; # strip leading "../" "./" or "/" $fname =~ s(^\.{0,2}/)()g; my $file = basename($fname); my @dirs = split('/', dirname($fname)); print $DST "/* $realfname */\n", "static const char * const file_${N}_dir[] = {", map("\"$_\", ", @dirs), "NULL};\n", "static const char file_${N}_data[] = {\n", " "; open(my $SRC, '<', $realfname) or die "Failed to open $realfname"; binmode $SRC; my ($buf, @bufs); while (read($SRC, $buf, 4096)) { @bufs[-1] .= ',' if @bufs; # Need ',' between buffers push @bufs, join(",", map(ord, split(//, $buf))); } print $DST wrap('', ' ', @bufs); close $SRC; print $DST <