MCPcopy Create free account
hub / github.com/corosync/corosync / icmap_adjust_int_r

Function icmap_adjust_int_r

exec/icmap.c:926–981  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

924}
925
926cs_error_t icmap_adjust_int_r(
927 const icmap_map_t map,
928 const char *key_name,
929 int32_t step)
930{
931 struct icmap_item *item;
932 uint8_t u8;
933 uint16_t u16;
934 uint32_t u32;
935 uint64_t u64;
936 cs_error_t err = CS_OK;
937
938 if (key_name == NULL) {
939 return (CS_ERR_INVALID_PARAM);
940 }
941
942 item = qb_map_get(map->qb_map, key_name);
943 if (item == NULL) {
944 return (CS_ERR_NOT_EXIST);
945 }
946
947 switch (item->type) {
948 case ICMAP_VALUETYPE_INT8:
949 case ICMAP_VALUETYPE_UINT8:
950 memcpy(&u8, item->value, sizeof(u8));
951 u8 += step;
952 err = icmap_set(key_name, &u8, sizeof(u8), item->type);
953 break;
954 case ICMAP_VALUETYPE_INT16:
955 case ICMAP_VALUETYPE_UINT16:
956 memcpy(&u16, item->value, sizeof(u16));
957 u16 += step;
958 err = icmap_set(key_name, &u16, sizeof(u16), item->type);
959 break;
960 case ICMAP_VALUETYPE_INT32:
961 case ICMAP_VALUETYPE_UINT32:
962 memcpy(&u32, item->value, sizeof(u32));
963 u32 += step;
964 err = icmap_set(key_name, &u32, sizeof(u32), item->type);
965 break;
966 case ICMAP_VALUETYPE_INT64:
967 case ICMAP_VALUETYPE_UINT64:
968 memcpy(&u64, item->value, sizeof(u64));
969 u64 += step;
970 err = icmap_set(key_name, &u64, sizeof(u64), item->type);
971 break;
972 case ICMAP_VALUETYPE_FLOAT:
973 case ICMAP_VALUETYPE_DOUBLE:
974 case ICMAP_VALUETYPE_STRING:
975 case ICMAP_VALUETYPE_BINARY:
976 err = CS_ERR_INVALID_PARAM;
977 break;
978 }
979
980 return (err);
981}
982
983cs_error_t icmap_adjust_int(

Callers 3

icmap_adjust_intFunction · 0.85
icmap_inc_rFunction · 0.85
icmap_dec_rFunction · 0.85

Calls 1

icmap_setFunction · 0.85

Tested by

no test coverage detected