Commit b81844b1 authored by Bruce Momjian's avatar Bruce Momjian

pgindent run on all C files. Java run to follow. initdb/regression

tests pass.
parent 59da2105
...@@ -34,7 +34,6 @@ int32 array_all_int4le(ArrayType *array, int4 value); ...@@ -34,7 +34,6 @@ int32 array_all_int4le(ArrayType *array, int4 value);
int32 array_oideq(ArrayType *array, Oid value); int32 array_oideq(ArrayType *array, Oid value);
int32 array_all_oidne(ArrayType *array, Oid value); int32 array_all_oidne(ArrayType *array, Oid value);
#endif #endif
/* /*
......
This diff is collapsed.
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* darcy@druid.net * darcy@druid.net
* http://www.druid.net/darcy/ * http://www.druid.net/darcy/
* *
* $Id: chkpass.c,v 1.4 2001/05/30 02:11:46 darcy Exp $ * $Id: chkpass.c,v 1.5 2001/10/25 05:49:19 momjian Exp $
* best viewed with tabs set to 4 * best viewed with tabs set to 4
*/ */
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
typedef struct chkpass typedef struct chkpass
{ {
char password[16]; char password[16];
} chkpass; } chkpass;
/* /*
...@@ -62,12 +62,12 @@ PG_FUNCTION_INFO_V1(chkpass_in) ...@@ -62,12 +62,12 @@ PG_FUNCTION_INFO_V1(chkpass_in)
Datum Datum
chkpass_in(PG_FUNCTION_ARGS) chkpass_in(PG_FUNCTION_ARGS)
{ {
char *str = PG_GETARG_CSTRING(0); char *str = PG_GETARG_CSTRING(0);
chkpass *result; chkpass *result;
char mysalt[4]; char mysalt[4];
static bool random_initialized = false; static bool random_initialized = false;
static char salt_chars[] = static char salt_chars[] =
"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
/* special case to let us enter encrypted passwords */ /* special case to let us enter encrypted passwords */
if (*str == ':') if (*str == ':')
...@@ -81,7 +81,7 @@ chkpass_in(PG_FUNCTION_ARGS) ...@@ -81,7 +81,7 @@ chkpass_in(PG_FUNCTION_ARGS)
if (verify_pass(str) != 0) if (verify_pass(str) != 0)
{ {
elog(ERROR, "chkpass_in: purported CHKPASS \"%s\" is a weak password", elog(ERROR, "chkpass_in: purported CHKPASS \"%s\" is a weak password",
str); str);
PG_RETURN_POINTER(NULL); PG_RETURN_POINTER(NULL);
} }
...@@ -159,17 +159,18 @@ Datum ...@@ -159,17 +159,18 @@ Datum
chkpass_eq(PG_FUNCTION_ARGS) chkpass_eq(PG_FUNCTION_ARGS)
{ {
chkpass *a1 = (chkpass *) PG_GETARG_POINTER(0); chkpass *a1 = (chkpass *) PG_GETARG_POINTER(0);
text *a2 = (text *) PG_GETARG_TEXT_P(1); text *a2 = (text *) PG_GETARG_TEXT_P(1);
char str[10]; char str[10];
int sz = 8; int sz = 8;
if (!a1 || !a2) if (!a1 || !a2)
PG_RETURN_BOOL(0); PG_RETURN_BOOL(0);
if (a2->vl_len < 12) sz = a2->vl_len - 4; if (a2->vl_len < 12)
sz = a2->vl_len - 4;
strncpy(str, a2->vl_dat, sz); strncpy(str, a2->vl_dat, sz);
str[sz] = 0; str[sz] = 0;
PG_RETURN_BOOL (strcmp(a1->password, crypt(str, a1->password)) == 0); PG_RETURN_BOOL(strcmp(a1->password, crypt(str, a1->password)) == 0);
} }
PG_FUNCTION_INFO_V1(chkpass_ne) PG_FUNCTION_INFO_V1(chkpass_ne)
...@@ -177,14 +178,15 @@ Datum ...@@ -177,14 +178,15 @@ Datum
chkpass_ne(PG_FUNCTION_ARGS) chkpass_ne(PG_FUNCTION_ARGS)
{ {
chkpass *a1 = (chkpass *) PG_GETARG_POINTER(0); chkpass *a1 = (chkpass *) PG_GETARG_POINTER(0);
text *a2 = (text *) PG_GETARG_TEXT_P(1); text *a2 = (text *) PG_GETARG_TEXT_P(1);
char str[10]; char str[10];
int sz = 8; int sz = 8;
if (!a1 || !a2) PG_RETURN_BOOL(0); if (!a1 || !a2)
if (a2->vl_len < 12) sz = a2->vl_len - 4; PG_RETURN_BOOL(0);
if (a2->vl_len < 12)
sz = a2->vl_len - 4;
strncpy(str, a2->vl_dat, sz); strncpy(str, a2->vl_dat, sz);
str[sz] = 0; str[sz] = 0;
PG_RETURN_BOOL (strcmp(a1->password, crypt(str, a1->password)) != 0); PG_RETURN_BOOL(strcmp(a1->password, crypt(str, a1->password)) != 0);
} }
...@@ -166,7 +166,6 @@ g_cube_consistent(GISTENTRY *entry, ...@@ -166,7 +166,6 @@ g_cube_consistent(GISTENTRY *entry,
NDBOX * query, NDBOX * query,
StrategyNumber strategy) StrategyNumber strategy)
{ {
/* /*
* if entry is not leaf, use g_cube_internal_consistent, else use * if entry is not leaf, use g_cube_internal_consistent, else use
* g_cube_leaf_consistent * g_cube_leaf_consistent
...@@ -206,7 +205,7 @@ g_cube_union(bytea *entryvec, int *sizep) ...@@ -206,7 +205,7 @@ g_cube_union(bytea *entryvec, int *sizep)
for (i = 1; i < numranges; i++) for (i = 1; i < numranges; i++)
{ {
out = g_cube_binary_union(tmp, (NDBOX *) out = g_cube_binary_union(tmp, (NDBOX *)
DatumGetPointer((((GISTENTRY *) (VARDATA(entryvec)))[i]).key), DatumGetPointer((((GISTENTRY *) (VARDATA(entryvec)))[i]).key),
sizep); sizep);
if (i > 1) if (i > 1)
pfree(tmp); pfree(tmp);
...@@ -220,13 +219,13 @@ g_cube_union(bytea *entryvec, int *sizep) ...@@ -220,13 +219,13 @@ g_cube_union(bytea *entryvec, int *sizep)
** GiST Compress and Decompress methods for boxes ** GiST Compress and Decompress methods for boxes
** do not do anything. ** do not do anything.
*/ */
GISTENTRY * GISTENTRY *
g_cube_compress(GISTENTRY *entry) g_cube_compress(GISTENTRY *entry)
{ {
return (entry); return (entry);
} }
GISTENTRY * GISTENTRY *
g_cube_decompress(GISTENTRY *entry) g_cube_decompress(GISTENTRY *entry)
{ {
return (entry); return (entry);
...@@ -365,7 +364,6 @@ g_cube_picksplit(bytea *entryvec, ...@@ -365,7 +364,6 @@ g_cube_picksplit(bytea *entryvec,
maxoff = OffsetNumberNext(maxoff); maxoff = OffsetNumberNext(maxoff);
for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i)) for (i = FirstOffsetNumber; i <= maxoff; i = OffsetNumberNext(i))
{ {
/* /*
* If we've already decided where to place this item, just put it * If we've already decided where to place this item, just put it
* on the right list. Otherwise, we need to figure out which page * on the right list. Otherwise, we need to figure out which page
...@@ -1001,7 +999,6 @@ cube_contains(NDBOX * box_a, NDBOX * box_b) ...@@ -1001,7 +999,6 @@ cube_contains(NDBOX * box_a, NDBOX * box_b)
if (a->dim < b->dim) if (a->dim < b->dim)
{ {
/* /*
* the further comparisons will make sense if the excess * the further comparisons will make sense if the excess
* dimensions of (b) were zeroes * dimensions of (b) were zeroes
......
This diff is collapsed.
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
/* maximum fieldname-length */ /* maximum fieldname-length */
#define DBF_NAMELEN 11 #define DBF_NAMELEN 11
/* magic-cookies for the file */ /* magic-cookies for the file */
...@@ -37,89 +37,93 @@ ...@@ -37,89 +37,93 @@
#define DBF_ERROR -1 #define DBF_ERROR -1
#define DBF_VALID 0x20 #define DBF_VALID 0x20
#define DBF_DELETED 0x2A #define DBF_DELETED 0x2A
/* diskheader */ /* diskheader */
typedef struct { typedef struct
u_char dbh_dbt; /* indentification field */ {
u_char dbh_year; /* last modification-date */ u_char dbh_dbt; /* indentification field */
u_char dbh_month; u_char dbh_year; /* last modification-date */
u_char dbh_day; u_char dbh_month;
u_char dbh_records[4]; /* number of records */ u_char dbh_day;
u_char dbh_hlen[2]; /* length of this header */ u_char dbh_records[4]; /* number of records */
u_char dbh_rlen[2]; /* length of a record */ u_char dbh_hlen[2]; /* length of this header */
u_char dbh_stub[20]; /* misc stuff we don't need */ u_char dbh_rlen[2]; /* length of a record */
} dbf_header; u_char dbh_stub[20]; /* misc stuff we don't need */
} dbf_header;
/* disk field-description */ /* disk field-description */
typedef struct { typedef struct
u_char dbf_name[DBF_NAMELEN]; /* field-name terminated with \0 */ {
u_char dbf_type; /* field-type */ u_char dbf_name[DBF_NAMELEN]; /* field-name terminated with \0 */
u_char dbf_reserved[4]; /* some reserved stuff */ u_char dbf_type; /* field-type */
u_char dbf_flen; /* field-length */ u_char dbf_reserved[4]; /* some reserved stuff */
u_char dbf_dec; /* number of decimal positions if u_char dbf_flen; /* field-length */
type is 'N' */ u_char dbf_dec; /* number of decimal positions if type is
u_char dbf_stub[14]; /* stuff we don't need */ * 'N' */
} dbf_field; u_char dbf_stub[14]; /* stuff we don't need */
} dbf_field;
/* memory field-description */ /* memory field-description */
typedef struct { typedef struct
u_char db_name[DBF_NAMELEN]; /* field-name terminated with \0 */ {
u_char db_type; /* field-type */ u_char db_name[DBF_NAMELEN]; /* field-name terminated with \0 */
u_char db_flen; /* field-length */ u_char db_type; /* field-type */
u_char db_dec; /* number of decimal positions */ u_char db_flen; /* field-length */
} f_descr; u_char db_dec; /* number of decimal positions */
} f_descr;
/* memory dfb-header */ /* memory dfb-header */
typedef struct { typedef struct
int db_fd; /* file-descriptor */ {
u_long db_offset; /* current offset in file */ int db_fd; /* file-descriptor */
u_char db_memo; /* memo-file present */ u_long db_offset; /* current offset in file */
u_char db_year; /* last update as YYMMDD */ u_char db_memo; /* memo-file present */
u_char db_month; u_char db_year; /* last update as YYMMDD */
u_char db_day; u_char db_month;
u_long db_hlen; /* length of the diskheader, for u_char db_day;
calculating the offsets */ u_long db_hlen; /* length of the diskheader, for
u_long db_records; /* number of records */ * calculating the offsets */
u_long db_currec; /* current record-number starting u_long db_records; /* number of records */
at 0 */ u_long db_currec; /* current record-number starting at 0 */
u_short db_rlen; /* length of the record */ u_short db_rlen; /* length of the record */
u_char db_nfields; /* number of fields */ u_char db_nfields; /* number of fields */
u_char *db_buff; /* record-buffer to save malloc()'s */ u_char *db_buff; /* record-buffer to save malloc()'s */
f_descr *db_fields; /* pointer to an array of field- f_descr *db_fields; /* pointer to an array of field-
descriptions */ * descriptions */
} dbhead; } dbhead;
/* structure that contains everything a user wants from a field, including /* structure that contains everything a user wants from a field, including
the contents (in ASCII). Warning! db_flen may be bigger than the actual the contents (in ASCII). Warning! db_flen may be bigger than the actual
length of db_name! This is because a field doesn't have to be completely length of db_name! This is because a field doesn't have to be completely
filled */ filled */
typedef struct { typedef struct
u_char db_name[DBF_NAMELEN]; /* field-name terminated with \0 */ {
u_char db_type; /* field-type */ u_char db_name[DBF_NAMELEN]; /* field-name terminated with \0 */
u_char db_flen; /* field-length */ u_char db_type; /* field-type */
u_char db_dec; /* number of decimal positions */ u_char db_flen; /* field-length */
u_char* db_contents; /* contents of the field in ASCII */ u_char db_dec; /* number of decimal positions */
} field; u_char *db_contents; /* contents of the field in ASCII */
} field;
/* prototypes for functions */ /* prototypes for functions */
extern dbhead* dbf_open(u_char *file ,int flags); extern dbhead *dbf_open(u_char *file, int flags);
extern int dbf_write_head(dbhead *dbh); extern int dbf_write_head(dbhead * dbh);
extern int dbf_put_fields(dbhead *dbh); extern int dbf_put_fields(dbhead * dbh);
extern int dbf_add_field(dbhead *dbh, u_char *name, u_char type, extern int dbf_add_field(dbhead * dbh, u_char *name, u_char type,
u_char length, u_char dec); u_char length, u_char dec);
extern dbhead * dbf_open_new(u_char *name, int flags); extern dbhead *dbf_open_new(u_char *name, int flags);
extern void dbf_close(dbhead *dbh); extern void dbf_close(dbhead * dbh);
extern int dbf_get_record(dbhead *dbh, field *fields, u_long rec); extern int dbf_get_record(dbhead * dbh, field * fields, u_long rec);
extern field* dbf_build_record(dbhead *dbh); extern field *dbf_build_record(dbhead * dbh);
extern void dbf_free_record(dbhead *dbh, field* fields); extern void dbf_free_record(dbhead * dbh, field * fields);
extern int dbf_put_record(dbhead *dbh, field *rec, u_long where); extern int dbf_put_record(dbhead * dbh, field * rec, u_long where);
/********************************************************************* /*********************************************************************
...@@ -131,5 +135,4 @@ extern long get_long(u_char *cp); ...@@ -131,5 +135,4 @@ extern long get_long(u_char *cp);
extern void put_long(u_char *cp, long lval); extern void put_long(u_char *cp, long lval);
extern short get_short(u_char *cp); extern short get_short(u_char *cp);
extern void put_short(u_char *cp, short lval); extern void put_short(u_char *cp, short lval);
#endif /* _DBF_H */
#endif /* _DBF_H */
This diff is collapsed.
...@@ -5,41 +5,45 @@ ...@@ -5,41 +5,45 @@
/* /*
* routine to change little endian long to host long * routine to change little endian long to host long
*/ */
long get_long(u_char *cp) long
get_long(u_char *cp)
{ {
long ret; long ret;
ret = *cp++; ret = *cp++;
ret += ((*cp++)<<8); ret += ((*cp++) << 8);
ret += ((*cp++)<<16); ret += ((*cp++) << 16);
ret += ((*cp++)<<24); ret += ((*cp++) << 24);
return ret; return ret;
} }
void put_long(u_char *cp, long lval) void
put_long(u_char *cp, long lval)
{ {
cp[0] = lval & 0xff; cp[0] = lval & 0xff;
cp[1] = (lval >> 8) & 0xff; cp[1] = (lval >> 8) & 0xff;
cp[2] = (lval >> 16) & 0xff; cp[2] = (lval >> 16) & 0xff;
cp[3] = (lval >> 24) & 0xff; cp[3] = (lval >> 24) & 0xff;
} }
/* /*
* routine to change little endian short to host short * routine to change little endian short to host short
*/ */
short get_short(u_char *cp) short
get_short(u_char *cp)
{ {
short ret; short ret;
ret = *cp++; ret = *cp++;
ret += ((*cp++)<<8); ret += ((*cp++) << 8);
return ret; return ret;
} }
void put_short(u_char *cp, short sval) void
put_short(u_char *cp, short sval)
{ {
cp[0] = sval & 0xff; cp[0] = sval & 0xff;
cp[1] = (sval >> 8) & 0xff; cp[1] = (sval >> 8) & 0xff;
} }
...@@ -4,18 +4,18 @@ ...@@ -4,18 +4,18 @@
* Functions returning results from a remote database * Functions returning results from a remote database
* *
* Copyright (c) Joseph Conway <joe.conway@mail.com>, 2001; * Copyright (c) Joseph Conway <joe.conway@mail.com>, 2001;
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose, without fee, and without a written agreement * documentation for any purpose, without fee, and without a written agreement
* is hereby granted, provided that the above copyright notice and this * is hereby granted, provided that the above copyright notice and this
* paragraph and the following two paragraphs appear in all copies. * paragraph and the following two paragraphs appear in all copies.
* *
* IN NO EVENT SHALL THE AUTHOR OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR * IN NO EVENT SHALL THE AUTHOR OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
* LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
* DOCUMENTATION, EVEN IF THE AUTHOR OR DISTRIBUTORS HAVE BEEN ADVISED OF THE * DOCUMENTATION, EVEN IF THE AUTHOR OR DISTRIBUTORS HAVE BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
* *
* THE AUTHOR AND DISTRIBUTORS SPECIFICALLY DISCLAIMS ANY WARRANTIES, * THE AUTHOR AND DISTRIBUTORS SPECIFICALLY DISCLAIMS ANY WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
...@@ -30,29 +30,28 @@ PG_FUNCTION_INFO_V1(dblink); ...@@ -30,29 +30,28 @@ PG_FUNCTION_INFO_V1(dblink);
Datum Datum
dblink(PG_FUNCTION_ARGS) dblink(PG_FUNCTION_ARGS)
{ {
PGconn *conn = NULL; PGconn *conn = NULL;
PGresult *res = NULL; PGresult *res = NULL;
dblink_results *results; dblink_results *results;
char *optstr; char *optstr;
char *sqlstatement; char *sqlstatement;
char *curstr = "DECLARE mycursor CURSOR FOR "; char *curstr = "DECLARE mycursor CURSOR FOR ";
char *execstatement; char *execstatement;
char *msg; char *msg;
int ntuples = 0; int ntuples = 0;
ReturnSetInfo *rsi; ReturnSetInfo *rsi;
if (PG_ARGISNULL(0) || PG_ARGISNULL(1)) { if (PG_ARGISNULL(0) || PG_ARGISNULL(1))
elog(ERROR, "dblink: NULL arguments are not permitted"); elog(ERROR, "dblink: NULL arguments are not permitted");
}
if (fcinfo->resultinfo == NULL || ! IsA(fcinfo->resultinfo, ReturnSetInfo)) { if (fcinfo->resultinfo == NULL || !IsA(fcinfo->resultinfo, ReturnSetInfo))
elog(ERROR, "dblink: function called in context that does not accept a set result"); elog(ERROR, "dblink: function called in context that does not accept a set result");
}
optstr = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(PG_GETARG_TEXT_P(0)))); optstr = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(PG_GETARG_TEXT_P(0))));
sqlstatement = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(PG_GETARG_TEXT_P(1)))); sqlstatement = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(PG_GETARG_TEXT_P(1))));
if (fcinfo->flinfo->fn_extra == NULL) { if (fcinfo->flinfo->fn_extra == NULL)
{
conn = PQconnectdb(optstr); conn = PQconnectdb(optstr);
if (PQstatus(conn) == CONNECTION_BAD) if (PQstatus(conn) == CONNECTION_BAD)
...@@ -73,13 +72,14 @@ dblink(PG_FUNCTION_ARGS) ...@@ -73,13 +72,14 @@ dblink(PG_FUNCTION_ARGS)
PQclear(res); PQclear(res);
execstatement = (char *) palloc(strlen(curstr) + strlen(sqlstatement) + 1); execstatement = (char *) palloc(strlen(curstr) + strlen(sqlstatement) + 1);
if (execstatement != NULL) { if (execstatement != NULL)
{
strcpy(execstatement, curstr); strcpy(execstatement, curstr);
strcat(execstatement, sqlstatement); strcat(execstatement, sqlstatement);
strcat(execstatement, "\0"); strcat(execstatement, "\0");
} else {
elog(ERROR, "dblink: insufficient memory" );
} }
else
elog(ERROR, "dblink: insufficient memory");
res = PQexec(conn, execstatement); res = PQexec(conn, execstatement);
if (!res || (PQresultStatus(res) != PGRES_COMMAND_OK && PQresultStatus(res) != PGRES_TUPLES_OK)) if (!res || (PQresultStatus(res) != PGRES_COMMAND_OK && PQresultStatus(res) != PGRES_TUPLES_OK))
...@@ -88,23 +88,27 @@ dblink(PG_FUNCTION_ARGS) ...@@ -88,23 +88,27 @@ dblink(PG_FUNCTION_ARGS)
PQclear(res); PQclear(res);
PQfinish(conn); PQfinish(conn);
elog(ERROR, "dblink: sql error: %s", msg); elog(ERROR, "dblink: sql error: %s", msg);
} else { }
else
{
/* /*
* got results, start fetching them * got results, start fetching them
*/ */
PQclear(res); PQclear(res);
res = PQexec(conn, "FETCH ALL in mycursor"); res = PQexec(conn, "FETCH ALL in mycursor");
if (!res || PQresultStatus(res) != PGRES_TUPLES_OK) { if (!res || PQresultStatus(res) != PGRES_TUPLES_OK)
{
msg = pstrdup(PQerrorMessage(conn)); msg = pstrdup(PQerrorMessage(conn));
PQclear(res); PQclear(res);
PQfinish(conn); PQfinish(conn);
elog(ERROR, "dblink: sql error: %s", msg); elog(ERROR, "dblink: sql error: %s", msg);
} }
ntuples = PQntuples(res); ntuples = PQntuples(res);
if (ntuples > 0) { if (ntuples > 0)
{
results = init_dblink_results(fcinfo->flinfo->fn_mcxt); results = init_dblink_results(fcinfo->flinfo->fn_mcxt);
results->tup_num = 0; results->tup_num = 0;
...@@ -116,44 +120,48 @@ dblink(PG_FUNCTION_ARGS) ...@@ -116,44 +120,48 @@ dblink(PG_FUNCTION_ARGS)
results = NULL; results = NULL;
results = fcinfo->flinfo->fn_extra; results = fcinfo->flinfo->fn_extra;
/* close the cursor */ /* close the cursor */
res = PQexec(conn, "CLOSE mycursor"); res = PQexec(conn, "CLOSE mycursor");
PQclear(res); PQclear(res);
/* commit the transaction */ /* commit the transaction */
res = PQexec(conn, "COMMIT"); res = PQexec(conn, "COMMIT");
PQclear(res); PQclear(res);
/* close the connection to the database and cleanup */ /* close the connection to the database and cleanup */
PQfinish(conn); PQfinish(conn);
rsi = (ReturnSetInfo *)fcinfo->resultinfo; rsi = (ReturnSetInfo *) fcinfo->resultinfo;
rsi->isDone = ExprMultipleResult; rsi->isDone = ExprMultipleResult;
PG_RETURN_POINTER(results); PG_RETURN_POINTER(results);
} else { }
else
{
PQclear(res); PQclear(res);
/* close the cursor */ /* close the cursor */
res = PQexec(conn, "CLOSE mycursor"); res = PQexec(conn, "CLOSE mycursor");
PQclear(res); PQclear(res);
/* commit the transaction */ /* commit the transaction */
res = PQexec(conn, "COMMIT"); res = PQexec(conn, "COMMIT");
PQclear(res); PQclear(res);
/* close the connection to the database and cleanup */ /* close the connection to the database and cleanup */
PQfinish(conn); PQfinish(conn);
rsi = (ReturnSetInfo *)fcinfo->resultinfo; rsi = (ReturnSetInfo *) fcinfo->resultinfo;
rsi->isDone = ExprEndResult ; rsi->isDone = ExprEndResult;
PG_RETURN_NULL(); PG_RETURN_NULL();
} }
} }
} else { }
else
{
/* /*
* check for more results * check for more results
*/ */
...@@ -162,29 +170,30 @@ dblink(PG_FUNCTION_ARGS) ...@@ -162,29 +170,30 @@ dblink(PG_FUNCTION_ARGS)
results->tup_num++; results->tup_num++;
ntuples = PQntuples(results->res); ntuples = PQntuples(results->res);
if (results->tup_num < ntuples) { if (results->tup_num < ntuples)
{
/* /*
* fetch them if available * fetch them if available
*/ */
rsi = (ReturnSetInfo *)fcinfo->resultinfo; rsi = (ReturnSetInfo *) fcinfo->resultinfo;
rsi->isDone = ExprMultipleResult; rsi->isDone = ExprMultipleResult;
PG_RETURN_POINTER(results); PG_RETURN_POINTER(results);
} else { }
else
{
/* /*
* or if no more, clean things up * or if no more, clean things up
*/ */
results = fcinfo->flinfo->fn_extra; results = fcinfo->flinfo->fn_extra;
PQclear(results->res); PQclear(results->res);
rsi = (ReturnSetInfo *)fcinfo->resultinfo; rsi = (ReturnSetInfo *) fcinfo->resultinfo;
rsi->isDone = ExprEndResult ; rsi->isDone = ExprEndResult;
PG_RETURN_NULL(); PG_RETURN_NULL();
} }
...@@ -204,48 +213,48 @@ PG_FUNCTION_INFO_V1(dblink_tok); ...@@ -204,48 +213,48 @@ PG_FUNCTION_INFO_V1(dblink_tok);
Datum Datum
dblink_tok(PG_FUNCTION_ARGS) dblink_tok(PG_FUNCTION_ARGS)
{ {
dblink_results *results; dblink_results *results;
int fldnum; int fldnum;
text *result_text; text *result_text;
char *result; char *result;
int nfields = 0; int nfields = 0;
int text_len = 0; int text_len = 0;
if (PG_ARGISNULL(0) || PG_ARGISNULL(1)) { if (PG_ARGISNULL(0) || PG_ARGISNULL(1))
elog(ERROR, "dblink: NULL arguments are not permitted"); elog(ERROR, "dblink: NULL arguments are not permitted");
}
results = (dblink_results *) PG_GETARG_POINTER(0); results = (dblink_results *) PG_GETARG_POINTER(0);
if (results == NULL) { if (results == NULL)
elog(ERROR, "dblink: function called with invalid result pointer"); elog(ERROR, "dblink: function called with invalid result pointer");
}
fldnum = PG_GETARG_INT32(1); fldnum = PG_GETARG_INT32(1);
if (fldnum < 0) { if (fldnum < 0)
elog(ERROR, "dblink: field number < 0 not permitted"); elog(ERROR, "dblink: field number < 0 not permitted");
}
nfields = PQnfields(results->res); nfields = PQnfields(results->res);
if (fldnum > (nfields - 1)) { if (fldnum > (nfields - 1))
elog(ERROR, "dblink: field number %d does not exist", fldnum); elog(ERROR, "dblink: field number %d does not exist", fldnum);
}
if (PQgetisnull(results->res, results->tup_num, fldnum) == 1) { if (PQgetisnull(results->res, results->tup_num, fldnum) == 1)
{
PG_RETURN_NULL(); PG_RETURN_NULL();
} else { }
else
{
text_len = PQgetlength(results->res, results->tup_num, fldnum); text_len = PQgetlength(results->res, results->tup_num, fldnum);
result = (char *) palloc(text_len + 1); result = (char *) palloc(text_len + 1);
if (result != NULL) { if (result != NULL)
{
strcpy(result, PQgetvalue(results->res, results->tup_num, fldnum)); strcpy(result, PQgetvalue(results->res, results->tup_num, fldnum));
strcat(result, "\0"); strcat(result, "\0");
} else {
elog(ERROR, "dblink: insufficient memory" );
} }
else
elog(ERROR, "dblink: insufficient memory");
result_text = DatumGetTextP(DirectFunctionCall1(textin, CStringGetDatum(result))); result_text = DatumGetTextP(DirectFunctionCall1(textin, CStringGetDatum(result)));
...@@ -267,8 +276,8 @@ dblink_tok(PG_FUNCTION_ARGS) ...@@ -267,8 +276,8 @@ dblink_tok(PG_FUNCTION_ARGS)
dblink_results * dblink_results *
init_dblink_results(MemoryContext fn_mcxt) init_dblink_results(MemoryContext fn_mcxt)
{ {
MemoryContext oldcontext; MemoryContext oldcontext;
dblink_results *retval; dblink_results *retval;
oldcontext = MemoryContextSwitchTo(fn_mcxt); oldcontext = MemoryContextSwitchTo(fn_mcxt);
......
...@@ -4,18 +4,18 @@ ...@@ -4,18 +4,18 @@
* Functions returning results from a remote database * Functions returning results from a remote database
* *
* Copyright (c) Joseph Conway <joe.conway@mail.com>, 2001; * Copyright (c) Joseph Conway <joe.conway@mail.com>, 2001;
* *
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose, without fee, and without a written agreement * documentation for any purpose, without fee, and without a written agreement
* is hereby granted, provided that the above copyright notice and this * is hereby granted, provided that the above copyright notice and this
* paragraph and the following two paragraphs appear in all copies. * paragraph and the following two paragraphs appear in all copies.
* *
* IN NO EVENT SHALL THE AUTHOR OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR * IN NO EVENT SHALL THE AUTHOR OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
* LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
* DOCUMENTATION, EVEN IF THE AUTHOR OR DISTRIBUTORS HAVE BEEN ADVISED OF THE * DOCUMENTATION, EVEN IF THE AUTHOR OR DISTRIBUTORS HAVE BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
* *
* THE AUTHOR AND DISTRIBUTORS SPECIFICALLY DISCLAIMS ANY WARRANTIES, * THE AUTHOR AND DISTRIBUTORS SPECIFICALLY DISCLAIMS ANY WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
...@@ -52,9 +52,9 @@ typedef struct ...@@ -52,9 +52,9 @@ typedef struct
/* /*
* the actual query results * the actual query results
*/ */
PGresult *res; PGresult *res;
} dblink_results; } dblink_results;
/* /*
* External declarations * External declarations
...@@ -66,5 +66,4 @@ extern Datum dblink_tok(PG_FUNCTION_ARGS); ...@@ -66,5 +66,4 @@ extern Datum dblink_tok(PG_FUNCTION_ARGS);
* Internal declarations * Internal declarations
*/ */
dblink_results *init_dblink_results(MemoryContext fn_mcxt); dblink_results *init_dblink_results(MemoryContext fn_mcxt);
#endif /* DBLINK_H */ #endif /* DBLINK_H */
...@@ -6,52 +6,52 @@ ...@@ -6,52 +6,52 @@
#include "commands/trigger.h" #include "commands/trigger.h"
/* /*
* Trigger function accepts variable number of arguments: * Trigger function accepts variable number of arguments:
* *
* 1. relation in which to store the substrings * 1. relation in which to store the substrings
* 2. fields to extract substrings from * 2. fields to extract substrings from
* *
* The relation in which to insert *must* have the following layout: * The relation in which to insert *must* have the following layout:
* *
* string varchar(#) * string varchar(#)
* id oid * id oid
* *
* where # is the largest size of the varchar columns being indexed * where # is the largest size of the varchar columns being indexed
* *
* Example: * Example:
* *
* -- Create the SQL function based on the compiled shared object * -- Create the SQL function based on the compiled shared object
* create function fti() returns opaque as * create function fti() returns opaque as
* '/usr/local/pgsql/lib/contrib/fti.so' language 'C'; * '/usr/local/pgsql/lib/contrib/fti.so' language 'C';
* *
* -- Create the FTI table * -- Create the FTI table
* create table product_fti (string varchar(255), id oid); * create table product_fti (string varchar(255), id oid);
* *
* -- Create an index to assist string matches * -- Create an index to assist string matches
* create index product_fti_string_idx on product_fti (string); * create index product_fti_string_idx on product_fti (string);
* *
* -- Create an index to assist trigger'd deletes * -- Create an index to assist trigger'd deletes
* create index product_fti_id_idx on product_fti (id); * create index product_fti_id_idx on product_fti (id);
* *
* -- Create an index on the product oid column to assist joins * -- Create an index on the product oid column to assist joins
* -- between the fti table and the product table * -- between the fti table and the product table
* create index product_oid_idx on product (oid); * create index product_oid_idx on product (oid);
* *
* -- Create the trigger to perform incremental changes to the full text index. * -- Create the trigger to perform incremental changes to the full text index.
* create trigger product_fti_trig after update or insert or delete on product * create trigger product_fti_trig after update or insert or delete on product
* for each row execute procedure fti(product_fti, title, artist); * for each row execute procedure fti(product_fti, title, artist);
* ^^^^^^^^^^^ * ^^^^^^^^^^^
* table where full text index is stored * table where full text index is stored
* ^^^^^^^^^^^^^ * ^^^^^^^^^^^^^
* columns to index in the base table * columns to index in the base table
* *
* After populating 'product', try something like: * After populating 'product', try something like:
* *
* SELECT DISTINCT(p.*) FROM product p, product_fti f1, product_fti f2 WHERE * SELECT DISTINCT(p.*) FROM product p, product_fti f1, product_fti f2 WHERE
* f1.string ~ '^slippery' AND f2.string ~ '^wet' AND p.oid=f1.id AND p.oid=f2.id; * f1.string ~ '^slippery' AND f2.string ~ '^wet' AND p.oid=f1.id AND p.oid=f2.id;
* *
* To check that your indicies are being used correctly, make sure you * To check that your indicies are being used correctly, make sure you
* EXPLAIN SELECT ... your test query above. * EXPLAIN SELECT ... your test query above.
* *
* CHANGELOG * CHANGELOG
* --------- * ---------
...@@ -76,14 +76,14 @@ ...@@ -76,14 +76,14 @@
* TODO * TODO
* ---- * ----
* *
* prevent generating duplicate words for an oid in the fti table * prevent generating duplicate words for an oid in the fti table
* save a plan for deletes * save a plan for deletes
* create a function that will make the index *after* we have populated * create a function that will make the index *after* we have populated
* the main table (probably first delete all contents to be sure there's * the main table (probably first delete all contents to be sure there's
* nothing in it, then re-populate the fti-table) * nothing in it, then re-populate the fti-table)
* *
* can we do something with operator overloading or a seperate function * can we do something with operator overloading or a seperate function
* that can build the final query automatigally? * that can build the final query automatigally?
*/ */
#define MAX_FTI_QUERY_LENGTH 8192 #define MAX_FTI_QUERY_LENGTH 8192
...@@ -103,16 +103,15 @@ char *StopWords[] = { /* list of words to skip in indexing */ ...@@ -103,16 +103,15 @@ char *StopWords[] = { /* list of words to skip in indexing */
"the", "the",
"yes" "yes"
}; };
#endif /* USE_STOP_WORDS */
#endif /* USE_STOP_WORDS */
/* stuff for caching query-plans, stolen from contrib/spi/\*.c */ /* stuff for caching query-plans, stolen from contrib/spi/\*.c */
typedef struct typedef struct
{ {
char *ident; char *ident;
int nplans; int nplans;
void **splan; void **splan;
} EPlan; } EPlan;
static EPlan *InsertPlans = NULL; static EPlan *InsertPlans = NULL;
static EPlan *DeletePlans = NULL; static EPlan *DeletePlans = NULL;
...@@ -201,13 +200,11 @@ fti(PG_FUNCTION_ARGS) ...@@ -201,13 +200,11 @@ fti(PG_FUNCTION_ARGS)
Oid *argtypes; Oid *argtypes;
Datum values[1]; Datum values[1];
EPlan *plan; EPlan *plan;
int i; int i;
snprintf(query, MAX_FTI_QUERY_LENGTH, "D%s", indexname); snprintf(query, MAX_FTI_QUERY_LENGTH, "D%s", indexname);
for (i = 1; i < nargs; i++) for (i = 1; i < nargs; i++)
{
snprintf(query, MAX_FTI_QUERY_LENGTH, "%s$%s", query, args[i]); snprintf(query, MAX_FTI_QUERY_LENGTH, "%s$%s", query, args[i]);
}
plan = find_plan(query, &DeletePlans, &nDeletePlans); plan = find_plan(query, &DeletePlans, &nDeletePlans);
if (plan->nplans <= 0) if (plan->nplans <= 0)
...@@ -238,23 +235,21 @@ fti(PG_FUNCTION_ARGS) ...@@ -238,23 +235,21 @@ fti(PG_FUNCTION_ARGS)
if (isinsert) if (isinsert)
{ {
char *substring; char *substring;
char *column; char *column;
void *pplan; void *pplan;
Oid *argtypes; Oid *argtypes;
Datum values[2]; Datum values[2];
int colnum; int colnum;
struct varlena *data; struct varlena *data;
EPlan *plan; EPlan *plan;
int i; int i;
char *buff; char *buff;
char *string; char *string;
snprintf(query, MAX_FTI_QUERY_LENGTH, "I%s", indexname); snprintf(query, MAX_FTI_QUERY_LENGTH, "I%s", indexname);
for (i = 1; i < nargs; i++) for (i = 1; i < nargs; i++)
{
snprintf(query, MAX_FTI_QUERY_LENGTH, "%s$%s", query, args[i]); snprintf(query, MAX_FTI_QUERY_LENGTH, "%s$%s", query, args[i]);
}
plan = find_plan(query, &InsertPlans, &nInsertPlans); plan = find_plan(query, &InsertPlans, &nInsertPlans);
...@@ -269,7 +264,7 @@ fti(PG_FUNCTION_ARGS) ...@@ -269,7 +264,7 @@ fti(PG_FUNCTION_ARGS)
/* prepare plan to gain speed */ /* prepare plan to gain speed */
snprintf(query, MAX_FTI_QUERY_LENGTH, "INSERT INTO %s (string, id) VALUES ($1, $2)", snprintf(query, MAX_FTI_QUERY_LENGTH, "INSERT INTO %s (string, id) VALUES ($1, $2)",
indexname); indexname);
pplan = SPI_prepare(query, 2, argtypes); pplan = SPI_prepare(query, 2, argtypes);
if (!pplan) if (!pplan)
elog(ERROR, "Full Text Indexing: SPI_prepare: Returned NULL in insert"); elog(ERROR, "Full Text Indexing: SPI_prepare: Returned NULL in insert");
...@@ -303,7 +298,7 @@ fti(PG_FUNCTION_ARGS) ...@@ -303,7 +298,7 @@ fti(PG_FUNCTION_ARGS)
string++; string++;
} }
data = (struct varlena *) palloc(sizeof(int32) + strlen(column) + 1); data = (struct varlena *) palloc(sizeof(int32) + strlen(column) +1);
buff = palloc(strlen(column) + 1); buff = palloc(strlen(column) + 1);
/* saves lots of calls in while-loop and in breakup() */ /* saves lots of calls in while-loop and in breakup() */
...@@ -348,7 +343,6 @@ breakup(char *string, char *substring) ...@@ -348,7 +343,6 @@ breakup(char *string, char *substring)
while (cur_pos > string) /* don't read before start of 'string' */ while (cur_pos > string) /* don't read before start of 'string' */
{ {
/* /*
* skip pieces at the end of a string that are not alfa-numeric * skip pieces at the end of a string that are not alfa-numeric
* (ie. 'string$%^&', last_start first points to '&', and after * (ie. 'string$%^&', last_start first points to '&', and after
...@@ -409,7 +403,7 @@ is_stopword(char *text) ...@@ -409,7 +403,7 @@ is_stopword(char *text)
else else
StopHigh = StopMiddle; StopHigh = StopMiddle;
} }
#endif /* USE_STOP_WORDS */ #endif /* USE_STOP_WORDS */
return (false); return (false);
} }
......
This diff is collapsed.
...@@ -24,13 +24,13 @@ ...@@ -24,13 +24,13 @@
* documentation for any purpose, without fee, and without a written agreement * documentation for any purpose, without fee, and without a written agreement
* is hereby granted, provided that the above copyright notice and this * is hereby granted, provided that the above copyright notice and this
* paragraph and the following two paragraphs appear in all copies. * paragraph and the following two paragraphs appear in all copies.
* *
* IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR * IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR
* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
* LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
* DOCUMENTATION, EVEN IF THE AUTHOR OR DISTRIBUTORS HAVE BEEN ADVISED OF THE * DOCUMENTATION, EVEN IF THE AUTHOR OR DISTRIBUTORS HAVE BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
* *
* THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, * THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
...@@ -88,7 +88,7 @@ static const char *soundex_table = "01230120022455012623010202"; ...@@ -88,7 +88,7 @@ static const char *soundex_table = "01230120022455012623010202";
*/ */
#define MAX_METAPHONE_STRLEN 255 #define MAX_METAPHONE_STRLEN 255
/* /*
* Original code by Michael G Schwern starts here. * Original code by Michael G Schwern starts here.
* Code slightly modified for use as PostgreSQL * Code slightly modified for use as PostgreSQL
* function (combined *.h into here). * function (combined *.h into here).
...@@ -96,26 +96,26 @@ static const char *soundex_table = "01230120022455012623010202"; ...@@ -96,26 +96,26 @@ static const char *soundex_table = "01230120022455012623010202";
/************************************************************************** /**************************************************************************
metaphone -- Breaks english phrases down into their phonemes. metaphone -- Breaks english phrases down into their phonemes.
Input Input
word -- An english word to be phonized word -- An english word to be phonized
max_phonemes -- How many phonemes to calculate. If 0, then it max_phonemes -- How many phonemes to calculate. If 0, then it
will phonize the entire phrase. will phonize the entire phrase.
phoned_word -- The final phonized word. (We'll allocate the phoned_word -- The final phonized word. (We'll allocate the
memory.) memory.)
Output Output
error -- A simple error flag, returns TRUE or FALSE error -- A simple error flag, returns TRUE or FALSE
NOTES: ALL non-alpha characters are ignored, this includes whitespace, NOTES: ALL non-alpha characters are ignored, this includes whitespace,
although non-alpha characters will break up phonemes. although non-alpha characters will break up phonemes.
****************************************************************************/ ****************************************************************************/
/************************************************************************** /**************************************************************************
my constants -- constants I like my constants -- constants I like
Probably redundant. Probably redundant.
***************************************************************************/ ***************************************************************************/
#define META_ERROR FALSE #define META_ERROR FALSE
...@@ -123,22 +123,23 @@ static const char *soundex_table = "01230120022455012623010202"; ...@@ -123,22 +123,23 @@ static const char *soundex_table = "01230120022455012623010202";
#define META_FAILURE FALSE #define META_FAILURE FALSE
/* I add modifications to the traditional metaphone algorithm that you /* I add modifications to the traditional metaphone algorithm that you
might find in books. Define this if you want metaphone to behave might find in books. Define this if you want metaphone to behave
traditionally */ traditionally */
#undef USE_TRADITIONAL_METAPHONE #undef USE_TRADITIONAL_METAPHONE
/* Special encodings */ /* Special encodings */
#define SH 'X' #define SH 'X'
#define TH '0' #define TH '0'
char Lookahead(char * word, int how_far); char Lookahead(char *word, int how_far);
int _metaphone ( int
/* IN */ _metaphone(
char * word, /* IN */
int max_phonemes, char *word,
/* OUT */ int max_phonemes,
char ** phoned_word /* OUT */
char **phoned_word
); );
/* Metachar.h ... little bits about characters for metaphone */ /* Metachar.h ... little bits about characters for metaphone */
...@@ -146,9 +147,9 @@ int _metaphone ( ...@@ -146,9 +147,9 @@ int _metaphone (
/*-- Character encoding array & accessing macros --*/ /*-- Character encoding array & accessing macros --*/
/* Stolen directly out of the book... */ /* Stolen directly out of the book... */
char _codes[26] = { char _codes[26] = {
1,16,4,16,9,2,4,16,9,2,0,2,2,2,1,4,0,2,4,4,1,0,0,0,8,0 1, 16, 4, 16, 9, 2, 4, 16, 9, 2, 0, 2, 2, 2, 1, 4, 0, 2, 4, 4, 1, 0, 0, 0, 8, 0
/* a b c d e f g h i j k l m n o p q r s t u v w x y z */ /* a b c d e f g h i j k l m n o p q r s t u v w x y z */
}; };
...@@ -157,16 +158,15 @@ char _codes[26] = { ...@@ -157,16 +158,15 @@ char _codes[26] = {
#define isvowel(c) (ENCODE(c) & 1) /* AEIOU */ #define isvowel(c) (ENCODE(c) & 1) /* AEIOU */
/* These letters are passed through unchanged */ /* These letters are passed through unchanged */
#define NOCHANGE(c) (ENCODE(c) & 2) /* FJMNR */ #define NOCHANGE(c) (ENCODE(c) & 2) /* FJMNR */
/* These form dipthongs when preceding H */ /* These form dipthongs when preceding H */
#define AFFECTH(c) (ENCODE(c) & 4) /* CGPST */ #define AFFECTH(c) (ENCODE(c) & 4) /* CGPST */
/* These make C and G soft */ /* These make C and G soft */
#define MAKESOFT(c) (ENCODE(c) & 8) /* EIY */ #define MAKESOFT(c) (ENCODE(c) & 8) /* EIY */
/* These prevent GH from becoming F */ /* These prevent GH from becoming F */
#define NOGHTOF(c) (ENCODE(c) & 16) /* BDH */ #define NOGHTOF(c) (ENCODE(c) & 16) /* BDH */
#endif /* FUZZYSTRMATCH_H */ #endif /* FUZZYSTRMATCH_H */
/* /*
* PostgreSQL type definitions for managed LargeObjects. * PostgreSQL type definitions for managed LargeObjects.
* *
* $Header: /cvsroot/pgsql/contrib/lo/lo.c,v 1.8 2001/03/22 03:59:09 momjian Exp $ * $Header: /cvsroot/pgsql/contrib/lo/lo.c,v 1.9 2001/10/25 05:49:19 momjian Exp $
* *
*/ */
...@@ -33,8 +33,8 @@ typedef Oid Blob; ...@@ -33,8 +33,8 @@ typedef Oid Blob;
*/ */
Blob *lo_in(char *str); /* Create from String */ Blob *lo_in(char *str); /* Create from String */
char *lo_out(Blob * addr);/* Output oid as String */ char *lo_out(Blob * addr); /* Output oid as String */
Oid lo_oid(Blob * addr);/* Return oid as an oid */ Oid lo_oid(Blob * addr); /* Return oid as an oid */
Blob *lo(Oid oid); /* Return Blob based on oid */ Blob *lo(Oid oid); /* Return Blob based on oid */
Datum lo_manage(PG_FUNCTION_ARGS); /* Trigger handler */ Datum lo_manage(PG_FUNCTION_ARGS); /* Trigger handler */
...@@ -64,7 +64,6 @@ lo_in(char *str) ...@@ -64,7 +64,6 @@ lo_in(char *str)
} }
else else
{ {
/* /*
* There is no Oid passed, so create a new one * There is no Oid passed, so create a new one
*/ */
...@@ -140,7 +139,7 @@ lo_manage(PG_FUNCTION_ARGS) ...@@ -140,7 +139,7 @@ lo_manage(PG_FUNCTION_ARGS)
TupleDesc tupdesc; /* Tuple Descriptor */ TupleDesc tupdesc; /* Tuple Descriptor */
HeapTuple rettuple; /* Tuple to be returned */ HeapTuple rettuple; /* Tuple to be returned */
bool isdelete; /* are we deleting? */ bool isdelete; /* are we deleting? */
HeapTuple newtuple = NULL;/* The new value for tuple */ HeapTuple newtuple = NULL; /* The new value for tuple */
HeapTuple trigtuple; /* The original value of tuple */ HeapTuple trigtuple; /* The original value of tuple */
if (!CALLED_AS_TRIGGER(fcinfo)) if (!CALLED_AS_TRIGGER(fcinfo))
......
...@@ -229,7 +229,7 @@ msqlGetSequenceInfo(int a, char *b) ...@@ -229,7 +229,7 @@ msqlGetSequenceInfo(int a, char *b)
{ {
} }
m_field * m_field *
msqlFetchField(m_result * mr) msqlFetchField(m_result * mr)
{ {
m_field *m = (m_field *) mr->fieldCursor; m_field *m = (m_field *) mr->fieldCursor;
...@@ -242,7 +242,7 @@ msqlFetchField(m_result * mr) ...@@ -242,7 +242,7 @@ msqlFetchField(m_result * mr)
return NULL; return NULL;
} }
m_result * m_result *
msqlListDBs(int a) msqlListDBs(int a)
{ {
m_result *m; m_result *m;
...@@ -256,7 +256,7 @@ msqlListDBs(int a) ...@@ -256,7 +256,7 @@ msqlListDBs(int a)
return NULL; return NULL;
} }
m_result * m_result *
msqlListTables(int a) msqlListTables(int a)
{ {
m_result *m; m_result *m;
...@@ -272,13 +272,13 @@ msqlListTables(int a) ...@@ -272,13 +272,13 @@ msqlListTables(int a)
return NULL; return NULL;
} }
m_result * m_result *
msqlListFields(int a, char *b) msqlListFields(int a, char *b)
{ {
} }
m_result * m_result *
msqlListIndex(int a, char *b, char *c) msqlListIndex(int a, char *b, char *c)
{ {
m_result *m; m_result *m;
...@@ -294,7 +294,7 @@ msqlListIndex(int a, char *b, char *c) ...@@ -294,7 +294,7 @@ msqlListIndex(int a, char *b, char *c)
return NULL; return NULL;
} }
m_result * m_result *
msqlStoreResult(void) msqlStoreResult(void)
{ {
if (queryres) if (queryres)
......
...@@ -6,5 +6,4 @@ int unlisten(char *relname); ...@@ -6,5 +6,4 @@ int unlisten(char *relname);
int max(int x, int y); int max(int x, int y);
int min(int x, int y); int min(int x, int y);
int active_listeners(text *relname); int active_listeners(text *relname);
#endif #endif
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* copyright (c) Oliver Elphick <olly@lfix.co.uk>, 2001; * copyright (c) Oliver Elphick <olly@lfix.co.uk>, 2001;
* licence: BSD * licence: BSD
* *
* $Header: /cvsroot/pgsql/contrib/pg_controldata/Attic/pg_controldata.c,v 1.4 2001/09/06 10:49:29 petere Exp $ * $Header: /cvsroot/pgsql/contrib/pg_controldata/Attic/pg_controldata.c,v 1.5 2001/10/25 05:49:19 momjian Exp $
*/ */
#include "postgres.h" #include "postgres.h"
...@@ -24,7 +24,7 @@ dbState(DBState state) ...@@ -24,7 +24,7 @@ dbState(DBState state)
{ {
switch (state) switch (state)
{ {
case DB_STARTUP: case DB_STARTUP:
return "STARTUP"; return "STARTUP";
case DB_SHUTDOWNED: case DB_SHUTDOWNED:
return "SHUTDOWNED"; return "SHUTDOWNED";
......
/* ------------------------------------------------------------------------- /* -------------------------------------------------------------------------
* pg_dumplo * pg_dumplo
* *
* $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/lo_export.c,v 1.7 2001/03/22 06:16:06 momjian Exp $ * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/lo_export.c,v 1.8 2001/10/25 05:49:19 momjian Exp $
* *
* Karel Zak 1999-2000 * Karel Zak 1999-2000
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------
...@@ -32,14 +32,14 @@ load_lolist(LODumpMaster * pgLO) ...@@ -32,14 +32,14 @@ load_lolist(LODumpMaster * pgLO)
int i; int i;
int n; int n;
/* /*
* Now find any candidate tables who have columns of type oid. * Now find any candidate tables who have columns of type oid.
* *
* NOTE: System tables including pg_largeobject will be ignored. * NOTE: System tables including pg_largeobject will be ignored.
* Otherwise we'd end up dumping all LOs, referenced or not. * Otherwise we'd end up dumping all LOs, referenced or not.
* *
* NOTE: the system oid column is ignored, as it has attnum < 1. * NOTE: the system oid column is ignored, as it has attnum < 1. This
* This shouldn't matter for correctness, but it saves time. * shouldn't matter for correctness, but it saves time.
*/ */
pgLO->res = PQexec(pgLO->conn, pgLO->res = PQexec(pgLO->conn,
"SELECT c.relname, a.attname " "SELECT c.relname, a.attname "
...@@ -107,8 +107,7 @@ pglo_export(LODumpMaster * pgLO) ...@@ -107,8 +107,7 @@ pglo_export(LODumpMaster * pgLO)
for (ll = pgLO->lolist; ll->lo_table != NULL; ll++) for (ll = pgLO->lolist; ll->lo_table != NULL; ll++)
{ {
/*
/*
* Query: find the LOs referenced by this column * Query: find the LOs referenced by this column
*/ */
sprintf(Qbuff, "SELECT DISTINCT l.loid FROM \"%s\" x, pg_largeobject l WHERE x.\"%s\" = l.loid", sprintf(Qbuff, "SELECT DISTINCT l.loid FROM \"%s\" x, pg_largeobject l WHERE x.\"%s\" = l.loid",
......
/* ------------------------------------------------------------------------- /* -------------------------------------------------------------------------
* pg_dumplo * pg_dumplo
* *
* $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/lo_import.c,v 1.5 2001/03/22 06:16:06 momjian Exp $ * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/lo_import.c,v 1.6 2001/10/25 05:49:19 momjian Exp $
* *
* Karel Zak 1999-2000 * Karel Zak 1999-2000
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------
...@@ -50,7 +50,7 @@ pglo_import(LODumpMaster * pgLO) ...@@ -50,7 +50,7 @@ pglo_import(LODumpMaster * pgLO)
sprintf(lo_path, "%s/%s", pgLO->space, path); sprintf(lo_path, "%s/%s", pgLO->space, path);
/* /*
* Import LO * Import LO
*/ */
if ((new_oid = lo_import(pgLO->conn, lo_path)) == 0) if ((new_oid = lo_import(pgLO->conn, lo_path)) == 0)
...@@ -78,7 +78,7 @@ pglo_import(LODumpMaster * pgLO) ...@@ -78,7 +78,7 @@ pglo_import(LODumpMaster * pgLO)
pgLO->counter++; pgLO->counter++;
/* /*
* UPDATE oid in tab * UPDATE oid in tab
*/ */
sprintf(Qbuff, "UPDATE \"%s\" SET \"%s\"=%u WHERE \"%s\"=%u", sprintf(Qbuff, "UPDATE \"%s\" SET \"%s\"=%u WHERE \"%s\"=%u",
......
/* ------------------------------------------------------------------------- /* -------------------------------------------------------------------------
* pg_dumplo * pg_dumplo
* *
* $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/main.c,v 1.8 2001/03/22 06:16:06 momjian Exp $ * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/main.c,v 1.9 2001/10/25 05:49:19 momjian Exp $
* *
* Karel Zak 1999-2000 * Karel Zak 1999-2000
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------
...@@ -152,7 +152,7 @@ main(int argc, char **argv) ...@@ -152,7 +152,7 @@ main(int argc, char **argv)
exit(RE_ERROR); exit(RE_ERROR);
} }
/* /*
* Check space * Check space
*/ */
if (!pgLO->space && !pgLO->action == ACTION_SHOW) if (!pgLO->space && !pgLO->action == ACTION_SHOW)
...@@ -170,7 +170,7 @@ main(int argc, char **argv) ...@@ -170,7 +170,7 @@ main(int argc, char **argv)
exit(RE_ERROR); exit(RE_ERROR);
} }
/* /*
* Make connection * Make connection
*/ */
pgLO->conn = PQsetdbLogin(pgLO->host, NULL, NULL, NULL, pgLO->db, pgLO->conn = PQsetdbLogin(pgLO->host, NULL, NULL, NULL, pgLO->db,
...@@ -186,7 +186,7 @@ main(int argc, char **argv) ...@@ -186,7 +186,7 @@ main(int argc, char **argv)
pgLO->user = PQuser(pgLO->conn); pgLO->user = PQuser(pgLO->conn);
/* /*
* Init index file * Init index file
*/ */
if (pgLO->action != ACTION_SHOW) if (pgLO->action != ACTION_SHOW)
...@@ -304,7 +304,6 @@ usage() ...@@ -304,7 +304,6 @@ usage()
"-q run quietly\n" "-q run quietly\n"
"-w not dump, but show all LO in DB\n" "-w not dump, but show all LO in DB\n"
); /* puts() */ ); /* puts() */
#endif #endif
puts( puts(
......
/* ------------------------------------------------------------------------- /* -------------------------------------------------------------------------
* pg_dumplo * pg_dumplo
* *
* $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/pg_dumplo.h,v 1.4 2001/03/22 03:59:10 momjian Exp $ * $Header: /cvsroot/pgsql/contrib/pg_dumplo/Attic/pg_dumplo.h,v 1.5 2001/10/25 05:49:19 momjian Exp $
* *
* Karel Zak 1999-2000 * Karel Zak 1999-2000
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------
...@@ -64,11 +64,11 @@ typedef struct ...@@ -64,11 +64,11 @@ typedef struct
typedef enum typedef enum
{ {
ACTION_NONE, ACTION_NONE,
ACTION_SHOW, ACTION_SHOW,
ACTION_EXPORT_ATTR, ACTION_EXPORT_ATTR,
ACTION_EXPORT_ALL, ACTION_EXPORT_ALL,
ACTION_IMPORT ACTION_IMPORT
} PGLODUMP_ACTIONS; } PGLODUMP_ACTIONS;
extern char *progname; extern char *progname;
...@@ -78,5 +78,4 @@ extern void index_file(LODumpMaster * pgLO); ...@@ -78,5 +78,4 @@ extern void index_file(LODumpMaster * pgLO);
extern void load_lolist(LODumpMaster * pgLO); extern void load_lolist(LODumpMaster * pgLO);
extern void pglo_export(LODumpMaster * pgLO); extern void pglo_export(LODumpMaster * pgLO);
extern void pglo_import(LODumpMaster * pgLO); extern void pglo_import(LODumpMaster * pgLO);
#endif /* PG_DUMPLO_H */ #endif /* PG_DUMPLO_H */
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group * Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California * Portions Copyright (c) 1994, Regents of the University of California
* *
* $Header: /cvsroot/pgsql/contrib/pg_resetxlog/Attic/pg_resetxlog.c,v 1.7 2001/10/25 00:55:48 momjian Exp $ * $Header: /cvsroot/pgsql/contrib/pg_resetxlog/Attic/pg_resetxlog.c,v 1.8 2001/10/25 05:49:19 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -147,7 +147,6 @@ ReadControlFile(void) ...@@ -147,7 +147,6 @@ ReadControlFile(void)
if ((fd = open(ControlFilePath, O_RDONLY)) < 0) if ((fd = open(ControlFilePath, O_RDONLY)) < 0)
{ {
/* /*
* If pg_control is not there at all, or we can't read it, the * If pg_control is not there at all, or we can't read it, the
* odds are we've been handed a bad DataDir path, so give up. User * odds are we've been handed a bad DataDir path, so give up. User
...@@ -412,7 +411,6 @@ CheckControlVersion0(char *buffer, int len) ...@@ -412,7 +411,6 @@ CheckControlVersion0(char *buffer, int len)
(char *) malloc(_INTL_MAXLOGRECSZ)); (char *) malloc(_INTL_MAXLOGRECSZ));
if (record == NULL) if (record == NULL)
{ {
/* /*
* We have to guess at the checkpoint contents. * We have to guess at the checkpoint contents.
*/ */
...@@ -493,7 +491,7 @@ ReadRecordV0(XLogRecPtr *RecPtr, char *buffer) ...@@ -493,7 +491,7 @@ ReadRecordV0(XLogRecPtr *RecPtr, char *buffer)
readFile = XLogFileOpen(readId, readSeg); readFile = XLogFileOpen(readId, readSeg);
if (readFile < 0) if (readFile < 0)
goto next_record_is_invalid; goto next_record_is_invalid;
readOff = (uint32) (-1);/* force read to occur below */ readOff = (uint32) (-1); /* force read to occur below */
} }
targetPageOff = ((RecPtr->xrecoff % XLogSegSize) / BLCKSZ) * BLCKSZ; targetPageOff = ((RecPtr->xrecoff % XLogSegSize) / BLCKSZ) * BLCKSZ;
...@@ -617,7 +615,6 @@ GuessControlValues(void) ...@@ -617,7 +615,6 @@ GuessControlValues(void)
{ {
#ifdef USE_LOCALE #ifdef USE_LOCALE
char *localeptr; char *localeptr;
#endif #endif
/* /*
......
This diff is collapsed.
This diff is collapsed.
/* $OpenBSD: blf.h,v 1.3 2001/05/15 02:40:35 deraadt Exp $ */ /* $OpenBSD: blf.h,v 1.3 2001/05/15 02:40:35 deraadt Exp $ */
/* /*
* Blowfish - a fast block cipher designed by Bruce Schneier * Blowfish - a fast block cipher designed by Bruce Schneier
...@@ -10,15 +10,15 @@ ...@@ -10,15 +10,15 @@
* modification, are permitted provided that the following conditions * modification, are permitted provided that the following conditions
* are met: * are met:
* 1. Redistributions of source code must retain the above copyright * 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer. * notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright * 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software * 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement: * must display the following acknowledgement:
* This product includes software developed by Niels Provos. * This product includes software developed by Niels Provos.
* 4. The name of the author may not be used to endorse or promote products * 4. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission. * derived from this software without specific prior written permission.
* *
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
...@@ -42,14 +42,15 @@ ...@@ -42,14 +42,15 @@
* of the key affect all cipherbits. * of the key affect all cipherbits.
*/ */
#define BLF_N 16 /* Number of Subkeys */ #define BLF_N 16 /* Number of Subkeys */
#define BLF_MAXKEYLEN ((BLF_N-2)*4) /* 448 bits */ #define BLF_MAXKEYLEN ((BLF_N-2)*4) /* 448 bits */
/* Blowfish context */ /* Blowfish context */
typedef struct BlowfishContext { typedef struct BlowfishContext
uint32 S[4][256]; /* S-Boxes */ {
uint32 P[BLF_N + 2]; /* Subkeys */ uint32 S[4][256]; /* S-Boxes */
} blf_ctx; uint32 P[BLF_N + 2]; /* Subkeys */
} blf_ctx;
/* Raw access to customized Blowfish /* Raw access to customized Blowfish
* blf_key is just: * blf_key is just:
...@@ -57,26 +58,25 @@ typedef struct BlowfishContext { ...@@ -57,26 +58,25 @@ typedef struct BlowfishContext {
* Blowfish_expand0state( state, key, keylen ) * Blowfish_expand0state( state, key, keylen )
*/ */
void Blowfish_encipher (blf_ctx *, uint32 *); void Blowfish_encipher(blf_ctx *, uint32 *);
void Blowfish_decipher (blf_ctx *, uint32 *); void Blowfish_decipher(blf_ctx *, uint32 *);
void Blowfish_initstate (blf_ctx *); void Blowfish_initstate(blf_ctx *);
void Blowfish_expand0state (blf_ctx *, const uint8 *, uint16); void Blowfish_expand0state(blf_ctx *, const uint8 *, uint16);
void Blowfish_expandstate void Blowfish_expandstate
(blf_ctx *, const uint8 *, uint16, const uint8 *, uint16); (blf_ctx *, const uint8 *, uint16, const uint8 *, uint16);
/* Standard Blowfish */ /* Standard Blowfish */
void blf_key (blf_ctx *, const uint8 *, uint16); void blf_key(blf_ctx *, const uint8 *, uint16);
void blf_enc (blf_ctx *, uint32 *, uint16); void blf_enc(blf_ctx *, uint32 *, uint16);
void blf_dec (blf_ctx *, uint32 *, uint16); void blf_dec(blf_ctx *, uint32 *, uint16);
/* Converts uint8 to uint32 */ /* Converts uint8 to uint32 */
uint32 Blowfish_stream2word (const uint8 *, uint16, uint16 *); uint32 Blowfish_stream2word(const uint8 *, uint16, uint16 *);
void blf_ecb_encrypt (blf_ctx *, uint8 *, uint32); void blf_ecb_encrypt(blf_ctx *, uint8 *, uint32);
void blf_ecb_decrypt (blf_ctx *, uint8 *, uint32); void blf_ecb_decrypt(blf_ctx *, uint8 *, uint32);
void blf_cbc_encrypt (blf_ctx *, uint8 *, uint8 *, uint32);
void blf_cbc_decrypt (blf_ctx *, uint8 *, uint8 *, uint32);
void blf_cbc_encrypt(blf_ctx *, uint8 *, uint8 *, uint32);
void blf_cbc_decrypt(blf_ctx *, uint8 *, uint8 *, uint32);
#endif #endif
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
* $FreeBSD: src/lib/libcrypt/crypt-md5.c,v 1.5 1999/12/17 20:21:45 peter Exp $ * $FreeBSD: src/lib/libcrypt/crypt-md5.c,v 1.5 1999/12/17 20:21:45 peter Exp $
* *
*/ */
/* $Id: crypt-md5.c,v 1.1 2001/08/21 01:32:01 momjian Exp $ */ /* $Id: crypt-md5.c,v 1.2 2001/10/25 05:49:19 momjian Exp $ */
#include <postgres.h> #include <postgres.h>
#include "px.h" #include "px.h"
...@@ -23,12 +23,9 @@ ...@@ -23,12 +23,9 @@
char * char *
px_crypt_md5(const char *pw, const char *salt, char *passwd, unsigned dstlen) px_crypt_md5(const char *pw, const char *salt, char *passwd, unsigned dstlen)
{ {
static char *magic = "$1$"; /* static char *magic = "$1$"; /* This string is magic for this
* This string is magic for * algorithm. Having it this way, we can
* this algorithm. Having * get get better later on */
* it this way, we can get
* get better later on
*/
static char *p; static char *p;
static const char *sp, static const char *sp,
*ep; *ep;
...@@ -43,7 +40,7 @@ px_crypt_md5(const char *pw, const char *salt, char *passwd, unsigned dstlen) ...@@ -43,7 +40,7 @@ px_crypt_md5(const char *pw, const char *salt, char *passwd, unsigned dstlen)
if (!passwd || dstlen < 120) if (!passwd || dstlen < 120)
return NULL; return NULL;
/* Refine the Salt first */ /* Refine the Salt first */
sp = salt; sp = salt;
...@@ -99,9 +96,9 @@ px_crypt_md5(const char *pw, const char *salt, char *passwd, unsigned dstlen) ...@@ -99,9 +96,9 @@ px_crypt_md5(const char *pw, const char *salt, char *passwd, unsigned dstlen)
px_md_finish(ctx, final); px_md_finish(ctx, final);
/* /*
* and now, just to make sure things don't run too fast * and now, just to make sure things don't run too fast On a 60 Mhz
* On a 60 Mhz Pentium this takes 34 msec, so you would * Pentium this takes 34 msec, so you would need 30 seconds to build a
* need 30 seconds to build a 1000 entry dictionary... * 1000 entry dictionary...
*/ */
for (i = 0; i < 1000; i++) for (i = 0; i < 1000; i++)
{ {
......
This diff is collapsed.
/* $Id: md5.c,v 1.7 2001/10/25 01:29:37 momjian Exp $ */ /* $Id: md5.c,v 1.8 2001/10/25 05:49:19 momjian Exp $ */
/* $KAME: md5.c,v 1.3 2000/02/22 14:01:17 itojun Exp $ */ /* $KAME: md5.c,v 1.3 2000/02/22 14:01:17 itojun Exp $ */
/* /*
...@@ -132,7 +132,7 @@ static const uint8 md5_paddat[MD5_BUFLEN] = { ...@@ -132,7 +132,7 @@ static const uint8 md5_paddat[MD5_BUFLEN] = {
static void md5_calc(uint8 *, md5_ctxt *); static void md5_calc(uint8 *, md5_ctxt *);
void void
md5_init(md5_ctxt *ctxt) md5_init(md5_ctxt * ctxt)
{ {
ctxt->md5_n = 0; ctxt->md5_n = 0;
ctxt->md5_i = 0; ctxt->md5_i = 0;
...@@ -144,7 +144,7 @@ md5_init(md5_ctxt *ctxt) ...@@ -144,7 +144,7 @@ md5_init(md5_ctxt *ctxt)
} }
void void
md5_loop(md5_ctxt *ctxt, const uint8 *input, unsigned len) md5_loop(md5_ctxt * ctxt, const uint8 *input, unsigned len)
{ {
unsigned int gap, unsigned int gap,
i; i;
...@@ -173,7 +173,7 @@ md5_loop(md5_ctxt *ctxt, const uint8 *input, unsigned len) ...@@ -173,7 +173,7 @@ md5_loop(md5_ctxt *ctxt, const uint8 *input, unsigned len)
} }
void void
md5_pad(md5_ctxt *ctxt) md5_pad(md5_ctxt * ctxt)
{ {
unsigned int gap; unsigned int gap;
...@@ -215,7 +215,7 @@ md5_pad(md5_ctxt *ctxt) ...@@ -215,7 +215,7 @@ md5_pad(md5_ctxt *ctxt)
} }
void void
md5_result(uint8 *digest, md5_ctxt *ctxt) md5_result(uint8 *digest, md5_ctxt * ctxt)
{ {
/* 4 byte words */ /* 4 byte words */
#if BYTE_ORDER == LITTLE_ENDIAN #if BYTE_ORDER == LITTLE_ENDIAN
...@@ -242,11 +242,11 @@ md5_result(uint8 *digest, md5_ctxt *ctxt) ...@@ -242,11 +242,11 @@ md5_result(uint8 *digest, md5_ctxt *ctxt)
} }
#if BYTE_ORDER == BIG_ENDIAN #if BYTE_ORDER == BIG_ENDIAN
static uint32 X[16]; static uint32 X[16];
#endif #endif
static void static void
md5_calc(uint8 *b64, md5_ctxt *ctxt) md5_calc(uint8 *b64, md5_ctxt * ctxt)
{ {
uint32 A = ctxt->md5_sta; uint32 A = ctxt->md5_sta;
uint32 B = ctxt->md5_stb; uint32 B = ctxt->md5_stb;
......
This diff is collapsed.
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
#include "px-crypt.h" #include "px-crypt.h"
char px_crypt_a64[] = char px_crypt_a64[] =
"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
/* 0000000000111111111122222222223333333333444444444455555555556666 */ /* 0000000000111111111122222222223333333333444444444455555555556666 */
/* 0123456789012345678901234567890123456789012345678901234567890123 */ /* 0123456789012345678901234567890123456789012345678901234567890123 */
......
This diff is collapsed.
This diff is collapsed.
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $Id: pgcrypto.h,v 1.5 2001/09/23 04:12:44 momjian Exp $ * $Id: pgcrypto.h,v 1.6 2001/10/25 05:49:20 momjian Exp $
*/ */
#ifndef _PG_CRYPTO_H #ifndef _PG_CRYPTO_H
...@@ -45,6 +45,4 @@ Datum pg_decrypt(PG_FUNCTION_ARGS); ...@@ -45,6 +45,4 @@ Datum pg_decrypt(PG_FUNCTION_ARGS);
Datum pg_encrypt_iv(PG_FUNCTION_ARGS); Datum pg_encrypt_iv(PG_FUNCTION_ARGS);
Datum pg_decrypt_iv(PG_FUNCTION_ARGS); Datum pg_decrypt_iv(PG_FUNCTION_ARGS);
Datum pg_cipher_exists(PG_FUNCTION_ARGS); Datum pg_cipher_exists(PG_FUNCTION_ARGS);
#endif #endif
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/* $Id: sha1.h,v 1.5 2001/08/21 00:42:41 momjian Exp $ */ /* $Id: sha1.h,v 1.6 2001/10/25 05:49:20 momjian Exp $ */
/* $KAME: sha1.h,v 1.4 2000/02/22 14:01:18 itojun Exp $ */ /* $KAME: sha1.h,v 1.4 2000/02/22 14:01:18 itojun Exp $ */
/* /*
...@@ -71,5 +71,4 @@ typedef struct sha1_ctxt SHA1_CTX; ...@@ -71,5 +71,4 @@ typedef struct sha1_ctxt SHA1_CTX;
#define SHA1Final(x, y) sha1_result((y), (x)) #define SHA1Final(x, y) sha1_result((y), (x))
#define SHA1_RESULTLEN (160/8) #define SHA1_RESULTLEN (160/8)
#endif /* _NETINET6_SHA1_H_ */ #endif /* _NETINET6_SHA1_H_ */
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -359,7 +359,6 @@ c_charin(unsigned char *str) ...@@ -359,7 +359,6 @@ c_charin(unsigned char *str)
{ {
return (string_input(str, 1, 0, NULL)); return (string_input(str, 1, 0, NULL));
} }
#endif #endif
/* end of file */ /* end of file */
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment