/* Binary search the OID registry. OIDs are stored in ascending order *ofhashvaluethenascendingorderofsizeandtheninascending *orderofreversevalue.
*/
i = 0;
k = OID__NR; while (i < k) {
j = (i + k) / 2;
xhash = oid_search_table[j].hash; if (xhash > hash) {
k = j; continue;
} if (xhash < hash) {
i = j + 1; continue;
}
oid = oid_search_table[j].oid;
len = oid_index[oid + 1] - oid_index[oid]; if (len > datasize) {
k = j; continue;
} if (len < datasize) {
i = j + 1; continue;
}
/* Variation is most likely to be at the tail end of the *OID,sodothecomparisoninreverse.
*/ while (len > 0) { unsignedchar a = oid_data[oid_index[oid] + --len]; unsignedchar b = octets[len]; if (a > b) {
k = j; goto next;
} if (a < b) {
i = j + 1; goto next;
}
} return oid;
next:
;
}
n = *v++;
ret = count = snprintf(buffer, bufsize, "%u.%u", n / 40, n % 40); if (count >= bufsize) return -ENOBUFS;
buffer += count;
bufsize -= count;
while (v < end) {
n = *v++; if (!(n & 0x80)) {
num = n;
} else {
num = n & 0x7f; do { if (v >= end) goto bad;
n = *v++;
num <<= 7;
num |= n & 0x7f;
} while (n & 0x80);
}
ret += count = snprintf(buffer, bufsize, ".%lu", num); if (count >= bufsize) return -ENOBUFS;
buffer += count;
bufsize -= count;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.