reworked on HCL_LOG_TARGET
This commit is contained in:
		| @ -315,16 +315,16 @@ void hcl_fini (hcl_t* hcl) | |||||||
| 		hcl->log.len = 0; | 		hcl->log.len = 0; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (hcl->option.log_target) | 	if (hcl->option.log_target_u) | ||||||
| 	{ | 	{ | ||||||
| 		hcl_freemem (hcl, hcl->option.log_target); | 		hcl_freemem (hcl, hcl->option.log_target_u); | ||||||
| 		hcl->option.log_target = HCL_NULL; | 		hcl->option.log_target_u = HCL_NULL; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (hcl->option.log_targetx) | 	if (hcl->option.log_target_b) | ||||||
| 	{ | 	{ | ||||||
| 		hcl_freemem (hcl, hcl->option.log_targetx); | 		hcl_freemem (hcl, hcl->option.log_target_b); | ||||||
| 		hcl->option.log_targetx = HCL_NULL; | 		hcl->option.log_target_b = HCL_NULL; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (hcl->inttostr.xbuf.ptr) | 	if (hcl->inttostr.xbuf.ptr) | ||||||
| @ -406,33 +406,46 @@ int hcl_setoption (hcl_t* hcl, hcl_option_t id, const void* value) | |||||||
| 			hcl->option.log_maxcapa = *(hcl_oow_t*)value; | 			hcl->option.log_maxcapa = *(hcl_oow_t*)value; | ||||||
| 			break; | 			break; | ||||||
|  |  | ||||||
| 		case HCL_LOG_TARGET: |  | ||||||
| 		{ |  | ||||||
| 			hcl_ooch_t* v1; |  | ||||||
| 		#if defined(HCL_OOCH_IS_UCH) |  | ||||||
| 			hcl_bch_t* v2; |  | ||||||
| 		#else |  | ||||||
| 			hcl_uch_t* v2; |  | ||||||
| 		#endif |  | ||||||
|  |  | ||||||
| 			v1 = hcl_dupoochars(hcl, value, hcl_count_oocstr(value)); | 		case HCL_LOG_TARGET_B: | ||||||
|  | 		{ | ||||||
|  | 			hcl_bch_t* v1; | ||||||
|  | 			hcl_uch_t* v2; | ||||||
|  |  | ||||||
|  | 			v1 = hcl_dupbcstr(hcl, value, HCL_NULL); | ||||||
| 			if (HCL_UNLIKELY(!v1)) return -1; | 			if (HCL_UNLIKELY(!v1)) return -1; | ||||||
|  |  | ||||||
| 		#if defined(HCL_OOCH_IS_UCH) | 			v2 = hcl_dupbtoucstr(hcl, value, HCL_NULL); | ||||||
| 			v2 = hcl_dupootobcstr(hcl, value, HCL_NULL); |  | ||||||
| 		#else |  | ||||||
| 			v2 = hcl_dupootoucstr(hcl, value, HCL_NULL); |  | ||||||
| 		#endif |  | ||||||
| 			if (HCL_UNLIKELY(!v2)) | 			if (HCL_UNLIKELY(!v2)) | ||||||
| 			{ | 			{ | ||||||
| 				hcl_freemem (hcl, v1); | 				hcl_freemem (hcl, v1); | ||||||
| 				return -1; | 				return -1; | ||||||
| 			} | 			} | ||||||
| 			hcl->option.log_targetx = v2; |  | ||||||
| 			hcl->option.log_target = v1; | 			hcl->option.log_target_u = v2; | ||||||
|  | 			hcl->option.log_target_b = v1; | ||||||
| 			break; | 			break; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		case HCL_LOG_TARGET_U: | ||||||
|  | 		{ | ||||||
|  | 			hcl_uch_t* v1; | ||||||
|  | 			hcl_bch_t* v2; | ||||||
|  |  | ||||||
|  | 			v1 = hcl_dupucstr(hcl, value, HCL_NULL); | ||||||
|  | 			if (HCL_UNLIKELY(!v1)) return -1; | ||||||
|  |  | ||||||
|  | 			v2 = hcl_duputobcstr(hcl, value, HCL_NULL); | ||||||
|  | 			if (HCL_UNLIKELY(!v2)) | ||||||
|  | 			{ | ||||||
|  | 				hcl_freemem (hcl, v1); | ||||||
|  | 				return -1; | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			hcl->option.log_target_u = v1; | ||||||
|  | 			hcl->option.log_target_b = v2; | ||||||
|  | 			break; | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		case HCL_SYMTAB_SIZE: | 		case HCL_SYMTAB_SIZE: | ||||||
| 		{ | 		{ | ||||||
| @ -504,8 +517,12 @@ int hcl_getoption (hcl_t* hcl, hcl_option_t id, void* value) | |||||||
| 			*(hcl_oow_t*)value = hcl->option.log_maxcapa; | 			*(hcl_oow_t*)value = hcl->option.log_maxcapa; | ||||||
| 			return 0; | 			return 0; | ||||||
|  |  | ||||||
| 		case HCL_LOG_TARGET: | 		case HCL_LOG_TARGET_B: | ||||||
| 			*(hcl_ooch_t**)value = hcl->option.log_target; | 			*(hcl_bch_t**)value = hcl->option.log_target_b; | ||||||
|  | 			return 0; | ||||||
|  |  | ||||||
|  | 		case HCL_LOG_TARGET_U: | ||||||
|  | 			*(hcl_uch_t**)value = hcl->option.log_target_u; | ||||||
| 			return 0; | 			return 0; | ||||||
|  |  | ||||||
| 		case HCL_SYMTAB_SIZE: | 		case HCL_SYMTAB_SIZE: | ||||||
|  | |||||||
| @ -169,7 +169,14 @@ enum hcl_option_t | |||||||
| 	HCL_TRAIT, | 	HCL_TRAIT, | ||||||
| 	HCL_LOG_MASK, | 	HCL_LOG_MASK, | ||||||
| 	HCL_LOG_MAXCAPA, | 	HCL_LOG_MAXCAPA, | ||||||
| 	HCL_LOG_TARGET, | 	HCL_LOG_TARGET_B, | ||||||
|  | 	HCL_LOG_TARGET_U, | ||||||
|  | #if defined(HCL_OOCH_IS_UCH) | ||||||
|  | #	define HCL_LOG_TARGET HCL_LOG_TARGET_U | ||||||
|  | #else | ||||||
|  | #	define HCL_LOG_TARGET HCL_LOG_TARGET_B | ||||||
|  | #endif | ||||||
|  |  | ||||||
| 	HCL_SYMTAB_SIZE,  /* default system table size */ | 	HCL_SYMTAB_SIZE,  /* default system table size */ | ||||||
| 	HCL_SYSDIC_SIZE,  /* default system dictionary size */ | 	HCL_SYSDIC_SIZE,  /* default system dictionary size */ | ||||||
| 	HCL_PROCSTK_SIZE, /* default process stack size */ | 	HCL_PROCSTK_SIZE, /* default process stack size */ | ||||||
| @ -1466,12 +1473,8 @@ struct hcl_t | |||||||
| 		hcl_bitmask_t trait; | 		hcl_bitmask_t trait; | ||||||
| 		hcl_bitmask_t log_mask; | 		hcl_bitmask_t log_mask; | ||||||
| 		hcl_oow_t log_maxcapa; | 		hcl_oow_t log_maxcapa; | ||||||
| 		hcl_ooch_t* log_target; | 		hcl_bch_t* log_target_b; | ||||||
| 	#if defined(HCL_OOCH_IS_UCH) | 		hcl_uch_t* log_target_u; | ||||||
| 		hcl_bch_t* log_targetx; |  | ||||||
| 	#else |  | ||||||
| 		hcl_uch_t* log_targetx; |  | ||||||
| 	#endif |  | ||||||
| 		hcl_oow_t dfl_symtab_size; | 		hcl_oow_t dfl_symtab_size; | ||||||
| 		hcl_oow_t dfl_sysdic_size; | 		hcl_oow_t dfl_sysdic_size; | ||||||
| 		hcl_oow_t dfl_procstk_size; | 		hcl_oow_t dfl_procstk_size; | ||||||
|  | |||||||
| @ -2744,13 +2744,13 @@ static void cb_opt_set (hcl_t* hcl, hcl_option_t id, const void* value) | |||||||
| 	if (id != HCL_LOG_TARGET) return; /* return success. not interested */ | 	if (id != HCL_LOG_TARGET) return; /* return success. not interested */ | ||||||
|  |  | ||||||
| #if defined(_WIN32) | #if defined(_WIN32) | ||||||
| 	fd = _open(hcl->option.log_target, _O_CREAT | _O_WRONLY | _O_APPEND | _O_BINARY , 0644); |  | ||||||
| #else |  | ||||||
| 	#if defined(HCL_OOCH_IS_UCH) | 	#if defined(HCL_OOCH_IS_UCH) | ||||||
| 	fd = open(hcl->option.log_targetx, O_CREAT | O_WRONLY | O_APPEND , 0644); | 	fd = _open(hcl->option.log_target_u, _O_CREAT | _O_WRONLY | _O_APPEND | _O_BINARY , 0644); | ||||||
| 	#else | 	#else | ||||||
| 	fd = open(hcl->option.log_target, O_CREAT | O_WRONLY | O_APPEND , 0644); | 	fd = _open(hcl->option.log_target_b, _O_CREAT | _O_WRONLY | _O_APPEND | _O_BINARY , 0644); | ||||||
| 	#endif | 	#endif | ||||||
|  | #else | ||||||
|  | 	fd = open(hcl->option.log_target_b, O_CREAT | O_WRONLY | O_APPEND , 0644); | ||||||
| #endif | #endif | ||||||
| 	if (fd == -1) | 	if (fd == -1) | ||||||
| 	{ | 	{ | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user