From ce5a7b990dc0387bcdbcf09e21d13668d62a2c7f Mon Sep 17 00:00:00 2001 From: "7u83@mail.ru" <7u83@mail.ru@noemail.net> Date: Sat, 31 Jan 2015 11:21:32 +0000 Subject: [PATCH] Inital commit FossilOrigin-Name: 39e7097bc6ff122072d11fd7d282ec9624a223313d12f944dbca3e50e3676cba --- src/capwap/bstr_create_from_cfgstr.c | 65 ++++++++++++++++++++++++++++ src/capwap/bstr_replace.c | 12 +++++ 2 files changed, 77 insertions(+) create mode 100644 src/capwap/bstr_create_from_cfgstr.c create mode 100644 src/capwap/bstr_replace.c diff --git a/src/capwap/bstr_create_from_cfgstr.c b/src/capwap/bstr_create_from_cfgstr.c new file mode 100644 index 00000000..6efb7f60 --- /dev/null +++ b/src/capwap/bstr_create_from_cfgstr.c @@ -0,0 +1,65 @@ +#include +#include +#include + +#include "bstr.h" + + + +uint8_t * bstr_create_from_cfgstr(const char * s) +{ + int l = strlen(s); + + + if (s[0]!='.') + return bstr_create((uint8_t*)s,l+1); + + if (l<=2) + return bstr_create((uint8_t*)s,l+1); + + if (s[1]=='.'){ + return bstr_create((uint8_t*)s+1,l); + } + + if (s[1]=='x'){ + uint8_t * ns=0; + int len=0; + + int ch,cl; + const char *ss = s+2; + int rc ; + do { + rc = sscanf(ss,"%01X",&ch); + if (rc!=1) + break; + ss++; + rc = sscanf(ss,"%01X",&cl); + if (rc!=1) + cl=0; + ss++; + int c=(ch<<4) | cl; + + len++; + ns = realloc(ns,len); + ns[len-1]=c; + + + }while (rc==1); + + + return bstr_create(ns,len); + + + } + +/* if (strcmp(s,".reflect")==0){ + free(*si); + *si=0; + *l=0; + return 1; + } +*/ + return NULL; +} + + diff --git a/src/capwap/bstr_replace.c b/src/capwap/bstr_replace.c new file mode 100644 index 00000000..e6d9c0c4 --- /dev/null +++ b/src/capwap/bstr_replace.c @@ -0,0 +1,12 @@ +#include + +#include "bstr.h" + +uint8_t * bstr_replace( uint8_t ** str, uint8_t * data, int len) +{ + if (str) + free(str); + + *str = bstr_create(data,len); + return *str; +}