MCPcopy Create free account
hub / github.com/Singular/Singular / dynl_open_binary_warn

Function dynl_open_binary_warn

libpolys/polys/mod_raw.cc:45–87  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

43#endif
44
45void* dynl_open_binary_warn(const char* binary_name, const char* msg)
46{
47 void* handle = NULL;
48 char* binary_name_so=NULL;
49 BOOLEAN found=FALSE;
50
51 // try P_PROCS_DIR (%P)
52 char* proc_path = feGetResource('P');
53 if (proc_path != NULL)
54 {
55 char *p;
56 char *q;
57 p=proc_path;
58 int binary_name_so_length = 3 + strlen(DL_TAIL) + strlen(binary_name) + strlen(DIR_SEPP) + strlen(proc_path);
59 binary_name_so = (char *)omAlloc0( binary_name_so_length * sizeof(char) );
60 while((p!=NULL)&&(*p!='\0'))
61 {
62 q=strchr(p,fePathSep);
63 if (q!=NULL) *q='\0';
64 strcpy(binary_name_so,p);
65 if (q!=NULL) *q=fePathSep;
66 strcat(binary_name_so,DIR_SEPP);
67 strcat(binary_name_so,binary_name);
68 strcat(binary_name_so,DL_TAIL);
69 if(!access(binary_name_so, R_OK)) { found=TRUE; break; }
70 if (q!=NULL) p=q+1; else p=NULL;
71 }
72 if (found) handle = dynl_open(binary_name_so);
73 }
74
75 if (handle == NULL && ! warn_handle)
76 {
77 Warn("Could not find dynamic library: %s%s (path %s)",
78 binary_name, DL_TAIL,proc_path);
79 if (found) Warn("Error message from system: %s", dynl_error());
80 if (msg != NULL) Warn("%s", msg);
81 WarnS("See the INSTALL section in the Singular manual for details.");
82 warn_handle = TRUE;
83 }
84 omfree((ADDRESS)binary_name_so );
85
86 return handle;
87}
88
89void* dynl_sym_warn(void* handle, const char* proc, const char* msg)
90{

Callers 2

p_ProcInitHandleFunction · 0.85
slInitDBMHandleFunction · 0.85

Calls 6

feGetResourceFunction · 0.85
omAlloc0Function · 0.85
dynl_openFunction · 0.85
WarnFunction · 0.85
dynl_errorFunction · 0.85
WarnSFunction · 0.85

Tested by

no test coverage detected