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

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