Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Make sure the quota logic is usable as C++. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | quota-stdio |
Files: | files | file ages | folders |
SHA1: |
f4534bd3023a599691018f35389a7604 |
User & Date: | drh 2011-12-12 19:47:25.223 |
Context
2011-12-13
| ||
23:26 | Enhancements to test_quota.c: Remove the external dependency on sqlite3_win32_utf8_to_msbc(). Add an extra parameter to quota_fflush() that will also do an fsync (or the equivalent). (check-in: 92f4188f90 user: drh tags: quota-stdio) | |
2011-12-12
| ||
19:47 | Make sure the quota logic is usable as C++. (check-in: f4534bd302 user: drh tags: quota-stdio) | |
2011-12-03
| ||
00:13 | Add the sqlite3_quota_fflush() interface. Enhance sqlite3_quota_remove() so that it can remove entire directories. (check-in: abcb65af4c user: drh tags: quota-stdio) | |
Changes
Changes to src/test_quota.c.
︙ | ︙ | |||
901 902 903 904 905 906 907 | */ int sqlite3_quota_file(const char *zFilename){ char *zFull; sqlite3_file *fd; int rc; int outFlags = 0; sqlite3_int64 iSize; | | > | 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 | */ int sqlite3_quota_file(const char *zFilename){ char *zFull; sqlite3_file *fd; int rc; int outFlags = 0; sqlite3_int64 iSize; fd = (sqlite3_file*)sqlite3_malloc(gQuota.sThisVfs.szOsFile + gQuota.sThisVfs.mxPathname+1); if( fd==0 ) return SQLITE_NOMEM; zFull = gQuota.sThisVfs.szOsFile + (char*)fd; rc = gQuota.pOrigVfs->xFullPathname(gQuota.pOrigVfs, zFilename, gQuota.sThisVfs.mxPathname+1, zFull); if( rc==SQLITE_OK ){ rc = quotaOpen(&gQuota.sThisVfs, zFull, fd, SQLITE_OPEN_READONLY | SQLITE_OPEN_MAIN_DB, &outFlags); |
︙ | ︙ | |||
939 940 941 942 943 944 945 | quota_FILE *p = 0; char *zFull = 0; char *zFullTranslated; int rc; quotaGroup *pGroup; quotaFile *pFile; | | | | 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 | quota_FILE *p = 0; char *zFull = 0; char *zFullTranslated; int rc; quotaGroup *pGroup; quotaFile *pFile; zFull = (char*)sqlite3_malloc(gQuota.sThisVfs.mxPathname + 1); if( zFull==0 ) return 0; rc = gQuota.pOrigVfs->xFullPathname(gQuota.pOrigVfs, zFilename, gQuota.sThisVfs.mxPathname+1, zFull); if( rc ) goto quota_fopen_error; p = (quota_FILE*)sqlite3_malloc(sizeof(*p)); if( p==0 ) goto quota_fopen_error; memset(p, 0, sizeof(*p)); zFullTranslated = quota_utf8_to_mbcs(zFull); if( zFullTranslated==0 ) goto quota_fopen_error; p->f = fopen(zFullTranslated, zMode); quota_mbcs_free(zFullTranslated); if( p->f==0 ) goto quota_fopen_error; |
︙ | ︙ | |||
1093 1094 1095 1096 1097 1098 1099 | int rc; /* Result code */ quotaGroup *pGroup; /* Group containing zFilename */ quotaFile *pFile; /* A file in the group */ quotaFile *pNextFile; /* next file in the group */ int diff; /* Difference between filenames */ char c; /* First character past end of pattern */ | | | 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 | int rc; /* Result code */ quotaGroup *pGroup; /* Group containing zFilename */ quotaFile *pFile; /* A file in the group */ quotaFile *pNextFile; /* next file in the group */ int diff; /* Difference between filenames */ char c; /* First character past end of pattern */ zFull = (char*)sqlite3_malloc(gQuota.sThisVfs.mxPathname + 1); if( zFull==0 ) return SQLITE_NOMEM; rc = gQuota.pOrigVfs->xFullPathname(gQuota.pOrigVfs, zFilename, gQuota.sThisVfs.mxPathname+1, zFull); if( rc ){ sqlite3_free(zFull); return rc; } |
︙ | ︙ | |||
1434 1435 1436 1437 1438 1439 1440 | if( objc!=4 ){ Tcl_WrongNumArgs(interp, 1, objv, "HANDLE SIZE NELEM"); return TCL_ERROR; } p = sqlite3TestTextToPtr(Tcl_GetString(objv[1])); if( Tcl_GetIntFromObj(interp, objv[2], &sz) ) return TCL_ERROR; if( Tcl_GetIntFromObj(interp, objv[3], &nElem) ) return TCL_ERROR; | | | 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 | if( objc!=4 ){ Tcl_WrongNumArgs(interp, 1, objv, "HANDLE SIZE NELEM"); return TCL_ERROR; } p = sqlite3TestTextToPtr(Tcl_GetString(objv[1])); if( Tcl_GetIntFromObj(interp, objv[2], &sz) ) return TCL_ERROR; if( Tcl_GetIntFromObj(interp, objv[3], &nElem) ) return TCL_ERROR; zBuf = (char*)sqlite3_malloc( sz*nElem + 1 ); if( zBuf==0 ){ Tcl_SetResult(interp, "out of memory", TCL_STATIC); return TCL_ERROR; } got = sqlite3_quota_fread(zBuf, sz, nElem, p); if( got<0 ) got = 0; zBuf[got*sz] = 0; |
︙ | ︙ |
Changes to src/test_quota.h.
︙ | ︙ | |||
26 27 28 29 30 31 32 33 34 35 36 37 38 39 | ** files within the group is less than the new quota, then the write ** continues as if nothing had happened. */ #ifndef _QUOTA_H_ #include "sqlite3.h" #include <stdio.h> /* ** Initialize the quota VFS shim. Use the VFS named zOrigVfsName ** as the VFS that does the actual work. Use the default if ** zOrigVfsName==NULL. ** ** The quota VFS shim is named "quota". It will become the default ** VFS if makeDefault is non-zero. | > > > > > | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | ** files within the group is less than the new quota, then the write ** continues as if nothing had happened. */ #ifndef _QUOTA_H_ #include "sqlite3.h" #include <stdio.h> /* Make this callable from C++ */ #ifdef __cplusplus extern "C" { #endif /* ** Initialize the quota VFS shim. Use the VFS named zOrigVfsName ** as the VFS that does the actual work. Use the default if ** zOrigVfsName==NULL. ** ** The quota VFS shim is named "quota". It will become the default ** VFS if makeDefault is non-zero. |
︙ | ︙ | |||
189 190 191 192 193 194 195 196 | ** All files are removed from quota management and deleted from disk. ** However, no attempt is made to remove empty directories. ** ** This routine is a no-op for files that are not under quota management. */ int sqlite3_quota_remove(const char *zFilename); #endif /* _QUOTA_H_ */ | > > > | 194 195 196 197 198 199 200 201 202 203 204 | ** All files are removed from quota management and deleted from disk. ** However, no attempt is made to remove empty directories. ** ** This routine is a no-op for files that are not under quota management. */ int sqlite3_quota_remove(const char *zFilename); #ifdef __cplusplus } /* end of the 'extern "C"' block */ #endif #endif /* _QUOTA_H_ */ |