diff options
author | Jacques Garrigue <garrigue at math.nagoya-u.ac.jp> | 1999-11-16 10:22:42 +0000 |
---|---|---|
committer | Jacques Garrigue <garrigue at math.nagoya-u.ac.jp> | 1999-11-16 10:22:42 +0000 |
commit | 9696d300803ab6fcb5ab2884cd65fe05696e7025 (patch) | |
tree | 82e406c747a89199f5d8a74b161da42aa00fdeb9 /otherlibs/labltk/support/cltkMisc.c | |
download | ocaml-labltk.tar.gz |
import labltklabltk
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/labltk@2531 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'otherlibs/labltk/support/cltkMisc.c')
-rw-r--r-- | otherlibs/labltk/support/cltkMisc.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/otherlibs/labltk/support/cltkMisc.c b/otherlibs/labltk/support/cltkMisc.c new file mode 100644 index 0000000000..22db83e46a --- /dev/null +++ b/otherlibs/labltk/support/cltkMisc.c @@ -0,0 +1,42 @@ +#include <tcl.h> +#include <tk.h> +#include <caml/mlvalues.h> +#include <caml/memory.h> +#include "camltk.h" + +/* Parsing results */ +value camltk_splitlist (v) /* ML */ + value v; +{ + int argc; + char **argv; + int result; + + CheckInit(); + + /* argv is allocated by Tcl, to be freed by us */ + result = Tcl_SplitList(cltclinterp,String_val(v),&argc,&argv); + switch(result) { + case TCL_OK: + { value res = copy_string_list(argc,argv); + free((char *)argv); /* only one large block was allocated */ + return res; + } + case TCL_ERROR: + default: + tk_error(cltclinterp->result); + } +} + +/* Copy a Caml string to the C heap. Should deallocate with stat_free */ +char *string_to_c(s) + value s; +{ + int l = string_length(s); + char *res = stat_alloc(l + 1); + bcopy(String_val(s),res,l); + res[l] = '\0'; + return res; +} + + |