summaryrefslogtreecommitdiff
path: root/contrib/pgxc_ctl/utils.h
blob: 18cc0ec9fe170f4078d623645f325d91049ec8ab (plain)
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
/*-------------------------------------------------------------------------
 *
 * utils.h
 *
 *    Utilty module of Postgres-XC configuration and operation tool.
 *
 * Copyright (c) 2013 Postgres-XC Development Group
 *
 *-------------------------------------------------------------------------
 */
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>

extern void *Malloc(size_t size);
extern void *Malloc0(size_t size);
extern void *Realloc(void *ptr, size_t size);
extern void Free(void *ptr);
extern int Chdir(char *path, int flag);
extern FILE *Fopen(char *path, char *mode);
extern char *Strdup(const char *s);
extern char **addToList(char **List, char *val);
extern void appendFiles(FILE *f, char **fileList);
extern FILE *prepareLocalStdin(char *buf, int len, char **fileList);
extern char *timeStampString(char *buf, int len);
extern char **makeActualNodeList(char **nodeList);
extern int gtmProxyIdx(char *gtmProxyName);
extern int coordIdx(char *coordName);
extern int datanodeIdx(char *datanodeName);
extern int getEffectiveGtmProxyIdxFromServerName(char *serverName);
extern pid_t get_prog_pid(char *host, char *pidfile, char *dir);
extern int pingNode(char *host, char *port);
extern int pingNodeSlave(char *host, char *datadir);
extern void trimNl(char *s);
extern char *getChPidList(char *host, pid_t ppid);
extern char *getIpAddress(char *hostName);
extern int pgxc_check_dir(const char *dir);

#define get_postmaster_pid(host, dir) get_prog_pid(host, "postmaster", dir)
#define get_gtm_pid(host, dir) get_prog_pid(host, "gtm", dir)
#define get_gtmProxy_pid(host, dir) get_prog_pid(host, "gtm_proxy", dir)
#define freeAndReset(x) do{Free(x);(x)=NULL;}while(0)
#define myWEXITSTATUS(rc) ((rc) & 0x000000FF)

/* Printout variable in bash format */
#define svalFormat "%s=%s\n"
#define expandSval(name) name, sval(name)
#define avalFormat "%s=( %s )\n"
#define expandAval(name) name, listValue(name)
#define fprintAval(f, name) do{fprintf(f, avalFormat, expandAval(name));}while(0)
#define fprintSval(f, name) do{fprintf(f, svalFormat, expandSval(name));}while(0)