/*------------------------------------------------------------------------- * * utils.h * * Utilty module of Postgres-XC configuration and operation tool. * * Copyright (c) 2013 Postgres-XC Development Group * *------------------------------------------------------------------------- */ #include #include #include 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)