From: Wilfried Goesgens Date: Sun, 10 Jun 2012 08:33:10 +0000 (+0200) Subject: StrBufExtract_tokenFromStr: add wrapper around StrBufExtract_token() which takes... X-Git-Tag: v8.12~26 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=31c5406616d5990e183627edbb7e6c324da0bf03 StrBufExtract_tokenFromStr: add wrapper around StrBufExtract_token() which takes a char* as string to de-tokenize. --- diff --git a/libcitadel/lib/libcitadel.h b/libcitadel/lib/libcitadel.h index 5fb0058f9..3eee3728f 100644 --- a/libcitadel/lib/libcitadel.h +++ b/libcitadel/lib/libcitadel.h @@ -278,6 +278,7 @@ long IOBufferStrLength(IOBuffer *FB); int StrBufSipLine(StrBuf *LineBuf, const StrBuf *Buf, const char **Ptr); int StrBufReplaceToken(StrBuf *Buf, long where, long HowLong, const char *Repl, long ReplLen); +int StrBufExtract_tokenFromStr(StrBuf *dest, const char *Source, long SourceLen, int parmnum, char separator); int StrBufExtract_token(StrBuf *dest, const StrBuf *Source, int parmnum, char separator); int StrBufSub(StrBuf *dest, const StrBuf *Source, unsigned long Offset, size_t nChars); diff --git a/libcitadel/lib/stringbuf.c b/libcitadel/lib/stringbuf.c index 0d88f7ca1..359538d96 100644 --- a/libcitadel/lib/stringbuf.c +++ b/libcitadel/lib/stringbuf.c @@ -1345,6 +1345,23 @@ int StrBufRemove_token(StrBuf *Source, int parmnum, char separator) return ReducedBy; } +int StrBufExtract_tokenFromStr(StrBuf *dest, const char *Source, long SourceLen, int parmnum, char separator) +{ + const StrBuf Temp = { + (char*)Source, + SourceLen, + SourceLen, + 1 +#ifdef SIZE_DEBUG + , + 0, + "", + "" +#endif + }; + + return StrBufExtract_token(dest, &Temp, parmnum, separator); +} /** * @ingroup StrBuf_Tokenizer @@ -3892,7 +3909,6 @@ void FDIOBufferDelete(FDIOBuffer *FDB) int FileSendChunked(FDIOBuffer *FDB, const char **Err) { - #ifdef LINUX_SPLICE ssize_t sent; sent = sendfile(FDB->IOB->fd, FDB->OtherFD, &FDB->TotalSentAlready, FDB->ChunkSendRemain); @@ -3941,19 +3957,26 @@ int FileRecvChunked(FDIOBuffer *FDB, const char **Err) #ifdef LINUX_SPLICE - pipesize = splice(FDB->IOB->fd, NULL, - FDB->SplicePipe[1], NULL, + pipesize = splice(FDB->IOB->fd, + NULL, + FDB->SplicePipe[1], + NULL, FDB->ChunkSendRemain, SPLICE_F_MORE | SPLICE_F_MOVE|SPLICE_F_NONBLOCK); + if (pipesize == -1) { *Err = strerror(errno); return pipesize; } - sent = splice(FDB->SplicePipe[0], NULL, - FDB->OtherFD, &FDB->TotalSentAlready, - pipesize, SPLICE_F_MORE | SPLICE_F_MOVE); + sent = splice(FDB->SplicePipe[0], + NULL, + FDB->OtherFD, + &FDB->TotalSentAlready, + pipesize, + SPLICE_F_MORE | SPLICE_F_MOVE); + if (sent == -1) { *Err = strerror(errno);