Cloned library of VTK-5.0.0 with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

94 lines
2.3 KiB

proc convert_bin_to_c {bin_file_name} {
# Get binary file size
if {[catch {file size $bin_file_name} bin_file_size]} {
puts stderr "Error: unable to get size of $bin_file_name"
exit
}
puts "$bin_file_name is $bin_file_size bytes long."
# Open binary file
if {[catch {open $bin_file_name r} bin_file_id]} {
puts stderr "Error: unable to open $bin_file_name"
exit
}
puts "$bin_file_name is open for reading."
# Read contents of binary file
fconfigure $bin_file_id -translation binary
if {[catch {read $bin_file_id} contents]} {
puts stderr "Error: unable to read contents of $bin_file_name"
exit
}
set contents_length [string length $contents]
puts "$bin_file_name contents is stored ($contents_length bytes)."
if {$contents_length != $bin_file_size} {
puts stderr "Error: file size does not match length of contents"
exit
}
# Close binary file
if {[catch {close $bin_file_id}]} {
puts stderr "Error: unable to close $bin_file_name"
}
puts "$bin_file_name is closed."
# Open C file
set bin_file_rootname [file rootname $bin_file_name]
set bin_file_tail [file tail $bin_file_rootname]
set c_file_name "${bin_file_rootname}.cxx"
if {[catch {open $c_file_name w} c_file_id]} {
puts stderr "Error: unable to open $c_file_name"
exit
}
puts "$c_file_name is open for writing."
# Convert bin to C
puts "$c_file_name is filled."
puts $c_file_id "size_t face_${bin_file_tail}_buffer_length = $contents_length;\n"
puts -nonewline $c_file_id "unsigned char face_${bin_file_tail}_buffer\[\] = {\n "
for {set i 0} {$i < $contents_length} {incr i} {
scan [string index $contents $i] "%c" byte
puts -nonewline $c_file_id [format "%3d, " $byte]
if {[expr $i % 14] == 13} {
puts -nonewline $c_file_id "\n "
}
}
puts $c_file_id "\n};"
# Close C file
if {[catch {close $c_file_id}]} {
puts stderr "Error: unable to close $c_file_name"
}
puts "$c_file_name is closed."
}
if {$argc < 1} {
puts stderr "Error: expecting name of the binary file to convert"
exit
}
foreach arg $argv {
foreach file [glob -nocomplain $arg] {
convert_bin_to_c $file
}
}