| 655 | */ |
| 656 | |
| 657 | static my_bool read_maria_plugin_info(struct st_plugin_dl *plugin_dl, |
| 658 | void *sym, char *dlpath, myf MyFlags) |
| 659 | { |
| 660 | DBUG_ENTER("read_maria_plugin_info"); |
| 661 | |
| 662 | /* Determine interface version */ |
| 663 | if (!(sym)) |
| 664 | { |
| 665 | /* |
| 666 | Actually this branch impossible because in case of absence of maria |
| 667 | version we try mysql version. |
| 668 | */ |
| 669 | if (!opt_silent_startup) |
| 670 | my_error(ER_CANT_FIND_DL_ENTRY, MyFlags, |
| 671 | maria_plugin_interface_version_sym, dlpath); |
| 672 | DBUG_RETURN(TRUE); |
| 673 | } |
| 674 | plugin_dl->mariaversion= *(int *)sym; |
| 675 | plugin_dl->mysqlversion= 0; |
| 676 | /* Versioning */ |
| 677 | if (plugin_dl->mariaversion < min_maria_plugin_interface_version || |
| 678 | (plugin_dl->mariaversion >> 8) > (MARIA_PLUGIN_INTERFACE_VERSION >> 8)) |
| 679 | { |
| 680 | my_error(ER_CANT_OPEN_LIBRARY, MyFlags, dlpath, ENOEXEC, |
| 681 | "plugin interface version mismatch"); |
| 682 | DBUG_RETURN(TRUE); |
| 683 | } |
| 684 | /* Find plugin declarations */ |
| 685 | if (!(sym= dlsym(plugin_dl->handle, maria_plugin_declarations_sym))) |
| 686 | { |
| 687 | my_error(ER_CANT_FIND_DL_ENTRY, MyFlags, maria_plugin_declarations_sym, dlpath); |
| 688 | DBUG_RETURN(TRUE); |
| 689 | } |
| 690 | if (plugin_dl->mariaversion != MARIA_PLUGIN_INTERFACE_VERSION) |
| 691 | { |
| 692 | uint sizeof_st_plugin; |
| 693 | struct st_maria_plugin *old, *cur; |
| 694 | char *ptr= (char *)sym; |
| 695 | |
| 696 | if ((sym= dlsym(plugin_dl->handle, maria_sizeof_st_plugin_sym))) |
| 697 | sizeof_st_plugin= *(int *)sym; |
| 698 | else |
| 699 | { |
| 700 | my_error(ER_CANT_FIND_DL_ENTRY, MyFlags, maria_sizeof_st_plugin_sym, |
| 701 | dlpath); |
| 702 | DBUG_RETURN(TRUE); |
| 703 | } |
| 704 | |
| 705 | if (sizeof_st_plugin != sizeof(st_mysql_plugin)) |
| 706 | { |
| 707 | int i; |
| 708 | for (i= 0; |
| 709 | ((struct st_maria_plugin *)(ptr + i * sizeof_st_plugin))->info; |
| 710 | i++) |
| 711 | /* no op */; |
| 712 | |
| 713 | cur= (struct st_maria_plugin*) |
| 714 | my_malloc(key_memory_mysql_plugin, (i + 1) * sizeof(struct st_maria_plugin), |
no test coverage detected