summaryrefslogtreecommitdiff
path: root/src/ddhardrescue.c
diff options
context:
space:
mode:
authorLudovic Pouzenc <ludovic@pouzenc.fr>2011-08-14 20:31:22 +0000
committerLudovic Pouzenc <ludovic@pouzenc.fr>2011-08-14 20:31:22 +0000
commitc908d810330edba56b476229aba081997f251da7 (patch)
treedd58223b2abbd4f0fb59374c675af471d1f9ca57 /src/ddhardrescue.c
parent7f47315422f6846ea700fc7826f47b10dbfe086d (diff)
download2011-ddhardrescue-c908d810330edba56b476229aba081997f251da7.tar.gz
2011-ddhardrescue-c908d810330edba56b476229aba081997f251da7.tar.bz2
2011-ddhardrescue-c908d810330edba56b476229aba081997f251da7.zip
Bug hunting : la visualisation marche dans la fenêtre ncurses. Avec un mutex et la fin de l'algo de dump, ça marche mieux qu'avant (segfaults...)
git-svn-id: file:///var/svn/2011-ddhardrescue/trunk@18 d3078510-dda0-49f1-841c-895ef4b7ec81
Diffstat (limited to 'src/ddhardrescue.c')
-rw-r--r--src/ddhardrescue.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/ddhardrescue.c b/src/ddhardrescue.c
index ba6781e..691bf09 100644
--- a/src/ddhardrescue.c
+++ b/src/ddhardrescue.c
@@ -63,11 +63,18 @@ int main(int argc, char **argv) {
srand(4);
// Data structure initialization
+ // TODO : provides a standard method to do that ?
memset(&slices, 0, sizeof(slices));
slices.data=slicesNewSingleton(args.beginSector, args.endSector, S_UNKNOWN);
+ if ( slices.data == NULL ) {
+ return 3;
+ }
+ slices.data->min=args.beginSector;
+ slices.data->max=args.endSector;
+
res=pthread_mutex_init(&(slices.eventListenerMutex), NULL);
if (res!=0) {
- return 3;
+ return 4;
}
// Threads preparation, creation and start
@@ -78,7 +85,7 @@ int main(int argc, char **argv) {
res=pthread_create(&tWorker, NULL, procWorker, &tArgs);
if (res!=0) {
- return 4;
+ return 5;
}
// Ncurses interface run in the main thread
@@ -137,8 +144,7 @@ void cursesUpdateSliceDump(slices_evt_t *slicesEvt, slice_t *modifiedSlice) {
//FIXME : do that realy
pthread_mutex_lock(&ncursesWriteMutex);
-
- toPrint=slicesDump(slicesEvt->data, &blockSize, 1000, 0, 1000);
+ toPrint=slicesDump(slicesEvt->data, &blockSize, 1000, slicesEvt->data->min, slicesEvt->data->max);
if (toPrint != NULL) {
attron(COLOR_PAIR(4));
mvwprintw(winUpdateSliceDump, 1, 0, toPrint);