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 ; }
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; }
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; }
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)); }
CAMLprim value unix_environment(value unit) { if (environ != NULL) { return copy_string_array((const char**)environ); } else { return Atom(0); } }
static void cmd_default(const char *pf, char **args) { close_state(); if (no_syntax()) return; ptr_array_add(¤t_syntax->default_colors, copy_string_array(args, count_strings(args))); }
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); }
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))); }
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; }
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; }
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; }
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); }
CAMLprim value unix_environment(value unit) { return copy_string_array((const char**)environ); }