void * enkf_main_init_case_from_existing_JOB( void * self , const stringlist_type * args) { enkf_main_type * enkf_main = enkf_main_safe_cast( self ); const char * source_case = stringlist_iget( args , 0 ); enkf_fs_type * source_fs = enkf_main_mount_alt_fs( enkf_main , source_case , true ); { enkf_fs_type * target_fs; if (stringlist_get_size(args) > 1) { const char * current_case = enkf_main_get_current_fs(enkf_main); const char * target_case = stringlist_iget( args , 1 ); if (0 != strcmp(current_case, target_case)) { target_fs = enkf_main_mount_alt_fs( enkf_main , target_case , true ); } else target_fs = enkf_fs_get_ref( enkf_main_get_fs(enkf_main) ); // Using get_ref so that we can unconditionally call decref() further down. } else target_fs = enkf_fs_get_ref( enkf_main_get_fs(enkf_main) ); // Using get_ref so that we can unconditionally call decref() further down. enkf_main_init_case_from_existing(enkf_main, source_fs, 0, ANALYZED, target_fs); enkf_fs_decref(target_fs); } enkf_fs_decref(source_fs); return NULL; }
enkf_fs_type * enkf_fs_mount( const char * mount_point , bool read_only) { FILE * stream = fs_driver_open_fstab( mount_point , false ); if (stream != NULL) { enkf_fs_type * fs = NULL; fs_driver_assert_magic( stream ); fs_driver_assert_version( stream , mount_point ); { fs_driver_impl driver_id = util_fread_int( stream ); switch( driver_id ) { case( BLOCK_FS_DRIVER_ID ): fs = enkf_fs_mount_block_fs( stream , mount_point , read_only ); break; case( PLAIN_DRIVER_ID ): fs = enkf_fs_mount_plain( stream , mount_point , read_only ); break; default: util_abort("%s: unrecognized driver_id:%d \n",__func__ , driver_id ); } } fclose( stream ); enkf_fs_init_path_fmt( fs ); enkf_fs_fread_time_map( fs ); enkf_fs_fread_cases_config( fs ); enkf_fs_fread_state_map( fs ); enkf_fs_fread_misfit( fs ); enkf_fs_get_ref( fs ); return fs; } return NULL; }
enkf_fs_type * enkf_main_get_fs_ref(const enkf_main_type * enkf_main) { return enkf_fs_get_ref( enkf_main->dbase ); }