FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
sqlcipher/tool/split-sqlite3c.tcl at master · sqlcipher/sqlcipher · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
sqlcipher
/
sqlcipher
Public
Notifications
You must be signed in to change notification settings
Fork
1.4k
Star
7.3k
Code
Issues
17
Pull requests
1
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
sqlcipher
/
tool
/
split-sqlite3c.tcl
Copy path
More file actions
More file actions
Latest commit
History
History
History
96 lines (90 loc) · 2.3 KB
Breadcrumbs
sqlcipher
/
tool
/
split-sqlite3c.tcl
Copy path
File metadata and controls
96 lines (90 loc) · 2.3 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#
!/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]
fconfigure
$out1
-translation binary
#
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
label
$filecnt
if
{
$filecnt
>9} {
set
label [
string
index ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnop
\
[
expr
{
$filecnt
-10}]]
}
else
{
set
label
$filecnt
}
set
out [
open
sqlite3-
$label
.c w]
fconfigure
$out
-translation text
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
if
{
$N
>0} {
write_one_file
$all
set
N 0
set
all {}
}
puts
$out1
$line
}
}
if
{
$N
>0} {
write_one_file
$all
}
close
$out1
close
$in
Back
|
FazBrowse Home
|
New Git URL