diff options
| -rw-r--r-- | media/mpv/.gitignore | 1 | ||||
| -rw-r--r-- | media/mpv/file2string.awk | 23 | ||||
| -rw-r--r-- | media/mpv/file2string.c | 34 | ||||
| -rw-r--r-- | media/mpv/gen.rc | 10 |
4 files changed, 43 insertions, 25 deletions
diff --git a/media/mpv/.gitignore b/media/mpv/.gitignore new file mode 100644 index 00000000..012dc66e --- /dev/null +++ b/media/mpv/.gitignore @@ -0,0 +1 @@ +/tools.ninja diff --git a/media/mpv/file2string.awk b/media/mpv/file2string.awk deleted file mode 100644 index 113d1729..00000000 --- a/media/mpv/file2string.awk +++ /dev/null @@ -1,23 +0,0 @@ -BEGIN { - for (n = 0; n < 256; ++n) - ord[sprintf("%c", n)] = n -} - -FNR == 1 { - print "/* Generated from " FILENAME " */" -} - -{ - printf "\"" - s = $0 - while (length(s) > 0) { - i = match(s, "[^][A-Za-z0-9!#%&'()*+,./:;<=>^_{|}~ -]") - if (i == 0) { - printf "%s", s - break - } - printf "%s\\%03o", substr(s, 1, i-1), ord[substr(s, i, 1)] - s = substr(s, i+1) - } - printf "\\012\"\n" -} diff --git a/media/mpv/file2string.c b/media/mpv/file2string.c new file mode 100644 index 00000000..84f31ce1 --- /dev/null +++ b/media/mpv/file2string.c @@ -0,0 +1,34 @@ +#include <errno.h> +#include <stdint.h> +#include <stdio.h> +#include <string.h> + +static const char safe[] = + "][ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#%&'()*+,./:;<=>^_{|}~ -"; + +int main(int argc, char *argv[]) { + FILE *f; + char *line = NULL, *s; + size_t size = 0; + ssize_t n; + + f = fopen(argv[1], "r"); + if (!f) { + fprintf(stderr, "fopen %s: %s\n", argv[1], strerror(errno)); + return 1; + } + + printf("/* Generated from %s */\n", argv[1]); + while ((n = getline(&line, &size, f)) >= 0) { + printf("\""); + for (s = line; s < line + n; ++s) { + if (memchr(safe, *s, sizeof(safe) - 1)) + fputc(*s, stdout); + else + printf("\\%03hho", *s); + } + printf("\"\n"); + } + + return 0; +} diff --git a/media/mpv/gen.rc b/media/mpv/gen.rc index 2fa8982c..24140adc 100644 --- a/media/mpv/gen.rc +++ b/media/mpv/gen.rc @@ -38,9 +38,15 @@ deps=(\ rule versionhdr 'sh $srcdir/version.sh --cwd=$srcdir --versionh=$out' build '$outdir'/version.h versionhdr '|' '$srcdir'/version.sh +{ + include 'toolchain/$host_toolchain.ninja' + exe file2string '$dir'/file2string.c +} | sub tools.ninja + +rule file2string '$outdir/file2string $in >$out.tmp && mv $out.tmp $out' + fn file2string { - build '$outdir'/$1 awk '$srcdir'/$2 '|' '$dir'/file2string.awk ; with\ - expr '-f $dir/file2string.awk' + build '$outdir'/$1 file2string '$srcdir'/$2 '|' '$outdir'/file2string deps=($deps '$outdir'/$1) } |
