| 1726 | #define IS_SYS(spname) (!strncasecmp(spname, "sys.", 4)) |
| 1727 | |
| 1728 | static char *load_user_src(char *spname, struct spversion_t *spversion, |
| 1729 | int bootstrap, char **err) |
| 1730 | { |
| 1731 | char *src = NULL; |
| 1732 | int size, bdb_err, rc; |
| 1733 | if (spversion->version_num == 0 && spversion->version_str == NULL) { |
| 1734 | if ((src = load_default_src(spname, spversion, &size)) == NULL) { |
| 1735 | *err = no_such_procedure(spname, spversion); |
| 1736 | return NULL; |
| 1737 | } |
| 1738 | } else if (spversion->version_num > 0) { |
| 1739 | if ((rc = bdb_get_sp_lua_source(thedb->bdb_env, NULL, spname, &src, |
| 1740 | spversion->version_num, &size, |
| 1741 | &bdb_err)) != 0) { |
| 1742 | *err = no_such_procedure(spname, spversion); |
| 1743 | return NULL; |
| 1744 | } |
| 1745 | } else { |
| 1746 | if (bdb_get_versioned_sp(spname, spversion->version_str, &src) != 0) { |
| 1747 | *err = no_such_procedure(spname, spversion); |
| 1748 | return NULL; |
| 1749 | } |
| 1750 | size = strlen(src) + 1; |
| 1751 | } |
| 1752 | if (bootstrap == 2) { |
| 1753 | char *sp_src = malloc(size + 1 + sizeof(trigger_main) + sizeof(bootstrap_src)); |
| 1754 | sprintf(sp_src, "%s\n%s%s", src, trigger_main, bootstrap_src); |
| 1755 | free(src); |
| 1756 | src = sp_src; |
| 1757 | } else if (bootstrap) { |
| 1758 | char *sp_src = malloc(size + sizeof(bootstrap_src)); |
| 1759 | sprintf(sp_src, "%s%s", src, bootstrap_src); |
| 1760 | free(src); |
| 1761 | src = sp_src; |
| 1762 | } |
| 1763 | return src; |
| 1764 | } |
| 1765 | |
| 1766 | static char *load_src(char *spname, struct spversion_t *spversion, |
| 1767 | int bootstrap, char **err) |
no test coverage detected