lemon-project-template-glpk
diff deps/glpk/src/glpenv08.c @ 9:33de93886c88
Import GLPK 4.47
author | Alpar Juttner <alpar@cs.elte.hu> |
---|---|
date | Sun, 06 Nov 2011 20:59:10 +0100 |
parents | |
children |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/deps/glpk/src/glpenv08.c Sun Nov 06 20:59:10 2011 +0100 1.3 @@ -0,0 +1,156 @@ 1.4 +/* glpenv08.c (shared library support) */ 1.5 + 1.6 +/*********************************************************************** 1.7 +* This code is part of GLPK (GNU Linear Programming Kit). 1.8 +* 1.9 +* Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 1.10 +* 2009, 2010, 2011 Andrew Makhorin, Department for Applied Informatics, 1.11 +* Moscow Aviation Institute, Moscow, Russia. All rights reserved. 1.12 +* E-mail: <mao@gnu.org>. 1.13 +* 1.14 +* GLPK is free software: you can redistribute it and/or modify it 1.15 +* under the terms of the GNU General Public License as published by 1.16 +* the Free Software Foundation, either version 3 of the License, or 1.17 +* (at your option) any later version. 1.18 +* 1.19 +* GLPK is distributed in the hope that it will be useful, but WITHOUT 1.20 +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 1.21 +* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 1.22 +* License for more details. 1.23 +* 1.24 +* You should have received a copy of the GNU General Public License 1.25 +* along with GLPK. If not, see <http://www.gnu.org/licenses/>. 1.26 +***********************************************************************/ 1.27 + 1.28 +#ifdef HAVE_CONFIG_H 1.29 +#include <config.h> 1.30 +#endif 1.31 + 1.32 +#include "glpenv.h" 1.33 + 1.34 +/* GNU version ********************************************************/ 1.35 + 1.36 +#if defined(HAVE_LTDL) 1.37 + 1.38 +#include <ltdl.h> 1.39 + 1.40 +void *xdlopen(const char *module) 1.41 +{ void *h = NULL; 1.42 + if (lt_dlinit() != 0) 1.43 + { lib_err_msg(lt_dlerror()); 1.44 + goto done; 1.45 + } 1.46 + h = lt_dlopen(module); 1.47 + if (h == NULL) 1.48 + { lib_err_msg(lt_dlerror()); 1.49 + if (lt_dlexit() != 0) 1.50 + xerror("xdlopen: %s\n", lt_dlerror()); 1.51 + } 1.52 +done: return h; 1.53 +} 1.54 + 1.55 +void *xdlsym(void *h, const char *symbol) 1.56 +{ void *ptr; 1.57 + xassert(h != NULL); 1.58 + ptr = lt_dlsym(h, symbol); 1.59 + if (ptr == NULL) 1.60 + xerror("xdlsym: %s: %s\n", symbol, lt_dlerror()); 1.61 + return ptr; 1.62 +} 1.63 + 1.64 +void xdlclose(void *h) 1.65 +{ xassert(h != NULL); 1.66 + if (lt_dlclose(h) != 0) 1.67 + xerror("xdlclose: %s\n", lt_dlerror()); 1.68 + if (lt_dlexit() != 0) 1.69 + xerror("xdlclose: %s\n", lt_dlerror()); 1.70 + return; 1.71 +} 1.72 + 1.73 +/* POSIX version ******************************************************/ 1.74 + 1.75 +#elif defined(HAVE_DLFCN) 1.76 + 1.77 +#include <dlfcn.h> 1.78 + 1.79 +void *xdlopen(const char *module) 1.80 +{ void *h; 1.81 + h = dlopen(module, RTLD_NOW); 1.82 + if (h == NULL) 1.83 + lib_err_msg(dlerror()); 1.84 + return h; 1.85 +} 1.86 + 1.87 +void *xdlsym(void *h, const char *symbol) 1.88 +{ void *ptr; 1.89 + xassert(h != NULL); 1.90 + ptr = dlsym(h, symbol); 1.91 + if (ptr == NULL) 1.92 + xerror("xdlsym: %s: %s\n", symbol, dlerror()); 1.93 + return ptr; 1.94 +} 1.95 + 1.96 +void xdlclose(void *h) 1.97 +{ xassert(h != NULL); 1.98 + if (dlclose(h) != 0) 1.99 + xerror("xdlclose: %s\n", dlerror()); 1.100 + return; 1.101 +} 1.102 + 1.103 +/* Windows version ****************************************************/ 1.104 + 1.105 +#elif defined(__WOE__) 1.106 + 1.107 +#include <windows.h> 1.108 + 1.109 +void *xdlopen(const char *module) 1.110 +{ void *h; 1.111 + h = LoadLibrary(module); 1.112 + if (h == NULL) 1.113 + { char msg[20]; 1.114 + sprintf(msg, "Error %d", GetLastError()); 1.115 + lib_err_msg(msg); 1.116 + } 1.117 + return h; 1.118 +} 1.119 + 1.120 +void *xdlsym(void *h, const char *symbol) 1.121 +{ void *ptr; 1.122 + xassert(h != NULL); 1.123 + ptr = GetProcAddress(h, symbol); 1.124 + if (ptr == NULL) 1.125 + xerror("xdlsym: %s: Error %d\n", symbol, GetLastError()); 1.126 + return ptr; 1.127 +} 1.128 + 1.129 +void xdlclose(void *h) 1.130 +{ xassert(h != NULL); 1.131 + if (!FreeLibrary(h)) 1.132 + xerror("xdlclose: Error %d\n", GetLastError()); 1.133 + return; 1.134 +} 1.135 + 1.136 +/* NULL version *******************************************************/ 1.137 + 1.138 +#else 1.139 + 1.140 +void *xdlopen(const char *module) 1.141 +{ xassert(module == module); 1.142 + lib_err_msg("Shared libraries not supported"); 1.143 + return NULL; 1.144 +} 1.145 + 1.146 +void *xdlsym(void *h, const char *symbol) 1.147 +{ xassert(h != h); 1.148 + xassert(symbol != symbol); 1.149 + return NULL; 1.150 +} 1.151 + 1.152 +void xdlclose(void *h) 1.153 +{ xassert(h != h); 1.154 + return; 1.155 +} 1.156 + 1.157 +#endif 1.158 + 1.159 +/* eof */