Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Improve pkg-backup progress display.
Vsevolod Stakhov committed 11 years ago
commit 08bb2041bc7616fc42305fc755bcba39552b3c24
parent 690617a
2 files changed +8 -17
modified libpkg/backup.c
@@ -41,7 +41,7 @@

/* Number of pages to copy per call to sqlite3_backup_step()
   Default page size is 1024 bytes on Unix */
-
#define NPAGES	512
+
#define NPAGES	4

static int
ps_cb(void *ps, int ncols, char **coltext, __unused char **colnames)
@@ -63,8 +63,6 @@ copy_database(sqlite3 *src, sqlite3 *dst, const char *name)
	off_t		 total;
	off_t		 done;
	off_t		 page_size;
-
	time_t		 start;
-
	time_t		 elapsed;
	int		 ret;

	assert(src != NULL);
@@ -87,34 +85,27 @@ copy_database(sqlite3 *src, sqlite3 *dst, const char *name)

	b = sqlite3_backup_init(dst, "main", src, "main");

-
	elapsed = -1;
	done = total = 0;
-
	start = time(NULL);

	pkg_emit_progress_start(NULL);
	do {
		ret = sqlite3_backup_step(b, NPAGES);
+
		total = sqlite3_backup_pagecount(b);
+
		done = total - sqlite3_backup_remaining(b);
+
		pkg_emit_progress_tick(done, total);

		if (ret != SQLITE_OK && ret != SQLITE_DONE ) {
			if (ret == SQLITE_BUSY) {
				sqlite3_sleep(250);
			} else {
-
				ERROR_SQLITE(dst, "PRAGMA page_size");
+
				ERROR_SQLITE(dst, "backup step");
				break;
			}
		}
-

-
		total = sqlite3_backup_pagecount(b) * page_size;
-
		done = total - sqlite3_backup_remaining(b) * page_size; 
-

-
		/* Callout no more than once a second */
-
		if (elapsed < time(NULL) - start) {
-
			elapsed = time(NULL) - start;
-
			pkg_emit_progress_tick(done, total);
-
		}
	} while(done < total);

	ret = sqlite3_backup_finish(b);
+
	pkg_emit_progress_tick(total, total);

	sqlite3_exec(dst, "PRAGMA main.locking_mode=NORMAL;"
			   "BEGIN IMMEDIATE;COMMIT;", NULL, NULL, &errmsg);
modified src/event.c
@@ -764,9 +764,9 @@ event_callback(void *data, struct pkg_event *ev)
			last_tick = 0;
			begin = last_update = time(NULL);
			bytes_per_second = 0;
-
			if (isatty(STDOUT_FILENO)) {
+

+
			if (isatty(STDOUT_FILENO))
				progress_started = true;
-
			}
		}
		break;
	case PKG_EVENT_PROGRESS_TICK: