|
39 | 39 | #include "cpl_conv.h" |
40 | 40 | #include "ogr_srs_api.h" |
41 | 41 |
|
42 | | -static char *ms_proj_lib = NULL; |
| 42 | +static char *ms_proj_data = NULL; |
43 | 43 | #if PROJ_VERSION_MAJOR >= 6 |
44 | | -static unsigned ms_proj_lib_change_counter = 0; |
| 44 | +static unsigned ms_proj_data_change_counter = 0; |
45 | 45 | #endif |
46 | 46 |
|
47 | 47 | typedef struct LinkedListOfProjContext LinkedListOfProjContext; |
@@ -79,7 +79,7 @@ typedef struct |
79 | 79 | struct projectionContext |
80 | 80 | { |
81 | 81 | PJ_CONTEXT* proj_ctx; |
82 | | - unsigned ms_proj_lib_change_counter; |
| 82 | + unsigned ms_proj_data_change_counter; |
83 | 83 | int ref_count; |
84 | 84 | pjCacheEntry pj_cache[PJ_CACHE_ENTRY_SIZE]; |
85 | 85 | int pj_cache_size; |
@@ -865,13 +865,13 @@ int msProcessProjection(projectionObj *p) |
865 | 865 | return -1; |
866 | 866 | } |
867 | 867 | } |
868 | | - if( p->proj_ctx->ms_proj_lib_change_counter != ms_proj_lib_change_counter ) |
| 868 | + if( p->proj_ctx->ms_proj_data_change_counter != ms_proj_data_change_counter ) |
869 | 869 | { |
870 | 870 | msAcquireLock( TLOCK_PROJ ); |
871 | | - p->proj_ctx->ms_proj_lib_change_counter = ms_proj_lib_change_counter; |
| 871 | + p->proj_ctx->ms_proj_data_change_counter = ms_proj_data_change_counter; |
872 | 872 | { |
873 | | - const char* const paths[1] = { ms_proj_lib }; |
874 | | - proj_context_set_search_paths(p->proj_ctx->proj_ctx, 1, ms_proj_lib ? paths : NULL); |
| 873 | + const char* const paths[1] = { ms_proj_data }; |
| 874 | + proj_context_set_search_paths(p->proj_ctx->proj_ctx, 1, ms_proj_data ? paths : NULL); |
875 | 875 | } |
876 | 876 | msReleaseLock( TLOCK_PROJ ); |
877 | 877 | } |
@@ -2501,103 +2501,104 @@ static const char *msProjFinder( const char *filename) |
2501 | 2501 | if( filename == NULL ) |
2502 | 2502 | return NULL; |
2503 | 2503 |
|
2504 | | - if( ms_proj_lib == NULL ) |
| 2504 | + if( ms_proj_data == NULL ) |
2505 | 2505 | return filename; |
2506 | 2506 |
|
2507 | | - last_filename = (char *) malloc(strlen(filename)+strlen(ms_proj_lib)+2); |
2508 | | - sprintf( last_filename, "%s/%s", ms_proj_lib, filename ); |
| 2507 | + last_filename = (char *) malloc(strlen(filename)+strlen(ms_proj_data)+2); |
| 2508 | + sprintf( last_filename, "%s/%s", ms_proj_data, filename ); |
2509 | 2509 |
|
2510 | 2510 | return last_filename; |
2511 | 2511 | } |
2512 | 2512 | #endif |
2513 | 2513 |
|
2514 | 2514 | /************************************************************************/ |
2515 | | -/* msProjLibInitFromEnv() */ |
| 2515 | +/* msProjDataInitFromEnv() */ |
2516 | 2516 | /************************************************************************/ |
2517 | | -void msProjLibInitFromEnv() |
| 2517 | +void msProjDataInitFromEnv() |
2518 | 2518 | { |
2519 | 2519 | const char *val; |
2520 | 2520 |
|
2521 | | - if( (val=CPLGetConfigOption( "PROJ_LIB", NULL )) != NULL ) { |
2522 | | - msSetPROJ_LIB(val, NULL); |
| 2521 | + if( (val=CPLGetConfigOption( "PROJ_DATA", NULL )) != NULL || |
| 2522 | + (val=CPLGetConfigOption( "PROJ_LIB", NULL )) != NULL ) { |
| 2523 | + msSetPROJ_DATA(val, NULL); |
2523 | 2524 | } |
2524 | 2525 | } |
2525 | 2526 |
|
2526 | 2527 | /************************************************************************/ |
2527 | | -/* msSetPROJ_LIB() */ |
| 2528 | +/* msSetPROJ_DATA() */ |
2528 | 2529 | /************************************************************************/ |
2529 | | -void msSetPROJ_LIB( const char *proj_lib, const char *pszRelToPath ) |
| 2530 | +void msSetPROJ_DATA( const char *proj_data, const char *pszRelToPath ) |
2530 | 2531 |
|
2531 | 2532 | { |
2532 | 2533 | char *extended_path = NULL; |
2533 | 2534 |
|
2534 | 2535 | /* Handle relative path if applicable */ |
2535 | | - if( proj_lib && pszRelToPath |
2536 | | - && proj_lib[0] != '/' |
2537 | | - && proj_lib[0] != '\\' |
2538 | | - && !(proj_lib[0] != '\0' && proj_lib[1] == ':') ) { |
| 2536 | + if( proj_data && pszRelToPath |
| 2537 | + && proj_data[0] != '/' |
| 2538 | + && proj_data[0] != '\\' |
| 2539 | + && !(proj_data[0] != '\0' && proj_data[1] == ':') ) { |
2539 | 2540 | struct stat stat_buf; |
2540 | 2541 | extended_path = (char*) msSmallMalloc(strlen(pszRelToPath) |
2541 | | - + strlen(proj_lib) + 10); |
2542 | | - sprintf( extended_path, "%s/%s", pszRelToPath, proj_lib ); |
| 2542 | + + strlen(proj_data) + 10); |
| 2543 | + sprintf( extended_path, "%s/%s", pszRelToPath, proj_data ); |
2543 | 2544 |
|
2544 | 2545 | #ifndef S_ISDIR |
2545 | 2546 | # define S_ISDIR(x) ((x) & S_IFDIR) |
2546 | 2547 | #endif |
2547 | 2548 |
|
2548 | 2549 | if( stat( extended_path, &stat_buf ) == 0 |
2549 | 2550 | && S_ISDIR(stat_buf.st_mode) ) |
2550 | | - proj_lib = extended_path; |
| 2551 | + proj_data = extended_path; |
2551 | 2552 | } |
2552 | 2553 |
|
2553 | 2554 |
|
2554 | 2555 | msAcquireLock( TLOCK_PROJ ); |
2555 | 2556 | #if PROJ_VERSION_MAJOR >= 6 |
2556 | | - if( proj_lib == NULL && ms_proj_lib == NULL ) |
| 2557 | + if( proj_data == NULL && ms_proj_data == NULL ) |
2557 | 2558 | { |
2558 | 2559 | /* do nothing */ |
2559 | 2560 | } |
2560 | | - else if( proj_lib != NULL && ms_proj_lib != NULL && |
2561 | | - strcmp(proj_lib, ms_proj_lib) == 0 ) |
| 2561 | + else if( proj_data != NULL && ms_proj_data != NULL && |
| 2562 | + strcmp(proj_data, ms_proj_data) == 0 ) |
2562 | 2563 | { |
2563 | 2564 | /* do nothing */ |
2564 | 2565 | } |
2565 | 2566 | else |
2566 | 2567 | { |
2567 | | - ms_proj_lib_change_counter++; |
2568 | | - free( ms_proj_lib ); |
2569 | | - ms_proj_lib = proj_lib ? msStrdup(proj_lib) : NULL; |
| 2568 | + ms_proj_data_change_counter++; |
| 2569 | + free( ms_proj_data ); |
| 2570 | + ms_proj_data = proj_data ? msStrdup(proj_data) : NULL; |
2570 | 2571 | } |
2571 | 2572 | #else |
2572 | 2573 | { |
2573 | 2574 | static int finder_installed = 0; |
2574 | | - if( finder_installed == 0 && proj_lib != NULL) { |
| 2575 | + if( finder_installed == 0 && proj_data != NULL) { |
2575 | 2576 | finder_installed = 1; |
2576 | 2577 | pj_set_finder( msProjFinder ); |
2577 | 2578 | } |
2578 | 2579 | } |
2579 | 2580 |
|
2580 | | - if (proj_lib == NULL) pj_set_finder(NULL); |
| 2581 | + if (proj_data == NULL) pj_set_finder(NULL); |
2581 | 2582 |
|
2582 | | - if( ms_proj_lib != NULL ) { |
2583 | | - free( ms_proj_lib ); |
2584 | | - ms_proj_lib = NULL; |
| 2583 | + if( ms_proj_data != NULL ) { |
| 2584 | + free( ms_proj_data ); |
| 2585 | + ms_proj_data = NULL; |
2585 | 2586 | } |
2586 | 2587 |
|
2587 | 2588 | if( last_filename != NULL ) { |
2588 | 2589 | free( last_filename ); |
2589 | 2590 | last_filename = NULL; |
2590 | 2591 | } |
2591 | 2592 |
|
2592 | | - if( proj_lib != NULL ) |
2593 | | - ms_proj_lib = msStrdup( proj_lib ); |
| 2593 | + if( proj_data != NULL ) |
| 2594 | + ms_proj_data = msStrdup( proj_data ); |
2594 | 2595 | #endif |
2595 | 2596 | msReleaseLock( TLOCK_PROJ ); |
2596 | 2597 |
|
2597 | 2598 | #if GDAL_VERSION_MAJOR >= 3 |
2598 | | - if( ms_proj_lib != NULL ) |
| 2599 | + if( ms_proj_data != NULL ) |
2599 | 2600 | { |
2600 | | - const char* const apszPaths[] = { ms_proj_lib, NULL }; |
| 2601 | + const char* const apszPaths[] = { ms_proj_data, NULL }; |
2601 | 2602 | OSRSetPROJSearchPaths(apszPaths); |
2602 | 2603 | } |
2603 | 2604 | #endif |
|
0 commit comments