1
0
mirror of https://github.com/postgres/postgres.git synced 2025-10-18 04:29:09 +03:00

Move code shared between libpq and backend from backend/libpq/ to common/.

When building libpq, ip.c and md5.c were symlinked or copied from
src/backend/libpq into src/interfaces/libpq, but now that we have a
directory specifically for routines that are shared between the server and
client binaries, src/common/, move them there.

Some routines in ip.c were only used in the backend. Keep those in
src/backend/libpq, but rename to ifaddr.c to avoid confusion with the file
that's now in common.

Fix the comment in src/common/Makefile to reflect how libpq actually links
those files.

There are two more files that libpq symlinks directly from src/backend:
encnames.c and wchar.c. I don't feel compelled to move those right now,
though.

Patch by Michael Paquier, with some changes by me.

Discussion: <69938195-9c76-8523-0af8-eb718ea5b36e@iki.fi>
This commit is contained in:
Heikki Linnakangas
2016-09-02 13:49:59 +03:00
parent 9cca11c915
commit ec136d19b2
25 changed files with 337 additions and 275 deletions

37
src/include/common/ip.h Normal file
View File

@@ -0,0 +1,37 @@
/*-------------------------------------------------------------------------
*
* ip.h
* Definitions for IPv6-aware network access.
*
* These definitions are used by both frontend and backend code.
*
* Copyright (c) 2003-2016, PostgreSQL Global Development Group
*
* src/include/common/ip.h
*
*-------------------------------------------------------------------------
*/
#ifndef IP_H
#define IP_H
#include "getaddrinfo.h" /* pgrminclude ignore */
#include "libpq/pqcomm.h" /* pgrminclude ignore */
#ifdef HAVE_UNIX_SOCKETS
#define IS_AF_UNIX(fam) ((fam) == AF_UNIX)
#else
#define IS_AF_UNIX(fam) (0)
#endif
extern int pg_getaddrinfo_all(const char *hostname, const char *servname,
const struct addrinfo * hintp,
struct addrinfo ** result);
extern void pg_freeaddrinfo_all(int hint_ai_family, struct addrinfo * ai);
extern int pg_getnameinfo_all(const struct sockaddr_storage * addr, int salen,
char *node, int nodelen,
char *service, int servicelen,
int flags);
#endif /* IP_H */

30
src/include/common/md5.h Normal file
View File

@@ -0,0 +1,30 @@
/*-------------------------------------------------------------------------
*
* md5.h
* Interface to libpq/md5.c
*
* These definitions are needed by both frontend and backend code to work
* with MD5-encrypted passwords.
*
* Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* src/include/common/md5.h
*
*-------------------------------------------------------------------------
*/
#ifndef PG_MD5_H
#define PG_MD5_H
#define MD5_PASSWD_LEN 35
#define isMD5(passwd) (strncmp(passwd, "md5", 3) == 0 && \
strlen(passwd) == MD5_PASSWD_LEN)
extern bool pg_md5_hash(const void *buff, size_t len, char *hexsum);
extern bool pg_md5_binary(const void *buff, size_t len, void *outbuf);
extern bool pg_md5_encrypt(const char *passwd, const char *salt,
size_t salt_len, char *buf);
#endif