diff --git a/state.c b/state.c index 5ef7f928..ebeecb97 100644 --- a/state.c +++ b/state.c @@ -223,6 +223,7 @@ void state_config(struct snapraid_state* state, const char* path, const char* co { STREAM* f; unsigned line; + tommy_node* i; state->verbose = verbose; state->gui = gui; @@ -472,6 +473,17 @@ void state_config(struct snapraid_state* state, const char* path, const char* co exit(EXIT_FAILURE); } + /* check if the disk name already exists */ + for(i=state->disklist;i!=0;i=i->next) { + disk = i->data; + if (strcmp(disk->name, buffer) == 0) + break; + } + if (i) { + fprintf(stderr, "Duplicate disk name '%s' at line %u\n", buffer, line); + exit(EXIT_FAILURE); + } + disk = disk_alloc(buffer, dir, st.st_dev); tommy_list_insert_tail(&state->disklist, &disk->node, disk);