aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2021-05-17 11:27:35 +0200
committerThomas White <taw@physics.org>2021-05-17 11:27:35 +0200
commit191c653da29f5bd51251256d056239a3628daf5d (patch)
treea64949424dc999038948a80ceb26c997876272f3 /src
parent680fa5f16ed2ff8a70fcb44e9920721287047f55 (diff)
GUI: Improve error handling for default_project
Diffstat (limited to 'src')
-rw-r--r--src/crystfel_gui.c5
-rw-r--r--src/gui_project.c13
-rw-r--r--src/gui_project.h2
3 files changed, 15 insertions, 5 deletions
diff --git a/src/crystfel_gui.c b/src/crystfel_gui.c
index 1246924b..28661064 100644
--- a/src/crystfel_gui.c
+++ b/src/crystfel_gui.c
@@ -771,7 +771,10 @@ int main(int argc, char *argv[])
gtk_init(&argc, &argv);
- default_project(&proj);
+ if ( default_project(&proj) ) {
+ ERROR("Failed to set up default project\n");
+ return 1;
+ }
proj.image_info = NULL;
diff --git a/src/gui_project.c b/src/gui_project.c
index 789f2219..f2efc71b 100644
--- a/src/gui_project.c
+++ b/src/gui_project.c
@@ -818,7 +818,10 @@ int load_project(struct crystfelproject *proj)
fh = fopen("crystfel.project", "r");
if ( fh == NULL ) return 1;
- default_project(proj);
+ if ( default_project(proj) ) {
+ ERROR("Failed to make default project when loading.\n");
+ return 1;
+ }
read_parameters(fh, proj);
read_results(fh, proj);
@@ -1085,7 +1088,7 @@ int save_project(struct crystfelproject *proj)
}
-void default_project(struct crystfelproject *proj)
+int default_project(struct crystfelproject *proj)
{
proj->unsaved = 0;
proj->geom_filename = NULL;
@@ -1115,18 +1118,20 @@ void default_project(struct crystfelproject *proj)
proj->ambi_backend_selected = 0;
proj->n_backends = 0;
proj->backends = malloc(2*sizeof(struct crystfel_backend));
- /* FIXME: Crappy error handling */
if ( proj->backends == NULL ) {
ERROR("Couldn't allocate space for backends\n");
+ return 1;
}
if ( make_local_backend(&proj->backends[proj->n_backends++]) ) {
ERROR("Local backend setup failed\n");
+ return 1;
}
#ifdef HAVE_SLURM
if ( make_slurm_backend(&proj->backends[proj->n_backends++]) ) {
ERROR("SLURM backend setup failed\n");
+ return 1;
}
#endif
@@ -1226,6 +1231,8 @@ void default_project(struct crystfelproject *proj)
/* NB Export options are currently not saved (because I'm lazy) */
proj->export_res_min = INFINITY; /* Angstroms */
proj->export_res_max = 0.0; /* Angstroms */
+
+ return 0;
}
diff --git a/src/gui_project.h b/src/gui_project.h
index c75f36e2..2617c2d8 100644
--- a/src/gui_project.h
+++ b/src/gui_project.h
@@ -343,7 +343,7 @@ extern int match_filename(const char *fn, enum match_type_id mt);
extern int load_project(struct crystfelproject *proj);
-extern void default_project(struct crystfelproject *proj);
+extern int default_project(struct crystfelproject *proj);
extern int save_project(struct crystfelproject *proj);