1#!/usr/bin/tclsh 2# 3# Run this script to generate the "shell.c" source file from 4# constituent parts. 5# 6# No arguments are required. This script determines the location 7# of its input files relative to the location of the script itself. 8# This script should be tool/mkshellc.tcl. If the directory holding 9# the script is $DIR, then the component parts are located in $DIR/../src 10# and $DIR/../ext/misc. 11# 12set topdir [file dir [file dir [file normal $argv0]]] 13set out stdout 14puts $out {/* DO NOT EDIT! 15** This file is automatically generated by the script in the canonical 16** SQLite source tree at tool/mkshellc.tcl. That script combines source 17** code from various constituent source files of SQLite into this single 18** "shell.c" file used to implement the SQLite command-line shell. 19** 20** Most of the code found below comes from the "src/shell.c.in" file in 21** the canonical SQLite source tree. That main file contains "INCLUDE" 22** lines that specify other files in the canonical source tree that are 23** inserted to getnerate this complete program source file. 24** 25** The code from multiple files is combined into this single "shell.c" 26** source file to help make the command-line program easier to compile. 27** 28** To modify this program, get a copy of the canonical SQLite source tree, 29** edit the src/shell.c.in" and/or some of the other files that are included 30** by "src/shell.c.in", then rerun the tool/mkshellc.tcl script. 31*/} 32set in [open $topdir/src/shell.c.in rb] 33while {1} { 34 set lx [gets $in] 35 if {[eof $in]} break; 36 if {[regexp {^INCLUDE } $lx]} { 37 set cfile [lindex $lx 1] 38 puts $out "/************************* Begin $cfile ******************/" 39 set in2 [open $topdir/src/$cfile rb] 40 while {![eof $in2]} { 41 set lx [gets $in2] 42 if {[regexp {^#include "sqlite} $lx]} continue 43 set lx [string map [list __declspec(dllexport) {}] $lx] 44 puts $out $lx 45 } 46 close $in2 47 puts $out "/************************* End $cfile ********************/" 48 continue 49 } 50 puts $out $lx 51} 52close $in 53close $out 54