Index: third_party/sqlite/sqlite-src-3080704/tool/split-sqlite3c.tcl |
diff --git a/third_party/sqlite/sqlite-src-3080704/tool/split-sqlite3c.tcl b/third_party/sqlite/sqlite-src-3080704/tool/split-sqlite3c.tcl |
new file mode 100644 |
index 0000000000000000000000000000000000000000..287b752828f4157c6ac10b5f85d7dae9576ddd4b |
--- /dev/null |
+++ b/third_party/sqlite/sqlite-src-3080704/tool/split-sqlite3c.tcl |
@@ -0,0 +1,82 @@ |
+#!/usr/bin/tclsh |
+# |
+# This script splits the sqlite3.c amalgamated source code files into |
+# several smaller files such that no single files is more than a fixed |
+# number of lines in length (32k or 64k). Each of the split out files |
+# is #include-ed by the master file. |
+# |
+# Splitting files up this way allows them to be used with older compilers |
+# that cannot handle really long source files. |
+# |
+set MAX 32768 ;# Maximum number of lines per file. |
+ |
+set BEGIN {^/\*+ Begin file ([a-zA-Z0-9_.]+) \*+/} |
+set END {^/\*+ End of %s \*+/} |
+ |
+set in [open sqlite3.c] |
+set out1 [open sqlite3-all.c w] |
+ |
+# Copy the header from sqlite3.c into sqlite3-all.c |
+# |
+while {[gets $in line]} { |
+ if {[regexp $BEGIN $line]} break |
+ puts $out1 $line |
+} |
+ |
+# Gather the complete content of a file into memory. Store the |
+# content in $bufout. Store the number of lines is $nout |
+# |
+proc gather_one_file {firstline bufout nout} { |
+ regexp $::BEGIN $firstline all filename |
+ set end [format $::END $filename] |
+ upvar $bufout buf $nout n |
+ set buf $firstline\n |
+ global in |
+ set n 0 |
+ while {[gets $in line]>=0} { |
+ incr n |
+ append buf $line\n |
+ if {[regexp $end $line]} break |
+ } |
+} |
+ |
+# Write a big chunk of text in to an auxiliary file "sqlite3-NNN.c". |
+# Also add an appropriate #include to sqlite3-all.c |
+# |
+set filecnt 0 |
+proc write_one_file {content} { |
+ global filecnt |
+ incr filecnt |
+ set out [open sqlite3-$filecnt.c w] |
+ puts -nonewline $out $content |
+ close $out |
+ puts $::out1 "#include \"sqlite3-$filecnt.c\"" |
+} |
+ |
+# Continue reading input. Store chunks in separate files and add |
+# the #includes to the main sqlite3-all.c file as necessary to reference |
+# the extra chunks. |
+# |
+set all {} |
+set N 0 |
+while {[regexp $BEGIN $line]} { |
+ set buf {} |
+ set n 0 |
+ gather_one_file $line buf n |
+ if {$n+$N>=$MAX} { |
+ write_one_file $all |
+ set all {} |
+ set N 0 |
+ } |
+ append all $buf |
+ incr N $n |
+ while {[gets $in line]>=0} { |
+ if {[regexp $BEGIN $line]} break |
+ puts $out1 $line |
+ } |
+} |
+if {$N>0} { |
+ write_one_file $all |
+} |
+close $out1 |
+close $in |