Definition at line 71 of file prompt.c.
72{
73#define MAX_PROMPT_SIZE 256
77 const char *p;
80
81 switch (status)
82 {
85 break;
86
94 break;
95
98 break;
99 }
100
102
105 p++)
106 {
109 {
110 switch (*p)
111 {
112
113 case '/':
116 break;
117 case '~':
119 {
120 const char *var;
121
125 else
127 }
128 break;
129
130
131 case 'w':
135 break;
136
137
138 case 'M':
139 case 'm':
141 {
143
144
146 {
148 if (*p == 'm')
150 }
151
152 else
153 {
154 if (!host
156 || *p == 'm')
158 else
160 }
161 }
162 break;
163
164 case '>':
167 break;
168
169 case 'n':
172 break;
173
174 case 'S':
176 {
178
179
181 }
182 break;
183
184 case 's':
185 {
187
190 }
191 break;
192
193 case 'p':
195 {
197
198 if (pid)
200 }
201 break;
202
203 case 'P':
205 {
207
212 else
214 }
215 break;
216 case '0':
217 case '1':
218 case '2':
219 case '3':
220 case '4':
221 case '5':
222 case '6':
223 case '7':
225 --p;
226 break;
227 case 'R':
228 switch (status)
229 {
237 else
239 break;
242 break;
245 break;
248 break;
251 break;
254 break;
257 break;
258 default:
260 break;
261 }
262 break;
263 case 'i':
265 {
267
269 {
272 else
274 }
275
276 else
278 }
279 break;
280 case 'x':
283 else
285 {
288 break;
292 break;
295 break;
296 default:
298 break;
299 }
300 break;
301
302 case 'l':
304 break;
305
306 case '?':
307
308 break;
309
310 case '#':
313 else
315 break;
316
317
318 case '`':
319 {
323
327 {
331 }
332
333
335
338 break;
339 }
340
341
342 case ':':
343 {
347
353 break;
354 }
355
356 case '[':
357 case ']':
358#if defined(USE_READLINE) && defined(RL_PROMPT_START_IGNORE)
359
360
361
362
363
364
367#endif
368 break;
369
370 default:
373 break;
374 }
376 }
377 else if (*p == '%')
379 else
380 {
384 }
385
388 }
389
390
392 {
394 char *end = p +
strlen(p);
395 bool visible = true;
396
398 while (*p)
399 {
400#if defined(USE_READLINE) && defined(RL_PROMPT_START_IGNORE)
402 {
403 visible = false;
404 ++p;
405 }
407 {
408 visible = true;
409 ++p;
410 }
411 else
412#endif
413 {
416
419 break;
420
421 if (visible)
422 {
424
425 if (*p == '\n')
429 }
430
432 }
433 }
434 }
435
437}
const char * session_username(void)
#define unconstify(underlying_type, expr)
bool conditional_active(ConditionalStack cstack)
char * PQdb(const PGconn *conn)
char * PQport(const PGconn *conn)
PGTransactionStatusType PQtransactionStatus(const PGconn *conn)
char * PQhost(const PGconn *conn)
const char * PQparameterStatus(const PGconn *conn, const char *paramName)
int PQbackendPID(const PGconn *conn)
char * PQuser(const PGconn *conn)
PGpipelineStatus PQpipelineStatus(const PGconn *conn)
int PQmblen(const char *s, int encoding)
int PQdsplen(const char *s, int encoding)
char * pnstrdup(const char *in, Size len)
#define DEFAULT_PGSOCKET_DIR
static char buf[DEFAULT_XLOG_SEG_SIZE]
size_t strlcat(char *dst, const char *src, size_t siz)
size_t strlcpy(char *dst, const char *src, size_t siz)
static bool is_unixsock_path(const char *path)
static int fd(const char *x, int i)
int pg_strip_crlf(char *str)
const char * GetVariable(VariableSpace space, const char *name)
References buf, conditional_active(), _psqlSettings::db, DEFAULT_PGSOCKET_DIR, _psqlSettings::encoding, fb(), fd(), free, GetVariable(), is_superuser(), is_unixsock_path(), MAX_PROMPT_SIZE, Min, name, pg_strip_crlf(), pnstrdup(), PQ_PIPELINE_ABORTED, PQ_PIPELINE_ON, PQbackendPID(), PQdb(), PQdsplen(), PQhost(), PQmblen(), PQparameterStatus(), PQpipelineStatus(), PQport(), PQTRANS_ACTIVE, PQTRANS_IDLE, PQTRANS_INERROR, PQTRANS_INTRANS, PQtransactionStatus(), PQuser(), _psqlSettings::prompt1, _psqlSettings::prompt2, _psqlSettings::prompt3, PROMPT_COMMENT, PROMPT_CONTINUE, PROMPT_COPY, PROMPT_DOLLARQUOTE, PROMPT_DOUBLEQUOTE, PROMPT_PAREN, PROMPT_READY, PROMPT_SINGLEQUOTE, pset, session_username(), _psqlSettings::singleline, snprintf, _psqlSettings::stmt_lineno, strlcat(), strlcpy(), UINT64_FORMAT, unconstify, val, and _psqlSettings::vars.
Referenced by handleCopyIn(), and MainLoop().