1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
/*--------------------------------------------------------------------
* Symbols referenced in this file:
* - strtoint
*--------------------------------------------------------------------
*/
/*-------------------------------------------------------------------------
*
* string.c
* string handling helpers
*
*
* Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
*
* IDENTIFICATION
* src/common/string.c
*
*-------------------------------------------------------------------------
*/
#ifndef FRONTEND
#include "postgres.h"
#else
#include "postgres_fe.h"
#endif
#include "common/string.h"
/*
* Returns whether the string `str' has the postfix `end'.
*/
/*
* strtoint --- just like strtol, but returns int not long
*/
int
strtoint(const char *pg_restrict str, char **pg_restrict endptr, int base)
{
long val;
val = strtol(str, endptr, base);
if (val != (int) val)
errno = ERANGE;
return (int) val;
}
/*
* pg_clean_ascii -- Replace any non-ASCII chars with a '?' char
*
* Modifies the string passed in which must be '\0'-terminated.
*
* This function exists specifically to deal with filtering out
* non-ASCII characters in a few places where the client can provide an almost
* arbitrary string (and it isn't checked to ensure it's a valid username or
* database name or similar) and we don't want to have control characters or other
* things ending up in the log file where server admins might end up with a
* messed up terminal when looking at them.
*
* In general, this function should NOT be used- instead, consider how to handle
* the string without needing to filter out the non-ASCII characters.
*
* Ultimately, we'd like to improve the situation to not require stripping out
* all non-ASCII but perform more intelligent filtering which would allow UTF or
* similar, but it's unclear exactly what we should allow, so stick to ASCII only
* for now.
*/
/*
* pg_strip_crlf -- Remove any trailing newline and carriage return
*
* Removes any trailing newline and carriage return characters (\r on
* Windows) in the input string, zero-terminating it.
*
* The passed in string must be zero-terminated. This function returns
* the new length of the string.
*/
|