Fossil SCM
timeline.rss now supports n=### param, like the /timeline page does. This feature is arguable (could lead to DoS), but i want it for harvesting an activity timeline which includes older commits.
Commit
65a46db339774e7854a54644f16d0a5665aad3dd
Parent
e964b55dd6047de…
1 file changed
+3
-2
+3
-2
| --- src/rss.c | ||
| +++ src/rss.c | ||
| @@ -35,10 +35,11 @@ | ||
| 35 | 35 | Stmt q; |
| 36 | 36 | int nLine=0; |
| 37 | 37 | char *zPubDate, *zProjectName, *zProjectDescr, *zFreeProjectName=0; |
| 38 | 38 | Blob bSQL; |
| 39 | 39 | const char *zType = PD("y","all"); /* Type of events. All if NULL */ |
| 40 | + int nLimit = atoi(PD("n","20")); | |
| 40 | 41 | const char zSQL1[] = |
| 41 | 42 | @ SELECT |
| 42 | 43 | @ blob.rid, |
| 43 | 44 | @ uuid, |
| 44 | 45 | @ event.mtime, |
| @@ -55,11 +56,11 @@ | ||
| 55 | 56 | return; |
| 56 | 57 | } |
| 57 | 58 | |
| 58 | 59 | blob_zero(&bSQL); |
| 59 | 60 | blob_append( &bSQL, zSQL1, -1 ); |
| 60 | - | |
| 61 | + | |
| 61 | 62 | if( zType[0]!='a' ){ |
| 62 | 63 | if( zType[0]=='c' && !g.okRead ) zType = "x"; |
| 63 | 64 | if( zType[0]=='w' && !g.okRdWiki ) zType = "x"; |
| 64 | 65 | if( zType[0]=='t' && !g.okRdTkt ) zType = "x"; |
| 65 | 66 | blob_appendf(&bSQL, " AND event.type=%Q", zType); |
| @@ -108,11 +109,11 @@ | ||
| 108 | 109 | @ <description>%h(zProjectDescr)</description> |
| 109 | 110 | @ <pubDate>%s(zPubDate)</pubDate> |
| 110 | 111 | @ <generator>Fossil version %s(MANIFEST_VERSION) %s(MANIFEST_DATE)</generator> |
| 111 | 112 | db_prepare(&q, blob_str(&bSQL)); |
| 112 | 113 | blob_reset( &bSQL ); |
| 113 | - while( db_step(&q)==SQLITE_ROW && nLine<=20 ){ | |
| 114 | + while( db_step(&q)==SQLITE_ROW && nLine<=nLimit ){ | |
| 114 | 115 | const char *zId = db_column_text(&q, 1); |
| 115 | 116 | const char *zCom = db_column_text(&q, 3); |
| 116 | 117 | const char *zAuthor = db_column_text(&q, 4); |
| 117 | 118 | char *zPrefix = ""; |
| 118 | 119 | char *zDate; |
| 119 | 120 |
| --- src/rss.c | |
| +++ src/rss.c | |
| @@ -35,10 +35,11 @@ | |
| 35 | Stmt q; |
| 36 | int nLine=0; |
| 37 | char *zPubDate, *zProjectName, *zProjectDescr, *zFreeProjectName=0; |
| 38 | Blob bSQL; |
| 39 | const char *zType = PD("y","all"); /* Type of events. All if NULL */ |
| 40 | const char zSQL1[] = |
| 41 | @ SELECT |
| 42 | @ blob.rid, |
| 43 | @ uuid, |
| 44 | @ event.mtime, |
| @@ -55,11 +56,11 @@ | |
| 55 | return; |
| 56 | } |
| 57 | |
| 58 | blob_zero(&bSQL); |
| 59 | blob_append( &bSQL, zSQL1, -1 ); |
| 60 | |
| 61 | if( zType[0]!='a' ){ |
| 62 | if( zType[0]=='c' && !g.okRead ) zType = "x"; |
| 63 | if( zType[0]=='w' && !g.okRdWiki ) zType = "x"; |
| 64 | if( zType[0]=='t' && !g.okRdTkt ) zType = "x"; |
| 65 | blob_appendf(&bSQL, " AND event.type=%Q", zType); |
| @@ -108,11 +109,11 @@ | |
| 108 | @ <description>%h(zProjectDescr)</description> |
| 109 | @ <pubDate>%s(zPubDate)</pubDate> |
| 110 | @ <generator>Fossil version %s(MANIFEST_VERSION) %s(MANIFEST_DATE)</generator> |
| 111 | db_prepare(&q, blob_str(&bSQL)); |
| 112 | blob_reset( &bSQL ); |
| 113 | while( db_step(&q)==SQLITE_ROW && nLine<=20 ){ |
| 114 | const char *zId = db_column_text(&q, 1); |
| 115 | const char *zCom = db_column_text(&q, 3); |
| 116 | const char *zAuthor = db_column_text(&q, 4); |
| 117 | char *zPrefix = ""; |
| 118 | char *zDate; |
| 119 |
| --- src/rss.c | |
| +++ src/rss.c | |
| @@ -35,10 +35,11 @@ | |
| 35 | Stmt q; |
| 36 | int nLine=0; |
| 37 | char *zPubDate, *zProjectName, *zProjectDescr, *zFreeProjectName=0; |
| 38 | Blob bSQL; |
| 39 | const char *zType = PD("y","all"); /* Type of events. All if NULL */ |
| 40 | int nLimit = atoi(PD("n","20")); |
| 41 | const char zSQL1[] = |
| 42 | @ SELECT |
| 43 | @ blob.rid, |
| 44 | @ uuid, |
| 45 | @ event.mtime, |
| @@ -55,11 +56,11 @@ | |
| 56 | return; |
| 57 | } |
| 58 | |
| 59 | blob_zero(&bSQL); |
| 60 | blob_append( &bSQL, zSQL1, -1 ); |
| 61 | |
| 62 | if( zType[0]!='a' ){ |
| 63 | if( zType[0]=='c' && !g.okRead ) zType = "x"; |
| 64 | if( zType[0]=='w' && !g.okRdWiki ) zType = "x"; |
| 65 | if( zType[0]=='t' && !g.okRdTkt ) zType = "x"; |
| 66 | blob_appendf(&bSQL, " AND event.type=%Q", zType); |
| @@ -108,11 +109,11 @@ | |
| 109 | @ <description>%h(zProjectDescr)</description> |
| 110 | @ <pubDate>%s(zPubDate)</pubDate> |
| 111 | @ <generator>Fossil version %s(MANIFEST_VERSION) %s(MANIFEST_DATE)</generator> |
| 112 | db_prepare(&q, blob_str(&bSQL)); |
| 113 | blob_reset( &bSQL ); |
| 114 | while( db_step(&q)==SQLITE_ROW && nLine<=nLimit ){ |
| 115 | const char *zId = db_column_text(&q, 1); |
| 116 | const char *zCom = db_column_text(&q, 3); |
| 117 | const char *zAuthor = db_column_text(&q, 4); |
| 118 | char *zPrefix = ""; |
| 119 | char *zDate; |
| 120 |