Fossil SCM

Do not show a blank table on the /uvlist page if the server contains no unversioned files. Instead show a message explaining that no unversioned files are present.

drh 2016-08-17 09:57 UTC unversioned-files
Commit 49007ecedf53f21971951d1f95bfbb77cb8b601f
1 file changed +20 -13
+20 -13
--- src/unversioned.c
+++ src/unversioned.c
@@ -354,10 +354,11 @@
354354
void uvstat_page(void){
355355
Stmt q;
356356
sqlite3_int64 iNow;
357357
sqlite3_int64 iTotalSz = 0;
358358
int cnt = 0;
359
+ int n = 0;
359360
char zSzName[100];
360361
361362
login_check_credentials();
362363
if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
363364
style_header("Unversioned Files");
@@ -373,24 +374,26 @@
373374
" hash IS NULL,"
374375
" sz"
375376
" FROM unversioned"
376377
);
377378
iNow = db_int64(0, "SELECT strftime('%%s','now');");
378
- @ <div class="uvlist">
379
- @ <table cellpadding="2" cellspacing="0" border="1" id="uvtab">
380
- @ <thead><tr>
381
- @ <th> Name
382
- @ <th> Age
383
- @ <th> Size
384
- @ </tr></thead>
385
- @ <tbody>
386379
while( db_step(&q)==SQLITE_ROW ){
387380
const char *zName = db_column_text(&q, 0);
388381
sqlite3_int64 mtime = db_column_int(&q, 1);
389382
int isDeleted = db_column_int(&q, 2);
390383
int fullSize = db_column_int(&q, 3);
391384
char *zAge = human_readable_age((iNow - mtime)/86400.0);
385
+ if( (n++)==0 ){
386
+ @ <div class="uvlist">
387
+ @ <table cellpadding="2" cellspacing="0" border="1" id="uvtab">
388
+ @ <thead><tr>
389
+ @ <th> Name
390
+ @ <th> Age
391
+ @ <th> Size
392
+ @ </tr></thead>
393
+ @ <tbody>
394
+ }
392395
if( isDeleted ){
393396
sqlite3_snprintf(sizeof(zSzName), zSzName, "<i>Deleted</i>");
394397
fullSize = 0;
395398
}else{
396399
approxSizeName(sizeof(zSzName), zSzName, fullSize);
@@ -402,13 +405,17 @@
402405
@ <td data-sortkey='%016llx(-mtime)'> %s(zAge) </td>
403406
@ <td data-sortkey='%08x(fullSize)'> %s(zSzName) </td>
404407
@ </tr>
405408
fossil_free(zAge);
406409
}
407
- approxSizeName(sizeof(zSzName), zSzName, iTotalSz);
408
- @ </tbody>
409
- @ <tfoot><tr><td><b>Total over %d(cnt) files</b><td><td>%s(zSzName)</tfoot>
410
- @ </table></div>
411410
db_finalize(&q);
412
- output_table_sorting_javascript("uvtab","tKk",1);
411
+ if( n ){
412
+ approxSizeName(sizeof(zSzName), zSzName, iTotalSz);
413
+ @ </tbody>
414
+ @ <tfoot><tr><td><b>Total over %d(cnt) files</b><td><td>%s(zSzName)</tfoot>
415
+ @ </table></div>
416
+ output_table_sorting_javascript("uvtab","tKk",1);
417
+ }else{
418
+ @ No unversioned files on this server.
419
+ }
413420
style_footer();
414421
}
415422
--- src/unversioned.c
+++ src/unversioned.c
@@ -354,10 +354,11 @@
354 void uvstat_page(void){
355 Stmt q;
356 sqlite3_int64 iNow;
357 sqlite3_int64 iTotalSz = 0;
358 int cnt = 0;
 
359 char zSzName[100];
360
361 login_check_credentials();
362 if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
363 style_header("Unversioned Files");
@@ -373,24 +374,26 @@
373 " hash IS NULL,"
374 " sz"
375 " FROM unversioned"
376 );
377 iNow = db_int64(0, "SELECT strftime('%%s','now');");
378 @ <div class="uvlist">
379 @ <table cellpadding="2" cellspacing="0" border="1" id="uvtab">
380 @ <thead><tr>
381 @ <th> Name
382 @ <th> Age
383 @ <th> Size
384 @ </tr></thead>
385 @ <tbody>
386 while( db_step(&q)==SQLITE_ROW ){
387 const char *zName = db_column_text(&q, 0);
388 sqlite3_int64 mtime = db_column_int(&q, 1);
389 int isDeleted = db_column_int(&q, 2);
390 int fullSize = db_column_int(&q, 3);
391 char *zAge = human_readable_age((iNow - mtime)/86400.0);
 
 
 
 
 
 
 
 
 
 
392 if( isDeleted ){
393 sqlite3_snprintf(sizeof(zSzName), zSzName, "<i>Deleted</i>");
394 fullSize = 0;
395 }else{
396 approxSizeName(sizeof(zSzName), zSzName, fullSize);
@@ -402,13 +405,17 @@
402 @ <td data-sortkey='%016llx(-mtime)'> %s(zAge) </td>
403 @ <td data-sortkey='%08x(fullSize)'> %s(zSzName) </td>
404 @ </tr>
405 fossil_free(zAge);
406 }
407 approxSizeName(sizeof(zSzName), zSzName, iTotalSz);
408 @ </tbody>
409 @ <tfoot><tr><td><b>Total over %d(cnt) files</b><td><td>%s(zSzName)</tfoot>
410 @ </table></div>
411 db_finalize(&q);
412 output_table_sorting_javascript("uvtab","tKk",1);
 
 
 
 
 
 
 
 
413 style_footer();
414 }
415
--- src/unversioned.c
+++ src/unversioned.c
@@ -354,10 +354,11 @@
354 void uvstat_page(void){
355 Stmt q;
356 sqlite3_int64 iNow;
357 sqlite3_int64 iTotalSz = 0;
358 int cnt = 0;
359 int n = 0;
360 char zSzName[100];
361
362 login_check_credentials();
363 if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
364 style_header("Unversioned Files");
@@ -373,24 +374,26 @@
374 " hash IS NULL,"
375 " sz"
376 " FROM unversioned"
377 );
378 iNow = db_int64(0, "SELECT strftime('%%s','now');");
 
 
 
 
 
 
 
 
379 while( db_step(&q)==SQLITE_ROW ){
380 const char *zName = db_column_text(&q, 0);
381 sqlite3_int64 mtime = db_column_int(&q, 1);
382 int isDeleted = db_column_int(&q, 2);
383 int fullSize = db_column_int(&q, 3);
384 char *zAge = human_readable_age((iNow - mtime)/86400.0);
385 if( (n++)==0 ){
386 @ <div class="uvlist">
387 @ <table cellpadding="2" cellspacing="0" border="1" id="uvtab">
388 @ <thead><tr>
389 @ <th> Name
390 @ <th> Age
391 @ <th> Size
392 @ </tr></thead>
393 @ <tbody>
394 }
395 if( isDeleted ){
396 sqlite3_snprintf(sizeof(zSzName), zSzName, "<i>Deleted</i>");
397 fullSize = 0;
398 }else{
399 approxSizeName(sizeof(zSzName), zSzName, fullSize);
@@ -402,13 +405,17 @@
405 @ <td data-sortkey='%016llx(-mtime)'> %s(zAge) </td>
406 @ <td data-sortkey='%08x(fullSize)'> %s(zSzName) </td>
407 @ </tr>
408 fossil_free(zAge);
409 }
 
 
 
 
410 db_finalize(&q);
411 if( n ){
412 approxSizeName(sizeof(zSzName), zSzName, iTotalSz);
413 @ </tbody>
414 @ <tfoot><tr><td><b>Total over %d(cnt) files</b><td><td>%s(zSzName)</tfoot>
415 @ </table></div>
416 output_table_sorting_javascript("uvtab","tKk",1);
417 }else{
418 @ No unversioned files on this server.
419 }
420 style_footer();
421 }
422

Keyboard Shortcuts

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