Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/src/runtime/c-libs/dl/dlerror.c
ViewVC logotype

Annotation of /sml/trunk/src/runtime/c-libs/dl/dlerror.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1576 - (view) (download) (as text)

1 : blume 772 /* dlerror.c
2 :     *
3 :     * COPYRIGHT (c) 2000 by Lucent Technologies, Bell Laboratories
4 :     */
5 :    
6 : mblume 1573 #ifndef OPSYS_WIN32
7 :     # include "ml-unixdep.h"
8 : mblume 1575 # include <dlfcn.h>
9 : mblume 1573 #endif
10 : blume 772 #include "ml-base.h"
11 :     #include "ml-values.h"
12 :     #include "ml-objects.h"
13 :     #include "ml-c.h"
14 :     #include "cfun-proto-list.h"
15 :    
16 : mblume 1573 #ifdef OPSYS_WIN32
17 :    
18 :     #include <stdio.h>
19 :     #include <stdlib.h>
20 :     #include <string.h>
21 :    
22 :     /* roll-your-own dlerror... */
23 :     static int dl_error_read = 0;
24 :     static char *dl_error = NULL;
25 :    
26 :     void dlerror_set (const char *fmt, const char *s)
27 :     {
28 :     if (dl_error != NULL)
29 :     free (dl_error);
30 :     dl_error = malloc (strlen (fmt) + strlen (s) + 1);
31 :     sprintf (dl_error, fmt, s);
32 :     dl_error_read = 0;
33 :     }
34 :    
35 :     char *dlerror (void)
36 :     {
37 :     if (dl_error)
38 :     if (dl_error_read) {
39 :     free (dl_error);
40 :     dl_error = NULL;
41 :     } else
42 :     dl_error_read = 1;
43 :    
44 :     return dl_error;
45 :     }
46 :     #endif
47 :    
48 : blume 772 /* _ml_P_Dynload_dlerror : unit -> string option
49 :     *
50 :     * Extract error after unsuccessful dlopen/dlsym/dlclose.
51 :     */
52 :     ml_val_t _ml_U_Dynload_dlerror (ml_state_t *msp, ml_val_t ml_handle)
53 :     {
54 : mblume 1573 const char *e = dlerror ();
55 : blume 772 ml_val_t r, s;
56 :    
57 :     if (e == NULL)
58 :     r = OPTION_NONE;
59 :     else {
60 :     s = ML_CString (msp, e);
61 :     OPTION_SOME (msp, r, s);
62 :     }
63 :     return r;
64 :     }

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0