Fossil SCM

Simpler: In raw mode, each entry outputs a single line, so LIMIT can do the job as well.

jan.nijtmans 2013-10-21 08:45 UTC limit-tag
Commit 59da96864528f43e40bf8489b25980475025908f
1 file changed +3 -5
+3 -5
--- src/tag.c
+++ src/tag.c
@@ -437,26 +437,24 @@
437437
if( zType==0 || zType[0]==0 ) zType = "*";
438438
if( g.argc!=4 ){
439439
usage("find ?--raw? ?-t|--type TYPE? ?-n|--limit #? TAGNAME");
440440
}
441441
if( fRaw ){
442
- int nLine = 0;
443442
blob_appendf(&sql,
444443
"SELECT blob.uuid FROM tagxref, blob"
445444
" WHERE tagid=(SELECT tagid FROM tag WHERE tagname=%Q)"
446445
" AND tagxref.tagtype>0"
447446
" AND blob.rid=tagxref.rid",
448447
g.argv[3]
449448
);
450
- if( nFindLimit>0 ){
451
- blob_appendf(&sql, " LIMIT %d", nFindLimit);
449
+ if( nFindLimit!=0 ){
450
+ blob_appendf(&sql, " LIMIT %d", nFindLimit<0?-nFindLimit:nFindLimit);
452451
}
453452
db_prepare(&q, "%s", blob_str(&sql));
454453
blob_reset(&sql);
455
- while( db_step(&q)==SQLITE_ROW && (nFindLimit<=0 || nLine<=nFindLimit)){
454
+ while( db_step(&q)==SQLITE_ROW){
456455
fossil_print("%s\n", db_column_text(&q, 0));
457
- nLine++;
458456
}
459457
db_finalize(&q);
460458
}else{
461459
int tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname='sym-%q'",
462460
g.argv[3]);
463461
--- src/tag.c
+++ src/tag.c
@@ -437,26 +437,24 @@
437 if( zType==0 || zType[0]==0 ) zType = "*";
438 if( g.argc!=4 ){
439 usage("find ?--raw? ?-t|--type TYPE? ?-n|--limit #? TAGNAME");
440 }
441 if( fRaw ){
442 int nLine = 0;
443 blob_appendf(&sql,
444 "SELECT blob.uuid FROM tagxref, blob"
445 " WHERE tagid=(SELECT tagid FROM tag WHERE tagname=%Q)"
446 " AND tagxref.tagtype>0"
447 " AND blob.rid=tagxref.rid",
448 g.argv[3]
449 );
450 if( nFindLimit>0 ){
451 blob_appendf(&sql, " LIMIT %d", nFindLimit);
452 }
453 db_prepare(&q, "%s", blob_str(&sql));
454 blob_reset(&sql);
455 while( db_step(&q)==SQLITE_ROW && (nFindLimit<=0 || nLine<=nFindLimit)){
456 fossil_print("%s\n", db_column_text(&q, 0));
457 nLine++;
458 }
459 db_finalize(&q);
460 }else{
461 int tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname='sym-%q'",
462 g.argv[3]);
463
--- src/tag.c
+++ src/tag.c
@@ -437,26 +437,24 @@
437 if( zType==0 || zType[0]==0 ) zType = "*";
438 if( g.argc!=4 ){
439 usage("find ?--raw? ?-t|--type TYPE? ?-n|--limit #? TAGNAME");
440 }
441 if( fRaw ){
 
442 blob_appendf(&sql,
443 "SELECT blob.uuid FROM tagxref, blob"
444 " WHERE tagid=(SELECT tagid FROM tag WHERE tagname=%Q)"
445 " AND tagxref.tagtype>0"
446 " AND blob.rid=tagxref.rid",
447 g.argv[3]
448 );
449 if( nFindLimit!=0 ){
450 blob_appendf(&sql, " LIMIT %d", nFindLimit<0?-nFindLimit:nFindLimit);
451 }
452 db_prepare(&q, "%s", blob_str(&sql));
453 blob_reset(&sql);
454 while( db_step(&q)==SQLITE_ROW){
455 fossil_print("%s\n", db_column_text(&q, 0));
 
456 }
457 db_finalize(&q);
458 }else{
459 int tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname='sym-%q'",
460 g.argv[3]);
461

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button