cached_time = current_time; cached_ifc_len = ifc->ifc_len; if (cached_ifc_buf != NULL) free(cached_ifc_buf); if (ifc == &ifc_tmp) cached_ifc_buf = ifc_tmp.ifc_buf; else { cached_ifc_buf = malloc(cached_ifc_len); memcpy(cached_ifc_buf, ifc->ifc_buf, ifc->ifc_len); }