c_bool u_cfElementAttributeFloatValue( u_cfElement element, const c_char *attributeName, c_float *f) { u_result r; c_bool result; v_cfElement ke; c_value value; c_value resultValue; result = FALSE; if ((element != NULL) && (f != NULL)) { r = u_cfNodeReadClaim(u_cfNode(element), (v_cfNode*)(&ke)); if (r == U_RESULT_OK) { value = v_cfElementAttributeValue(ke, attributeName); result = u_cfValueScan(value, V_FLOAT, &resultValue); if (result == TRUE) { *f = resultValue.is.Float; } u_cfNodeRelease(u_cfNode(element)); } } return result; }
c_bool u_cfElementAttributeBoolValue( u_cfElement element, const c_char *attributeName, c_bool *b) { u_result r; c_bool result; v_cfElement ke; c_value value; c_value resultValue; result = FALSE; if ((element != NULL) && (b != NULL)) { r = u_cfNodeReadClaim(u_cfNode(element), (v_cfNode*)(&ke)); if (r == U_RESULT_OK) { value = v_cfElementAttributeValue(ke, attributeName); result = u_cfValueScan(value, V_BOOLEAN, &resultValue); if (result == TRUE) { *b = resultValue.is.Boolean; } u_cfNodeRelease(u_cfNode(element)); } } return result; }
c_bool u_cfElementAttributeULongValue( u_cfElement element, const c_char *attributeName, c_ulong *ul) { u_result r; c_bool result; v_cfElement ke; c_value value; c_value resultValue; result = FALSE; if ((element != NULL) && (ul != NULL)) { r = u_cfNodeReadClaim(u_cfNode(element), (v_cfNode*)(&ke)); if (r == U_RESULT_OK) { value = v_cfElementAttributeValue(ke, attributeName); result = u_cfValueScan(value, V_ULONG, &resultValue); if (result == TRUE) { *ul = resultValue.is.ULong; } u_cfNodeRelease(u_cfNode(element)); } } return result; }
c_bool u_cfDataBoolValue( u_cfData data, c_bool *b) { u_result r; c_bool result; v_cfData kData; c_value value; c_value resultValue; result = FALSE; if ((data != NULL) && (b != NULL)) { r = u_cfNodeReadClaim(u_cfNode(data), (v_cfNode*)(&kData)); if (r == U_RESULT_OK) { value = v_cfDataValue(kData); result = u_cfValueScan(value, V_BOOLEAN, &resultValue); if (result == TRUE) { *b = resultValue.is.Boolean; } u_cfNodeRelease(u_cfNode(data)); } } return result; }
c_bool u_cfDataStringValue( u_cfData data, c_char **str) { u_result r; c_bool result; v_cfData kData; c_value value; c_value resultValue; result = FALSE; if ((data != NULL) && (str != NULL)) { r = u_cfNodeReadClaim(u_cfNode(data), (v_cfNode*)(&kData)); if (r == U_RESULT_OK) { value = v_cfDataValue(kData); result = u_cfValueScan(value, V_STRING, &resultValue); if (result == TRUE) { *str = resultValue.is.String; } u_cfNodeRelease(u_cfNode(data)); } } return result; }
c_bool u_cfDataSizeValue( u_cfData data, c_ulong *ul) { u_result r; c_bool result; v_cfData kData; c_value value; c_value resultValue; result = FALSE; if ((data != NULL) && (ul != NULL)) { r = u_cfNodeReadClaim(u_cfNode(data), (v_cfNode*)(&kData)); if (r == U_RESULT_OK) { value = v_cfDataValue(kData); result = u_cfValueScan(value, V_SIZE, &resultValue); if (result == TRUE) { *ul = resultValue.is.ULong; } u_cfNodeRelease(u_cfNode(data)); } } return result; }
c_bool u_cfDataFloatValue( u_cfData data, c_float *f) { u_result r; c_bool result; v_cfData kData; c_value value; c_value resultValue; result = FALSE; if ((data != NULL) && (f != NULL)) { r = u_cfNodeReadClaim(u_cfNode(data), (v_cfNode*)(&kData)); if (r == U_RESULT_OK) { value = v_cfDataValue(kData); result = u_cfValueScan(value, V_FLOAT, &resultValue); if (result == TRUE) { *f = resultValue.is.Float; } u_cfNodeRelease(u_cfNode(data)); } } return result; }
c_bool u_cfDataLongValue( u_cfData data, c_long *lv) { u_result r; c_bool result; v_cfData kData; c_value value; c_value resultValue; result = FALSE; if ((data != NULL) && (lv != NULL)) { r = u_cfNodeReadClaim(u_cfNode(data), (v_cfNode*)(&kData)); if (r == U_RESULT_OK) { value = v_cfDataValue(kData); result = u_cfValueScan(value, V_LONG, &resultValue); if (result == TRUE) { *lv = resultValue.is.Long; } u_cfNodeRelease(u_cfNode(data)); } } return result; }
static int lockPages( v_kernel k, const c_char *name) { v_configuration cfg; v_cfElement root; v_cfElement service; v_cfData data; int lock; c_char *path; c_iter iter; int iterLength; c_value value; assert(k); lock = 0; cfg = v_getConfiguration(k); if (cfg != NULL) { root = v_configurationGetRoot(cfg); if (root != NULL) { path = (c_char *)os_malloc(strlen(SERVICE_PATH) + strlen(name)); /* NULL terminator is covered by '%s' in SERVICE_PATH constant */ os_sprintf(path, SERVICE_PATH, name); iter = v_cfElementXPath(root, path); iterLength = c_iterLength(iter); os_free(path); if (iterLength == 1) { service = v_cfElement(c_iterTakeFirst(iter)); c_iterFree(iter); iter = v_cfElementXPath(service, "Locking/#text"); iterLength = c_iterLength(iter); if (iterLength == 1) { data = v_cfData(c_iterTakeFirst(iter)); if (u_cfValueScan(v_cfDataValue(data), V_BOOLEAN, &value)) { if (value.is.Boolean) { lock = 1; OS_REPORT_1(OS_INFO,"lockPages", 0, "service '%s': Locking enabled", name); } } else { OS_REPORT_1(OS_WARNING,"lockPages", 0, "Failed to retrieve Locking for service '%s': Locking disabled", name); } } } else if (iterLength > 1) { OS_REPORT_2(OS_WARNING,"lockPages", 0, "Multiple configuration found for service '%s' (too many: %d): Locking disabled", name, iterLength); } else { OS_REPORT_1(OS_WARNING,"lockPages", 0, "Could not get configuration for service '%s' (non-existent): Locking disabled", name); } c_iterFree(iter); c_free(root); } } return lock; }