Documentation Source Text

Changes On Branch 3.7.17
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch 3.7.17 Excluding Merge-Ins

This is equivalent to a diff from 44d1e198ca to 0e1cfbafc8

2013-08-26
12:20
Merge in the download pages updates that were made on the 3.7.17 branch. (check-in: 71f4e91277 user: drh tags: trunk)
2013-08-22
20:28
Clearly label the source code snapshots on the download page as source code. (Leaf check-in: 0e1cfbafc8 user: drh tags: 3.7.17)
2013-08-07
15:02
Use javascript to delay setting href on anchors for deliverables on the download page. This is designed to prevent robots from downloading the deliverables. (check-in: ea86d36c1c user: drh tags: 3.7.17)
2013-06-26
19:13
Add the "Pre-release Snapshot" heading to the download page, with the ability to include winrt81 VSIX snapshots. (check-in: a8228d3c37 user: drh tags: 3.7.17)
2013-06-21
08:00
Fix another minor typo in the vtable docs. (check-in: a93d66e412 user: mistachkin tags: trunk)
2013-05-29
06:57
Fix minor typo in the virtual table documentation for xCreate and xConnect. (check-in: 44d1e198ca user: mistachkin tags: trunk)
2013-05-28
13:23
Clarify the license for SQLite documentation. (check-in: 419389e585 user: drh tags: trunk)

Changes to misc/althttpd.c.

144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159


160

161




162

163


164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205

















206

207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
static int useHttps = 0;         /* True to use HTTPS: instead of HTTP: */
static char *zHttp = "http";     /* http or https */
static int useTimeout = 1;       /* True to use times */
static int ipv6Only = 0;         /* Use IPv6 only */
static int ipv4Only = 0;         /* Use IPv4 only */

/*
** Change every space or unprintable character in the zAgent[] string
** into an _.
**
** If the user agent string contains certain prohibited string, then
** exit immediately.
*/
static void FixupUserAgent(void){
  int i;
  if( zAgent==0 || zAgent[0]==0 ) zAgent = "*";


  for(i=0; zAgent[i]; i++){

    int c = zAgent[i];




    if( c<'!' || c>'~'  ){ zAgent[i] = '_'; }

  }


}

/*
** Make an entry in the log file.  If the HTTP connection should be
** closed, then terminate this process.  Otherwise return.
*/
static void MakeLogEntry(int a){
  FILE *log;
  if( zTmpNam ){
    unlink(zTmpNam);
  }
  if( zLogFile && !omitLog ){
    time_t now;
    struct tm *pTm;
    struct rusage self, children;
    int i;
    int waitStatus;
    char zDate[200];
    char *zRM = zRemoteUser ? zRemoteUser : "*";

    if( zScript==0 || zScript[0]==0 ) zScript = "*";
    if( zRemoteAddr==0 || zRemoteAddr[0]==0 ) zRemoteAddr = "*";
    if( zHttpHost==0 || zHttpHost[0]==0 ) zHttpHost = "*";
    if( zReferer==0 || zReferer[0]==0 ) zReferer = "*";
    for(i=0; zReferer[i]; i++){ 
      if( isspace(zReferer[i]) ){ zReferer = "*"; break; }
    }
    if( zAgent==0 || zAgent[0]==0 ) zAgent = "*";
    time(&now);
    pTm = localtime(&now);
    strftime(zDate, sizeof(zDate), "%Y-%m-%d %H:%M:%S", pTm);
    waitpid(-1, &waitStatus, WNOHANG);
    getrusage(RUSAGE_SELF, &self);
    getrusage(RUSAGE_CHILDREN, &children);
    if( (log = fopen(zLogFile,"a"))!=0 ){
#ifdef COMBINED_LOG_FORMAT
      strftime(zDate, sizeof(zDate), "%d/%b/%Y:%H:%M:%S %z", pTm);
      fprintf(log, "%s - - [%s] \"%s %s %s\" %s %d \"%s\" \"%s\"\n",
              zRemoteAddr, zDate, zMethod, zScript, zProtocol,
              zReplyStatus, nOut, zReferer, zAgent);
#else
      strftime(zDate, sizeof(zDate), "%Y-%m-%d %H:%M:%S", pTm);

















      fprintf(log, "%s %s %s://%s%s %s %s %d %d %d %d %d %d %d %d %s %s\n", 

          zDate, zRemoteAddr, zHttp, zHttpHost, zScript, zReferer,
          zReplyStatus, nIn, nOut,
          (int)(self.ru_utime.tv_sec*1000000 + self.ru_utime.tv_usec),
          (int)(self.ru_stime.tv_sec*1000000 + self.ru_stime.tv_usec),
          (int)(children.ru_utime.tv_sec*1000000 + children.ru_utime.tv_usec),
          (int)(children.ru_stime.tv_sec*1000000 + children.ru_stime.tv_usec),
          (int)(now - beginTime),
          nRequest, zAgent, zRM
      );
#endif
      fclose(log);
      nIn = nOut = 0;
    }
  }
  if( closeConnection ){







|
<
<
<
<

|
|
|
>
>
|
>
|
>
>
>
>
|
>

>
>















<


|

|
|
|
|
<
<
<
|














>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
>
|
|
|
|
|
|
|
|







144
145
146
147
148
149
150
151




152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184

185
186
187
188
189
190
191
192



193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
static int useHttps = 0;         /* True to use HTTPS: instead of HTTP: */
static char *zHttp = "http";     /* http or https */
static int useTimeout = 1;       /* True to use times */
static int ipv6Only = 0;         /* Use IPv6 only */
static int ipv4Only = 0;         /* Use IPv4 only */

/*
** Double any double-quote characters in a string.




*/
static char *Escape(char *z){
  int i, j;
  int n;
  char c;
  char *zOut;
  for(i=0; (c=z[i])!=0 && c!='"'; i++){}
  if( c==0 ) return z;
  n = 1;
  for(i++; (c=z[i])!=0; i++){ if( c=='"' ) n++; }
  zOut = malloc( i+n+1 );
  if( zOut==0 ) return "";
  for(i=j=0; (c=z[i])!=0; i++){
    zOut[j++] = c;
    if( c=='"' ) zOut[j++] = c;
  }
  zOut[j] = 0;
  return zOut;
}

/*
** Make an entry in the log file.  If the HTTP connection should be
** closed, then terminate this process.  Otherwise return.
*/
static void MakeLogEntry(int a){
  FILE *log;
  if( zTmpNam ){
    unlink(zTmpNam);
  }
  if( zLogFile && !omitLog ){
    time_t now;
    struct tm *pTm;
    struct rusage self, children;

    int waitStatus;
    char zDate[200];
    char *zRM = zRemoteUser ? zRemoteUser : "";

    if( zScript==0 || zScript[0]==0 ) zScript = "";
    if( zRemoteAddr==0 || zRemoteAddr[0]==0 ) zRemoteAddr = "";
    if( zHttpHost==0 || zHttpHost[0]==0 ) zHttpHost = "";
    if( zReferer==0 || zReferer[0]==0 ) zReferer = "";



    if( zAgent==0 || zAgent[0]==0 ) zAgent = "";
    time(&now);
    pTm = localtime(&now);
    strftime(zDate, sizeof(zDate), "%Y-%m-%d %H:%M:%S", pTm);
    waitpid(-1, &waitStatus, WNOHANG);
    getrusage(RUSAGE_SELF, &self);
    getrusage(RUSAGE_CHILDREN, &children);
    if( (log = fopen(zLogFile,"a"))!=0 ){
#ifdef COMBINED_LOG_FORMAT
      strftime(zDate, sizeof(zDate), "%d/%b/%Y:%H:%M:%S %z", pTm);
      fprintf(log, "%s - - [%s] \"%s %s %s\" %s %d \"%s\" \"%s\"\n",
              zRemoteAddr, zDate, zMethod, zScript, zProtocol,
              zReplyStatus, nOut, zReferer, zAgent);
#else
      strftime(zDate, sizeof(zDate), "%Y-%m-%d %H:%M:%S", pTm);
      /* Log record files:
      **  (1) Date and time
      **  (2) IP address
      **  (3) URL being accessed
      **  (4) Referer
      **  (5) Reply status
      **  (6) Bytes received
      **  (7) Bytes sent
      **  (8) Self user time
      **  (9) Self system time
      ** (10) Children user time
      ** (11) Children system time
      ** (12) Total wall-clock time
      *  (13) Request number for same TCP/IP connection
      ** (14) User agent
      ** (15) Remote user
      */
      fprintf(log,
        "%s,%s,\"%s://%s%s\",\"%s\",%s,%d,%d,%d,%d,%d,%d,%d,%d,\"%s\",\"%s\"\n",
        zDate, zRemoteAddr, zHttp, Escape(zHttpHost), Escape(zScript),
        Escape(zReferer), zReplyStatus, nIn, nOut,
        (int)(self.ru_utime.tv_sec*1000000 + self.ru_utime.tv_usec),
        (int)(self.ru_stime.tv_sec*1000000 + self.ru_stime.tv_usec),
        (int)(children.ru_utime.tv_sec*1000000 + children.ru_utime.tv_usec),
        (int)(children.ru_stime.tv_sec*1000000 + children.ru_stime.tv_usec),
        (int)(now - beginTime),
        nRequest, Escape(zAgent), Escape(zRM)
      );
#endif
      fclose(log);
      nIn = nOut = 0;
    }
  }
  if( closeConnection ){
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955

    nIn += strlen(zLine);
    zFieldName = GetFirstElement(zLine,&zVal);
    if( zFieldName==0 || *zFieldName==0 ) break;
    RemoveNewline(zVal);
    if( strcasecmp(zFieldName,"User-Agent:")==0 ){
      zAgent = StrDup(zVal);
      FixupUserAgent();
    }else if( strcasecmp(zFieldName,"Accept:")==0 ){
      zAccept = StrDup(zVal);
    }else if( strcasecmp(zFieldName,"Content-length:")==0 ){
      zContentLength = StrDup(zVal);
    }else if( strcasecmp(zFieldName,"Content-type:")==0 ){
      zContentType = StrDup(zVal);
    }else if( strcasecmp(zFieldName,"Referer:")==0 ){







<







961
962
963
964
965
966
967

968
969
970
971
972
973
974

    nIn += strlen(zLine);
    zFieldName = GetFirstElement(zLine,&zVal);
    if( zFieldName==0 || *zFieldName==0 ) break;
    RemoveNewline(zVal);
    if( strcasecmp(zFieldName,"User-Agent:")==0 ){
      zAgent = StrDup(zVal);

    }else if( strcasecmp(zFieldName,"Accept:")==0 ){
      zAccept = StrDup(zVal);
    }else if( strcasecmp(zFieldName,"Content-length:")==0 ){
      zContentLength = StrDup(zVal);
    }else if( strcasecmp(zFieldName,"Content-type:")==0 ){
      zContentType = StrDup(zVal);
    }else if( strcasecmp(zFieldName,"Referer:")==0 ){

Changes to pages/changes.in.

1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
21
22
<title>Release History Of SQLite</title>
<h1 align=center>Release History</h1>

<p>
This page provides a high-level summary of changes to SQLite.
For more detail, refer the Fossil checkin logs at
<a href="http://www.sqlite.org/src/timeline">
http://www.sqlite.org/src/timeline</a> and
<a href="http://www.sqlite.org/src/timeline?t=release">
http://www.sqlite.org/src/timeline?t=release</a>
</p>

<tcl>

proc chng {date desc} {
  global DEST
  if {[regexp {\(([0-9.]+)\)} $date all vers]} {
    set label [string map {. _} $vers]
    hd_fragment version_$label
  }
  hd_puts "<h3>$date</h3>"
  hd_resolve "<p><ul>$desc</ul></p>"
  if {[regexp {\((3\.\d+\.[.0-9]+)[ a-zA-Z]*\)} $date all vers]} {













>

|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<title>Release History Of SQLite</title>
<h1 align=center>Release History</h1>

<p>
This page provides a high-level summary of changes to SQLite.
For more detail, refer the Fossil checkin logs at
<a href="http://www.sqlite.org/src/timeline">
http://www.sqlite.org/src/timeline</a> and
<a href="http://www.sqlite.org/src/timeline?t=release">
http://www.sqlite.org/src/timeline?t=release</a>
</p>

<tcl>
set nChng 0
proc chng {date desc} {
  global DEST nChng
  if {[regexp {\(([0-9.]+)\)} $date all vers]} {
    set label [string map {. _} $vers]
    hd_fragment version_$label
  }
  hd_puts "<h3>$date</h3>"
  hd_resolve "<p><ul>$desc</ul></p>"
  if {[regexp {\((3\.\d+\.[.0-9]+)[ a-zA-Z]*\)} $date all vers]} {
35
36
37
38
39
40
41




42
43
44
45
46
47
48
      in a single page is also available.  A detailed history of every
      check-in is available at
      <a href="http://www.sqlite.org/src/timeline">
      http://www.sqlite.org/src/timeline</a>.</p>
    }
    hd_close_aux
    hd_enable_main 1




  }
}
chng {2013-05-20 (3.7.17)} {
<li>Add support for [memory-mapped I/O].
<li>Add the [sqlite3_strglob()] convenience interface.
<li>Assigned the integer at offset 68 in the [database header] as the
    [Application ID] for when SQLite is used as an [application file-format].







>
>
>
>







36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
      in a single page is also available.  A detailed history of every
      check-in is available at
      <a href="http://www.sqlite.org/src/timeline">
      http://www.sqlite.org/src/timeline</a>.</p>
    }
    hd_close_aux
    hd_enable_main 1
    incr nChng
    if {$nChng==1 && [file exists $DEST/$filename]} {
      file copy -force $DEST/$filename $DEST/releaselog/current.html
    }
  }
}
chng {2013-05-20 (3.7.17)} {
<li>Add support for [memory-mapped I/O].
<li>Add the [sqlite3_strglob()] convenience interface.
<li>Assigned the integer at offset 68 in the [database header] as the
    [Application ID] for when SQLite is used as an [application file-format].

Changes to pages/download.in.

1
2
3
4
5
6
7
8




9
10
11
12
13
14
15
<title>SQLite Download Page</title>

<h2>SQLite Download Page</h2>
<table width="100%" cellpadding="5">

<tcl>
hd_keywords {download page}
set nDownload 0




proc Product {pattern desc {frag {}}} {
  regsub VVV $pattern {*} p3
  regsub DATE $p3 {20*} p3
  regsub YEAR $p3 {20[134][0-9]} p3
  regsub VVV $pattern {(30\d{5})} pattern
  regsub DATE $pattern {(\d{12})} pattern
  regsub YEAR $pattern {\d{4}} pattern



|




>
>
>
>







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<title>SQLite Download Page</title>

<h2>SQLite Download Page</h2>
<table width="100%" cellpadding="5" cellspacing="0">

<tcl>
hd_keywords {download page}
set nDownload 0
set BG {}
unset -nocomplain href
unset -nocomplain href_cnt
set href_cnt 0
proc Product {pattern desc {frag {}}} {
  regsub VVV $pattern {*} p3
  regsub DATE $p3 {20*} p3
  regsub YEAR $p3 {20[134][0-9]} p3
  regsub VVV $pattern {(30\d{5})} pattern
  regsub DATE $pattern {(\d{12})} pattern
  regsub YEAR $pattern {\d{4}} pattern
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110







111
112
113
114
115
116
117
    if {$size>1024*1024} {
      set size [format %.2f [expr {$size/(1024.0*1024.0)}]]
      set units MiB
    } elseif {$size>1024} {
      set size [format %.2f [expr {$size/(1024.0)}]]
      set units KiB
    }
    global pending_heading pending_tag





    if {$pending_heading!=""} {
      if {$pending_tag!=""} {
        set tg "<a name=\"$pending_tag\"></a>"
        set pending_tag {}
      } else {
        set tg ""
      }
      hd_puts "<tr><td colspan=\"4\">$tg<b>$pending_heading</b></td></tr>\n"
      set pending_heading {}
    }
    hd_puts "<tr><td width=\"10\"></td>"
    hd_puts "<td valign=\"top\" align=\"right\">"
    if {$frag!=""} {
      eval hd_fragment $frag
      set frag {}
    }



    hd_puts "<a href=\"$file\">[file tail $file]</a><br>($size $units)</td>\n"
    hd_puts "<td width=\"5\"></td>"
    regsub -all VERSION $desc $version d2
    hd_puts "\n<td valign=\"top\">"
    hd_resolve [string trim $d2]
    hd_puts "<br>(sha1: $sha1sum)</td></tr>\n"
    incr ::nDownload
  }
  if {$frag!=""} {
    eval hd_keywords [lrange $frag 1 end]
  }
}
cd $::DEST

proc Heading {title {tag {}}} {
  set ::pending_heading $title
  set ::pending_tag $tag

  # hd_puts "<tr><td colspan=4><big><b>$title</b></big></td></tr>"
}



Heading {Pre-release Source Code Snapshots}


Product {snapshot/sqlite-amalgamation-DATE.zip} {
  This is a snapshot (as of VERSION) of the current SQLite code under 
  development.  Use this snapshot for testing only.  This is not a release.




  This ZIP archive contains all preprocessed C code combined into a
  single source file (the [amalgamation]).
}
Product {snapshot/sqlite-amalgamation32k-DATE.zip} {
  This is a snapshot (as of VERSION) of the current SQLite code under 





  development.  The code is split into a small number of source files,
  such that no single source file is longer than 32767 lines of code.
  Use this snapshot for testing only.  This is not a release.
}
Product {snapshot/sqlite-tea-DATE.zip} {
  This is a snapshot (as of VERSION) of the current SQLite code under 
  development, packaged and ready to build using the
  <a href="http://www.tcl.tk/doc/tea/">Tcl Extension Architecture (TEA)</a>.
  Use this snapshot for testing only.  This is not a release.
}
Product {snapshot/sqlite-shell-win32-x86-DATE.zip} {
  This is a snapshot (as of VERSION) build of the 
  <a href="sqlite.html">sqlite3.exe command-line shell</a>
  shell program for 32-bit windows.
}
Product {snapshot/sqlite-shell-win64-x64-DATE.zip} {
  This is a snapshot (as of VERSION) build of the 
  <a href="sqlite.html">sqlite3.exe command-line shell</a>
  shell program for 64-bit windows.
}









Heading {Source Code}

Product {YEAR/sqlite-amalgamation-VVV.zip} {
  This ZIP archive contains all C source code for SQLite VERSION
  combined into a







|
>
>
>
>
>







|


|





>
>
>
|













|


>



>
>
|



|
|
>
>
>
>




|
>
>
>
>
>
|

<

















>
>
>
>
>
>
>







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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116

117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
    if {$size>1024*1024} {
      set size [format %.2f [expr {$size/(1024.0*1024.0)}]]
      set units MiB
    } elseif {$size>1024} {
      set size [format %.2f [expr {$size/(1024.0)}]]
      set units KiB
    }
    global pending_heading pending_tag BG
    if {$BG!=""} {
      set tr "<tr bgcolor=\"$BG\">"
    } else {
      set tr "<tr>"
    }
    if {$pending_heading!=""} {
      if {$pending_tag!=""} {
        set tg "<a name=\"$pending_tag\"></a>"
        set pending_tag {}
      } else {
        set tg ""
      }
      hd_puts "$tr<td colspan=\"4\">$tg<b>$pending_heading</b></td></tr>\n"
      set pending_heading {}
    }
    hd_puts "$tr<td width=\"10\"></td>"
    hd_puts "<td valign=\"top\" align=\"right\">"
    if {$frag!=""} {
      eval hd_fragment $frag
      set frag {}
    }
    global href href_cnt
    incr href_cnt
    set href(a$href_cnt) $file
    hd_puts "<a id='a$href_cnt'>[file tail $file]</a><br>($size $units)</td>\n"
    hd_puts "<td width=\"5\"></td>"
    regsub -all VERSION $desc $version d2
    hd_puts "\n<td valign=\"top\">"
    hd_resolve [string trim $d2]
    hd_puts "<br>(sha1: $sha1sum)</td></tr>\n"
    incr ::nDownload
  }
  if {$frag!=""} {
    eval hd_keywords [lrange $frag 1 end]
  }
}
cd $::DEST

proc Heading {title {tag {}} {bgcolor {}}} {
  set ::pending_heading $title
  set ::pending_tag $tag
  set ::BG $bgcolor
  # hd_puts "<tr><td colspan=4><big><b>$title</b></big></td></tr>"
}

set Caution #fff1c8

Heading {Pre-release Source-Code Snapshots} {} $Caution


Product {snapshot/sqlite-amalgamation-DATE.zip} {
  This is a snapshot (as of VERSION) of the current SQLite source code under 
  development.
  See the <a href="http://www.sqlite.org/draft/releaselog/current.html">pending
  change log</a> or the
  <a href="http://www.sqlite.org/src/timeline?t=trunk&n=1000&a=release">timeline</a>
  for a summary of updates since the last release.
  This ZIP archive contains all preprocessed C code combined into a
  single source file (the [amalgamation]).
}
Product {snapshot/sqlite-amalgamation32k-DATE.zip} {
  This is a snapshot (as of VERSION) of the current SQLite source code under 
  development.
  See the <a href="http://www.sqlite.org/draft/releaselog/current.html">pending
  change log</a> or the
  <a href="http://www.sqlite.org/src/timeline?t=trunk&n=1000&a=release">timeline</a>
  for a summary of updates since the last release.
  The code in this ZIP archive is split into a small number of source files,
  such that no single source file is longer than 32767 lines of code.

}
Product {snapshot/sqlite-tea-DATE.zip} {
  This is a snapshot (as of VERSION) of the current SQLite code under 
  development, packaged and ready to build using the
  <a href="http://www.tcl.tk/doc/tea/">Tcl Extension Architecture (TEA)</a>.
  Use this snapshot for testing only.  This is not a release.
}
Product {snapshot/sqlite-shell-win32-x86-DATE.zip} {
  This is a snapshot (as of VERSION) build of the 
  <a href="sqlite.html">sqlite3.exe command-line shell</a>
  shell program for 32-bit windows.
}
Product {snapshot/sqlite-shell-win64-x64-DATE.zip} {
  This is a snapshot (as of VERSION) build of the 
  <a href="sqlite.html">sqlite3.exe command-line shell</a>
  shell program for 64-bit windows.
}

Product {snapshot/sqlite-winrt81-DATE.vsix} {
  This is a snapshot (as of VERSION) for
  a complete VSIX package with an extension SDK and all other components
  needed to use SQLite for WinRT 8.1 application development with Visual Studio
  2013.  This is not a release.
}


Heading {Source Code}

Product {YEAR/sqlite-amalgamation-VVV.zip} {
  This ZIP archive contains all C source code for SQLite VERSION
  combined into a
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
Product YEAR/sqlite-wp80-winrt-DATE.vsix {
  A complete VSIX package with an extension SDK and all other components
  needed to use SQLite for application development with Visual Studio
  2012 targeting Windows Phone 8.0.
  This particular VSIX uses a snapshot of SQLite as of VERSION.
}


Heading {Precompiled Binaries for Windows Runtime} winrt

Product YEAR/sqlite-dll-winrt-x86-VVV.zip {
  This ZIP archive contains a DLL for the SQLite library version VERSION for
  32-bit x86 processors using the WinRT API.
}








<







246
247
248
249
250
251
252

253
254
255
256
257
258
259
Product YEAR/sqlite-wp80-winrt-DATE.vsix {
  A complete VSIX package with an extension SDK and all other components
  needed to use SQLite for application development with Visual Studio
  2012 targeting Windows Phone 8.0.
  This particular VSIX uses a snapshot of SQLite as of VERSION.
}


Heading {Precompiled Binaries for Windows Runtime} winrt

Product YEAR/sqlite-dll-winrt-x86-VVV.zip {
  This ZIP archive contains a DLL for the SQLite library version VERSION for
  32-bit x86 processors using the WinRT API.
}

275
276
277
278
279
280
281

282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
  <u>not</u> recommended.  Use one of the amalgamation packages above
  unless you have a compelling reason not to.
}


</tcl>
</table>


<tcl>hd_fragment encoding {build product names}</tcl>
<h3>Build Product Names</h3>

<p>Beginning with SQLite [version 3.7.4], the names of the build products
have changed to be more consistent.  (Prior to version 3.7.4, the
names of build products were seemingly random.)  Build products are named
using one of the following templates:

<ol>
<li> <b>sqlite-</b>product<b>-</b>version<b>.zip</b>
<li> <b>sqlite-</b>product<b>-</b>version<b>.tar.gz</b>
<li> <b>sqlite-</b>product<b>-</b>os<b>-</b>cpu<b>-</b>version<b>.zip</b>
<li> <b>sqlite-</b>product<b>-</b>date<b>.zip</b>
</ol>







>




|
<
<
|







304
305
306
307
308
309
310
311
312
313
314
315
316


317
318
319
320
321
322
323
324
  <u>not</u> recommended.  Use one of the amalgamation packages above
  unless you have a compelling reason not to.
}


</tcl>
</table>
<hr>

<tcl>hd_fragment encoding {build product names}</tcl>
<h3>Build Product Names</h3>

<p>


Build products are named using one of the following templates:

<ol>
<li> <b>sqlite-</b>product<b>-</b>version<b>.zip</b>
<li> <b>sqlite-</b>product<b>-</b>version<b>.tar.gz</b>
<li> <b>sqlite-</b>product<b>-</b>os<b>-</b>cpu<b>-</b>version<b>.zip</b>
<li> <b>sqlite-</b>product<b>-</b>date<b>.zip</b>
</ol>
306
307
308
309
310
311
312
313
314
315
316

317
318
319
320
321
322
323
324


325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
















filename encoding is 3XXYY00.  For branch version 3.X.Y.Z, the encoding is
3XXYYZZ.

<p>The <i>date</i> in template (4) is of the form: YYYYMMDDHHMM

<a name="cvs"></a>
<a name="fossil"></a>
<h3>Canonical Source Code</h3>

<p>
The canonical SQLite source code is maintained in three self-synchronizing

[http://www.fossil-scm.org/ | Fossil] repositories that are
available for anonymous read-only access.  Anyone can 
view the repository contents and download historical versions
of individual files or ZIP archives of historical check-ins.</p>

<p>Note that a unix-like development environment, including a recent
version of <a href="http://www.tcl.tk/">Tcl</a>, is required in order to
build from the canonical sources.</p>



<blockquote>
<a href="http://www.sqlite.org/cgi/src">http://www.sqlite.org/cgi/src</a> (Dallas)<br>
<a href="http://www2.sqlite.org/cgi/src">http://www2.sqlite.org/cgi/src</a> (Newark)<br>
<a href="http://www3.sqlite.org/cgi/src">http://www3.sqlite.org/cgi/src</a> (Fremont)<br>
</blockquote>

<p>The documentation is maintained in separate
[http://www.fossil-scm.org/ | Fossil] repositories located
at:</p>

<blockquote>
<a href="http://www.sqlite.org/cgi/docsrc">http://www.sqlite.org/cgi/docsrc</a> (Dallas)<br>
<a href="http://www2.sqlite.org/cgi/docsrc">http://www2.sqlite.org/cgi/docsrc</a> (Newark)<br>
<a href="http://www3.sqlite.org/cgi/docsrc">http://www3.sqlite.org/cgi/docsrc</a> (Fremont)<br>
</blockquote>























|


|
>







|
>
>
















>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
filename encoding is 3XXYY00.  For branch version 3.X.Y.Z, the encoding is
3XXYYZZ.

<p>The <i>date</i> in template (4) is of the form: YYYYMMDDHHMM

<a name="cvs"></a>
<a name="fossil"></a>
<h3>Source Code Repositories</h3>

<p>
The SQLite source code is maintained in three geographically-dispersed
self-synchronizing
[http://www.fossil-scm.org/ | Fossil] repositories that are
available for anonymous read-only access.  Anyone can 
view the repository contents and download historical versions
of individual files or ZIP archives of historical check-ins.</p>

<p>Note that a unix-like development environment, including a recent
version of <a href="http://www.tcl.tk/">Tcl</a>, is required in order to
build from the repository sources.  The [amalgamation] source code files
(the "sqlite3.c" and "sqlite3.h" files) are not contained in
the repository.</p>

<blockquote>
<a href="http://www.sqlite.org/cgi/src">http://www.sqlite.org/cgi/src</a> (Dallas)<br>
<a href="http://www2.sqlite.org/cgi/src">http://www2.sqlite.org/cgi/src</a> (Newark)<br>
<a href="http://www3.sqlite.org/cgi/src">http://www3.sqlite.org/cgi/src</a> (Fremont)<br>
</blockquote>

<p>The documentation is maintained in separate
[http://www.fossil-scm.org/ | Fossil] repositories located
at:</p>

<blockquote>
<a href="http://www.sqlite.org/cgi/docsrc">http://www.sqlite.org/cgi/docsrc</a> (Dallas)<br>
<a href="http://www2.sqlite.org/cgi/docsrc">http://www2.sqlite.org/cgi/docsrc</a> (Newark)<br>
<a href="http://www3.sqlite.org/cgi/docsrc">http://www3.sqlite.org/cgi/docsrc</a> (Fremont)<br>
</blockquote>
<tcl>
proc set_download_hyperlinks {} {
  set script "<script type='text/JavaScript'>\n"
  append script "/* <!\[CDATA\[ */\n"
  append script "function adce4d016d6cd()\173\n"
  append script "function d391(a,b){document.getElementById(a).href=b;}\n"
  global href
  foreach {i h} [array get href] {append script "d391('$i','$h');\n"}
  append script "\175\n"
  append script "setTimeout('adce4d016d6cd();',10);\n"
  append script "/* \]\]> */\n"
  append script "</script>\n"
  hd_puts $script
}
set_download_hyperlinks
</tcl>