Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Fix the display of all web-pages which contain annotation- or diff-like sections for the case windows-style line endings are used: The CR's should be stripped in those cases. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
1472cd811f29b1a5ebd8050b2d135fa5 |
| User & Date: | jan.nijtmans 2014-03-16 10:33:47.762 |
Context
|
2014-03-16
| ||
| 17:06 | Removed some report format help text which refers to non-/no-longer existent SQL functions wiki() and tkt(). ... (check-in: 6bbcfec27b user: stephan tags: trunk) | |
| 10:33 | Fix the display of all web-pages which contain annotation- or diff-like sections for the case windows-style line endings are used: The CR's should be stripped in those cases. ... (check-in: 1472cd811f user: jan.nijtmans tags: trunk) | |
| 10:17 | Restructured the wiki format parser's ATTR_ and AMSK_ macros to enums to simplify extension. Tried to add data-* attribute support but assumptions about attributes in the parser make it not worth the effort. ... (check-in: 0652717eb0 user: stephan tags: trunk) | |
|
2014-03-14
| ||
| 20:49 | Fix the display of unified-diff lines on web pages when the files being compared have windows-style line endings. ... (check-in: e2e8531ba7 user: drh tags: trunk) | |
Changes
Changes to src/diff.c.
| ︙ | ︙ | |||
38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
#define DIFF_BRIEF ((u64)0x10000000) /* Show filenames only */
#define DIFF_HTML ((u64)0x20000000) /* Render for HTML */
#define DIFF_LINENO ((u64)0x40000000) /* Show line numbers */
#define DIFF_NOOPT (((u64)0x01)<<32) /* Suppress optimizations (debug) */
#define DIFF_INVERT (((u64)0x02)<<32) /* Invert the diff (debug) */
#define DIFF_CONTEXT_EX (((u64)0x04)<<32) /* Use context even if zero */
#define DIFF_NOTTOOBIG (((u64)0x08)<<32) /* Only display if not too big */
/*
** These error messages are shared in multiple locations. They are defined
** here for consistency.
*/
#define DIFF_CANNOT_COMPUTE_BINARY \
"cannot compute difference between binary files\n"
| > | 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
#define DIFF_BRIEF ((u64)0x10000000) /* Show filenames only */
#define DIFF_HTML ((u64)0x20000000) /* Render for HTML */
#define DIFF_LINENO ((u64)0x40000000) /* Show line numbers */
#define DIFF_NOOPT (((u64)0x01)<<32) /* Suppress optimizations (debug) */
#define DIFF_INVERT (((u64)0x02)<<32) /* Invert the diff (debug) */
#define DIFF_CONTEXT_EX (((u64)0x04)<<32) /* Use context even if zero */
#define DIFF_NOTTOOBIG (((u64)0x08)<<32) /* Only display if not too big */
#define DIFF_STRIP_EOLCR (((u64)0x10)<<32) /* Strip trailing CR */
/*
** These error messages are shared in multiple locations. They are defined
** here for consistency.
*/
#define DIFF_CANNOT_COMPUTE_BINARY \
"cannot compute difference between binary files\n"
|
| ︙ | ︙ | |||
163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
return a;
}
/* Fill in the array */
for(i=0; i<nLine; i++){
for(j=0; z[j] && z[j]!='\n'; j++){}
a[i].z = z;
a[i].n = k = j;
s = 0;
if( diffFlags & DIFF_IGNORE_EOLWS ){
while( k>0 && fossil_isspace(z[k-1]) ){ k--; }
}
if( (diffFlags & DIFF_IGNORE_ALLWS)==DIFF_IGNORE_ALLWS ){
while( s<k && fossil_isspace(z[s]) ){ s++; }
| > > > | 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 |
return a;
}
/* Fill in the array */
for(i=0; i<nLine; i++){
for(j=0; z[j] && z[j]!='\n'; j++){}
a[i].z = z;
if( diffFlags & DIFF_STRIP_EOLCR ){
if( k>0 && z[k-1]=='\r' ){ k--; }
}
a[i].n = k = j;
s = 0;
if( diffFlags & DIFF_IGNORE_EOLWS ){
while( k>0 && fossil_isspace(z[k-1]) ){ k--; }
}
if( (diffFlags & DIFF_IGNORE_ALLWS)==DIFF_IGNORE_ALLWS ){
while( s<k && fossil_isspace(z[s]) ){ s++; }
|
| ︙ | ︙ | |||
225 226 227 228 229 230 231 |
char cPrefix, /* One of " ", "+", or "-" */
DLine *pLine, /* The line to be output */
int html, /* True if generating HTML. False for plain text */
ReCompiled *pRe /* Colorize only if line matches this Regex */
){
blob_append(pOut, &cPrefix, 1);
if( html ){
| < < < | | 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 |
char cPrefix, /* One of " ", "+", or "-" */
DLine *pLine, /* The line to be output */
int html, /* True if generating HTML. False for plain text */
ReCompiled *pRe /* Colorize only if line matches this Regex */
){
blob_append(pOut, &cPrefix, 1);
if( html ){
if( pRe && re_dline_match(pRe, pLine, 1)==0 ){
cPrefix = ' ';
}else if( cPrefix=='+' ){
blob_append(pOut, "<span class=\"diffadd\">", -1);
}else if( cPrefix=='-' ){
blob_append(pOut, "<span class=\"diffrm\">", -1);
}
htmlize_to_blob(pOut, pLine->z, pLine->n);
if( cPrefix!=' ' ){
blob_append(pOut, "</span>", -1);
}
}else{
blob_append(pOut, pLine->z, pLine->n);
}
blob_append(pOut, "\n", 1);
|
| ︙ | ︙ | |||
1955 1956 1957 1958 1959 1960 1961 |
** of the following structure.
*/
typedef struct Annotator Annotator;
struct Annotator {
DContext c; /* The diff-engine context */
struct AnnLine { /* Lines of the original files... */
const char *z; /* The text of the line */
| | | 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 |
** of the following structure.
*/
typedef struct Annotator Annotator;
struct Annotator {
DContext c; /* The diff-engine context */
struct AnnLine { /* Lines of the original files... */
const char *z; /* The text of the line */
short int n; /* Number of bytes (omitting trailing \n) */
short int iVers; /* Level at which tag was set */
} *aOrig;
int nOrig; /* Number of elements in aOrig[] */
int nVers; /* Number of versions analyzed */
int bLimit; /* True if the iLimit was reached */
struct AnnVers {
const char *zFUuid; /* File being analyzed */
|
| ︙ | ︙ | |||
2169 2170 2171 2172 2173 2174 2175 |
** limit=N Limit the search depth to N ancestors
*/
void annotation_page(void){
int mid;
int fnid;
int i;
int iLimit; /* Depth limit */
| | | 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 |
** limit=N Limit the search depth to N ancestors
*/
void annotation_page(void){
int mid;
int fnid;
int i;
int iLimit; /* Depth limit */
u64 annFlags = (ANN_FILE_ANCEST|DIFF_STRIP_EOLCR);
int showLog = 0; /* True to display the log */
int ignoreWs = 0; /* Ignore whitespace */
const char *zFilename; /* Name of file to annotate */
const char *zCI; /* The check-in containing zFilename */
Annotator ann;
HQuery url;
struct AnnVers *p;
|
| ︙ | ︙ | |||
2405 2406 2407 2408 2409 2410 2411 |
mid = db_int(0, "SELECT mlink.mid FROM mlink, ancestor "
" WHERE mlink.fid=%d AND mlink.fnid=%d AND mlink.mid=ancestor.rid"
" ORDER BY ancestor.generation ASC LIMIT 1",
fid, fnid);
if( mid==0 ){
fossil_fatal("unable to find manifest");
}
| | | 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 |
mid = db_int(0, "SELECT mlink.mid FROM mlink, ancestor "
" WHERE mlink.fid=%d AND mlink.fnid=%d AND mlink.mid=ancestor.rid"
" ORDER BY ancestor.generation ASC LIMIT 1",
fid, fnid);
if( mid==0 ){
fossil_fatal("unable to find manifest");
}
annFlags |= (ANN_FILE_ANCEST|DIFF_STRIP_EOLCR);
annotate_file(&ann, fnid, mid, iLimit, annFlags);
if( showLog ){
struct AnnVers *p;
for(p=ann.aVers, i=0; i<ann.nVers; i++, p++){
fossil_print("version %3d: %s %.10s file %.10s\n",
i+1, p->zDate, p->zMUuid, p->zFUuid);
}
|
| ︙ | ︙ |
Changes to src/info.c.
| ︙ | ︙ | |||
468 469 470 471 472 473 474 |
x = atoi(PD("dc","7"));
if( x<0 || x>DIFF_CONTEXT_MASK ) x = DIFF_CONTEXT_MASK;
diffFlags += x;
/* The "noopt" parameter disables diff optimization */
if( PD("noopt",0)!=0 ) diffFlags |= DIFF_NOOPT;
}
| | | 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 |
x = atoi(PD("dc","7"));
if( x<0 || x>DIFF_CONTEXT_MASK ) x = DIFF_CONTEXT_MASK;
diffFlags += x;
/* The "noopt" parameter disables diff optimization */
if( PD("noopt",0)!=0 ) diffFlags |= DIFF_NOOPT;
}
return diffFlags|DIFF_STRIP_EOLCR;
}
/*
** WEBPAGE: vinfo
** WEBPAGE: ci
** URL: /ci?name=RID|ARTIFACTID
**
|
| ︙ | ︙ |