Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | In the db_get(N,D) function, if N is setting, then always leave D as NULL so that we use the published default value for that setting. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
eb804dc6749a1f29b118a7ea3718e6b5 |
| User & Date: | drh 2019-09-19 14:14:14.151 |
Context
|
2019-09-19
| ||
| 16:33 | Updates to the change log. check-in: b6c36e87ba user: drh tags: trunk | |
| 14:14 | In the db_get(N,D) function, if N is setting, then always leave D as NULL so that we use the published default value for that setting. check-in: eb804dc674 user: drh tags: trunk | |
|
2019-09-18
| ||
| 14:57 | Style cleanup (no tabs). No functional change. check-in: 89872d17d1 user: andybradford tags: trunk | |
Changes
Changes to src/alerts.c.
| ︙ | ︙ | |||
108 109 110 111 112 113 114 |
**
** If the bOnlyIfEnabled option is true, then tables are only created
** if the email-send-method is something other than "off".
*/
void alert_schema(int bOnlyIfEnabled){
if( !alert_tables_exist() ){
if( bOnlyIfEnabled
| | | 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
**
** If the bOnlyIfEnabled option is true, then tables are only created
** if the email-send-method is something other than "off".
*/
void alert_schema(int bOnlyIfEnabled){
if( !alert_tables_exist() ){
if( bOnlyIfEnabled
&& fossil_strcmp(db_get("email-send-method",0),"off")==0
){
return; /* Don't create table for disabled email */
}
db_multi_exec(zAlertInit/*works-like:""*/);
alert_triggers_enable();
}else if( !db_table_has_column("repository","pending_alert","sentMod") ){
db_multi_exec(
|
| ︙ | ︙ | |||
156 157 158 159 160 161 162 |
}
/*
** Return true if email alerts are active.
*/
int alert_enabled(void){
if( !alert_tables_exist() ) return 0;
| | | 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
}
/*
** Return true if email alerts are active.
*/
int alert_enabled(void){
if( !alert_tables_exist() ) return 0;
if( fossil_strcmp(db_get("email-send-method",0),"off")==0 ) return 0;
return 1;
}
/*
** If the subscriber table does not exist, then paint an error message
** web page and return true.
**
|
| ︙ | ︙ | |||
480 481 482 483 484 485 486 |
p = fossil_malloc(sizeof(*p));
memset(p, 0, sizeof(*p));
blob_init(&p->out, 0, 0);
p->mFlags = mFlags;
if( zAltDest ){
p->zDest = zAltDest;
}else{
| | | 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 |
p = fossil_malloc(sizeof(*p));
memset(p, 0, sizeof(*p));
blob_init(&p->out, 0, 0);
p->mFlags = mFlags;
if( zAltDest ){
p->zDest = zAltDest;
}else{
p->zDest = db_get("email-send-method",0);
}
if( fossil_strcmp(p->zDest,"off")==0 ) return p;
if( emailerGetSetting(p, &p->zFrom, "email-self") ) return p;
if( fossil_strcmp(p->zDest,"db")==0 ){
char *zErr;
int rc;
if( emailerGetSetting(p, &p->zDb, "email-send-db") ) return p;
|
| ︙ | ︙ |
Changes to src/branch.c.
| ︙ | ︙ | |||
38 39 40 41 42 43 44 |
db_bind_int(&q, "$rid", rid);
if( db_step(&q)==SQLITE_ROW ){
zBr = fossil_strdup(db_column_text(&q,0));
}
db_reset(&q);
if( zBr==0 ){
static char *zMain = 0;
| | | 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
db_bind_int(&q, "$rid", rid);
if( db_step(&q)==SQLITE_ROW ){
zBr = fossil_strdup(db_column_text(&q,0));
}
db_reset(&q);
if( zBr==0 ){
static char *zMain = 0;
if( zMain==0 ) zMain = db_get("main-branch",0);
zBr = fossil_strdup(zMain);
}
return zBr;
}
/*
** fossil branch new NAME BASIS ?OPTIONS?
|
| ︙ | ︙ |
Changes to src/checkin.c.
| ︙ | ︙ | |||
2128 2129 2130 2131 2132 2133 2134 |
verify_all_options();
/* Get the ID of the parent manifest artifact */
vid = db_lget_int("checkout", 0);
if( vid==0 ){
useCksum = 1;
if( sCiInfo.zBranch==0 ) {
| | | 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 |
verify_all_options();
/* Get the ID of the parent manifest artifact */
vid = db_lget_int("checkout", 0);
if( vid==0 ){
useCksum = 1;
if( sCiInfo.zBranch==0 ) {
sCiInfo.zBranch=db_get("main-branch", 0);
}
}else if( content_is_private(vid) ){
g.markPrivate = 1;
}
/* Do not allow the creation of a new branch using an existing open
** branch name unless the --force flag is used */
|
| ︙ | ︙ |
Changes to src/db.c.
| ︙ | ︙ | |||
2948 2949 2950 2951 2952 2953 2954 |
db_open_repository(g.argv[2]);
/* Figure out which revision to open. */
if( !emptyFlag ){
if( g.argc==4 ){
g.zOpenRevision = g.argv[3];
}else if( db_exists("SELECT 1 FROM event WHERE type='ci'") ){
| | | 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 |
db_open_repository(g.argv[2]);
/* Figure out which revision to open. */
if( !emptyFlag ){
if( g.argc==4 ){
g.zOpenRevision = g.argv[3];
}else if( db_exists("SELECT 1 FROM event WHERE type='ci'") ){
g.zOpenRevision = db_get("main-branch", 0);
}
}
if( g.zOpenRevision ){
/* Since the repository is open and we know the revision now,
** refresh the allow-symlinks flag. Since neither the local
** checkout nor the configuration database are open at this
|
| ︙ | ︙ |
Changes to src/diffcmd.c.
| ︙ | ︙ | |||
705 706 707 708 709 710 711 |
g.nameOfExe, zSubCmd);
find_option("html",0,0);
find_option("side-by-side","y",0);
find_option("internal","i",0);
find_option("verbose","v",0);
zTclsh = find_option("tclsh",0,1);
if( zTclsh==0 ){
| | | 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 |
g.nameOfExe, zSubCmd);
find_option("html",0,0);
find_option("side-by-side","y",0);
find_option("internal","i",0);
find_option("verbose","v",0);
zTclsh = find_option("tclsh",0,1);
if( zTclsh==0 ){
zTclsh = db_get("tclsh",0);
}
/* The undocumented --script FILENAME option causes the Tk script to
** be written into the FILENAME instead of being run. This is used
** for testing and debugging. */
zTempFile = find_option("script",0,1);
for(i=firstArg; i<g.argc; i++){
const char *z = g.argv[i];
|
| ︙ | ︙ |
Changes to src/info.c.
| ︙ | ︙ | |||
882 883 884 885 886 887 888 |
}
@ %s(zLinks)</td></tr>
}
if( g.perm.Hyperlink ){
@ <tr><th>Other Links:</th>
@ <td>
| | | 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 |
}
@ %s(zLinks)</td></tr>
}
if( g.perm.Hyperlink ){
@ <tr><th>Other Links:</th>
@ <td>
if( fossil_strcmp(zBrName, db_get("main-branch",0))!=0 ){
@ %z(href("%R/vdiff?branch=%!S", zUuid))branch diff</a> |
}
@ %z(href("%R/artifact/%!S",zUuid))manifest</a>
@ | %z(href("%R/ci_tags/%!S",zUuid))tags</a>
if( g.perm.Admin ){
@ | %z(href("%R/mlink?ci=%!S",zUuid))mlink table</a>
}
|
| ︙ | ︙ | |||
3006 3007 3008 3009 3010 3011 3012 |
@ Cancel tag <b>%h(&zTagName[4])</b></label>
}
}
db_finalize(&q);
@ </td></tr>
if( !zBranchName ){
| | | 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 |
@ Cancel tag <b>%h(&zTagName[4])</b></label>
}
}
db_finalize(&q);
@ </td></tr>
if( !zBranchName ){
zBranchName = db_get("main-branch", 0);
}
if( !zNewBranch || !zNewBranch[0]){
zNewBranch = zBranchName;
}
@ <tr><th align="right" valign="top">Branching:</th>
@ <td valign="top">
@ <label><input id="newbr" type="checkbox" name="newbr" \
|
| ︙ | ︙ |
Changes to src/loadctrl.c.
| ︙ | ︙ | |||
47 48 49 50 51 52 53 |
}
/*
** Abort the current operation of the load average of the host computer
** is too high.
*/
void load_control(void){
| | | 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
}
/*
** Abort the current operation of the load average of the host computer
** is too high.
*/
void load_control(void){
double mxLoad = atof(db_get("max-loadavg", 0));
if( mxLoad<=0.0 || mxLoad>=load_average() ) return;
style_header("Server Overload");
@ <h2>The server load is currently too high.
@ Please try again later.</h2>
@ <p>Current load average: %f(load_average()).<br />
@ Load average limit: %f(mxLoad)</p>
|
| ︙ | ︙ |
Changes to src/login.c.
| ︙ | ︙ | |||
512 513 514 515 516 517 518 |
** to self-registered users.
*/
int login_self_register_available(const char *zNeeded){
CapabilityString *pCap;
int rc;
if( !db_get_boolean("self-register",0) ) return 0;
if( zNeeded==0 ) return 1;
| | | 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 |
** to self-registered users.
*/
int login_self_register_available(const char *zNeeded){
CapabilityString *pCap;
int rc;
if( !db_get_boolean("self-register",0) ) return 0;
if( zNeeded==0 ) return 1;
pCap = capability_add(0, db_get("default-perms", 0));
capability_expand(pCap);
rc = capability_has_any(pCap, zNeeded);
capability_free(pCap);
return rc;
}
/*
|
| ︙ | ︙ | |||
1160 1161 1162 1163 1164 1165 1166 |
*/
zPublicPages = db_get("public-pages",0);
if( zPublicPages!=0 ){
Glob *pGlob = glob_create(zPublicPages);
const char *zUri = PD("REQUEST_URI","");
zUri += (int)strlen(g.zTop);
if( glob_match(pGlob, zUri) ){
| | | 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 |
*/
zPublicPages = db_get("public-pages",0);
if( zPublicPages!=0 ){
Glob *pGlob = glob_create(zPublicPages);
const char *zUri = PD("REQUEST_URI","");
zUri += (int)strlen(g.zTop);
if( glob_match(pGlob, zUri) ){
login_set_capabilities(db_get("default-perms", 0), 0);
}
glob_free(pGlob);
}
}
/*
** Memory of settings
|
| ︙ | ︙ | |||
1502 1503 1504 1505 1506 1507 1508 |
if( !db_get_boolean("self-register", 0) ){
style_header("Registration not possible");
@ <p>This project does not allow user self-registration. Please contact the
@ project administrator to obtain an account.</p>
style_footer();
return;
}
| | | 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 |
if( !db_get_boolean("self-register", 0) ){
style_header("Registration not possible");
@ <p>This project does not allow user self-registration. Please contact the
@ project administrator to obtain an account.</p>
style_footer();
return;
}
zPerms = db_get("default-perms", 0);
/* Prompt the user for email alerts if this repository is configured for
** email alerts and if the default permissions include "7" */
canDoAlerts = alert_tables_exist() && db_int(0,
"SELECT fullcap(%Q) GLOB '*7*'", zPerms
);
doAlerts = canDoAlerts && atoi(PD("alerts","1"))!=0;
|
| ︙ | ︙ |
Changes to src/security_audit.c.
| ︙ | ︙ | |||
126 127 128 129 130 131 132 |
** "Private" repos require (non-anonymous) login to access all content,
** though some content may be accessible anonymously.
*/
zAnonCap = db_text("", "SELECT fullcap(NULL)");
zPubPages = db_get("public-pages",0);
if( db_get_boolean("self-register",0) ){
CapabilityString *pCap;
| | | 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
** "Private" repos require (non-anonymous) login to access all content,
** though some content may be accessible anonymously.
*/
zAnonCap = db_text("", "SELECT fullcap(NULL)");
zPubPages = db_get("public-pages",0);
if( db_get_boolean("self-register",0) ){
CapabilityString *pCap;
pCap = capability_add(0, db_get("default-perms",0));
capability_expand(pCap);
zSelfCap = capability_string(pCap);
capability_free(pCap);
}else{
zSelfCap = fossil_strdup("");
}
if( hasAnyCap(zAnonCap,"as") ){
|
| ︙ | ︙ | |||
438 439 440 441 442 443 444 |
@ <li><p>
@ Unable to get the system load average. This can prevent Fossil
@ from throttling expensive operations during peak demand.
@ <p>If running in a chroot jail on Linux, verify that the /proc
@ filesystem is mounted within the jail, so that the load average
@ can be obtained from the /proc/loadavg file.
}else {
| | | 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 |
@ <li><p>
@ Unable to get the system load average. This can prevent Fossil
@ from throttling expensive operations during peak demand.
@ <p>If running in a chroot jail on Linux, verify that the /proc
@ filesystem is mounted within the jail, so that the load average
@ can be obtained from the /proc/loadavg file.
}else {
double r = atof(db_get("max-loadavg", 0));
if( r<=0.0 ){
@ <li><p>
@ Load average limiting is turned off. This can cause the server
@ to bog down if many requests for expensive services (such as
@ large diffs or tarballs) arrive at about the same time.
@ <p>To fix this, set the "Server Load Average Limit" on the
@ <a href="setup_access">Access Control</a> page to approximately
|
| ︙ | ︙ |
Changes to src/sync.c.
| ︙ | ︙ | |||
43 44 45 46 47 48 49 |
int autosync(int flags){
const char *zAutosync;
int rc;
int configSync = 0; /* configuration changes transferred */
if( g.fNoSync ){
return 0;
}
| | > | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
int autosync(int flags){
const char *zAutosync;
int rc;
int configSync = 0; /* configuration changes transferred */
if( g.fNoSync ){
return 0;
}
zAutosync = db_get("autosync", 0);
if( zAutosync==0 ) zAutosync = "on"; /* defend against misconfig */
if( is_false(zAutosync) ) return 0;
if( db_get_boolean("dont-push",0) || fossil_strncmp(zAutosync,"pull",4)==0 ){
flags &= ~SYNC_CKIN_LOCK;
if( flags & SYNC_PUSH ) return 0;
}
url_parse(0, URL_REMEMBER);
if( g.url.protocol==0 ) return 0;
|
| ︙ | ︙ |
Changes to src/update.c.
| ︙ | ︙ | |||
675 676 677 678 679 680 681 |
int vid;
Manifest *pManifest;
/* Determine the check-in manifest artifact ID. Panic on failure. */
if( zRevision ){
vid = name_to_typed_rid(zRevision, "ci");
}else if( !g.localOpen ){
| | | 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 |
int vid;
Manifest *pManifest;
/* Determine the check-in manifest artifact ID. Panic on failure. */
if( zRevision ){
vid = name_to_typed_rid(zRevision, "ci");
}else if( !g.localOpen ){
vid = name_to_typed_rid(db_get("main-branch", 0), "ci");
}else{
vid = db_lget_int("checkout", 0);
if( !is_a_version(vid) ){
zRevision = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", vid);
if( zRevision ){
fossil_fatal("checkout artifact is not a check-in: %s", zRevision);
}else{
|
| ︙ | ︙ |
Changes to src/user.c.
| ︙ | ︙ | |||
363 364 365 366 367 368 369 |
if( g.argc<3 ){
usage("capabilities|default|list|new|password ...");
}
n = strlen(g.argv[2]);
if( n>=2 && strncmp(g.argv[2],"new",n)==0 ){
Blob passwd, login, caps, contact;
char *zPw;
| | | 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 |
if( g.argc<3 ){
usage("capabilities|default|list|new|password ...");
}
n = strlen(g.argv[2]);
if( n>=2 && strncmp(g.argv[2],"new",n)==0 ){
Blob passwd, login, caps, contact;
char *zPw;
blob_init(&caps, db_get("default-perms", 0), -1);
if( g.argc>=4 ){
blob_init(&login, g.argv[3], -1);
}else{
prompt_user("login: ", &login);
}
if( db_exists("SELECT 1 FROM user WHERE login=%B", &login) ){
|
| ︙ | ︙ |