574
575
576
577
578
579
580
581
582
583
584
585
586
587
|
** to the top-level of the repository.
*/
void doc_page(void){
const char *zName; /* Argument to the /doc page */
const char *zOrigName = "?"; /* Original document name */
const char *zMime; /* Document MIME type */
char *zCheckin = "tip"; /* The check-in holding the document */
int vid = 0; /* Artifact of check-in */
int rid = 0; /* Artifact of file */
int i; /* Loop counter */
Blob filebody; /* Content of the documentation file */
Blob title; /* Document title */
int nMiss = (-1); /* Failed attempts to find the document */
int isUV = g.zPath[0]=='u'; /* True for /uv. False for /doc */
|
>
|
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
|
** to the top-level of the repository.
*/
void doc_page(void){
const char *zName; /* Argument to the /doc page */
const char *zOrigName = "?"; /* Original document name */
const char *zMime; /* Document MIME type */
char *zCheckin = "tip"; /* The check-in holding the document */
char *zPathSuffix = ""; /* Text to append to g.zPath */
int vid = 0; /* Artifact of check-in */
int rid = 0; /* Artifact of file */
int i; /* Loop counter */
Blob filebody; /* Content of the documentation file */
Blob title; /* Document title */
int nMiss = (-1); /* Failed attempts to find the document */
int isUV = g.zPath[0]=='u'; /* True for /uv. False for /doc */
|
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
|
assert( nMiss>=0 && nMiss<count(azSuffix) );
zName = azSuffix[nMiss];
}else if( !isUV ){
zName += i;
}
while( zName[0]=='/' ){ zName++; }
if( isUV ){
g.zPath = mprintf("%s/%s", g.zPath, zName);
}else{
g.zPath = mprintf("%s/%s/%s", g.zPath, zCheckin, zName);
}
if( nMiss==0 ) zOrigName = zName;
if( !file_is_simple_pathname(zName, 1) ){
if( sqlite3_strglob("*/", zName)==0 ){
assert( nMiss>=0 && nMiss<count(azSuffix) );
zName = mprintf("%s%s", zName, azSuffix[nMiss]);
if( !file_is_simple_pathname(zName, 1) ){
|
|
|
|
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
|
assert( nMiss>=0 && nMiss<count(azSuffix) );
zName = azSuffix[nMiss];
}else if( !isUV ){
zName += i;
}
while( zName[0]=='/' ){ zName++; }
if( isUV ){
zPathSuffix = fossil_strdup(zName);
}else{
zPathSuffix = mprintf("%s/%s", zCheckin, zName);
}
if( nMiss==0 ) zOrigName = zName;
if( !file_is_simple_pathname(zName, 1) ){
if( sqlite3_strglob("*/", zName)==0 ){
assert( nMiss>=0 && nMiss<count(azSuffix) );
zName = mprintf("%s%s", zName, azSuffix[nMiss]);
if( !file_is_simple_pathname(zName, 1) ){
|
655
656
657
658
659
660
661
662
663
664
665
666
667
668
|
}
fossil_free(zFullpath);
}else{
vid = name_to_typed_rid(zCheckin, "ci");
rid = doc_load_content(vid, zName, &filebody);
}
}
if( rid==0 ) goto doc_not_found;
blob_to_utf8_no_bom(&filebody, 0);
/* The file is now contained in the filebody blob. Deliver the
** file to the user
*/
zMime = nMiss==0 ? P("mimetype") : 0;
|
>
|
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
|
}
fossil_free(zFullpath);
}else{
vid = name_to_typed_rid(zCheckin, "ci");
rid = doc_load_content(vid, zName, &filebody);
}
}
g.zPath = mprintf("%s/%s", g.zPath, zPathSuffix);
if( rid==0 ) goto doc_not_found;
blob_to_utf8_no_bom(&filebody, 0);
/* The file is now contained in the filebody blob. Deliver the
** file to the user
*/
zMime = nMiss==0 ? P("mimetype") : 0;
|