message: core: fix FileStorage format detection in case of .gz archives
diff: @@ -4270,11 +4270,25 @@ cvOpenFileStorage( const char* query, CvMemStorage* dststorage, int flags, const
  if( fmt == CV_STORAGE_FORMAT_AUTO && filename )
  {
  - const char* dot_pos = strrchr( filename, '.' );
  + const char* dot_pos = NULL;
  + const char* dot_pos2 = NULL;
  + // like strrchr() implementation, but save two last positions simultaneously
  + for (const char* pos = filename; pos[0] != 0; pos++)
  + {
  + if (pos[0] == '.')
  + {
  + dot_pos2 = dot_pos;
  + dot_pos = pos;
  + }
  + }
  + if (cv_strcasecmp(dot_pos, ".gz") && dot_pos2 != NULL)
  + {
  + dot_pos = dot_pos2;
  + }
  fs->fmt
  - = cv_strcasecmp( dot_pos, ".xml" )
  + = (cv_strcasecmp(dot_pos, ".xml") || cv_strcasecmp(dot_pos, ".xml.gz"))
  ? CV_STORAGE_FORMAT_XML
  - : cv_strcasecmp( dot_pos, ".json" )
  + : (cv_strcasecmp(dot_pos, ".json") || cv_strcasecmp(dot_pos, ".json.gz"))
  ? CV_STORAGE_FORMAT_JSON
  : CV_STORAGE_FORMAT_YAML
  ;
  