📄 support.c
字号:
isc_result_t omapi_set_object_value (omapi_object_t *h, omapi_object_t *id, const char *name, omapi_object_t *value){ isc_result_t status; omapi_typed_data_t *tv = (omapi_typed_data_t *)0; omapi_data_string_t *n = (omapi_data_string_t *)0; int len; int ip; status = omapi_data_string_new (&n, strlen (name), MDL); if (status != ISC_R_SUCCESS) return status; memcpy (n -> value, name, strlen (name)); status = omapi_typed_data_new (MDL, &tv, omapi_datatype_object, value); if (status != ISC_R_SUCCESS) { omapi_data_string_dereference (&n, MDL); return status; } status = omapi_set_value (h, id, n, tv); omapi_data_string_dereference (&n, MDL); omapi_typed_data_dereference (&tv, MDL); return status;}isc_result_t omapi_set_string_value (omapi_object_t *h, omapi_object_t *id, const char *name, const char *value){ isc_result_t status; omapi_typed_data_t *tv = (omapi_typed_data_t *)0; omapi_data_string_t *n = (omapi_data_string_t *)0; int len; int ip; status = omapi_data_string_new (&n, strlen (name), MDL); if (status != ISC_R_SUCCESS) return status; memcpy (n -> value, name, strlen (name)); status = omapi_typed_data_new (MDL, &tv, omapi_datatype_string, value); if (status != ISC_R_SUCCESS) { omapi_data_string_dereference (&n, MDL); return status; } status = omapi_set_value (h, id, n, tv); omapi_data_string_dereference (&n, MDL); omapi_typed_data_dereference (&tv, MDL); return status;}isc_result_t omapi_get_value (omapi_object_t *h, omapi_object_t *id, omapi_data_string_t *name, omapi_value_t **value){ omapi_object_t *outer; for (outer = h; outer -> outer; outer = outer -> outer) ; if (outer -> type -> get_value) return (*(outer -> type -> get_value)) (outer, id, name, value); return ISC_R_NOTFOUND;}isc_result_t omapi_get_value_str (omapi_object_t *h, omapi_object_t *id, const char *name, omapi_value_t **value){ omapi_object_t *outer; omapi_data_string_t *nds; isc_result_t status; nds = (omapi_data_string_t *)0; status = omapi_data_string_new (&nds, strlen (name), MDL); if (status != ISC_R_SUCCESS) return status; memcpy (nds -> value, name, strlen (name)); for (outer = h; outer -> outer; outer = outer -> outer) ; if (outer -> type -> get_value) status = (*(outer -> type -> get_value)) (outer, id, nds, value); else status = ISC_R_NOTFOUND; omapi_data_string_dereference (&nds, MDL); return status;}isc_result_t omapi_stuff_values (omapi_object_t *c, omapi_object_t *id, omapi_object_t *o){ omapi_object_t *outer; for (outer = o; outer -> outer; outer = outer -> outer) ; if (outer -> type -> stuff_values) return (*(outer -> type -> stuff_values)) (c, id, outer); return ISC_R_NOTFOUND;}isc_result_t omapi_object_create (omapi_object_t **obj, omapi_object_t *id, omapi_object_type_t *type){ if (!type -> create) return ISC_R_NOTIMPLEMENTED; return (*(type -> create)) (obj, id);}isc_result_t omapi_object_update (omapi_object_t *obj, omapi_object_t *id, omapi_object_t *src, omapi_handle_t handle){ omapi_generic_object_t *gsrc; isc_result_t status; int i; if (!src) return ISC_R_INVALIDARG; if (src -> type != omapi_type_generic) return ISC_R_NOTIMPLEMENTED; gsrc = (omapi_generic_object_t *)src; for (i = 0; i < gsrc -> nvalues; i++) { status = omapi_set_value (obj, id, gsrc -> values [i] -> name, gsrc -> values [i] -> value); if (status != ISC_R_SUCCESS && status != ISC_R_UNCHANGED) return status; } if (handle) omapi_set_int_value (obj, id, "remote-handle", (int)handle); status = omapi_signal (obj, "updated"); if (status != ISC_R_NOTFOUND) return status; return ISC_R_SUCCESS;}int omapi_data_string_cmp (omapi_data_string_t *s1, omapi_data_string_t *s2){ unsigned len; int rv; if (s1 -> len > s2 -> len) len = s2 -> len; else len = s1 -> len; rv = memcmp (s1 -> value, s2 -> value, len); if (rv) return rv; if (s1 -> len > s2 -> len) return 1; else if (s1 -> len < s2 -> len) return -1; return 0;}int omapi_ds_strcmp (omapi_data_string_t *s1, const char *s2){ unsigned len, slen; int rv; slen = strlen (s2); if (slen > s1 -> len) len = s1 -> len; else len = slen; rv = memcmp (s1 -> value, s2, len); if (rv) return rv; if (s1 -> len > slen) return 1; else if (s1 -> len < slen) return -1; return 0;}int omapi_td_strcmp (omapi_typed_data_t *s1, const char *s2){ unsigned len, slen; int rv; /* If the data type is not compatible, never equal. */ if (s1 -> type != omapi_datatype_data && s1 -> type != omapi_datatype_string) return -1; slen = strlen (s2); if (slen > s1 -> u.buffer.len) len = s1 -> u.buffer.len; else len = slen; rv = memcmp (s1 -> u.buffer.value, s2, len); if (rv) return rv; if (s1 -> u.buffer.len > slen) return 1; else if (s1 -> u.buffer.len < slen) return -1; return 0;}int omapi_td_strcasecmp (omapi_typed_data_t *s1, const char *s2){ unsigned len, slen; int rv; /* If the data type is not compatible, never equal. */ if (s1 -> type != omapi_datatype_data && s1 -> type != omapi_datatype_string) return -1; slen = strlen (s2); if (slen > s1 -> u.buffer.len) len = s1 -> u.buffer.len; else len = slen; rv = casecmp (s1 -> u.buffer.value, s2, len); if (rv) return rv; if (s1 -> u.buffer.len > slen) return 1; else if (s1 -> u.buffer.len < slen) return -1; return 0;}isc_result_t omapi_make_value (omapi_value_t **vp, omapi_data_string_t *name, omapi_typed_data_t *value, const char *file, int line){ isc_result_t status; status = omapi_value_new (vp, file, line); if (status != ISC_R_SUCCESS) return status; status = omapi_data_string_reference (&(*vp) -> name, name, file, line); if (status != ISC_R_SUCCESS) { omapi_value_dereference (vp, file, line); return status; } if (value) { status = omapi_typed_data_reference (&(*vp) -> value, value, file, line); if (status != ISC_R_SUCCESS) { omapi_value_dereference (vp, file, line); return status; } } return ISC_R_SUCCESS;}isc_result_t omapi_make_const_value (omapi_value_t **vp, omapi_data_string_t *name, const unsigned char *value, unsigned len, const char *file, int line){ isc_result_t status; status = omapi_value_new (vp, file, line); if (status != ISC_R_SUCCESS) return status; status = omapi_data_string_reference (&(*vp) -> name, name, file, line); if (status != ISC_R_SUCCESS) { omapi_value_dereference (vp, file, line); return status; } if (value) { status = omapi_typed_data_new (file, line, &(*vp) -> value, omapi_datatype_data, len); if (status != ISC_R_SUCCESS) { omapi_value_dereference (vp, file, line); return status; } memcpy ((*vp) -> value -> u.buffer.value, value, len); } return ISC_R_SUCCESS;}isc_result_t omapi_make_int_value (omapi_value_t **vp, omapi_data_string_t *name, int value, const char *file, int line){ isc_result_t status; status = omapi_value_new (vp, file, line); if (status != ISC_R_SUCCESS) return status; status = omapi_data_string_reference (&(*vp) -> name, name, file, line); if (status != ISC_R_SUCCESS) { omapi_value_dereference (vp, file, line); return status; } status = omapi_typed_data_new (file, line, &(*vp) -> value, omapi_datatype_int, value); if (status != ISC_R_SUCCESS) { omapi_value_dereference (vp, file, line); return status; } return ISC_R_SUCCESS;}isc_result_t omapi_make_uint_value (omapi_value_t **vp, omapi_data_string_t *name, unsigned int value, const char *file, int line){ return omapi_make_int_value (vp, name, (int)value, file, line);}isc_result_t omapi_make_object_value (omapi_value_t **vp, omapi_data_string_t *name, omapi_object_t *value, const char *file, int line){ isc_result_t status; status = omapi_value_new (vp, file, line); if (status != ISC_R_SUCCESS) return status; status = omapi_data_string_reference (&(*vp) -> name, name, file, line); if (status != ISC_R_SUCCESS) { omapi_value_dereference (vp, file, line); return status; } if (value) { status = omapi_typed_data_new (file, line, &(*vp) -> value, omapi_datatype_object, value); if (status != ISC_R_SUCCESS) { omapi_value_dereference (vp, file, line); return status; } } return ISC_R_SUCCESS;}isc_result_t omapi_make_handle_value (omapi_value_t **vp, omapi_data_string_t *name, omapi_object_t *value, const char *file, int line){ isc_result_t status; status = omapi_value_new (vp, file, line); if (status != ISC_R_SUCCESS) return status; status = omapi_data_string_reference (&(*vp) -> name, name, file, line); if (status != ISC_R_SUCCESS) { omapi_value_dereference (vp, file, line); return status; } if (value) { status = omapi_typed_data_new (file, line, &(*vp) -> value, omapi_datatype_int); if (status != ISC_R_SUCCESS) { omapi_value_dereference (vp, file, line); return status; } status = (omapi_object_handle ((omapi_handle_t *)&(*vp) -> value -> u.integer, value)); if (status != ISC_R_SUCCESS) { omapi_value_dereference (vp, file, line); return status; } } return ISC_R_SUCCESS;}isc_result_t omapi_make_string_value (omapi_value_t **vp, omapi_data_string_t *name, const char *value, const char *file, int line){ isc_result_t status; status = omapi_value_new (vp, file, line); if (status != ISC_R_SUCCESS) return status; status = omapi_data_string_reference (&(*vp) -> name, name, file, line); if (status != ISC_R_SUCCESS) { omapi_value_dereference (vp, file, line); return status; } if (value) { status = omapi_typed_data_new (file, line, &(*vp) -> value, omapi_datatype_string, value); if (status != ISC_R_SUCCESS) { omapi_value_dereference (vp, file, line); return status; } } return ISC_R_SUCCESS;}isc_result_t omapi_get_int_value (unsigned long *v, omapi_typed_data_t *t){ u_int32_t rv; if (t -> type == omapi_datatype_int) { *v = t -> u.integer; return ISC_R_SUCCESS; } else if (t -> type == omapi_datatype_string || t -> type == omapi_datatype_data) { if (t -> u.buffer.len != sizeof (rv)) return ISC_R_INVALIDARG; memcpy (&rv, t -> u.buffer.value, sizeof rv); *v = ntohl (rv); return ISC_R_SUCCESS; } return ISC_R_INVALIDARG;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -