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

Function iiTryLoadLib

Singular/iplib.cc:831–872  ·  view source on GitHub ↗

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/

Source from the content-addressed store, hash-verified

829
830/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
831BOOLEAN iiTryLoadLib(leftv v, const char *id)
832{
833 BOOLEAN LoadResult = TRUE;
834 char libnamebuf[1024];
835 size_t len=strlen(id)+5;
836 char *libname = (char *)omAlloc(len);
837 const char *suffix[] = { "", ".lib", ".so", ".sl", NULL };
838 int i = 0;
839 // FILE *fp;
840 // package pack;
841 // idhdl packhdl;
842 lib_types LT;
843 for(i=0; suffix[i] != NULL; i++)
844 {
845 snprintf(libname,len, "%s%s", id, suffix[i]);
846 *libname = mytolower(*libname);
847 if((LT = type_of_LIB(libname, libnamebuf)) > LT_NOTFOUND)
848 {
849 #ifdef HAVE_DYNAMIC_LOADING
850 char libnamebuf[1024];
851 #endif
852
853 if (LT==LT_SINGULAR)
854 LoadResult = iiLibCmd(libname, FALSE, FALSE,TRUE);
855 #ifdef HAVE_DYNAMIC_LOADING
856 else if ((LT==LT_ELF) || (LT==LT_HPUX))
857 LoadResult = load_modules(libname,libnamebuf,FALSE);
858 #endif
859 else if (LT==LT_BUILTIN)
860 {
861 LoadResult=load_builtin(libname,FALSE, iiGetBuiltinModInit(libname));
862 }
863 if(!LoadResult )
864 {
865 v->name = iiConvName(libname);
866 break;
867 }
868 }
869 }
870 omFree(libname);
871 return LoadResult;
872}
873
874/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
875/* check, if library lib has already been loaded

Callers 1

jjCOLCOLFunction · 0.85

Calls 7

mytolowerFunction · 0.85
type_of_LIBFunction · 0.85
iiLibCmdFunction · 0.85
load_modulesFunction · 0.85
load_builtinFunction · 0.85
iiGetBuiltinModInitFunction · 0.85
iiConvNameFunction · 0.85

Tested by

no test coverage detected