34 |
|
|
35 |
/* Construct the name of the shared object for this module. */ |
/* Construct the name of the shared object for this module. */ |
36 |
if (asprintf (&modname, |
if (asprintf (&modname, |
37 |
"libstore_%.*s%s", clname_end - name, name, |
"libstore_%.*s%s", (int) (clname_end - name), name, |
38 |
STORE_SONAME_SUFFIX) < 0) |
STORE_SONAME_SUFFIX) < 0) |
39 |
return ENOMEM; |
return ENOMEM; |
40 |
|
|
57 |
if (mod == NULL) |
if (mod == NULL) |
58 |
return errno ?: ENOENT; |
return errno ?: ENOENT; |
59 |
|
|
60 |
if (asprintf (&clsym, "store_%.*s_class", clname_end - name, name) < 0) |
if (asprintf (&clsym, "store_%.*s_class", |
61 |
|
(int) (clname_end - name), name) < 0) |
62 |
{ |
{ |
63 |
dlclose (mod); |
dlclose (mod); |
64 |
return ENOMEM; |
return ENOMEM; |
69 |
if (*classp == NULL) |
if (*classp == NULL) |
70 |
{ |
{ |
71 |
error (0, 0, "invalid store module %.*s: %s", |
error (0, 0, "invalid store module %.*s: %s", |
72 |
clname_end - name, name, dlerror ()); |
(int) (clname_end - name), name, dlerror ()); |
73 |
dlclose (mod); |
dlclose (mod); |
74 |
return EGRATUITOUS; |
return EGRATUITOUS; |
75 |
} |
} |