]> infiniteadaptability.org Git - seeder/commitdiff
... master
authoralex <[email protected]>
Wed, 2 Nov 2022 05:10:59 +0000 (22:10 -0700)
committeralex <[email protected]>
Wed, 2 Nov 2022 05:10:59 +0000 (22:10 -0700)
inc/bencode.h [deleted file]
src/bencode/decode.c [deleted file]
src/bencode/encode.c [deleted file]
test/unit/bencode.tests.c [deleted file]

diff --git a/inc/bencode.h b/inc/bencode.h
deleted file mode 100644 (file)
index e5b1008..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifndef __BENCODE_H_
-#define __BENCODE_H_
-
-#include<inttypes.h>
-#include<stddef.h>
-#include<stdint.h>
-#include<stdio.h>
-#include<stdlib.h>
-#include<string.h>
-
-enum bencode_type {
-       BENCODE_DICTIONARY,
-       BENCODE_INTEGER,
-       BENCODE_LIST,
-       BENCODE_STRING
-};
-
-ssize_t bdecode_int(const uint8_t*,size_t,long long int*);
-ssize_t bdecode_string(const uint8_t*,size_t,uint8_t*,size_t);
-enum bencode_type bdecode_type(const uint8_t*,size_t);
-ssize_t bencode_dict_end(uint8_t*,size_t);
-ssize_t bencode_dict_start(uint8_t*,size_t);
-ssize_t bencode_int(long long int,uint8_t*,size_t);
-ssize_t bencode_list_end(uint8_t*,size_t);
-ssize_t bencode_list_start(uint8_t*,size_t);
-ssize_t bencode_size(size_t,uint8_t*,size_t);
-size_t bencode_size_int(intmax_t);
-ssize_t bencode_string(const uint8_t*,size_t,uint8_t*,size_t);
-
-#endif
diff --git a/src/bencode/decode.c b/src/bencode/decode.c
deleted file mode 100644 (file)
index 8963eee..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-#include<bencode.h>
-
-ssize_t bdecode_int(const uint8_t *buf, size_t buf_len, long long int *output) {
-       if(NULL==buf) { return -1; }
-       if(buf_len<=0) { return -1; }
-       if(NULL==output) { return -1; }
-
-       const uint8_t *p = NULL;
-       for(size_t i=0;i<buf_len;i++) {
-               // 0 padded integers are invalid
-               if((1==i)&&(buf[i]=='0')&&(buf_len>3)) { return -1; }
-               if(buf[i]=='e') {
-                       p = &(buf[i]);
-               }
-       }
-
-       if(NULL==p) { return -1; }
-
-       ssize_t len = p - (buf+1);
-       uint8_t *num_string = (uint8_t*) strndup((const char*)&(buf[1]),len);
-       *output = atoll((char *)num_string);
-       free(num_string);
-
-       len += 2;
-
-       return len;
-}
-
-ssize_t bdecode_string(const uint8_t *buf, size_t buf_len, uint8_t *output, size_t output_size) {
-       if(NULL==buf) { return -1; }
-       if(buf_len<=0) { return -1; }
-       if(NULL==output) { return -1; }
-
-       const uint8_t *p = NULL;
-       for(size_t i=0;i<buf_len;i++) {
-               if(buf[i]==':') {
-                       p = &(buf[i]);
-                       break;
-               }
-       }
-
-       if(NULL==p) { return -1; }
-       uint8_t *num_string = (uint8_t*) strndup((const char*)buf,p-buf);
-       int str_len = atoi((char *)num_string);
-       ssize_t len = str_len;
-       free(num_string);
-
-       if((str_len<=0)||(len>output_size)) { return -1; }
-
-       p++;
-       memcpy(output,p,str_len);
-
-       return len;
-}
-
-enum bencode_type bdecode_type(const uint8_t *buf, size_t len) {
-       switch(buf[0]) {
-               case 'i':
-                       return BENCODE_INTEGER;
-               case 'l':
-                       return BENCODE_LIST;
-               case 'd':
-                       return BENCODE_DICTIONARY;
-               default:
-                       return BENCODE_STRING;
-       }
-}
diff --git a/src/bencode/encode.c b/src/bencode/encode.c
deleted file mode 100644 (file)
index ef1ccd1..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-#include<bencode.h>
-
-ssize_t bencode_dict_end(uint8_t *output, size_t output_size) {
-       if(NULL==output) { return -1; }
-       if(output_size<1) { return -1; }
-
-       output[0] = 'e';
-
-       return 1;
-}
-
-ssize_t bencode_dict_start(uint8_t *output, size_t output_size) {
-       if(NULL==output) { return -1; }
-       if(output_size<1) { return -1; }
-
-       output[0] = 'd';
-
-       return 1;
-}
-
-ssize_t bencode_int(long long int to_encode, uint8_t *output, size_t output_size) {
-       size_t i;
-       int ret;
-
-       if(NULL==output) { return -1; }
-
-       i = bencode_size_int(to_encode);
-       i += 2;
-
-       if((ret = snprintf((char*)output,output_size,"i%llue",to_encode))<0) { return -1; }
-       if(ret!=i) { return -1; }
-
-       return i;
-}
-
-ssize_t bencode_list_end(uint8_t *output, size_t output_size) {
-       if(NULL==output) { return -1; }
-       if(output_size<=1) { return -1; }
-
-       output[0] = 'e';
-
-       return 1;
-}
-
-ssize_t bencode_list_start(uint8_t *output, size_t output_size) {
-       if(NULL==output) { return -1; }
-       if(output_size<=1) { return -1; }
-
-       output[0] = 'l';
-
-       return 1;
-}
-
-ssize_t bencode_size(size_t len, uint8_t *output, size_t output_size) {
-       size_t i;
-
-       if(len>INTMAX_MAX) { return -1; }
-
-       i = bencode_size_int(len);
-       i++; // account for ':'
-       if(i>output_size) { return -1; }
-
-       // snprintf requires space for '\0' otherwise will truncate
-       if(snprintf((char*)output,i+1,"%lu:",len)!=i) { return -1; }
-
-       return i;
-}
-
-size_t bencode_size_int(intmax_t i) {
-       size_t j = (i<0)?1:0;
-       
-       i = imaxabs(i);
-       if(0==i) { return 1; }
-
-       while(i>0) {
-               i /= 10;
-               j++;
-       }
-       return j;
-}
-
-ssize_t bencode_string(const uint8_t *str, size_t len, uint8_t *output, size_t output_size) {
-       size_t i;
-       
-       if(NULL==str) { return -1; }
-       if(NULL==output) { return -1; }
-
-       if((i = bencode_size(len,output,output_size))<0) { return -1; }
-       
-       if(i+len>output_size) { return -1; }
-
-       memcpy(&(output[i]),str,len);
-
-       return i+len;
-}
diff --git a/test/unit/bencode.tests.c b/test/unit/bencode.tests.c
deleted file mode 100644 (file)
index d8723d0..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-#include<test_utils.h>
-
-#include<bencode.h>
-
-int main();
-static void bdecode_integer_basic_test();
-static void bdecode_string_basic_test();
-static void bdecode_type_basic_test();
-static void bencode_dict_basic_test();
-static void bencode_list_basic_test();
-static void bencode_size_basic_test();
-static void bencode_size_int_basic_test();
-static void bencode_string_basic_test();
-
-int main() {
-       setup_env();
-       
-       bdecode_integer_basic_test();
-       bdecode_string_basic_test();
-       bdecode_type_basic_test();
-       bencode_dict_basic_test();
-       bencode_list_basic_test();
-       bencode_size_basic_test();
-       bencode_size_int_basic_test();
-       bencode_string_basic_test();
-
-       clean_env();
-
-       return EXIT_SUCCESS;
-}
-
-static void bdecode_integer_basic_test() {
-       uint8_t str1[] = "i10e";
-       uint8_t str2[] = "i0e";
-       uint8_t str3[] = "i0023423e";
-       uint8_t str4[] = "i10928390128301e";
-       long long int i;
-
-       assert(bdecode_int(NULL,sizeof(str1)-1,&i)==-1);
-       assert(bdecode_int(str1,0,&i)==-1);
-       assert(bdecode_int(str1,sizeof(str1)-1,NULL)==-1);
-       assert(bdecode_int(str1,sizeof(str1)-1,&i)==4);
-       assert(i==10);
-
-       assert(bdecode_int(str2,sizeof(str2)-1,&i)==3);
-       assert(i==0);
-
-       assert(bdecode_int(str3,sizeof(str3)-1,&i)==-1);
-
-       assert(bdecode_int(str4,sizeof(str4)-1,&i)==16);
-       assert(i==10928390128301);
-}
-
-static void bdecode_string_basic_test() {
-       uint8_t buf[1024];
-       uint8_t str1[] = "4:spam";
-
-       assert(bdecode_string(NULL,sizeof(str1)-1,buf,1024)==-1);
-       assert(bdecode_string(str1,0,buf,1024)==-1);
-       assert(bdecode_string(str1,sizeof(str1)-1,NULL,1024)==-1);
-       assert(bdecode_string(str1,sizeof(str1)-1,buf,0)==-1);
-       assert(bdecode_string(str1,sizeof(str1)-1,buf,3)==-1);
-       assert(bdecode_string(str1,sizeof(str1)-1,buf,4)==4);
-       assert(bdecode_string(str1,sizeof(str1)-1,buf,1024)==4);
-       assert(memcmp(buf,"spam",4)==0);
-}
-
-static void bdecode_type_basic_test() {
-       uint8_t str1[] = "4:spam";
-       uint8_t str2[] = "i12093e";
-       uint8_t str3[] = "l4:spam4:eggse";
-       uint8_t str4[] = "d3:cow3:moo4:spam4:eggse";
-
-       assert(BENCODE_STRING==bdecode_type(str1,sizeof(str1)-1));
-       assert(BENCODE_INTEGER==bdecode_type(str2,sizeof(str2)-1));
-       assert(BENCODE_LIST==bdecode_type(str3,sizeof(str3)-1));
-       assert(BENCODE_DICTIONARY==bdecode_type(str4,sizeof(str4)-1));
-}
-
-static void bencode_dict_basic_test() {
-       uint8_t buf[1024];
-       uint8_t *p;
-
-       memset(buf,0,1024);
-
-       p = buf;
-       assert(bencode_dict_start(NULL,1024)==-1);
-       assert(bencode_dict_start(p,0)==-1);
-       assert(bencode_dict_start(p,1024)==1);
-       p++;
-
-       uint8_t str1[] = "cow";
-       assert(bencode_string(str1,3,p,1023)==5);
-       p += 5;
-
-       uint8_t str2[] = "moo";
-       assert(bencode_string(str2,3,p,1018)==5);
-       p += 5;
-
-       uint8_t str3[] = "spam";
-       assert(bencode_string(str3,4,p,1013)==6);
-       p += 6;
-
-       uint8_t str4[] = "eggs";
-       assert(bencode_string(str4,4,p,1007)==6);
-       p += 6;
-       
-       assert(bencode_dict_end(NULL,1001)==-1);
-       assert(bencode_dict_end(p,0)==-1);
-       assert(bencode_dict_end(p,1001)==1);
-
-       assert(memcmp(buf,"d3:cow3:moo4:spam4:eggse",24)==0);
-}
-
-static void bencode_list_basic_test() {
-       uint8_t buf[1024];
-       uint8_t *p;
-
-       memset(buf,0,1024);
-
-       p = buf;
-       assert(bencode_list_start(NULL,1024)==-1);
-       assert(bencode_list_start(p,0)==-1);
-       assert(bencode_list_start(p,1024)==1);
-       p++;
-
-       uint8_t str1[] = "spam";
-       assert(bencode_string(str1,4,p,1023)==6);
-       p += 6;
-
-       uint8_t str2[] = "eggs";
-       assert(bencode_string(str2,4,p,1017)==6);
-       p += 6;
-
-       assert(bencode_list_end(NULL,1011)==-1);
-       assert(bencode_list_end(p,0)==-1);
-       assert(bencode_list_end(p,1011)==1);
-
-       assert(memcmp(buf,"l4:spam4:eggse",14)==0);
-}
-
-static void bencode_size_basic_test() {
-       uint8_t buf[1024];
-
-       assert(bencode_size(0,buf,1)==-1);
-       assert(bencode_size(0,buf,2)==2);
-
-       assert(bencode_size(1234567890,buf,1024)==11);
-       
-       assert(bencode_size(SIZE_MAX,buf,1024)==-1);
-       assert(bencode_size(INTMAX_MAX,buf,1024)>0);
-}
-
-static void bencode_size_int_basic_test() {
-       assert(bencode_size_int(0)==1);
-       assert(bencode_size_int(-1)==2);
-       assert(bencode_size_int(109)==3);
-       assert(bencode_size_int(23984723984)==11);
-       assert(bencode_size_int(922337203685477580)==18);
-       assert(bencode_size_int(INTMAX_MIN)>0);
-       assert(bencode_size_int(INTMAX_MAX)>0);
-}
-
-static void bencode_string_basic_test() {
-       uint8_t buf[1024];
-
-       memset(buf,0,1024);
-
-       uint8_t str1[] = "testlkajslfkdjasdfl test string";
-       assert(bencode_string(NULL,31,buf,1024)==-1);
-       assert(bencode_string(str1,31,NULL,1024)==-1);
-       assert(bencode_string(str1,31,buf,0)==-1);
-       
-       assert(bencode_string(str1,0,buf,1024)==2);
-       assert(memcmp("0:",buf,2)==0);
-
-       assert(bencode_string(str1,31,buf,1024)==34);
-       assert(memcmp("31:testlkajslfkdjasdfl test string",buf,34)==0);
-}