mirror of
https://github.com/postgres/postgres.git
synced 2026-03-23 02:43:22 -04:00
This reverts commit f0f2c0c1ae.
The original problem that led to the use of pg_restrict was that MSVC
couldn't handle plain restrict, and defining it to something else
would conflict with its __declspec(restrict) that is used in system
header files. In C11 mode, this is no longer a problem, as MSVC
handles plain restrict. This led to the commit to replace pg_restrict
with restrict. But this did not take C++ into account. Standard C++
does not have restrict, so we defined it as something else (for
example, MSVC supports __restrict). But this then again conflicts
with __declspec(restrict) in system header files. So we have to
revert this attempt. The comments are updated to clarify that the
reason for this is now C++ only.
Reported-by: Jelte Fennema-Nio <postgres@jeltef.nl>
Reviewed-by: Andres Freund <andres@anarazel.de>
Discussion: https://www.postgresql.org/message-id/CAGECzQRoD7chJP1-dneSrhxUJv%2BBRcigoGOO4UwGzaShLot2Yw%40mail.gmail.com
45 lines
1.6 KiB
C
45 lines
1.6 KiB
C
/*
|
|
* string.h
|
|
* string handling helpers
|
|
*
|
|
* Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
|
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
*
|
|
* src/include/common/string.h
|
|
*/
|
|
#ifndef COMMON_STRING_H
|
|
#define COMMON_STRING_H
|
|
|
|
#include <signal.h>
|
|
|
|
typedef struct StringInfoData *StringInfo; /* avoid including stringinfo.h
|
|
* here */
|
|
|
|
typedef struct PromptInterruptContext
|
|
{
|
|
/* To avoid including <setjmp.h> here, jmpbuf is declared "void *" */
|
|
void *jmpbuf; /* existing longjmp buffer */
|
|
volatile sig_atomic_t *enabled; /* flag that enables longjmp-on-interrupt */
|
|
bool canceled; /* indicates whether cancellation occurred */
|
|
} PromptInterruptContext;
|
|
|
|
/* functions in src/common/string.c */
|
|
extern bool pg_str_endswith(const char *str, const char *end);
|
|
extern int strtoint(const char *pg_restrict str, char **pg_restrict endptr,
|
|
int base);
|
|
extern char *pg_clean_ascii(const char *str, int alloc_flags);
|
|
extern int pg_strip_crlf(char *str);
|
|
extern bool pg_is_ascii(const char *str);
|
|
|
|
/* functions in src/common/pg_get_line.c */
|
|
extern char *pg_get_line(FILE *stream, PromptInterruptContext *prompt_ctx);
|
|
extern bool pg_get_line_buf(FILE *stream, StringInfo buf);
|
|
extern bool pg_get_line_append(FILE *stream, StringInfo buf,
|
|
PromptInterruptContext *prompt_ctx);
|
|
|
|
/* functions in src/common/sprompt.c */
|
|
extern char *simple_prompt(const char *prompt, bool echo);
|
|
extern char *simple_prompt_extended(const char *prompt, bool echo,
|
|
PromptInterruptContext *prompt_ctx);
|
|
|
|
#endif /* COMMON_STRING_H */
|