1*431a587eSMasatake YAMATO#!/usr/bin/env perl 2*431a587eSMasatake YAMATO# 3*431a587eSMasatake YAMATO# txt2cstr - a tool converting a text file into char[]. 4*431a587eSMasatake YAMATO# 5*431a587eSMasatake YAMATO# Copyright (C) 2021 Masatake YAMATO 6*431a587eSMasatake YAMATO# Copyright (C) 2021 Red Hat Inc. 7*431a587eSMasatake YAMATO# 8*431a587eSMasatake YAMATO 9*431a587eSMasatake YAMATOuse File::Basename; 10*431a587eSMasatake YAMATO 11*431a587eSMasatake YAMATOsub show_help { 12*431a587eSMasatake YAMATO print<<EOF; 13*431a587eSMasatake YAMATOUsage: 14*431a587eSMasatake YAMATO $0 --help 15*431a587eSMasatake YAMATO $0 INPUT.txt > OUTPUT.c 16*431a587eSMasatake YAMATOEOF 17*431a587eSMasatake YAMATO} 18*431a587eSMasatake YAMATO 19*431a587eSMasatake YAMATOsub convert { 20*431a587eSMasatake YAMATO my $input = $_[0]; 21*431a587eSMasatake YAMATO my $name = basename $input; 22*431a587eSMasatake YAMATO 23*431a587eSMasatake YAMATO $name =~ s/\.[a-z]+$//g; 24*431a587eSMasatake YAMATO 25*431a587eSMasatake YAMATO open(INPUT, "< " . $input) or die("faild to open " . $input); 26*431a587eSMasatake YAMATO 27*431a587eSMasatake YAMATO print "const char ctags$name []=\n"; 28*431a587eSMasatake YAMATO while (<INPUT>) { 29*431a587eSMasatake YAMATO chop; 30*431a587eSMasatake YAMATO $_ =~ s/\\/\\\\/g; 31*431a587eSMasatake YAMATO $_ =~ s/\"/\\\"/g; 32*431a587eSMasatake YAMATO print '"' . "$_" . '\\n"' . "\n"; 33*431a587eSMasatake YAMATO } 34*431a587eSMasatake YAMATO print ";\n"; 35*431a587eSMasatake YAMATO 36*431a587eSMasatake YAMATO close (INPUT); 37*431a587eSMasatake YAMATO} 38*431a587eSMasatake YAMATO 39*431a587eSMasatake YAMATOsub main { 40*431a587eSMasatake YAMATO my $input; 41*431a587eSMasatake YAMATO 42*431a587eSMasatake YAMATO for (@_) { 43*431a587eSMasatake YAMATO if ( ($_ eq '-h') || ($_ eq '--help') ) { 44*431a587eSMasatake YAMATO show_help; 45*431a587eSMasatake YAMATO exit 0; 46*431a587eSMasatake YAMATO } elsif ( /^-.*/ ) { 47*431a587eSMasatake YAMATO die "unrecongnized option: $_"; 48*431a587eSMasatake YAMATO } else { 49*431a587eSMasatake YAMATO if ($input) { 50*431a587eSMasatake YAMATO die "Don't specify more than 1 input file: @_"; 51*431a587eSMasatake YAMATO } 52*431a587eSMasatake YAMATO $input=$_; 53*431a587eSMasatake YAMATO } 54*431a587eSMasatake YAMATO } 55*431a587eSMasatake YAMATO 56*431a587eSMasatake YAMATO unless ($input) { 57*431a587eSMasatake YAMATO die "No input file given"; 58*431a587eSMasatake YAMATO } 59*431a587eSMasatake YAMATO 60*431a587eSMasatake YAMATO convert $input; 61*431a587eSMasatake YAMATO 0; 62*431a587eSMasatake YAMATO} 63*431a587eSMasatake YAMATO 64*431a587eSMasatake YAMATOmain @ARGV; 65*431a587eSMasatake YAMATO 66*431a587eSMasatake YAMATO# txt2cstr ends here 67