Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | If the diff type (unified vs. side-by-side) is not specified by a query parameter or cookie, then determine the diff type based on the "preferred-diff-type" setting, if there is one, or on a guess whether or not the requesting agent is a mobile device based on the User-Agent parameter in the HTTP request. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
29bab2748bdb775fe85cf0e3f6935bc0 |
| User & Date: | drh 2021-03-01 20:37:45.452 |
Context
|
2021-03-01
| ||
| 20:54 | Change the algorithm for detecting when a user agent is a narrow-screen mobile device to the algorithm recommanded at [https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#mobile_device_detection]. ... (check-in: 4de677dcc3 user: drh tags: trunk) | |
| 20:37 | If the diff type (unified vs. side-by-side) is not specified by a query parameter or cookie, then determine the diff type based on the "preferred-diff-type" setting, if there is one, or on a guess whether or not the requesting agent is a mobile device based on the User-Agent parameter in the HTTP request. ... (check-in: 29bab2748b user: drh tags: trunk) | |
| 17:46 | Update the built-in SQLite to the first 3.35.0 beta, for testing of SQLite. ... (check-in: 722073a157 user: drh tags: trunk) | |
Changes
Changes to src/info.c.
| ︙ | ︙ | |||
655 656 657 658 659 660 661 |
" FROM blob, event"
" WHERE blob.rid=%d"
" AND event.objid=%d",
rid, rid
);
zBrName = branch_of_rid(rid);
| < | | 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 |
" FROM blob, event"
" WHERE blob.rid=%d"
" AND event.objid=%d",
rid, rid
);
zBrName = branch_of_rid(rid);
diffType = preferred_diff_type();
if( db_step(&q1)==SQLITE_ROW ){
const char *zUuid = db_column_text(&q1, 0);
int nUuid = db_column_bytes(&q1, 0);
char *zEUser, *zEComment;
const char *zUser;
const char *zOrigUser;
const char *zComment;
|
| ︙ | ︙ | |||
1183 1184 1185 1186 1187 1188 1189 |
char *zQuery;
char *zMergeOrigin = 0;
ReCompiled *pRe = 0;
login_check_credentials();
if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
login_anonymous_available();
load_control();
| < | | 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 |
char *zQuery;
char *zMergeOrigin = 0;
ReCompiled *pRe = 0;
login_check_credentials();
if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
login_anonymous_available();
load_control();
diffType = preferred_diff_type();
cookie_render();
zRe = P("regex");
if( zRe ) re_compile(&pRe, zRe, 0);
zBranch = P("branch");
if( zBranch && zBranch[0]==0 ) zBranch = 0;
if( zBranch ){
zQuery = mprintf("branch=%T", zBranch);
|
| ︙ | ︙ | |||
1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 |
blob_appendf(pDownloadName, "%S.txt", zUuid);
}
tag_private_status(rid);
}
return objType;
}
/*
** WEBPAGE: fdiff
** URL: fdiff?v1=HASH&v2=HASH
**
** Two arguments, v1 and v2, identify the artifacts to be diffed.
** Show diff side by side unless sbs is 0. Generate plain text if
| > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 |
blob_appendf(pDownloadName, "%S.txt", zUuid);
}
tag_private_status(rid);
}
return objType;
}
/*
** SETTING: preferred-diff-type width=16 default=0
**
** Determines the preferred diff format on web pages if the format is not
** otherwise specified, for example by a query parameter or cookie.
** The value may be 1 to mean unified diff, or 2 to mean side-by-side
** diff.
*/
/*
** Return the preferred diff type.
**
** 0 = No diff at all.
** 1 = unified diff
** 2 = side-by-side diff
**
** To determine the preferred diff type, the following values are
** consulted in the order shown. The first available source wins.
**
** * The "diff" query parameter
** * The "diff" field of the user display cookie
** * The "preferred-diff-type" setting
** * 1 for mobile and 2 for desktop, based on the UserAgent
*/
int preferred_diff_type(void){
int dflt;
char zDflt[2];
dflt = db_get_int("preferred-diff-type",-99);
if( dflt<=0 ) dflt = user_agent_is_likely_mobile() ? 1 : 2;
zDflt[0] = dflt + '0';
zDflt[1] = 0;
cookie_link_parameter("diff","diff", zDflt);
return atoi(PD("diff",zDflt));
}
/*
** WEBPAGE: fdiff
** URL: fdiff?v1=HASH&v2=HASH
**
** Two arguments, v1 and v2, identify the artifacts to be diffed.
** Show diff side by side unless sbs is 0. Generate plain text if
|
| ︙ | ︙ | |||
1671 1672 1673 1674 1675 1676 1677 |
ReCompiled *pRe = 0;
u64 diffFlags;
u32 objdescFlags = 0;
int verbose = PB("verbose");
login_check_credentials();
if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
| < | | 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 |
ReCompiled *pRe = 0;
u64 diffFlags;
u32 objdescFlags = 0;
int verbose = PB("verbose");
login_check_credentials();
if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
diffType = preferred_diff_type();
cookie_render();
if( P("from") && P("to") ){
v1 = artifact_from_ci_and_filename("from");
v2 = artifact_from_ci_and_filename("to");
}else{
Stmt q;
v1 = name_to_rid_www("v1");
|
| ︙ | ︙ |
Changes to src/login.c.
| ︙ | ︙ | |||
424 425 426 427 428 429 430 431 432 433 434 435 436 437 | } if( strncmp(zAgent, "Opera/", 6)==0 ) return 1; if( strncmp(zAgent, "Safari/", 7)==0 ) return 1; if( strncmp(zAgent, "Lynx/", 5)==0 ) return 1; if( strncmp(zAgent, "NetSurf/", 8)==0 ) return 1; return 0; } /* ** COMMAND: test-ishuman ** ** Read lines of text from standard input. Interpret each line of text ** as a User-Agent string from an HTTP header. Label each line as HUMAN ** or ROBOT. | > > > > > > > > > > > > > > > > > | 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 |
}
if( strncmp(zAgent, "Opera/", 6)==0 ) return 1;
if( strncmp(zAgent, "Safari/", 7)==0 ) return 1;
if( strncmp(zAgent, "Lynx/", 5)==0 ) return 1;
if( strncmp(zAgent, "NetSurf/", 8)==0 ) return 1;
return 0;
}
/*
** Make a guess at whether or not the requestor is a mobile device or
** a desktop device (narrow screen vs. wide screen) based the HTTP_USER_AGENT
** parameter. Return true for mobile and false for desktop.
**
** Caution: This is only a guess.
*/
int user_agent_is_likely_mobile(void){
const char *zAgent = P("HTTP_USER_AGENT");
if( zAgent==0 ) return 0;
if( sqlite3_strglob("*droid*", zAgent)==0 ) return 1;
if( sqlite3_strglob("*mobile*", zAgent)==0 ) return 1;
if( sqlite3_strglob("*iOS*", zAgent)==0 ) return 1;
if( sqlite3_strglob("*iPhone*", zAgent)==0 ) return 1;
return 0;
}
/*
** COMMAND: test-ishuman
**
** Read lines of text from standard input. Interpret each line of text
** as a User-Agent string from an HTTP header. Label each line as HUMAN
** or ROBOT.
|
| ︙ | ︙ |