vdr
1.7.27
|
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
#include <float.h>
#include <iconv.h>
#include <math.h>
#include <poll.h>
#include <stdarg.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <syslog.h>
#include <sys/stat.h>
#include <sys/types.h>
Go to the source code of this file.
Classes | |
class | cCharSetConv |
class | cString |
class | cBase64Encoder |
class | cBitStream |
class | cTimeMs |
class | cReadLine |
class | cPoller |
class | cReadDir |
class | cFile |
class | cSafeFile |
class | cUnbufferedFile |
cUnbufferedFile is used for large files that are mainly written or read in a streaming manner, and thus should not be cached. More... | |
class | cLockFile |
class | cListObject |
class | cListBase |
class | cList< T > |
class | cVector< T > |
class | cStringList |
class | cFileNameList |
class | cHashObject |
class | cHashBase |
class | cHash< T > |
Defines | |
#define | esyslog(a...) void( (SysLogLevel > 0) ? syslog_with_tid(LOG_ERR, a) : void() ) |
#define | isyslog(a...) void( (SysLogLevel > 1) ? syslog_with_tid(LOG_ERR, a) : void() ) |
#define | dsyslog(a...) void( (SysLogLevel > 2) ? syslog_with_tid(LOG_ERR, a) : void() ) |
#define | LOG_ERROR esyslog("ERROR (%s,%d): %m", __FILE__, __LINE__) |
#define | LOG_ERROR_STR(s) esyslog("ERROR (%s,%d): %s: %m", __FILE__, __LINE__, s) |
#define | SECSINDAY 86400 |
#define | KILOBYTE(n) ((n) * 1024) |
#define | MEGABYTE(n) ((n) * 1024LL * 1024LL) |
#define | MALLOC(type, size) (type *)malloc(sizeof(type) * (size)) |
#define | CHECK(s) { if ((s) < 0) LOG_ERROR; } |
#define | FATALERRNO (errno && errno != EAGAIN && errno != EINTR) |
#define | BCDCHARTOINT(x) (10 * ((x & 0xF0) >> 4) + (x & 0xF)) |
#define | Utf8BufSize(s) ((s) * 4) |
#define | Utf8to(conv, c) (cCharSetConv::SystemCharacterTable() ? to##conv(c) : tow##conv(c)) |
#define | Utf8is(ccls, c) (cCharSetConv::SystemCharacterTable() ? is##ccls(c) : isw##ccls(c)) |
#define | HASHSIZE 512 |
Typedefs | |
typedef unsigned char | uchar |
Functions | |
template<class T > | |
void | DELETENULL (T *&p) |
template<class T > | |
T | min (T a, T b) |
template<class T > | |
T | max (T a, T b) |
template<class T > | |
int | sgn (T a) |
template<class T > | |
void | swap (T &a, T &b) |
template<class T > | |
T | constrain (T v, T l, T h) |
void | syslog_with_tid (int priority, const char *format,...) __attribute__((format(printf |
int | BCD2INT (int x) |
template<class T > | |
T | get_unaligned (T *p) |
template<class T > | |
void | put_unaligned (unsigned int v, T *p) |
bool | DoubleEqual (double a, double b) |
int | Utf8CharLen (const char *s) |
uint | Utf8CharGet (const char *s, int Length=0) |
int | Utf8CharSet (uint c, char *s=NULL) |
int | Utf8SymChars (const char *s, int Symbols) |
int | Utf8StrLen (const char *s) |
char * | Utf8Strn0Cpy (char *Dest, const char *Src, int n) |
int | Utf8ToArray (const char *s, uint *a, int Size) |
int | Utf8FromArray (const uint *a, char *s, int Size, int Max=-1) |
ssize_t | safe_read (int filedes, void *buffer, size_t size) |
ssize_t | safe_write (int filedes, const void *buffer, size_t size) |
void | writechar (int filedes, char c) |
int | WriteAllOrNothing (int fd, const uchar *Data, int Length, int TimeoutMs=0, int RetryMs=0) |
char * | strcpyrealloc (char *dest, const char *src) |
char * | strn0cpy (char *dest, const char *src, size_t n) |
char * | strreplace (char *s, char c1, char c2) |
char * | strreplace (char *s, const char *s1, const char *s2) |
char * | skipspace (const char *s) |
char * | stripspace (char *s) |
char * | compactspace (char *s) |
cString | strescape (const char *s, const char *chars) |
bool | startswith (const char *s, const char *p) |
bool | endswith (const char *s, const char *p) |
bool | isempty (const char *s) |
int | numdigits (int n) |
bool | isnumber (const char *s) |
int64_t | StrToNum (const char *s) |
cString | itoa (int n) |
cString | AddDirectory (const char *DirName, const char *FileName) |
bool | EntriesOnSameFileSystem (const char *File1, const char *File2) |
int | FreeDiskSpaceMB (const char *Directory, int *UsedMB=NULL) |
bool | DirectoryOk (const char *DirName, bool LogErrors=false) |
bool | MakeDirs (const char *FileName, bool IsDirectory=false) |
bool | RemoveFileOrDir (const char *FileName, bool FollowSymlinks=false) |
bool | RemoveEmptyDirectories (const char *DirName, bool RemoveThis=false) |
int | DirSizeMB (const char *DirName) |
char * | ReadLink (const char *FileName) |
bool | SpinUpDisk (const char *FileName) |
void | TouchFile (const char *FileName) |
time_t | LastModifiedTime (const char *FileName) |
off_t | FileSize (const char *FileName) |
cString | WeekDayName (int WeekDay) |
cString | WeekDayName (time_t t) |
cString | WeekDayNameFull (int WeekDay) |
cString | WeekDayNameFull (time_t t) |
cString | DayDateTime (time_t t=0) |
cString | TimeToString (time_t t) |
cString | DateString (time_t t) |
cString | TimeString (time_t t) |
uchar * | RgbToJpeg (uchar *Mem, int Width, int Height, int &Size, int Quality=100) |
int | CompareStrings (const void *a, const void *b) |
int | CompareStringsIgnoreCase (const void *a, const void *b) |
Variables | |
int | SysLogLevel |
#define BCDCHARTOINT | ( | x | ) | (10 * ((x & 0xF0) >> 4) + (x & 0xF)) |
#define dsyslog | ( | a... | ) | void( (SysLogLevel > 2) ? syslog_with_tid(LOG_ERR, a) : void() ) |
#define esyslog | ( | a... | ) | void( (SysLogLevel > 0) ? syslog_with_tid(LOG_ERR, a) : void() ) |
Definition at line 34 of file tools.h.
Referenced by cVector< char * >::Realloc().
#define FATALERRNO (errno && errno != EAGAIN && errno != EINTR) |
#define isyslog | ( | a... | ) | void( (SysLogLevel > 1) ? syslog_with_tid(LOG_ERR, a) : void() ) |
#define LOG_ERROR_STR | ( | s | ) | esyslog("ERROR (%s,%d): %s: %m", __FILE__, __LINE__, s) |
#define MALLOC | ( | type, | |
size | |||
) | (type *)malloc(sizeof(type) * (size)) |
#define Utf8BufSize | ( | s | ) | ((s) * 4) |
#define Utf8is | ( | ccls, | |
c | |||
) | (cCharSetConv::SystemCharacterTable() ? is##ccls(c) : isw##ccls(c)) |
#define Utf8to | ( | conv, | |
c | |||
) | (cCharSetConv::SystemCharacterTable() ? to##conv(c) : tow##conv(c)) |
cString AddDirectory | ( | const char * | DirName, |
const char * | FileName | ||
) |
Definition at line 288 of file tools.c.
References cString::sprintf().
int BCD2INT | ( | int | x | ) |
Definition at line 44 of file tools.c.
References BCDCHARTOINT.
char* compactspace | ( | char * | s | ) |
Definition at line 187 of file tools.c.
References skipspace(), and stripspace().
int CompareStrings | ( | const void * | a, |
const void * | b | ||
) | [inline] |
int CompareStringsIgnoreCase | ( | const void * | a, |
const void * | b | ||
) | [inline] |
cString DateString | ( | time_t | t | ) |
Definition at line 1034 of file tools.c.
References WeekDayName().
cString DayDateTime | ( | time_t | t = 0 | ) |
Definition at line 1013 of file tools.c.
References WeekDayName().
void DELETENULL | ( | T *& | p | ) | [inline] |
bool DirectoryOk | ( | const char * | DirName, |
bool | LogErrors = false |
||
) |
Definition at line 332 of file tools.c.
References esyslog, and LOG_ERROR_STR.
int DirSizeMB | ( | const char * | DirName | ) |
returns the total size of the files in the given directory, or -1 in case of an error
Definition at line 474 of file tools.c.
References AddDirectory(), DirSizeMB(), LOG_ERROR_STR, MEGABYTE, cReadDir::Next(), and cReadDir::Ok().
bool DoubleEqual | ( | double | a, |
double | b | ||
) | [inline] |
bool EntriesOnSameFileSystem | ( | const char * | File1, |
const char * | File2 | ||
) |
Definition at line 300 of file tools.c.
References LOG_ERROR_STR.
off_t FileSize | ( | const char * | FileName | ) |
int FreeDiskSpaceMB | ( | const char * | Directory, |
int * | UsedMB = NULL |
||
) |
Definition at line 315 of file tools.c.
References LOG_ERROR_STR.
T get_unaligned | ( | T * | p | ) | [inline] |
bool isempty | ( | const char * | s | ) |
Definition at line 247 of file tools.c.
References skipspace().
time_t LastModifiedTime | ( | const char * | FileName | ) |
bool MakeDirs | ( | const char * | FileName, |
bool | IsDirectory = false |
||
) |
Definition at line 350 of file tools.c.
References dsyslog, and LOG_ERROR_STR.
void put_unaligned | ( | unsigned int | v, |
T * | p | ||
) | [inline] |
char* ReadLink | ( | const char * | FileName | ) |
returns a new string allocated on the heap, which the caller must delete (or NULL in case of an error)
Definition at line 506 of file tools.c.
References LOG_ERROR_STR.
bool RemoveEmptyDirectories | ( | const char * | DirName, |
bool | RemoveThis = false |
||
) |
Definition at line 436 of file tools.c.
References AddDirectory(), dsyslog, LOG_ERROR_STR, cReadDir::Next(), cReadDir::Ok(), and RemoveEmptyDirectories().
bool RemoveFileOrDir | ( | const char * | FileName, |
bool | FollowSymlinks = false |
||
) |
Definition at line 378 of file tools.c.
References AddDirectory(), dsyslog, LOG_ERROR_STR, MALLOC, cReadDir::Next(), and cReadDir::Ok().
Converts the given Memory to a JPEG image and returns a pointer to the resulting image.
Mem must point to a data block of exactly (Width * Height) triplets of RGB image data bytes. Upon return, Size will hold the number of bytes of the resulting JPEG data. Quality can be in the range 0..100 and controls the quality of the resulting image, where 100 is "best". The caller takes ownership of the result and has to delete it once it is no longer needed. The result may be NULL in case of an error.
Definition at line 1110 of file tools.c.
References JpegCompressEmptyOutputBuffer(), JpegCompressInitDestination(), JpegCompressTermDestination(), tJpegCompressData::mem, and tJpegCompressData::size.
ssize_t safe_read | ( | int | filedes, |
void * | buffer, | ||
size_t | size | ||
) |
ssize_t safe_write | ( | int | filedes, |
const void * | buffer, | ||
size_t | size | ||
) |
char* skipspace | ( | const char * | s | ) | [inline] |
Definition at line 194 of file tools.h.
References cString::s.
bool SpinUpDisk | ( | const char * | FileName | ) |
Definition at line 520 of file tools.c.
References DirectoryOk(), dsyslog, esyslog, LOG_ERROR_STR, and cString::sprintf().
bool startswith | ( | const char * | s, |
const char * | p | ||
) |
char* strcpyrealloc | ( | char * | dest, |
const char * | src | ||
) |
char* stripspace | ( | char * | s | ) |
char* strreplace | ( | char * | s, |
char | c1, | ||
char | c2 | ||
) |
char* strreplace | ( | char * | s, |
const char * | s1, | ||
const char * | s2 | ||
) |
int64_t StrToNum | ( | const char * | s | ) |
Converts the given string to a number.
The numerical part of the string may be followed by one of the letters K, M, G or T to abbreviate Kilo-, Mega-, Giga- or Terabyte, respectively (based on 1024). Everything after the first non-numeric character is silently ignored, as are any characters other than the ones mentioned here.
void syslog_with_tid | ( | int | priority, |
const char * | format, | ||
... | |||
) |
cString TimeString | ( | time_t | t | ) |
cString TimeToString | ( | time_t | t | ) |
void TouchFile | ( | const char * | FileName | ) |
Definition at line 552 of file tools.c.
References LOG_ERROR_STR.
uint Utf8CharGet | ( | const char * | s, |
int | Length = 0 |
||
) |
Returns the UTF-8 symbol at the beginning of the given string.
Length can be given from a previous call to Utf8CharLen() to avoid calculating it again. If no Length is given, Utf8CharLen() will be called.
Definition at line 660 of file tools.c.
References cCharSetConv::SystemCharacterTable(), SystemToUtf8, and Utf8CharLen().
int Utf8CharLen | ( | const char * | s | ) |
Returns the number of character bytes at the beginning of the given string that form a UTF-8 symbol.
Definition at line 646 of file tools.c.
References MT, and cCharSetConv::SystemCharacterTable().
int Utf8CharSet | ( | uint | c, |
char * | s = NULL |
||
) |
Converts the given UTF-8 symbol to a sequence of character bytes and copies them to the given string.
Returns the number of bytes written. If no string is given, only the number of bytes is returned and nothing is copied.
Definition at line 675 of file tools.c.
References cCharSetConv::SystemCharacterTable().
int Utf8FromArray | ( | const uint * | a, |
char * | s, | ||
int | Size, | ||
int | Max = -1 |
||
) |
Converts the given array of UTF-8 symbols (including the terminating 0) into a sequence of character bytes of at most Size length.
Returns the number of character bytes written (without the terminating 0). If Max is given, only that many symbols will be converted. The resulting string is always zero-terminated if Size is big enough.
Definition at line 771 of file tools.c.
References cCharSetConv::SystemCharacterTable(), and Utf8CharSet().
int Utf8StrLen | ( | const char * | s | ) |
Returns the number of UTF-8 symbols formed by the given string of character bytes.
Definition at line 722 of file tools.c.
References cCharSetConv::SystemCharacterTable(), and Utf8CharLen().
char* Utf8Strn0Cpy | ( | char * | Dest, |
const char * | Src, | ||
int | n | ||
) |
Copies at most n character bytes from Src to Dest, making sure that the resulting copy ends with a complete UTF-8 symbol.
The copy is guaranteed to be zero terminated. Returns a pointer to Dest.
Definition at line 734 of file tools.c.
References strn0cpy(), cCharSetConv::SystemCharacterTable(), and Utf8CharLen().
int Utf8SymChars | ( | const char * | s, |
int | Symbols | ||
) |
Returns the number of character bytes at the beginning of the given string that form at most the given number of UTF-8 symbols.
Definition at line 709 of file tools.c.
References cCharSetConv::SystemCharacterTable(), and Utf8CharLen().
int Utf8ToArray | ( | const char * | s, |
uint * | a, | ||
int | Size | ||
) |
Converts the given character bytes (including the terminating 0) into an array of UTF-8 symbols of the given Size.
Returns the number of symbols in the array (without the terminating 0).
Definition at line 753 of file tools.c.
References cCharSetConv::SystemCharacterTable(), Utf8CharGet(), and Utf8CharLen().
cString WeekDayName | ( | int | WeekDay | ) |
Definition at line 971 of file tools.c.
References min(), strn0cpy(), tr, and Utf8SymChars().
cString WeekDayName | ( | time_t | t | ) |
Definition at line 986 of file tools.c.
References WeekDayName().
cString WeekDayNameFull | ( | int | WeekDay | ) |
cString WeekDayNameFull | ( | time_t | t | ) |
Definition at line 1007 of file tools.c.
References WeekDayNameFull().
int WriteAllOrNothing | ( | int | fd, |
const uchar * | Data, | ||
int | Length, | ||
int | TimeoutMs = 0 , |
||
int | RetryMs = 0 |
||
) |
Writes either all Data to the given file descriptor, or nothing at all.
If TimeoutMs is greater than 0, it will only retry for that long, otherwise it will retry forever. RetryMs defines the time between two retries.
Definition at line 89 of file tools.c.
References cTimeMs::Elapsed(), FATALERRNO, and cPoller::Poll().
void writechar | ( | int | filedes, |
char | c | ||
) |
Definition at line 84 of file tools.c.
References safe_write().
int SysLogLevel |