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