int load_string(tbsys::CConfig& config, char* dest, const int32_t size, const char* section, const char* name, bool not_null) { int ret = OB_SUCCESS; if (NULL == dest || 0 >= size || NULL == section || NULL == name) { ret = OB_ERROR; } const char* value = NULL; if (OB_SUCCESS == ret) { value = config.getString(section, name); if (not_null && (NULL == value || 0 >= strlen(value))) { TBSYS_LOG(ERROR, "%s.%s has not been set.", section, name); ret = OB_ERROR; } } if (OB_SUCCESS == ret && NULL != value) { if ((int32_t)strlen(value) >= size) { TBSYS_LOG(ERROR, "%s.%s too long, length (%d) > %d", section, name, (int32_t)strlen(value), size); ret = OB_SIZE_OVERFLOW; } else { memset(dest, 0, size); strncpy(dest, value, strlen(value)); } } return ret; }
int ObMergeServerParams::load_string(tbsys::CConfig & conf, char* dest, const int32_t size, const char* section, const char* name, bool require) { int ret = OB_SUCCESS; if (NULL == dest || 0 >= size || NULL == section || NULL == name) { ret = OB_ERROR; } const char* value = NULL; if (OB_SUCCESS == ret) { value = conf.getString(section, name); if (require && (NULL == value || 0 >= strlen(value))) { TBSYS_LOG(ERROR, "%s.%s has not been set.", section, name); ret = OB_ERROR; } } if (OB_SUCCESS == ret && NULL != value) { if ((int32_t)strlen(value) >= size) { TBSYS_LOG(ERROR, "%s.%s too long, length (%ld) > %d", section, name, strlen(value), size); ret = OB_SIZE_OVERFLOW; } else { strncpy(dest, value, strlen(value)); } } return ret; }