|
SASC
DVBSoftCAM
|
#include <ctype.h>#include <stdlib.h>#include <stdarg.h>#include <string.h>#include <vdr/tools.h>#include <vdr/thread.h>#include "misc.h"Go to the source code of this file.
Defines | |
| #define | CRCPOLY_LE 0xedb88320 |
Functions | |
| const char * | HexStr (char *str, const unsigned char *mem, int len) |
| static int | HexDigit (int asc) |
| int | GetChar (const char *&line, int *store, int count) |
| static int | GetHexBase (const char *&line, unsigned char *store, int count, bool fixedLen, bool asc) |
| int | GetHex (const char *&line, unsigned char *store, int count, bool fixedLen) |
| int | GetHexAsc (const char *&line, unsigned char *store, int count) |
| unsigned long long | Bin2LongLong (unsigned char *mem, int len) |
| bool | CheckNull (const unsigned char *data, int len) |
| bool | CheckFF (const unsigned char *data, int len) |
| void | SetSctLen (unsigned char *data, int len) |
| unsigned char | XorSum (const unsigned char *mem, int len) |
| char * | bprintf (const char *fmt,...) |
| unsigned int | crc32_le (unsigned int crc, unsigned char const *p, int len) |
| #define CRCPOLY_LE 0xedb88320 |
Definition at line 144 of file misc.c.
Referenced by crc32_le().
| unsigned long long Bin2LongLong | ( | unsigned char * | mem, |
| int | len | ||
| ) |
| char* bprintf | ( | const char * | fmt, |
| ... | |||
| ) |
| bool CheckFF | ( | const unsigned char * | data, |
| int | len | ||
| ) |
| bool CheckNull | ( | const unsigned char * | data, |
| int | len | ||
| ) |
| unsigned int crc32_le | ( | unsigned int | crc, |
| unsigned char const * | p, | ||
| int | len | ||
| ) |
Definition at line 146 of file misc.c.
References CRCPOLY_LE, and i.
{
crc^=0xffffffff; // zlib mod
while(len--) {
crc^=*p++;
for(int i=0; i<8; i++)
crc=(crc&1) ? (crc>>1)^CRCPOLY_LE : (crc>>1);
}
crc^=0xffffffff; // zlib mod
return crc;
}
| int GetChar | ( | const char *& | line, |
| int * | store, | ||
| int | count | ||
| ) |
Definition at line 44 of file misc.c.
References skipspace().
| int GetHex | ( | const char *& | line, |
| unsigned char * | store, | ||
| int | count, | ||
| bool | fixedLen | ||
| ) |
Definition at line 86 of file misc.c.
References GetHexBase().
{
return GetHexBase(line,store,count,fixedLen,false);
}
| int GetHexAsc | ( | const char *& | line, |
| unsigned char * | store, | ||
| int | count | ||
| ) |
Definition at line 91 of file misc.c.
References GetHexBase().
{
return GetHexBase(line,store,count/2,true,true)*2;
}
| static int GetHexBase | ( | const char *& | line, |
| unsigned char * | store, | ||
| int | count, | ||
| bool | fixedLen, | ||
| bool | asc | ||
| ) | [static] |
Definition at line 60 of file misc.c.
References count, HexDigit(), and skipspace().
Referenced by GetHex(), and GetHexAsc().
{
line=skipspace(line);
const char *sline=line;
unsigned char *sstore=store;
int scount=count;
while(count) {
if(line[0]==0 || line[1]==0 || !isxdigit(line[0]) || !isxdigit(line[1])) break;
if(asc) {
*store++=line[0]; *store++=line[1];
}
else {
int d1=HexDigit(line[0]);
int d0=HexDigit(line[1]);
*store++=(d1<<4) + d0;
}
line+=2; count--;
}
if(asc) *store=0; // make sure strings are NULL terminated
if((!count || (!fixedLen && count!=scount)) &&
(!*line || isspace(*line) || *line==';' || *line==']' || *line=='/') ) return scount-count;
memset(sstore,0,scount);
line=sline;
return 0;
}
| static int HexDigit | ( | int | asc | ) | [static] |
Definition at line 38 of file misc.c.
Referenced by GetHexBase().
{
if(asc>='A') return toupper(asc)-'A'+10;
return asc-'0';
}
| const char* HexStr | ( | char * | str, |
| const unsigned char * | mem, | ||
| int | len | ||
| ) |
| void SetSctLen | ( | unsigned char * | data, |
| int | len | ||
| ) |