Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Factor the sql-command shell out into a separate source file. Add the new content(X) SQL function for accessing uncompressed and undeltaed artifact content. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
b4687be448ba0c35e145463dd86c9f3c |
| User & Date: | drh 2010-11-24 12:03:23.000 |
Context
|
2010-11-24
| ||
| 17:13 | Correctly handle partial commits even when files have been deleted and/or renamed and are not part of the partial commit. Tickets [ad15a8e2af8c3162d6] and [5cc33a6aa0621be8936f]. ... (check-in: 2ceeeca19d user: drh tags: trunk) | |
| 12:03 | Factor the sql-command shell out into a separate source file. Add the new content(X) SQL function for accessing uncompressed and undeltaed artifact content. ... (check-in: b4687be448 user: drh tags: trunk) | |
|
2010-11-23
| ||
| 22:18 | Fix the ticket-change artifact generator so that it puts all fields with the "+" prefix on their name first, where they ought to be. ... (check-in: e1dac0e4f6 user: drh tags: trunk) | |
Changes
Changes to src/main.c.
| ︙ | ︙ | |||
1187 1188 1189 1190 1191 1192 1193 |
zBrowser = db_get("web-browser", "start");
zBrowserCmd = mprintf("%s http://127.0.0.1:%%d/", zBrowser);
}
db_close();
win32_http_server(iPort, mxPort, zBrowserCmd, zStopperFile, zNotFound, flags);
#endif
}
| < < < < < < < < < < < < < < < < < < < < < < < < < < < < | 1187 1188 1189 1190 1191 1192 1193 |
zBrowser = db_get("web-browser", "start");
zBrowserCmd = mprintf("%s http://127.0.0.1:%%d/", zBrowser);
}
db_close();
win32_http_server(iPort, mxPort, zBrowserCmd, zStopperFile, zNotFound, flags);
#endif
}
|
Changes to src/main.mk.
| ︙ | ︙ | |||
64 65 66 67 68 69 70 71 72 73 74 75 76 77 | $(SRCDIR)/rss.c \ $(SRCDIR)/schema.c \ $(SRCDIR)/search.c \ $(SRCDIR)/setup.c \ $(SRCDIR)/sha1.c \ $(SRCDIR)/shun.c \ $(SRCDIR)/skins.c \ $(SRCDIR)/stat.c \ $(SRCDIR)/style.c \ $(SRCDIR)/sync.c \ $(SRCDIR)/tag.c \ $(SRCDIR)/th_main.c \ $(SRCDIR)/timeline.c \ $(SRCDIR)/tkt.c \ | > | 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | $(SRCDIR)/rss.c \ $(SRCDIR)/schema.c \ $(SRCDIR)/search.c \ $(SRCDIR)/setup.c \ $(SRCDIR)/sha1.c \ $(SRCDIR)/shun.c \ $(SRCDIR)/skins.c \ $(SRCDIR)/sqlcmd.c \ $(SRCDIR)/stat.c \ $(SRCDIR)/style.c \ $(SRCDIR)/sync.c \ $(SRCDIR)/tag.c \ $(SRCDIR)/th_main.c \ $(SRCDIR)/timeline.c \ $(SRCDIR)/tkt.c \ |
| ︙ | ︙ | |||
140 141 142 143 144 145 146 147 148 149 150 151 152 153 | rss_.c \ schema_.c \ search_.c \ setup_.c \ sha1_.c \ shun_.c \ skins_.c \ stat_.c \ style_.c \ sync_.c \ tag_.c \ th_main_.c \ timeline_.c \ tkt_.c \ | > | 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | rss_.c \ schema_.c \ search_.c \ setup_.c \ sha1_.c \ shun_.c \ skins_.c \ sqlcmd_.c \ stat_.c \ style_.c \ sync_.c \ tag_.c \ th_main_.c \ timeline_.c \ tkt_.c \ |
| ︙ | ︙ | |||
216 217 218 219 220 221 222 223 224 225 226 227 228 229 | $(OBJDIR)/rss.o \ $(OBJDIR)/schema.o \ $(OBJDIR)/search.o \ $(OBJDIR)/setup.o \ $(OBJDIR)/sha1.o \ $(OBJDIR)/shun.o \ $(OBJDIR)/skins.o \ $(OBJDIR)/stat.o \ $(OBJDIR)/style.o \ $(OBJDIR)/sync.o \ $(OBJDIR)/tag.o \ $(OBJDIR)/th_main.o \ $(OBJDIR)/timeline.o \ $(OBJDIR)/tkt.o \ | > | 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 | $(OBJDIR)/rss.o \ $(OBJDIR)/schema.o \ $(OBJDIR)/search.o \ $(OBJDIR)/setup.o \ $(OBJDIR)/sha1.o \ $(OBJDIR)/shun.o \ $(OBJDIR)/skins.o \ $(OBJDIR)/sqlcmd.o \ $(OBJDIR)/stat.o \ $(OBJDIR)/style.o \ $(OBJDIR)/sync.o \ $(OBJDIR)/tag.o \ $(OBJDIR)/th_main.o \ $(OBJDIR)/timeline.o \ $(OBJDIR)/tkt.o \ |
| ︙ | ︙ | |||
282 283 284 285 286 287 288 | # $(SRCDIR)/../manifest: # noop clean: rm -f $(OBJDIR)/*.o *_.c $(APPNAME) VERSION.h rm -f translate makeheaders mkindex page_index.h headers | | | | 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 | # $(SRCDIR)/../manifest: # noop clean: rm -f $(OBJDIR)/*.o *_.c $(APPNAME) VERSION.h rm -f translate makeheaders mkindex page_index.h headers rm -f add.h allrepo.h attach.h bag.h blob.h branch.h browse.h captcha.h cgi.h checkin.h checkout.h clearsign.h clone.h comformat.h configure.h content.h db.h delta.h deltacmd.h descendants.h diff.h diffcmd.h doc.h encode.h event.h export.h file.h finfo.h graph.h http.h http_socket.h http_ssl.h http_transport.h import.h info.h login.h main.h manifest.h md5.h merge.h merge3.h name.h pivot.h popen.h pqueue.h printf.h rebuild.h report.h rss.h schema.h search.h setup.h sha1.h shun.h skins.h sqlcmd.h stat.h style.h sync.h tag.h th_main.h timeline.h tkt.h tktsetup.h undo.h update.h url.h user.h verify.h vfile.h wiki.h wikiformat.h winhttp.h xfer.h zip.h page_index.h: $(TRANS_SRC) mkindex ./mkindex $(TRANS_SRC) >$@ headers: page_index.h makeheaders VERSION.h ./makeheaders add_.c:add.h allrepo_.c:allrepo.h attach_.c:attach.h bag_.c:bag.h blob_.c:blob.h branch_.c:branch.h browse_.c:browse.h captcha_.c:captcha.h cgi_.c:cgi.h checkin_.c:checkin.h checkout_.c:checkout.h clearsign_.c:clearsign.h clone_.c:clone.h comformat_.c:comformat.h configure_.c:configure.h content_.c:content.h db_.c:db.h delta_.c:delta.h deltacmd_.c:deltacmd.h descendants_.c:descendants.h diff_.c:diff.h diffcmd_.c:diffcmd.h doc_.c:doc.h encode_.c:encode.h event_.c:event.h export_.c:export.h file_.c:file.h finfo_.c:finfo.h graph_.c:graph.h http_.c:http.h http_socket_.c:http_socket.h http_ssl_.c:http_ssl.h http_transport_.c:http_transport.h import_.c:import.h info_.c:info.h login_.c:login.h main_.c:main.h manifest_.c:manifest.h md5_.c:md5.h merge_.c:merge.h merge3_.c:merge3.h name_.c:name.h pivot_.c:pivot.h popen_.c:popen.h pqueue_.c:pqueue.h printf_.c:printf.h rebuild_.c:rebuild.h report_.c:report.h rss_.c:rss.h schema_.c:schema.h search_.c:search.h setup_.c:setup.h sha1_.c:sha1.h shun_.c:shun.h skins_.c:skins.h sqlcmd_.c:sqlcmd.h stat_.c:stat.h style_.c:style.h sync_.c:sync.h tag_.c:tag.h th_main_.c:th_main.h timeline_.c:timeline.h tkt_.c:tkt.h tktsetup_.c:tktsetup.h undo_.c:undo.h update_.c:update.h url_.c:url.h user_.c:user.h verify_.c:verify.h vfile_.c:vfile.h wiki_.c:wiki.h wikiformat_.c:wikiformat.h winhttp_.c:winhttp.h xfer_.c:xfer.h zip_.c:zip.h $(SRCDIR)/sqlite3.h $(SRCDIR)/th.h VERSION.h touch headers headers: Makefile Makefile: add_.c: $(SRCDIR)/add.c translate ./translate $(SRCDIR)/add.c >add_.c $(OBJDIR)/add.o: add_.c add.h $(SRCDIR)/config.h |
| ︙ | ︙ | |||
676 677 678 679 680 681 682 683 684 685 686 687 688 689 | skins_.c: $(SRCDIR)/skins.c translate ./translate $(SRCDIR)/skins.c >skins_.c $(OBJDIR)/skins.o: skins_.c skins.h $(SRCDIR)/config.h $(XTCC) -o $(OBJDIR)/skins.o -c skins_.c skins.h: headers stat_.c: $(SRCDIR)/stat.c translate ./translate $(SRCDIR)/stat.c >stat_.c $(OBJDIR)/stat.o: stat_.c stat.h $(SRCDIR)/config.h $(XTCC) -o $(OBJDIR)/stat.o -c stat_.c stat.h: headers | > > > > > > > | 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 | skins_.c: $(SRCDIR)/skins.c translate ./translate $(SRCDIR)/skins.c >skins_.c $(OBJDIR)/skins.o: skins_.c skins.h $(SRCDIR)/config.h $(XTCC) -o $(OBJDIR)/skins.o -c skins_.c skins.h: headers sqlcmd_.c: $(SRCDIR)/sqlcmd.c translate ./translate $(SRCDIR)/sqlcmd.c >sqlcmd_.c $(OBJDIR)/sqlcmd.o: sqlcmd_.c sqlcmd.h $(SRCDIR)/config.h $(XTCC) -o $(OBJDIR)/sqlcmd.o -c sqlcmd_.c sqlcmd.h: headers stat_.c: $(SRCDIR)/stat.c translate ./translate $(SRCDIR)/stat.c >stat_.c $(OBJDIR)/stat.o: stat_.c stat.h $(SRCDIR)/config.h $(XTCC) -o $(OBJDIR)/stat.o -c stat_.c stat.h: headers |
| ︙ | ︙ |
Changes to src/makemake.tcl.
| ︙ | ︙ | |||
57 58 59 60 61 62 63 64 65 66 67 68 69 70 | rss schema search setup sha1 shun skins stat style sync tag th_main timeline tkt | > | 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | rss schema search setup sha1 shun skins sqlcmd stat style sync tag th_main timeline tkt |
| ︙ | ︙ |
Changes to src/shell.c.
| ︙ | ︙ | |||
2568 2569 2570 2571 2572 2573 2574 |
#ifndef SQLITE_OMIT_MEMORYDB
data.zDbFilename = ":memory:";
#else
data.zDbFilename = 0;
#endif
/***** Begin Fossil Patch *****/
{
| | | | 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 |
#ifndef SQLITE_OMIT_MEMORYDB
data.zDbFilename = ":memory:";
#else
data.zDbFilename = 0;
#endif
/***** Begin Fossil Patch *****/
{
extern void fossil_open(const char **);
fossil_open(&data.zDbFilename);
}
/***** End Fossil Patch *****/
}
if( i<argc ){
zFirstCmd = argv[i++];
}
if( i<argc ){
|
| ︙ | ︙ |
Added src/sqlcmd.c.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 |
/*
** Copyright (c) 2010 D. Richard Hipp
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of the Simplified BSD License (also
** known as the "2-Clause License" or "FreeBSD License".)
** This program is distributed in the hope that it will be useful,
** but without any warranty; without even the implied warranty of
** merchantability or fitness for a particular purpose.
**
** Author contact information:
** drh@hwaci.com
** http://www.hwaci.com/drh/
**
*******************************************************************************
**
** This module contains the code that initializes the "sqlite3" command-line
** shell against the repository database. The command-line shell itself
** is a copy of the "shell.c" code from SQLite. This file contains logic
** to initialize the code in shell.c.
*/
#include "config.h"
#include "sqlcmd.h"
/*
** Implementation of the "content(X)" SQL function. Return the complete
** content of artifact identified by X as a blob.
*/
static void sqlcmd_content(
sqlite3_context *context,
int argc,
sqlite3_value **argv
){
int rid;
Blob cx;
assert( argc==1 );
const char *zName = (const char*)sqlite3_value_text(argv[0]);
if( zName==0 ) return;
rid = name_to_rid(zName);
if( rid==0 ) return;
if( content_get(rid, &cx) ){
sqlite3_result_blob(context, blob_buffer(&cx), blob_size(&cx),
SQLITE_TRANSIENT);
blob_reset(&cx);
}
}
/*
** This is the "automatic extensionn" initializer that runs right after
** the connection to the repository database is opened. Set up the
** database connection to be more useful to the human operator.
*/
static int sqlcmd_autoinit(
sqlite3 *db,
const char **pzErrMsg,
const void *notUsed
){
sqlite3_create_function(db, "content", 1, SQLITE_ANY, 0,
sqlcmd_content, 0, 0);
return SQLITE_OK;
}
/*
** COMMAND: sqlite3
**
** Usage: %fossil sqlite3 ?DATABASE? ?OPTIONS?
**
** Run the standalone sqlite3 command-line shell on DATABASE with OPTIONS.
** If DATABASE is omitted, then the repository that serves the working
** directory is opened.
**
** WARNING: Careless use of this command can corrupt a Fossil repository
** in ways that are unrecoverable. Be sure you know what you are doing before
** running any SQL commands that modifies the repository database.
*/
void sqlite3_cmd(void){
extern int sqlite3_shell(int, char**);
sqlite3_shell(g.argc-1, g.argv+1);
}
/*
** This routine is called by the patched sqlite3 command-line shell in order
** to load the name and database connection for the open Fossil database.
*/
void fossil_open(const char **pzRepoName){
db_must_be_within_tree();
sqlite3_auto_extension((void(*)(void))sqlcmd_autoinit);
*pzRepoName = g.zRepositoryName;
}
|