435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
|
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
|
-
-
-
+
+
-
+
-
|
const char *zType = find_option("type","t",1);
Blob sql = empty_blob;
if( zType==0 || zType[0]==0 ) zType = "*";
if( g.argc!=4 ){
usage("find ?--raw? ?-t|--type TYPE? ?-n|--limit #? TAGNAME");
}
if( fRaw ){
int nLine = 0;
blob_appendf(&sql,
"SELECT blob.uuid FROM tagxref, blob"
" WHERE tagid=(SELECT tagid FROM tag WHERE tagname=%Q)"
" AND tagxref.tagtype>0"
" AND blob.rid=tagxref.rid",
g.argv[3]
);
if( nFindLimit>0 ){
blob_appendf(&sql, " LIMIT %d", nFindLimit);
if( nFindLimit!=0 ){
blob_appendf(&sql, " LIMIT %d", nFindLimit<0?-nFindLimit:nFindLimit);
}
db_prepare(&q, "%s", blob_str(&sql));
blob_reset(&sql);
while( db_step(&q)==SQLITE_ROW && (nFindLimit<=0 || nLine<=nFindLimit)){
while( db_step(&q)==SQLITE_ROW){
fossil_print("%s\n", db_column_text(&q, 0));
nLine++;
}
db_finalize(&q);
}else{
int tagid = db_int(0, "SELECT tagid FROM tag WHERE tagname='sym-%q'",
g.argv[3]);
if( tagid>0 ){
blob_appendf(&sql,
|