@@ -137,31 +137,63 @@ static void VSICURLReadGlobalEnvVariables()
137
137
Initializer ()
138
138
{
139
139
constexpr int DOWNLOAD_CHUNK_SIZE_DEFAULT = 16384 ;
140
+ const char *pszChunkSize =
141
+ CPLGetConfigOption (" CPL_VSIL_CURL_CHUNK_SIZE" , nullptr );
142
+ GIntBig nChunkSize = DOWNLOAD_CHUNK_SIZE_DEFAULT;
143
+
144
+ if (pszChunkSize)
145
+ {
146
+ if (CPLParseMemorySize (pszChunkSize, &nChunkSize, nullptr ) !=
147
+ CE_None)
148
+ {
149
+ CPLError (
150
+ CE_Warning, CPLE_AppDefined,
151
+ " Could not parse value for CPL_VSIL_CURL_CHUNK_SIZE. "
152
+ " Using default value of %d instead." ,
153
+ DOWNLOAD_CHUNK_SIZE_DEFAULT);
154
+ }
155
+ }
140
156
141
- DOWNLOAD_CHUNK_SIZE_DO_NOT_USE_DIRECTLY = atoi (CPLGetConfigOption (
142
- " CPL_VSIL_CURL_CHUNK_SIZE" ,
143
- CPLSPrintf (" %d" , DOWNLOAD_CHUNK_SIZE_DEFAULT)));
144
157
constexpr int MIN_CHUNK_SIZE = 1024 ;
145
158
constexpr int MAX_CHUNK_SIZE = 10 * 1024 * 1024 ;
146
- if (DOWNLOAD_CHUNK_SIZE_DO_NOT_USE_DIRECTLY < MIN_CHUNK_SIZE ||
147
- DOWNLOAD_CHUNK_SIZE_DO_NOT_USE_DIRECTLY > MAX_CHUNK_SIZE)
159
+ if (nChunkSize < MIN_CHUNK_SIZE || nChunkSize > MAX_CHUNK_SIZE)
148
160
{
149
- DOWNLOAD_CHUNK_SIZE_DO_NOT_USE_DIRECTLY =
150
- DOWNLOAD_CHUNK_SIZE_DEFAULT;
161
+ nChunkSize = DOWNLOAD_CHUNK_SIZE_DEFAULT;
151
162
CPLError (CE_Warning, CPLE_AppDefined,
152
163
" Invalid value for CPL_VSIL_CURL_CHUNK_SIZE. "
153
164
" Allowed range is [%d, %d]. "
154
165
" Using CPL_VSIL_CURL_CHUNK_SIZE=%d instead" ,
155
166
MIN_CHUNK_SIZE, MAX_CHUNK_SIZE,
156
- DOWNLOAD_CHUNK_SIZE_DO_NOT_USE_DIRECTLY );
167
+ DOWNLOAD_CHUNK_SIZE_DEFAULT );
157
168
}
169
+ DOWNLOAD_CHUNK_SIZE_DO_NOT_USE_DIRECTLY =
170
+ static_cast <int >(nChunkSize);
158
171
159
172
constexpr int N_MAX_REGIONS_DEFAULT = 1000 ;
160
173
constexpr int CACHE_SIZE_DEFAULT =
161
174
N_MAX_REGIONS_DEFAULT * DOWNLOAD_CHUNK_SIZE_DEFAULT;
162
- GIntBig nCacheSize = CPLAtoGIntBig (
163
- CPLGetConfigOption (" CPL_VSIL_CURL_CACHE_SIZE" ,
164
- CPLSPrintf (" %d" , CACHE_SIZE_DEFAULT)));
175
+
176
+ const char *pszCacheSize =
177
+ CPLGetConfigOption (" CPL_VSIL_CURL_CACHE_SIZE" , nullptr );
178
+ GIntBig nCacheSize = CACHE_SIZE_DEFAULT;
179
+
180
+ if (pszCacheSize)
181
+ {
182
+ if (CPLParseMemorySize (pszCacheSize, &nCacheSize, nullptr ) !=
183
+ CE_None)
184
+ {
185
+ CPLError (
186
+ CE_Warning, CPLE_AppDefined,
187
+ " Could not parse value for CPL_VSIL_CURL_CACHE_SIZE. "
188
+ " Using default value of " CPL_FRMT_GIB " instead." ,
189
+ nCacheSize);
190
+ }
191
+ }
192
+ else
193
+ {
194
+ nCacheSize = CACHE_SIZE_DEFAULT;
195
+ }
196
+
165
197
const auto nMaxRAM = CPLGetUsablePhysicalRAM ();
166
198
const auto nMinVal = DOWNLOAD_CHUNK_SIZE_DO_NOT_USE_DIRECTLY;
167
199
auto nMaxVal = static_cast <GIntBig>(INT_MAX) *
0 commit comments