mirror of
https://github.com/mpv-player/mpv
synced 2024-12-25 08:12:17 +00:00
25 lines
755 B
Perl
25 lines
755 B
Perl
|
#! /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?
|
||
|
|
||
|
# treat only alphanumeric and not-" punctuation as safe
|
||
|
my $unsafe_chars = qr{[^][A-Za-z0-9!#%&'()*+,./:;<=>?^_{|}~ -]};
|
||
|
|
||
|
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;
|
||
|
}
|