diff options
author | Thomas White <taw@physics.org> | 2011-08-04 11:13:22 +0200 |
---|---|---|
committer | Thomas White <taw@physics.org> | 2012-02-22 15:27:35 +0100 |
commit | d31ae34ed2a084b6c43a5f6a18071d66ca68c18e (patch) | |
tree | 2bcb7595238f851b986409ebcc30a8bf52a67599 | |
parent | e23381049dcdbd2c3f1f39276adb3c466d646868 (diff) |
Complain loudly if DirAx or MOSFLM don't work as expected
-rw-r--r-- | src/dirax.c | 7 | ||||
-rw-r--r-- | src/mosflm.c | 11 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/dirax.c b/src/dirax.c index 58e71ddc..bb1cb808 100644 --- a/src/dirax.c +++ b/src/dirax.c @@ -63,6 +63,7 @@ struct dirax_data { /* DirAx auto-indexing high-level stuff */ int step; + int finished_ok; int read_cell; int best_acl; int best_acl_nh; @@ -232,6 +233,7 @@ static void dirax_send_next(struct image *image, struct dirax_data *dirax) case 6 : dirax_sendline("go\n", dirax); + dirax->finished_ok = 1; break; case 7 : @@ -483,6 +485,7 @@ void run_dirax(struct image *image) fcntl(dirax->pty, F_SETFL, opts | O_NONBLOCK); dirax->step = 1; /* This starts the "initialisation" procedure */ + dirax->finished_ok = 0; dirax->read_cell = 0; dirax->n_acls_tried = 0; dirax->best_acl_nh = 0; @@ -518,5 +521,9 @@ void run_dirax(struct image *image) free(dirax->rbuffer); waitpid(dirax->pid, &status, 0); + if ( dirax->finished_ok == 0 ) { + ERROR("DirAx doesn't seem to be working properly.\n"); + } + free(dirax); } diff --git a/src/mosflm.c b/src/mosflm.c index 088ef52d..1cd05ada 100644 --- a/src/mosflm.c +++ b/src/mosflm.c @@ -88,6 +88,7 @@ struct mosflm_data { char imagefile[128]; char sptfile[128]; int step; + int finished_ok; UnitCell *target_cell; }; @@ -374,6 +375,7 @@ static void mosflm_send_next(struct image *image, struct mosflm_data *mosflm) case 10 : mosflm_sendline("GO\n", mosflm); + mosflm->finished_ok = 1; break; default: @@ -558,6 +560,7 @@ void run_mosflm(struct image *image, UnitCell *cell) fcntl(mosflm->pty, F_SETFL, opts | O_NONBLOCK); mosflm->step = 1; /* This starts the "initialisation" procedure */ + mosflm->finished_ok = 0; do { @@ -590,8 +593,12 @@ void run_mosflm(struct image *image, UnitCell *cell) free(mosflm->rbuffer); waitpid(mosflm->pid, &status, 0); - /* Read the mosflm NEWMAT file and set cell candidate if found */ - read_newmat(mosflm->newmatfile, image); + if ( mosflm->finished_ok == 0 ) { + ERROR("MOSFLM doesn't seem to be working properly.\n"); + } else { + /* Read the mosflm NEWMAT file and get cell if found */ + read_newmat(mosflm->newmatfile, image); + } free(mosflm); } |