Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Side by Side Diff: third_party/sqlite/src/test_backup.c

Issue 3108030: Move bundled copy of sqlite one level deeper to better separate it... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/sqlite/src/test_autoext.c ('k') | third_party/sqlite/src/test_btree.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /*
2 ** 2009 January 28
3 **
4 ** The author disclaims copyright to this source code. In place of
5 ** a legal notice, here is a blessing:
6 **
7 ** May you do good and not evil.
8 ** May you find forgiveness for yourself and forgive others.
9 ** May you share freely, never taking more than you give.
10 **
11 *************************************************************************
12 **
13 ** $Id: test_backup.c,v 1.3 2009/03/30 12:56:52 drh Exp $
14 */
15
16 #include "tcl.h"
17 #include <sqlite3.h>
18 #include <assert.h>
19
20 /* These functions are implemented in test1.c. */
21 int getDbPointer(Tcl_Interp *, const char *, sqlite3 **);
22 const char *sqlite3TestErrorName(int);
23
24 static int backupTestCmd(
25 ClientData clientData,
26 Tcl_Interp *interp,
27 int objc,
28 Tcl_Obj *const*objv
29 ){
30 enum BackupSubCommandEnum {
31 BACKUP_STEP, BACKUP_FINISH, BACKUP_REMAINING, BACKUP_PAGECOUNT
32 };
33 struct BackupSubCommand {
34 const char *zCmd;
35 enum BackupSubCommandEnum eCmd;
36 int nArg;
37 const char *zArg;
38 } aSub[] = {
39 {"step", BACKUP_STEP , 1, "npage" },
40 {"finish", BACKUP_FINISH , 0, "" },
41 {"remaining", BACKUP_REMAINING , 0, "" },
42 {"pagecount", BACKUP_PAGECOUNT , 0, "" },
43 {0, 0, 0, 0}
44 };
45
46 sqlite3_backup *p = (sqlite3_backup *)clientData;
47 int iCmd;
48 int rc;
49
50 rc = Tcl_GetIndexFromObjStruct(
51 interp, objv[1], aSub, sizeof(aSub[0]), "option", 0, &iCmd
52 );
53 if( rc!=TCL_OK ){
54 return rc;
55 }
56 if( objc!=(2 + aSub[iCmd].nArg) ){
57 Tcl_WrongNumArgs(interp, 2, objv, aSub[iCmd].zArg);
58 return TCL_ERROR;
59 }
60
61 switch( aSub[iCmd].eCmd ){
62
63 case BACKUP_FINISH: {
64 const char *zCmdName;
65 Tcl_CmdInfo cmdInfo;
66 zCmdName = Tcl_GetString(objv[0]);
67 Tcl_GetCommandInfo(interp, zCmdName, &cmdInfo);
68 cmdInfo.deleteProc = 0;
69 Tcl_SetCommandInfo(interp, zCmdName, &cmdInfo);
70 Tcl_DeleteCommand(interp, zCmdName);
71
72 rc = sqlite3_backup_finish(p);
73 Tcl_SetResult(interp, (char *)sqlite3TestErrorName(rc), TCL_STATIC);
74 break;
75 }
76
77 case BACKUP_STEP: {
78 int nPage;
79 if( TCL_OK!=Tcl_GetIntFromObj(interp, objv[2], &nPage) ){
80 return TCL_ERROR;
81 }
82 rc = sqlite3_backup_step(p, nPage);
83 Tcl_SetResult(interp, (char *)sqlite3TestErrorName(rc), TCL_STATIC);
84 break;
85 }
86
87 case BACKUP_REMAINING:
88 Tcl_SetObjResult(interp, Tcl_NewIntObj(sqlite3_backup_remaining(p)));
89 break;
90
91 case BACKUP_PAGECOUNT:
92 Tcl_SetObjResult(interp, Tcl_NewIntObj(sqlite3_backup_pagecount(p)));
93 break;
94 }
95
96 return TCL_OK;
97 }
98
99 static void backupTestFinish(ClientData clientData){
100 sqlite3_backup *pBackup = (sqlite3_backup *)clientData;
101 sqlite3_backup_finish(pBackup);
102 }
103
104 /*
105 ** sqlite3_backup CMDNAME DESTHANDLE DESTNAME SRCHANDLE SRCNAME
106 **
107 */
108 static int backupTestInit(
109 ClientData clientData,
110 Tcl_Interp *interp,
111 int objc,
112 Tcl_Obj *const*objv
113 ){
114 sqlite3_backup *pBackup;
115 sqlite3 *pDestDb;
116 sqlite3 *pSrcDb;
117 const char *zDestName;
118 const char *zSrcName;
119 const char *zCmd;
120
121 if( objc!=6 ){
122 Tcl_WrongNumArgs(
123 interp, 1, objv, "CMDNAME DESTHANDLE DESTNAME SRCHANDLE SRCNAME"
124 );
125 return TCL_ERROR;
126 }
127
128 zCmd = Tcl_GetString(objv[1]);
129 getDbPointer(interp, Tcl_GetString(objv[2]), &pDestDb);
130 zDestName = Tcl_GetString(objv[3]);
131 getDbPointer(interp, Tcl_GetString(objv[4]), &pSrcDb);
132 zSrcName = Tcl_GetString(objv[5]);
133
134 pBackup = sqlite3_backup_init(pDestDb, zDestName, pSrcDb, zSrcName);
135 if( !pBackup ){
136 Tcl_AppendResult(interp, "sqlite3_backup_init() failed", 0);
137 return TCL_ERROR;
138 }
139
140 Tcl_CreateObjCommand(interp, zCmd, backupTestCmd, pBackup, backupTestFinish);
141 Tcl_SetObjResult(interp, objv[1]);
142 return TCL_OK;
143 }
144
145 int Sqlitetestbackup_Init(Tcl_Interp *interp){
146 Tcl_CreateObjCommand(interp, "sqlite3_backup", backupTestInit, 0, 0);
147 return TCL_OK;
148 }
OLDNEW
« no previous file with comments | « third_party/sqlite/src/test_autoext.c ('k') | third_party/sqlite/src/test_btree.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698