huangcm
2024-12-18 9d29be7f7249789d6ffd0440067187a9f040c2cd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env tclsh
 
# (c) Josua Dietze 2012
#
# Usage: make_string.tcl source.tcl >jim-source.c
 
# Converts a Tcl source file into C source suitable
# for using as an embedded script.
 
set source [lindex $argv 0]
 
if {![string match *.tcl $source]} {
   error "Source $source is not a .tcl file"
}
 
# Read the Tcl source and convert to C macro
set sourcelines {}
set f [open $source]
while {[gets $f buf] >= 0} {
   # Remove comment lines
   regsub {^[ \t]*#.*$} $buf "" buf
   # Remove leading whitespaces
   set buf [string trimleft $buf]
   # Escape quotes and backlashes
   set buf [string map [list \\ \\\\ \" \\"] $buf]
   if [string length $buf] {
       lappend sourcelines "$buf\\n"
   }
}
close $f
puts "#define RAW \"[join $sourcelines ""]\""