int unpack_int(buffer_ptr b) { int i, count = 0; char num[12]; byte *bp; bp = (byte *) num; if (b->read_index > b->len) { return(-1); } // printf("unpack_int(): len = %d\n", b->len); // printf("unpack_int(): read_index = %d\n", b->read_index); while (b->data[b->read_index] != ' ' && b->read_index < b->len) { i = b->read_index; // printf("unpack_int(): read_index = %d\n", i); // printf("unpack_int(): b->data[i] = %d %c\n", b->data[i], // b->data[i]); *(bp++) = b->data[i]; b->read_index++; count++; // printf("unpack_int(): count = %d\n", count); if (count > 12 || b->read_index > b->len) { fprintf(stderr, "unpack_int(): buffer overrun\n"); return(-1); } } *(bp) = 0; b->read_index++; // printf("unpack_int(): num = |%s|\n", num); return (atoi(num)); }