1999-12-16 04:25:11 -08:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Objective Caml LablTk library */
|
|
|
|
/* */
|
|
|
|
/* Francois Rouaix, Francois Pessaux and Jun Furuse */
|
|
|
|
/* projet Cristal, INRIA Rocquencourt */
|
|
|
|
/* Jacques Garrigue, Kyoto University RIMS */
|
|
|
|
/* */
|
|
|
|
/* Copyright 1999 Institut National de Recherche en Informatique et */
|
|
|
|
/* en Automatique and Kyoto University. All rights reserved. */
|
|
|
|
/* This file is distributed under the terms of the GNU Library */
|
2001-12-07 05:41:02 -08:00
|
|
|
/* General Public License, with the special exception on linking */
|
|
|
|
/* described in file ../../../LICENSE. */
|
1999-12-16 04:25:11 -08:00
|
|
|
/* */
|
|
|
|
/*************************************************************************/
|
|
|
|
|
|
|
|
/* $Id$ */
|
|
|
|
|
2000-04-17 01:55:44 -07:00
|
|
|
#include <string.h>
|
1999-11-30 06:59:39 -08:00
|
|
|
#include <tcl.h>
|
|
|
|
#include <tk.h>
|
2000-04-17 01:55:44 -07:00
|
|
|
#include <mlvalues.h>
|
|
|
|
#include <memory.h>
|
1999-11-30 06:59:39 -08:00
|
|
|
#include "camltk.h"
|
|
|
|
|
|
|
|
/* Parsing results */
|
2001-08-28 07:47:48 -07:00
|
|
|
CAMLprim value camltk_splitlist (value v)
|
1999-11-30 06:59:39 -08:00
|
|
|
{
|
|
|
|
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 */
|
2000-04-17 01:55:44 -07:00
|
|
|
char *string_to_c(value s)
|
1999-11-30 06:59:39 -08:00
|
|
|
{
|
|
|
|
int l = string_length(s);
|
|
|
|
char *res = stat_alloc(l + 1);
|
2000-11-23 05:45:03 -08:00
|
|
|
memmove (res, String_val (s), l);
|
1999-11-30 06:59:39 -08:00
|
|
|
res[l] = '\0';
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
|
|
|
|
|