예제 #1
0
파일: judge.c 프로젝트: humek/lambdaOJ
void set_lang_option(struct lang_config* lc, enum lang lang_flag,char *path)
{
    lc->compile_cmd = compiler[lang_flag]->str ;
    lc->exe_cmd = execute[lang_flag]->str;
    int len ;
    len = copy_string_array(compile_args[lang_flag],lc->compile_args) ;
    lc->compile_args[len] = path ; 
    lc->compile_args[len+1] = NULL ;
    len =copy_string_array(execute_args[lang_flag],lc->exe_args) ;
    lc->exe_args[len] = NULL ;
}
예제 #2
0
파일: gethost.c 프로젝트: stedolan/ocaml
static value alloc_host_entry(struct hostent *entry)
{
  value res;
  value name = Val_unit, aliases = Val_unit;
  value addr_list = Val_unit, adr = Val_unit;

  Begin_roots4 (name, aliases, addr_list, adr);
    name = copy_string((char *)(entry->h_name));
    /* PR#4043: protect against buggy implementations of gethostbyname()
       that return a NULL pointer in h_aliases */
    if (entry->h_aliases)
      aliases = copy_string_array((const char**)entry->h_aliases);
    else
      aliases = Atom(0);
    entry_h_length = entry->h_length;
#ifdef h_addr
    addr_list = alloc_array(alloc_one_addr, (const char**)entry->h_addr_list);
#else
    adr = alloc_one_addr(entry->h_addr);
    addr_list = caml_alloc_1(0, adr);
#endif
    int addrtype;
    switch (entry->h_addrtype) {
    case PF_UNIX:          addrtype = 0; break;
    case PF_INET:          addrtype = 1; break;
    default: /*PF_INET6 */ addrtype = 2; break;
    }
    res = caml_alloc_4(0, name, aliases,
                       Val_int(addrtype), addr_list);
  End_roots();
  return res;
}
예제 #3
0
static value alloc_host_entry(struct hostent *entry)
{
  value res;
  value name = Val_unit, aliases = Val_unit;
  value addr_list = Val_unit, adr = Val_unit;

  Begin_roots4 (name, aliases, addr_list, adr);
    name = copy_string((char *)(entry->h_name));
    /* PR#4043: protect against buggy implementations of gethostbyname()
       that return a NULL pointer in h_aliases */
    if (entry->h_aliases)
      aliases = copy_string_array((const char**)entry->h_aliases);
    else
      aliases = Atom(0);
    entry_h_length = entry->h_length;
#ifdef h_addr
    addr_list = alloc_array(alloc_one_addr, (const char**)entry->h_addr_list);
#else
    adr = alloc_one_addr(entry->h_addr);
    addr_list = alloc_small(1, 0);
    Field(addr_list, 0) = adr;
#endif
    res = alloc_small(4, 0);
    Field(res, 0) = name;
    Field(res, 1) = aliases;
    switch (entry->h_addrtype) {
    case PF_UNIX:          Field(res, 2) = Val_int(0); break;
    case PF_INET:          Field(res, 2) = Val_int(1); break;
    default: /*PF_INET6 */ Field(res, 2) = Val_int(2); break;
    }
    Field(res, 3) = addr_list;
  End_roots();
  return res;
}
예제 #4
0
파일: sys.c 프로젝트: alepharchives/exsml
void sys_init(char ** argv)
{
	value v;
	int i;

	init_float_handler();

	v = copy_string_array(argv);
	modify(&Field(global_data, SYS__COMMAND_LINE), v);
	for (i = SYS__S_IRUSR; i <= SYS__S_IXALL; i++)
		Field(global_data, i) = LONG_TO_VAL(sys_var_init[i - SYS__S_IRUSR]);
	Field(global_data, SYS__INTERACTIVE) = Val_false;
	Field(global_data, SYS__MAX_VECT_LENGTH) = LONG_TO_VAL(Max_wosize);
	Field(global_data, SYS__MAX_STRING_LENGTH) =
		LONG_TO_VAL(Max_wosize * sizeof(value) - 2);

	/* Allocate the exn names for pervasize dynamic exceptions */
	for (i = SYS__FIRST_EXN; i <= SYS__LAST_EXN ; i++) {
		value exn = mkexnname(globalexn[i - SYS__FIRST_EXN]);
		modify(&Field(global_data, i), exn);
	}
	/* Allocate some exn values for use in interprete */
	modify(&Field(global_data, EXN_INTERRUPT), mkexn0val(SYS__EXN_INTERRUPT));
	modify(&Field(global_data, EXN_DIV),       mkexn0val(SYS__EXN_DIV));
	modify(&Field(global_data, EXN_OVERFLOW),  mkexn0val(SYS__EXN_OVERFLOW));
}
예제 #5
0
파일: envir.c 프로젝트: bmeurer/ocamljit2
CAMLprim value unix_environment(value unit)
{
  if (environ != NULL) {
    return copy_string_array((const char**)environ);
  } else {
    return Atom(0);
  }
}
예제 #6
0
파일: state.c 프로젝트: dsaravel/dex
static void cmd_default(const char *pf, char **args)
{
	close_state();
	if (no_syntax())
		return;

	ptr_array_add(&current_syntax->default_colors, copy_string_array(args, count_strings(args)));
}
예제 #7
0
파일: main.c 프로젝트: Elytum/tutoSh1
int				main(int argc, char **argv, char **env_table)
{
	t_env		*env;

	if (!(env = (t_env *)malloc(sizeof(t_env))))
		return (-1);
	env->env_table = copy_string_array(env_table);
	builtin_env(env);
	return (0);
}
예제 #8
0
파일: librange.c 프로젝트: A1izee/range
char * range_compress(const char ** c_nodes, const char* c_separator) {
  CAMLparam0();
  CAMLlocal3(caml_result, caml_nodes, caml_separator);

  caml_nodes = copy_string_array(c_nodes);
  caml_separator = caml_copy_string(c_separator);
  caml_result = callback2_exn(*cb_range_compress, caml_nodes, caml_separator);

  if (range_set_exception(caml_result))
    CAMLreturn(NULL);
  else
    CAMLreturn(strdup(String_val(caml_result)));
}
예제 #9
0
static value alloc_proto_entry(struct protoent *entry)
{
  value res;
  value name = Val_unit, aliases = Val_unit;

  Begin_roots2 (name, aliases);
    name = copy_string(entry->p_name);
    aliases = copy_string_array((const char**)entry->p_aliases);
    res = alloc_small(3, 0);
    Init_field(res, 0, name);
    Init_field(res, 1, aliases);
    Init_field(res, 2, Val_int(entry->p_proto));
  End_roots();
  return res;
}
예제 #10
0
static value alloc_group_entry(struct group *entry)
{
  value res;
  value name = Val_unit, pass = Val_unit, mem = Val_unit;

  Begin_roots3 (name, pass, mem);
    name = copy_string(entry->gr_name);
    pass = copy_string(entry->gr_passwd);
    mem = copy_string_array((const char**)entry->gr_mem);
    res = alloc_small(4, 0);
    Init_field(res, 0, name);
    Init_field(res, 1, pass);
    Init_field(res, 2, Val_int(entry->gr_gid));
    Init_field(res, 3, mem);
  End_roots();
  return res;
}
예제 #11
0
static value alloc_service_entry(struct servent *entry)
{
  value res;
  value name = Val_unit, aliases = Val_unit, proto = Val_unit;

  Begin_roots3 (name, aliases, proto);
    name = copy_string(entry->s_name);
    aliases = copy_string_array((const char**)entry->s_aliases);
    proto = copy_string(entry->s_proto);
    res = alloc_small(4, 0);
    Field(res,0) = name;
    Field(res,1) = aliases;
    Field(res,2) = Val_int(ntohs(entry->s_port));
    Field(res,3) = proto;
  End_roots();
  return res;
}
예제 #12
0
파일: main.c 프로젝트: Elytum/tutoSh1
int			main(int argc, char **argv, char **env_table)
{
	t_env		*env;
	char		*line;

	if (!(env = (t_env *)malloc(sizeof(t_env))))
		return (-1);
	env->env_table = copy_string_array(env_table);
	write(1, PROMPT, sizeof(PROMPT) - 1);
	while (get_next_line(1, &env->line) > 0)
	{
		if (*env->line)
		{
			env->command = get_called_command(env->line);
			if (!strcmp(env->command, "env"))
				builtin_env(env);
			else
				unknown_command(env->command);
		}
		write(1, PROMPT, sizeof(PROMPT) - 1);
	}
	return (0);
}
예제 #13
0
CAMLprim value unix_environment(value unit)
{
  return copy_string_array((const char**)environ);
}