diff options
| author | Wiimm <wiimm@wiimm.de> | 2022-08-06 16:20:07 +0200 |
|---|---|---|
| committer | Wiimm <wiimm@wiimm.de> | 2022-08-06 16:20:07 +0200 |
| commit | 7fad9e9383d01cce3ac17176404e1ab4e738736c (patch) | |
| tree | df39dd0616554ce9daa138f2e9778c88fbf9ac55 /project/dclib/dclib-basics.c | |
| parent | 06ff18cd020779c226f7c25d22016e06b898f303 (diff) | |
SZS v2.28a.beta2
Diffstat (limited to '')
| -rw-r--r-- | project/dclib/dclib-basics.c | 113 |
1 files changed, 55 insertions, 58 deletions
diff --git a/project/dclib/dclib-basics.c b/project/dclib/dclib-basics.c index 03e3215..d2eca00 100644 --- a/project/dclib/dclib-basics.c +++ b/project/dclib/dclib-basics.c @@ -408,22 +408,19 @@ void FreeString ( ccp str ) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// -char * StringCopyE ( char * buf, ccp buf_end, ccp src ) +char * StringCopyS ( char * buf, ssize_t buf_size, ccp src ) { - // RESULT: end of copied string pointing to NULL - // 'src' may be a NULL pointer. - - if ( buf >= buf_end ) - return (char*)buf_end - 1; - DASSERT(buf); - DASSERT(buf<buf_end); + if ( !buf || buf_size <= 0 ) + return buf; if (src) { - buf_end--; - while( buf < buf_end && *src ) - *buf++ = *src++; + size_t slen = strlen(src); + if ( slen >= buf_size ) + slen = buf_size-1; + memcpy(buf,src,slen); + buf += slen; } *buf = 0; @@ -432,49 +429,49 @@ char * StringCopyE ( char * buf, ccp buf_end, ccp src ) //----------------------------------------------------------------------------- -char * StringCopyS ( char * buf, size_t buf_size, ccp src ) +char * StringCopySM ( char * buf, ssize_t buf_size, ccp src, ssize_t max_copy ) { DASSERT(buf); - if ( buf_size <= 0 ) + if ( !buf || buf_size <= 0 ) return buf; - DASSERT(buf_size>=0); - if (src) - while( --buf_size > 0 && *src ) - *buf++ = *src++; + { + size_t slen = strlen(src); + if ( slen >= buf_size ) + slen = buf_size-1; + if ( max_copy >= 0 && slen >= max_copy ) + slen = max_copy; + memcpy(buf,src,slen); + buf += slen; + } + *buf = 0; return buf; } -/////////////////////////////////////////////////////////////////////////////// +//----------------------------------------------------------------------------- -char * StringCopyEM ( char * buf, ccp buf_end, ccp src, ssize_t max_copy ) +char * StringCopySL ( char * buf, ssize_t buf_size, ccp src, ssize_t src_len ) { - // RESULT: end of copied string pointing to NULL - // 'src' may be a NULL pointer. - DASSERT(buf); - DASSERT(buf<buf_end); - buf_end--; - if ( max_copy >= 0 && buf + max_copy < buf_end ) - buf_end = buf + max_copy; + if ( !buf || buf_size <= 0 ) + return buf; if (src) - while( buf < buf_end && *src ) - *buf++ = *src++; + { + if ( src_len < 0 ) + src_len = strlen(src); + if ( src_len >= buf_size ) + src_len = buf_size-1; + memcpy(buf,src,src_len); + buf += src_len; + } *buf = 0; return buf; } -//----------------------------------------------------------------------------- - -char * StringCopySM ( char * buf, size_t buf_size, ccp src, ssize_t max_copy ) -{ - return StringCopyEM(buf,buf+buf_size,src,max_copy); -} - /////////////////////////////////////////////////////////////////////////////// char * StringCat2E ( char * buf, ccp buf_end, ccp src1, ccp src2 ) @@ -500,7 +497,7 @@ char * StringCat2E ( char * buf, ccp buf_end, ccp src1, ccp src2 ) //----------------------------------------------------------------------------- -char * StringCat2S ( char * buf, size_t buf_size, ccp src1, ccp src2 ) +char * StringCat2S ( char * buf, ssize_t buf_size, ccp src1, ccp src2 ) { return StringCat2E(buf,buf+buf_size,src1,src2); } @@ -541,7 +538,7 @@ char * StringCatSep2E ( char * buf, ccp buf_end, ccp sep, ccp src1, ccp src2 ) //----------------------------------------------------------------------------- -char * StringCatSep2S ( char * buf, size_t buf_size, ccp sep, ccp src1, ccp src2 ) +char * StringCatSep2S ( char * buf, ssize_t buf_size, ccp sep, ccp src1, ccp src2 ) { return StringCatSep2E(buf,buf+buf_size,sep,src1,src2); } @@ -575,7 +572,7 @@ char * StringCat3E ( char * buf, ccp buf_end, ccp src1, ccp src2, ccp src3 ) //----------------------------------------------------------------------------- -char * StringCat3S ( char * buf, size_t buf_size, ccp src1, ccp src2, ccp src3 ) +char * StringCat3S ( char * buf, ssize_t buf_size, ccp src1, ccp src2, ccp src3 ) { return StringCat3E(buf,buf+buf_size,src1,src2,src3); } @@ -631,7 +628,7 @@ char * StringCatSep3E //----------------------------------------------------------------------------- char * StringCatSep3S - ( char * buf, size_t buf_size, ccp sep, ccp src1, ccp src2, ccp src3 ) + ( char * buf, ssize_t buf_size, ccp sep, ccp src1, ccp src2, ccp src3 ) { return StringCatSep3E(buf,buf+buf_size,sep,src1,src2,src3); } @@ -745,7 +742,7 @@ char * StringLowerE ( char * buf, ccp buf_end, ccp src ) //----------------------------------------------------------------------------- -char * StringLowerS ( char * buf, size_t buf_size, ccp src ) +char * StringLowerS ( char * buf, ssize_t buf_size, ccp src ) { return StringLowerE(buf,buf+buf_size,src); } @@ -777,7 +774,7 @@ char * MemLowerE ( char * buf, ccp buf_end, mem_t src ) //----------------------------------------------------------------------------- -char * MemLowerS ( char * buf, size_t buf_size, mem_t src ) +char * MemLowerS ( char * buf, ssize_t buf_size, mem_t src ) { return MemLowerE(buf,buf+buf_size,src); } @@ -806,7 +803,7 @@ char * StringUpperE ( char * buf, ccp buf_end, ccp src ) //----------------------------------------------------------------------------- -char * StringUpperS ( char * buf, size_t buf_size, ccp src ) +char * StringUpperS ( char * buf, ssize_t buf_size, ccp src ) { return StringUpperE(buf,buf+buf_size,src); } @@ -838,7 +835,7 @@ char * MemUpperE ( char * buf, ccp buf_end, mem_t src ) //----------------------------------------------------------------------------- -char * MemUpperS ( char * buf, size_t buf_size, mem_t src ) +char * MemUpperS ( char * buf, ssize_t buf_size, mem_t src ) { return MemUpperE(buf,buf+buf_size,src); } @@ -1008,7 +1005,7 @@ int SleepNSec ( s_nsec_t nsec ) /////////////// PathCat*() /////////////// /////////////////////////////////////////////////////////////////////////////// -char * PathCatBufPP ( char * buf, size_t bufsize, ccp path1, ccp path2 ) +char * PathCatBufPP ( char * buf, ssize_t bufsize, ccp path1, ccp path2 ) { // concatenate path + path; returns buf @@ -1039,7 +1036,7 @@ char * PathCatBufPP ( char * buf, size_t bufsize, ccp path1, ccp path2 ) /////////////////////////////////////////////////////////////////////////////// -ccp PathCatPP ( char * buf, size_t bufsize, ccp path1, ccp path2 ) +ccp PathCatPP ( char * buf, ssize_t bufsize, ccp path1, ccp path2 ) { // concatenate path + path; returns path1 | path2 | buf @@ -1061,7 +1058,7 @@ ccp PathCatPP ( char * buf, size_t bufsize, ccp path1, ccp path2 ) /////////////////////////////////////////////////////////////////////////////// -ccp PathCatDirP ( char * buf, size_t bufsize, ccp path1, ccp path2 ) +ccp PathCatDirP ( char * buf, ssize_t bufsize, ccp path1, ccp path2 ) { // concatenate path + path; returns path1 | path2 | buf @@ -1085,7 +1082,7 @@ ccp PathAllocPP ( ccp path1, ccp path2 ) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// -char * PathCatBufPPE ( char * buf, size_t bufsize, ccp path1, ccp path2, ccp ext ) +char * PathCatBufPPE ( char * buf, ssize_t bufsize, ccp path1, ccp path2, ccp ext ) { // concatenate path + path; returns (by definition) path1 | path2 | buf @@ -1125,7 +1122,7 @@ ccp PathAllocPPE ( ccp path1, ccp path2, ccp ext ) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// -char * PathCatBufBP ( char *buf, size_t bufsize, ccp base, ccp path ) +char * PathCatBufBP ( char *buf, ssize_t bufsize, ccp base, ccp path ) { // PathCatBP() is special: path can be part of buf @@ -1167,7 +1164,7 @@ char * PathCatBufBP ( char *buf, size_t bufsize, ccp base, ccp path ) /////////////////////////////////////////////////////////////////////////////// -ccp PathCatBP ( char *buf, size_t bufsize, ccp base, ccp path ) +ccp PathCatBP ( char *buf, ssize_t bufsize, ccp base, ccp path ) { // PathCatBP() is special: path can be part of buf @@ -1188,7 +1185,7 @@ ccp PathAllocBP ( ccp base, ccp path ) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// -char * PathCatBufBPP ( char * buf, size_t bufsize, ccp base, ccp path1, ccp path2 ) +char * PathCatBufBPP ( char * buf, ssize_t bufsize, ccp base, ccp path1, ccp path2 ) { ccp path = PathCatPP(buf,bufsize,path1,path2); return PathCatBufBP(buf,bufsize,base,path); @@ -1196,7 +1193,7 @@ char * PathCatBufBPP ( char * buf, size_t bufsize, ccp base, ccp path1, ccp path /////////////////////////////////////////////////////////////////////////////// -ccp PathCatBPP ( char * buf, size_t bufsize, ccp base, ccp path1, ccp path2 ) +ccp PathCatBPP ( char * buf, ssize_t bufsize, ccp base, ccp path1, ccp path2 ) { ccp path = PathCatPP(buf,bufsize,path1,path2); return PathCatBP(buf,bufsize,base,path); @@ -1213,7 +1210,7 @@ ccp PathAllocBPP ( ccp base, ccp path1, ccp path2 ) /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// -char * PathCatBufBPPE ( char * buf, size_t bufsize, ccp base, ccp path1, ccp path2, ccp ext ) +char * PathCatBufBPPE ( char * buf, ssize_t bufsize, ccp base, ccp path1, ccp path2, ccp ext ) { ccp path = PathCatPPE(buf,bufsize,path1,path2,ext); return PathCatBufBP(buf,bufsize,base,path); @@ -1221,7 +1218,7 @@ char * PathCatBufBPPE ( char * buf, size_t bufsize, ccp base, ccp path1, ccp pat /////////////////////////////////////////////////////////////////////////////// -ccp PathCatBPPE ( char * buf, size_t bufsize, ccp base, ccp path1, ccp path2, ccp ext ) +ccp PathCatBPPE ( char * buf, ssize_t bufsize, ccp base, ccp path1, ccp path2, ccp ext ) { ccp path = PathCatPPE(buf,bufsize,path1,path2,ext); return PathCatBP(buf,bufsize,base,path); @@ -1316,7 +1313,7 @@ char * NewFileExtE ( char * buf, ccp buf_end, ccp path, ccp ext ) /////////////////////////////////////////////////////////////////////////////// -char * NewFileExtS ( char * buf, size_t bufsize, ccp path, ccp ext ) +char * NewFileExtS ( char * buf, ssize_t bufsize, ccp path, ccp ext ) { return NewFileExtE(buf,buf+bufsize,path,ext); } @@ -3239,14 +3236,14 @@ uint ScanQuotedArgManager ( ArgManager_t *am, ccp src, bool is_utf8 ) } else { - while ( dest < bufend && !isspace(*src) && *src != '\'' && *src != '\"' ) + while ( dest < bufend && *src && !isspace(*src) && *src != '\'' && *src != '\"' ) { if ( *src == '\\' && src[1] ) src++; *dest++ = *src++; } } - if (isspace(*src)) + if ( !*src || isspace(*src) ) break; } ccp arg = MEMDUP(buf,dest-buf); @@ -3377,7 +3374,7 @@ enumError ExpandAtArgManager if (n_rm) { - PRINT1("rm @%u %d, file=%s\n",pos,n_rm,fname); + PRINT0("rm @%u %d, file=%s\n",pos,n_rm,fname); int n_added; enumError err = ScanFileArgManager(am,pos,fname,silent,&n_added); if ( max_err < err ) @@ -3389,7 +3386,7 @@ enumError ExpandAtArgManager } // remove after insert to keep fname valid! - PRINT1("rm @%u %d\n",pos,n_rm); + PRINT0("rm @%u %d\n",pos,n_rm); RemoveArgManager(am,pos,n_rm); } else |
