1 /*
2  * $Id: wdl.c,v 1.1 2005-09-18 22:05:38 dhmunro Exp $
3  * MS Windows version of play dynamic linking operations
4  */
5 /* Copyright (c) 2005, The Regents of the University of California.
6  * All rights reserved.
7  * This file is part of yorick (http://yorick.sourceforge.net).
8  * Read the accompanying LICENSE file for details.
9  */
10 
11 #include "config.h"
12 
13 #include "pstdlib.h"
14 #include "playw.h"
15 #include <string.h>
16 
17 #ifdef PLUG_HEADER
18 #include PLUG_HEADER
19 #endif
20 
21 #ifndef PLUG_DISABLE
22 
23 #ifndef PLUG_SUFFIX
24 # define PLUG_SUFFIX ".dll"
25 #endif
26 
27 void *
p_dlopen(const char * dlname)28 p_dlopen(const char *dlname)
29 {
30   void *handle = 0;
31   if (dlname && dlname[0]) {
32     char *name = p_strncat(w_pathname(dlname), PLUG_SUFFIX, 0);
33     handle = LoadLibrary(name);
34     p_free(name);
35   }
36   return handle;
37 }
38 
39 int
p_dlsym(void * handle,const char * symbol,int type,void * paddr)40 p_dlsym(void *handle, const char *symbol, int type, void *paddr)
41 {
42   void **addr = paddr;
43   addr[0] = GetProcAddress(handle, symbol);
44   return !addr[0];
45 }
46 
47 
48 
49 #else
50 
51 /* ARGSUSED */
52 void *
p_dlopen(const char * dlname)53 p_dlopen(const char *dlname)
54 {
55   return 0;
56 }
57 
58 /* ARGSUSED */
59 int
p_dlsym(void * handle,const char * symbol,int type,void * paddr)60 p_dlsym(void *handle, const char *symbol, int type, void *paddr)
61 {
62   void **addr = paddr;
63   addr[0] = 0;
64   return 1;
65 }
66 
67 #endif
68