Fossil SCM
Minor cleanup to the implementation of command-line "timeline".
Commit
02920e92b50bdafc72937ee38277829f98ab2c43
Parent
bb8193cfd0770a1…
1 file changed
+10
-8
+10
-8
| --- src/timeline.c | ||
| +++ src/timeline.c | ||
| @@ -894,11 +894,11 @@ | ||
| 894 | 894 | int n, k; |
| 895 | 895 | const char *zCount; |
| 896 | 896 | const char *zType; |
| 897 | 897 | char *zOrigin; |
| 898 | 898 | char *zDate; |
| 899 | - char *zSQL; | |
| 899 | + Blob sql; | |
| 900 | 900 | int objid = 0; |
| 901 | 901 | Blob uuid; |
| 902 | 902 | int mode = 0 ; /* 0:none 1: before 2:after 3:children 4:parents */ |
| 903 | 903 | db_find_and_open_repository(1); |
| 904 | 904 | zCount = find_option("count","n",1); |
| @@ -961,31 +961,33 @@ | ||
| 961 | 961 | if( isIsoDate(zOrigin) ) zShift = ",'+1 day'"; |
| 962 | 962 | } |
| 963 | 963 | zDate = mprintf("(SELECT julianday(%Q%s, 'utc'))", zOrigin, zShift); |
| 964 | 964 | } |
| 965 | 965 | if( mode==0 ) mode = 1; |
| 966 | - zSQL = mprintf("%z AND event.mtime %s %s", | |
| 967 | - timeline_query_for_tty_m(), | |
| 966 | + blob_zero(&sql); | |
| 967 | + blob_append(&sql, timeline_query_for_tty(), -1); | |
| 968 | + blob_appendf(&sql, " AND event.mtime %s %s", | |
| 968 | 969 | (mode==1 || mode==4) ? "<=" : ">=", |
| 969 | 970 | zDate |
| 970 | 971 | ); |
| 972 | + | |
| 971 | 973 | if( mode==3 || mode==4 ){ |
| 972 | 974 | db_multi_exec("CREATE TEMP TABLE ok(rid INTEGER PRIMARY KEY)"); |
| 973 | 975 | if( mode==3 ){ |
| 974 | 976 | compute_descendants(objid, n); |
| 975 | 977 | }else{ |
| 976 | 978 | compute_ancestors(objid, n); |
| 977 | 979 | } |
| 978 | - zSQL = mprintf("%z AND blob.rid IN ok", zSQL); | |
| 980 | + blob_appendf(&sql, " AND blob.rid IN ok"); | |
| 979 | 981 | } |
| 980 | 982 | if( zType && (zType[0]!='a') ){ |
| 981 | - zSQL = mprintf( "%z AND event.type=%Q ", zSQL, zType); | |
| 983 | + blob_appendf(&sql, " AND event.type=%Q ", zType); | |
| 982 | 984 | } |
| 983 | 985 | |
| 984 | - zSQL = mprintf("%z ORDER BY event.mtime DESC", zSQL); | |
| 985 | - db_prepare(&q, zSQL); | |
| 986 | - free( zSQL ); | |
| 986 | + blob_appendf(&sql, " ORDER BY event.mtime DESC"); | |
| 987 | + db_prepare(&q, blob_str(&sql)); | |
| 988 | + blob_reset(&sql); | |
| 987 | 989 | print_timeline(&q, n); |
| 988 | 990 | db_finalize(&q); |
| 989 | 991 | } |
| 990 | 992 | |
| 991 | 993 | /* |
| 992 | 994 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -894,11 +894,11 @@ | |
| 894 | int n, k; |
| 895 | const char *zCount; |
| 896 | const char *zType; |
| 897 | char *zOrigin; |
| 898 | char *zDate; |
| 899 | char *zSQL; |
| 900 | int objid = 0; |
| 901 | Blob uuid; |
| 902 | int mode = 0 ; /* 0:none 1: before 2:after 3:children 4:parents */ |
| 903 | db_find_and_open_repository(1); |
| 904 | zCount = find_option("count","n",1); |
| @@ -961,31 +961,33 @@ | |
| 961 | if( isIsoDate(zOrigin) ) zShift = ",'+1 day'"; |
| 962 | } |
| 963 | zDate = mprintf("(SELECT julianday(%Q%s, 'utc'))", zOrigin, zShift); |
| 964 | } |
| 965 | if( mode==0 ) mode = 1; |
| 966 | zSQL = mprintf("%z AND event.mtime %s %s", |
| 967 | timeline_query_for_tty_m(), |
| 968 | (mode==1 || mode==4) ? "<=" : ">=", |
| 969 | zDate |
| 970 | ); |
| 971 | if( mode==3 || mode==4 ){ |
| 972 | db_multi_exec("CREATE TEMP TABLE ok(rid INTEGER PRIMARY KEY)"); |
| 973 | if( mode==3 ){ |
| 974 | compute_descendants(objid, n); |
| 975 | }else{ |
| 976 | compute_ancestors(objid, n); |
| 977 | } |
| 978 | zSQL = mprintf("%z AND blob.rid IN ok", zSQL); |
| 979 | } |
| 980 | if( zType && (zType[0]!='a') ){ |
| 981 | zSQL = mprintf( "%z AND event.type=%Q ", zSQL, zType); |
| 982 | } |
| 983 | |
| 984 | zSQL = mprintf("%z ORDER BY event.mtime DESC", zSQL); |
| 985 | db_prepare(&q, zSQL); |
| 986 | free( zSQL ); |
| 987 | print_timeline(&q, n); |
| 988 | db_finalize(&q); |
| 989 | } |
| 990 | |
| 991 | /* |
| 992 |
| --- src/timeline.c | |
| +++ src/timeline.c | |
| @@ -894,11 +894,11 @@ | |
| 894 | int n, k; |
| 895 | const char *zCount; |
| 896 | const char *zType; |
| 897 | char *zOrigin; |
| 898 | char *zDate; |
| 899 | Blob sql; |
| 900 | int objid = 0; |
| 901 | Blob uuid; |
| 902 | int mode = 0 ; /* 0:none 1: before 2:after 3:children 4:parents */ |
| 903 | db_find_and_open_repository(1); |
| 904 | zCount = find_option("count","n",1); |
| @@ -961,31 +961,33 @@ | |
| 961 | if( isIsoDate(zOrigin) ) zShift = ",'+1 day'"; |
| 962 | } |
| 963 | zDate = mprintf("(SELECT julianday(%Q%s, 'utc'))", zOrigin, zShift); |
| 964 | } |
| 965 | if( mode==0 ) mode = 1; |
| 966 | blob_zero(&sql); |
| 967 | blob_append(&sql, timeline_query_for_tty(), -1); |
| 968 | blob_appendf(&sql, " AND event.mtime %s %s", |
| 969 | (mode==1 || mode==4) ? "<=" : ">=", |
| 970 | zDate |
| 971 | ); |
| 972 | |
| 973 | if( mode==3 || mode==4 ){ |
| 974 | db_multi_exec("CREATE TEMP TABLE ok(rid INTEGER PRIMARY KEY)"); |
| 975 | if( mode==3 ){ |
| 976 | compute_descendants(objid, n); |
| 977 | }else{ |
| 978 | compute_ancestors(objid, n); |
| 979 | } |
| 980 | blob_appendf(&sql, " AND blob.rid IN ok"); |
| 981 | } |
| 982 | if( zType && (zType[0]!='a') ){ |
| 983 | blob_appendf(&sql, " AND event.type=%Q ", zType); |
| 984 | } |
| 985 | |
| 986 | blob_appendf(&sql, " ORDER BY event.mtime DESC"); |
| 987 | db_prepare(&q, blob_str(&sql)); |
| 988 | blob_reset(&sql); |
| 989 | print_timeline(&q, n); |
| 990 | db_finalize(&q); |
| 991 | } |
| 992 | |
| 993 | /* |
| 994 |