2012-11-07 14:49:44 +00:00
|
|
|
#! /usr/bin/env perl
|
|
|
|
|
|
|
|
use strict;
|
|
|
|
use warnings;
|
|
|
|
|
|
|
|
# Convert the contents of a file into a C string constant.
|
|
|
|
# Note that the compiler will implicitly add an extra 0 byte at the end
|
|
|
|
# of every string, so code using the string may need to remove that to get
|
|
|
|
# the exact contents of the original file.
|
|
|
|
# FIXME: why not a char array?
|
|
|
|
|
2015-10-28 17:48:29 +00:00
|
|
|
# treat only alphanumeric and punctuations (excluding " and ?) as safe
|
|
|
|
my $unsafe_chars = qr{[^][A-Za-z0-9!#%&'()*+,./:;<=>^_{|}~ -]};
|
2012-11-07 14:49:44 +00:00
|
|
|
|
|
|
|
for my $file (@ARGV) {
|
|
|
|
open my $fh, '<:raw', $file or next;
|
|
|
|
print "/* Generated from $file */\n";
|
|
|
|
while (<$fh>) {
|
|
|
|
# replace unsafe chars with their equivalent octal escapes
|
|
|
|
s/($unsafe_chars)/\\@{[sprintf '%03o', ord($1)]}/gos;
|
|
|
|
print "\"$_\"\n"
|
|
|
|
}
|
|
|
|
close $fh;
|
|
|
|
}
|