mirror of https://github.com/postgres/postgres
Rewrite strnlen replacement implementation from 8a241792f9
.
The previous placement of the fallback implementation in libpgcommon was problematic, because libpqport functions need strnlen functionality. Move replacement into libpgport. Provide strnlen() under its posix name, instead of pg_strnlen(). Fix stupid configure bug, executing the test only when compiled with threading support. Author: Andres Freund Discussion: https://postgr.es/m/E1e1gR2-0005fB-SI@gemulon.postgresql.orgpull/31/head^2
parent
fa5e119dc7
commit
fffd651e83
@ -0,0 +1,33 @@ |
|||||||
|
/*-------------------------------------------------------------------------
|
||||||
|
* |
||||||
|
* strnlen.c |
||||||
|
* Fallback implementation of strnlen(). |
||||||
|
* |
||||||
|
* |
||||||
|
* Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group |
||||||
|
* Portions Copyright (c) 1994, Regents of the University of California |
||||||
|
* |
||||||
|
* IDENTIFICATION |
||||||
|
* src/port/strnlen.c |
||||||
|
* |
||||||
|
*------------------------------------------------------------------------- |
||||||
|
*/ |
||||||
|
|
||||||
|
#include "c.h" |
||||||
|
|
||||||
|
/*
|
||||||
|
* Implementation of posix' strnlen for systems where it's not available. |
||||||
|
* |
||||||
|
* Returns the number of characters before a null-byte in the string pointed |
||||||
|
* to by str, unless there's no null-byte before maxlen. In the latter case |
||||||
|
* maxlen is returned. |
||||||
|
*/ |
||||||
|
size_t |
||||||
|
strnlen(const char *str, size_t maxlen) |
||||||
|
{ |
||||||
|
const char *p = str; |
||||||
|
|
||||||
|
while (maxlen-- > 0 && *p) |
||||||
|
p++; |
||||||
|
return p - str; |
||||||
|
} |
Loading…
Reference in new issue