diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2004-07-28 23:59:11 +0000 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2004-07-28 23:59:11 +0000 |
commit | 488905a239a25ad63b2c3d4f78aadd79dd3a14f7 (patch) | |
tree | 2e67320ad77434d200ef51520d69caff6b0bf2c4 /src/dcgen | |
parent | 3a92cf062b102337fb2aada9570d6271b7f39ba6 (diff) | |
download | coreutils-488905a239a25ad63b2c3d4f78aadd79dd3a14f7.tar.xz |
Remove comments, trailing white space, and empty
lines from the output strings, to save space.
Use a narrower type like 'unsigned char' for line lengths, if
that will do.
Make the output variables static, not extern.
Diffstat (limited to 'src/dcgen')
-rwxr-xr-x | src/dcgen | 32 |
1 files changed, 27 insertions, 5 deletions
@@ -5,7 +5,7 @@ eval 'exec /p/bin/perl -S $0 ${1+"$@"}' if 0; # dcgen -- generate C declarations of arrays of lines and line lengths -# Copyright (C) 1996, 1998 Free Software Foundation, Inc. +# Copyright (C) 1996, 1998, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -38,16 +38,38 @@ local @line; while (<>) { chop; - push (@line, $_); + s/[[:blank:]]*#.*//; + if ($_) + { + push (@line, $_); + } } local $n = @line; print "#define ${prefix}N_LINES $n\n\n"; local $indent = ' '; -print "const size_t ${prefix}line_length[${prefix}N_LINES] =\n{\n$indent"; -local $ind = $indent; local $i; + +local $max_line_length = 0; +for ($i = 0; $i < @line; $i++) + { + local $len = length ($line[$i]); + $max_line_length = $len if $max_line_length < $len; + } + +local $line_length_type = 'unsigned char'; +if ((1 << 8) <= $max_line_length) + { + $line_length_type = 'unsigned short int'; + if ((1 << 16) <= $max_line_length) + { + $line_length_type = 'unsigned int'; + } + } + +print "static $line_length_type const ${prefix}line_length[${prefix}N_LINES] =\n{\n$indent"; +local $ind = $indent; for ($i = 0; $i < @line; $i++) { local $comma = ($i < @line - 1 ? ',' : ''); @@ -57,7 +79,7 @@ for ($i = 0; $i < @line; $i++) } print "};\n\n"; -print "const char *const ${prefix}line[${prefix}N_LINES] =\n{\n"; +print "static char const *const ${prefix}line[${prefix}N_LINES] =\n{\n"; while (1) { $_ = shift (@line); |