--- libelwix/example/test_pack.c 2013/06/28 13:05:49 1.1.2.1 +++ libelwix/example/test_pack.c 2014/02/11 01:05:40 1.4.2.1 @@ -6,5 +6,167 @@ int main(int argc, char **argv) { + rpack_t *rp; + register int i; + char n8 = '*'; + short n16 = 0xdeba; + int n32 = 0xdeadbeef; + long long int n64 = 0x123456789abcdef0; + char *str; + + if (argc < 2) + return 1; + + rp = rpack_create(argv[1], strlen(argv[1]) + 1); + if (!rp) { + printf("#%d - %s\n", elwix_GetErrno(), elwix_GetError()); + return 2; + } else + printf("create raw packet %p -> %s(%d)\n", rp, rp->r_buf, rp->r_len); + + printf("test rpack_data::\n"); + for (i = 0; i < RPACK_LEN(rp); i++) { + if (i == 4) { + str = rpack_data(rp, "F0ST4T4", 8); + str[7] = 0; + printf("\t%d) %s\n", i, str ? str : NULL); + i += 8; + } else { + str = rpack_data(rp, NULL, 1); + printf("\t%d) %c\n", i, str ? *str : 0xff); + } + e_free(str); + } + RPACK_REWIND(rp); + for (i = 0; i < RPACK_LEN(rp); i++) { + str = rpack_data(rp, NULL, 1); + printf("\t%d) %c\n", i, str ? *str : 0xff); + e_free(str); + } + RPACK_REWIND(rp); + + printf("test rpack_raw::\n"); + for (i = 0; i < RPACK_LEN(rp); i++) { + if (i == 4) { + str = rpack_rdata(rp, "F0ST4T4", 8); + str[7] = 0; + printf("\t%d) %s\n", i, str ? str : NULL); + i += 8; + } else { + str = rpack_rdata(rp, NULL, 1); + printf("\t%d) %c\n", i, str ? *str : 0xff); + } + e_free(str); + } + RPACK_REWIND(rp); + for (i = 0; i < RPACK_LEN(rp); i++) { + str = rpack_rdata(rp, NULL, 1); + printf("\t%d) %c\n", i, str ? *str : 0xff); + e_free(str); + } + RPACK_REWIND(rp); + + + printf("test rpack_uint8::\n"); + for (i = 0; i < RPACK_LEN(rp); i++) + if (i == 4) + printf("\t%d) %c\n", i, rpack_uint8(rp, (uint8_t*) &n8)); + else + printf("\t%d) %c\n", i, rpack_uint8(rp, NULL)); + RPACK_REWIND(rp); + for (i = 0; i < RPACK_LEN(rp); i++) + printf("\t%d) %c\n", i, rpack_uint8(rp, NULL)); + RPACK_REWIND(rp); + + printf("test rpack_uint16::\n"); + for (i = 0; i < RPACK_LEN(rp); i++) + if (i == 4) + printf("\t%d) %x\n", i, rpack_uint16(rp, (uint16_t*) &n16, 0)); + else + printf("\t%d) %x\n", i, rpack_uint16(rp, NULL, 0)); + RPACK_REWIND(rp); + for (i = 0; i < RPACK_LEN(rp); i++) + printf("\t%d) %x\n", i, rpack_uint16(rp, NULL, 0)); + RPACK_REWIND(rp); + + printf("test rpack_ruint16::\n"); + for (i = 0; i < RPACK_LEN(rp); i++) + if (i == 4) + printf("\t%d) %x\n", i, rpack_ruint16(rp, (uint16_t*) &n16, 0)); + else + printf("\t%d) %x\n", i, rpack_ruint16(rp, NULL, 0)); + RPACK_REWIND(rp); + for (i = 0; i < RPACK_LEN(rp); i++) + printf("\t%d) %x\n", i, rpack_ruint16(rp, NULL, 0)); + RPACK_REWIND(rp); + + printf("test rpack_uint24::\n"); + for (i = 0; i < RPACK_LEN(rp); i++) + if (i == 4) + printf("\t%d) %x\n", i, rpack_uint24(rp, (uint32_t*) &n32, 0)); + else + printf("\t%d) %x\n", i, rpack_uint24(rp, NULL, 0)); + RPACK_REWIND(rp); + for (i = 0; i < RPACK_LEN(rp); i++) + printf("\t%d) %x\n", i, rpack_uint24(rp, NULL, 0)); + RPACK_REWIND(rp); + + printf("test rpack_ruint24::\n"); + for (i = 0; i < RPACK_LEN(rp); i++) + if (i == 4) + printf("\t%d) %x\n", i, rpack_ruint24(rp, (uint32_t*) &n32, 0)); + else + printf("\t%d) %x\n", i, rpack_ruint24(rp, NULL, 0)); + RPACK_REWIND(rp); + for (i = 0; i < RPACK_LEN(rp); i++) + printf("\t%d) %x\n", i, rpack_ruint24(rp, NULL, 0)); + RPACK_REWIND(rp); + + printf("test rpack_uint32::\n"); + for (i = 0; i < RPACK_LEN(rp); i++) + if (i == 4) + printf("\t%d) %x\n", i, rpack_uint32(rp, (uint32_t*) &n32, 0)); + else + printf("\t%d) %x\n", i, rpack_uint32(rp, NULL, 0)); + RPACK_REWIND(rp); + for (i = 0; i < RPACK_LEN(rp); i++) + printf("\t%d) %x\n", i, rpack_uint32(rp, NULL, 0)); + RPACK_REWIND(rp); + + printf("test rpack_ruint32::\n"); + for (i = 0; i < RPACK_LEN(rp); i++) + if (i == 4) + printf("\t%d) %x\n", i, rpack_ruint32(rp, (uint32_t*) &n32, 0)); + else + printf("\t%d) %x\n", i, rpack_ruint32(rp, NULL, 0)); + RPACK_REWIND(rp); + for (i = 0; i < RPACK_LEN(rp); i++) + printf("\t%d) %x\n", i, rpack_ruint32(rp, NULL, 0)); + RPACK_REWIND(rp); + + printf("test rpack_uint64::\n"); + for (i = 0; i < RPACK_LEN(rp); i++) + if (i == 4) + printf("\t%d) %llx\n", i, rpack_uint64(rp, (uint64_t*) &n64, 0)); + else + printf("\t%d) %llx\n", i, rpack_uint64(rp, NULL, 0)); + RPACK_REWIND(rp); + for (i = 0; i < RPACK_LEN(rp); i++) + printf("\t%d) %llx\n", i, rpack_uint64(rp, NULL, 0)); + RPACK_REWIND(rp); + + printf("test rpack_ruint64::\n"); + for (i = 0; i < RPACK_LEN(rp); i++) + if (i == 4) + printf("\t%d) %llx\n", i, rpack_ruint64(rp, (uint64_t*) &n64, 0)); + else + printf("\t%d) %llx\n", i, rpack_ruint64(rp, NULL, 0)); + RPACK_REWIND(rp); + for (i = 0; i < RPACK_LEN(rp); i++) + printf("\t%d) %llx\n", i, rpack_ruint64(rp, NULL, 0)); + RPACK_REWIND(rp); + + rpack_destroy(&rp); + printf("destroy packet %p\n", rp); return 0; }