Index: src/win32.mak =================================================================== RCS file: /home/saito/CVSWK/pgsql/src/win32.mak,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -c -r1.1.1.1 -r1.2 *** src/win32.mak 17 Jan 2008 05:35:21 -0000 1.1.1.1 --- src/win32.mak 17 Jan 2008 05:38:08 -0000 1.2 *************** *** 16,28 **** cd .. cd interfaces\libpq nmake /f win32.mak $(MAKEMACRO) ! cd ..\.. echo All Win32 parts have been built! CLEAN: cd interfaces\libpq nmake /f win32.mak CLEAN ! cd ..\.. echo All Win32 parts have been cleaned! DISTCLEAN: CLEAN --- 16,32 ---- cd .. cd interfaces\libpq nmake /f win32.mak $(MAKEMACRO) ! cd ..\..\test\examples ! nmake /f win32.mak $(MAKEMACRO) ! cd ..\..\..\.. echo All Win32 parts have been built! CLEAN: cd interfaces\libpq nmake /f win32.mak CLEAN ! cd ..\..\test\examples ! nmake /f win32.mak CLEAN ! cd ..\..\..\.. echo All Win32 parts have been cleaned! DISTCLEAN: CLEAN Index: src/test/examples/Makefile =================================================================== RCS file: /home/saito/CVSWK/pgsql/src/test/examples/Makefile,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -c -r1.1.1.1 -r1.2 *** src/test/examples/Makefile 17 Jan 2008 05:35:26 -0000 1.1.1.1 --- src/test/examples/Makefile 17 Jan 2008 05:38:23 -0000 1.2 *************** *** 6,15 **** top_builddir = ../../.. include $(top_builddir)/src/Makefile.global override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) override LDLIBS := $(libpq_pgport) $(LDLIBS) - PROGS = testlibpq testlibpq2 testlibpq3 testlibpq4 testlo all: $(PROGS) --- 6,18 ---- top_builddir = ../../.. include $(top_builddir)/src/Makefile.global + ifeq ($(PORTNAME), win32) + LDLIBS += -lws2_32 + endif + override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS) override LDLIBS := $(libpq_pgport) $(LDLIBS) PROGS = testlibpq testlibpq2 testlibpq3 testlibpq4 testlo all: $(PROGS) Index: src/test/examples/README =================================================================== RCS file: src/test/examples/README diff -N src/test/examples/README *** /dev/null 1 Jan 1970 00:00:00 -0000 --- src/test/examples/README 17 Jan 2008 05:38:23 -0000 1.1 *************** *** 0 **** --- 1,195 ---- + Execution of example: + + -- + -- Case 1 + -- + + $ testlibpq "user=postgres" + + datname datdba encoding datistemplate datallowconn datco nnlimit datlastsysoid datfrozenxid dattablespace datconfig datacl + + postgres 10 6 f t -1 10818 526 1663 + template1 10 6 t t -1 10818 526 1663 {=c/postgr es,postgres=CTc/postgres} + template0 10 6 t f -1 10818 526 1663 {=c/postgr es,postgres=CTc/postgres} + + -- + -- Case 2 + -- + *- sets up by psql. + postgres=# CREATE TABLE TBL1 (i int4); + CREATE TABLE + postgres=# + postgres=# CREATE TABLE TBL2 (i int4); + CREATE TABLE + postgres=# + postgres=# CREATE RULE r1 AS ON INSERT TO TBL1 DO + postgres-# (INSERT INTO TBL2 VALUES (new.i); NOTIFY TBL2); + CREATE RULE + + *- waits by execution. + $testlibpq2 "user=postgres" + + *- insert of psql. + postgres=# INSERT INTO TBL1 VALUES(932); + INSERT 0 1 + + *- accept result. + ASYNC NOTIFY of 'tbl2' received from backend pid 1252 + (result of testlibpq2) + + -- + -- Case3 + -- + + *- sets up by psql. + postgres=# CREATE TABLE test1 (i int4, t text, b bytea); + CREATE TABLE + postgres=# + postgres=# INSERT INTO test1 values (1, 'joe''s place', '\\000\\001\\002\\003\\004'); + INSERT 0 1 + postgres=# INSERT INTO test1 values (2, 'ho there', '\\004\\003\\002\\001\\000'); + INSERT 0 1 + + $testlibpq3 "user=postgres" + tuple 0: got + i = (4 bytes) 1 + t = (11 bytes) 'joe's place' + b = (5 bytes) \000\001\002\003\004 + + tuple 0: got + i = (4 bytes) 2 + t = (8 bytes) 'ho there' + b = (5 bytes) \004\003\002\001\000 + + -- + -- Case 4 + -- + $testlibpq4.exe "dbname=postgres" "dbname=template1" + + table_name + + OK:views + OK:data_type_privileges + OK:element_types + OK:sql_packages + OK:sql_parts + OK:sql_sizing + OK:sql_sizing_profiles + OK:table_constraints + OK:table_privileges + OK:tables + OK:triggered_update_columns + OK:triggers + OK:usage_privileges + OK:view_column_usage + OK:view_routine_usage + OK:view_table_usage + OK:referential_constraints + OK:role_column_grants + OK:role_routine_grants + OK:role_table_grants + OK:role_usage_grants + OK:routine_privileges + OK:routines + OK:pg_authid + OK:schemata + OK:sequences + OK:pg_shadow + OK:sql_features + OK:sql_implementation_info + OK:sql_languages + OK:attributes + OK:check_constraint_routine_usage + OK:check_constraints + OK:column_domain_usage + OK:column_privileges + OK:column_udt_usage + OK:pg_statistic + OK:columns + OK:constraint_column_usage + OK:constraint_table_usage + OK:domain_constraints + OK:domain_udt_usage + OK:domains + OK:pg_settings + OK:enabled_roles + OK:key_column_usage + OK:parameters + OK:pg_rules + OK:pg_views + OK:pg_tables + OK:pg_indexes + OK:pg_stats + OK:pg_locks + OK:pg_cursors + OK:pg_prepared_xacts + OK:pg_prepared_statements + OK:pg_timezone_abbrevs + OK:pg_timezone_names + OK:pg_stat_all_tables + OK:pg_stat_sys_tables + OK:pg_stat_user_tables + OK:pg_statio_all_tables + OK:pg_statio_sys_tables + OK:pg_statio_user_tables + OK:pg_stat_all_indexes + OK:pg_stat_sys_indexes + OK:pg_stat_user_indexes + OK:pg_statio_all_indexes + OK:pg_statio_sys_indexes + OK:pg_statio_user_indexes + OK:pg_statio_all_sequences + OK:pg_statio_sys_sequences + OK:pg_statio_user_sequences + OK:pg_stat_activity + OK:pg_stat_database + OK:information_schema_catalog_name + OK:applicable_roles + OK:administrable_role_authorizations + OK:pg_type + OK:pg_attribute + OK:pg_proc + OK:pg_class + OK:pg_autovacuum + OK:pg_attrdef + OK:pg_constraint + OK:pg_inherits + OK:pg_index + OK:pg_operator + OK:pg_opclass + OK:pg_am + OK:pg_amop + OK:pg_amproc + OK:pg_language + OK:pg_largeobject + OK:pg_aggregate + OK:pg_rewrite + OK:pg_trigger + OK:pg_listener + OK:pg_description + OK:pg_cast + OK:pg_namespace + OK:pg_conversion + OK:pg_depend + OK:pg_tablespace + OK:pg_pltemplate + OK:pg_shdepend + OK:pg_shdescription + OK:pg_database + OK:pg_auth_members + OK:pg_roles + OK:pg_group + OK:pg_user + NG:tbl2 ,nothing? + NG:tbl1 ,nothing? + NG:test1 ,nothing? + + -- + -- Case large object + -- + + $testlo.exe postgres Imgtest.png Exp.png + + importing file "Imgtest.png" ... + as large object 18497. + exporting large object to file "Exp.png" ... Index: src/test/examples/testlibpq2.c =================================================================== RCS file: /home/saito/CVSWK/pgsql/src/test/examples/testlibpq2.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -c -r1.1.1.1 -r1.2 *** src/test/examples/testlibpq2.c 17 Jan 2008 05:35:26 -0000 1.1.1.1 --- src/test/examples/testlibpq2.c 17 Jan 2008 05:38:23 -0000 1.2 *************** *** 21,26 **** --- 21,27 ---- * * INSERT INTO TBL1 VALUES (10); */ + #include "postgres_fe.h" #include #include #include Index: src/test/examples/testlibpq3.c =================================================================== RCS file: /home/saito/CVSWK/pgsql/src/test/examples/testlibpq3.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -c -r1.1.1.1 -r1.2 *** src/test/examples/testlibpq3.c 17 Jan 2008 05:35:26 -0000 1.1.1.1 --- src/test/examples/testlibpq3.c 17 Jan 2008 05:38:23 -0000 1.2 *************** *** 22,31 **** --- 22,35 ---- * t = (8 bytes) 'ho there' * b = (5 bytes) \004\003\002\001\000 */ + #include "postgres_fe.h" #include #include #include #include + #if defined(_MSC_VER) + typedef unsigned int uint32_t; + #endif #include "libpq-fe.h" /* for ntohl/htonl */ Index: src/test/examples/testlibpq4.c =================================================================== RCS file: /home/saito/CVSWK/pgsql/src/test/examples/testlibpq4.c,v retrieving revision 1.1.1.1 retrieving revision 1.3 diff -c -r1.1.1.1 -r1.3 *** src/test/examples/testlibpq4.c 17 Jan 2008 05:35:26 -0000 1.1.1.1 --- src/test/examples/testlibpq4.c 17 Jan 2008 05:49:02 -0000 1.3 *************** *** 19,31 **** } static void ! check_conn(PGconn *conn, const char *dbName) { /* check to see that the backend connection was successfully made */ if (PQstatus(conn) != CONNECTION_OK) { ! fprintf(stderr, "Connection to database \"%s\" failed: %s", ! dbName, PQerrorMessage(conn)); exit(1); } } --- 19,31 ---- } static void ! check_conn(PGconn *conn, const char *conninfo) { /* check to see that the backend connection was successfully made */ if (PQstatus(conn) != CONNECTION_OK) { ! fprintf(stderr, "Connectstring \"%s\" failed: %s", ! conninfo, PQerrorMessage(conn)); exit(1); } } *************** *** 33,86 **** int main(int argc, char **argv) { ! char *pghost, ! *pgport, ! *pgoptions, ! *pgtty; ! char *dbName1, ! *dbName2; ! char *tblName; ! int nFields; ! int i, ! j; PGconn *conn1, ! *conn2; /* ! * PGresult *res1, *res2; */ ! PGresult *res1; ! if (argc != 4) { ! fprintf(stderr, "usage: %s tableName dbName1 dbName2\n", argv[0]); ! fprintf(stderr, " compares two tables in two databases\n"); exit(1); } - tblName = argv[1]; - dbName1 = argv[2]; - dbName2 = argv[3]; ! /* ! * begin, by setting the parameters for a backend connection if the ! * parameters are null, then the system will try to use reasonable ! * defaults by looking up environment variables or, failing that, using ! * hardwired constants ! */ ! pghost = NULL; /* host name of the backend server */ ! pgport = NULL; /* port of the backend server */ ! pgoptions = NULL; /* special options to start up the backend ! * server */ ! pgtty = NULL; /* debugging tty for the backend server */ ! ! /* make a connection to the database */ ! conn1 = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName1); ! check_conn(conn1, dbName1); ! conn2 = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName2); ! check_conn(conn2, dbName2); /* start a transaction block */ res1 = PQexec(conn1, "BEGIN"); --- 33,70 ---- int main(int argc, char **argv) { ! const char *conninfo1, ! *conninfo2; ! ! int nFields1, ! nFields2; ! int i1; PGconn *conn1, ! *conn2; /* ! * PGresult */ ! PGresult *res1, ! *res2; ! if (argc != 3) { ! fprintf(stderr, "usage: %s connectstring1 connectstring2\n", argv[0]); ! fprintf(stderr, " compare tables name in two databases\n"); exit(1); } + conninfo1 = argv[1]; + conninfo2 = argv[2]; ! /* Make a connection to the database */ ! conn1 = PQconnectdb(conninfo1); ! check_conn(conn1, conninfo1); ! conn2 = PQconnectdb(conninfo2); ! check_conn(conn2, conninfo2); /* start a transaction block */ res1 = PQexec(conn1, "BEGIN"); *************** *** 90,115 **** PQclear(res1); exit_nicely(conn1, conn2); } - - /* - * make sure to PQclear() a PGresult whenever it is no longer needed to - * avoid memory leaks - */ PQclear(res1); /* * fetch instances from the pg_database, the system catalog of databases */ ! res1 = PQexec(conn1, "DECLARE myportal CURSOR FOR select * from pg_database"); if (PQresultStatus(res1) != PGRES_COMMAND_OK) { ! fprintf(stderr, "DECLARE CURSOR command failed\n"); PQclear(res1); exit_nicely(conn1, conn2); } PQclear(res1); ! res1 = PQexec(conn1, "FETCH ALL in myportal"); if (PQresultStatus(res1) != PGRES_TUPLES_OK) { fprintf(stderr, "FETCH ALL command didn't return tuples properly\n"); --- 74,112 ---- PQclear(res1); exit_nicely(conn1, conn2); } PQclear(res1); + res2 = PQexec(conn2, "BEGIN"); + if (PQresultStatus(res2) != PGRES_COMMAND_OK) + { + fprintf(stderr, "BEGIN command failed\n"); + PQclear(res2); + exit_nicely(conn1, conn2); + } + PQclear(res2); + /* * fetch instances from the pg_database, the system catalog of databases */ ! res1 = PQexec(conn1, "DECLARE myportal1 CURSOR FOR select table_name from information_schema.tables"); if (PQresultStatus(res1) != PGRES_COMMAND_OK) { ! fprintf(stderr, "DECLARE CURSOR(myportal1) command failed\n"); PQclear(res1); exit_nicely(conn1, conn2); } PQclear(res1); ! res2 = PQexec(conn2, "DECLARE myportal2 CURSOR FOR select table_name from information_schema.tables"); ! if (PQresultStatus(res2) != PGRES_COMMAND_OK) ! { ! fprintf(stderr, "DECLARE CURSOR(myportal2) command failed\n"); ! PQclear(res2); ! exit_nicely(conn1, conn2); ! } ! PQclear(res2); ! ! res1 = PQexec(conn1, "FETCH ALL in myportal1"); if (PQresultStatus(res1) != PGRES_TUPLES_OK) { fprintf(stderr, "FETCH ALL command didn't return tuples properly\n"); *************** *** 117,145 **** exit_nicely(conn1, conn2); } /* first, print out the attribute names */ ! nFields = PQnfields(res1); ! for (i = 0; i < nFields; i++) ! printf("%-15s", PQfname(res1, i)); printf("\n\n"); /* next, print out the instances */ ! for (i = 0; i < PQntuples(res1); i++) { ! for (j = 0; j < nFields; j++) ! printf("%-15s", PQgetvalue(res1, i, j)); printf("\n"); } PQclear(res1); /* close the portal */ ! res1 = PQexec(conn1, "CLOSE myportal"); PQclear(res1); /* end the transaction */ res1 = PQexec(conn1, "END"); PQclear(res1); /* close the connections to the database and cleanup */ PQfinish(conn1); --- 114,162 ---- exit_nicely(conn1, conn2); } + res2 = PQexec(conn2, "FETCH ALL in myportal2"); + if (PQresultStatus(res2) != PGRES_TUPLES_OK) + { + fprintf(stderr, "FETCH ALL command didn't return tuples properly\n"); + PQclear(res2); + exit_nicely(conn1, conn2); + } + /* first, print out the attribute names */ ! nFields1 = PQnfields(res1); ! nFields2 = PQnfields(res2); ! ! for (i1 = 0 ; i1 < nFields1; i1++) ! printf("%-15s", PQfname(res1, i1)); printf("\n\n"); /* next, print out the instances */ ! for (i1 = 0 ; i1 < PQntuples(res1) ; i1++ ) { ! if (i1 < PQntuples(res2)) ! if(strcmp(PQgetvalue(res1, i1, 0), PQgetvalue(res2, i1, 0))) ! ! printf("NG:%-15s,%-15s", PQgetvalue(res1, i1, 0), PQgetvalue(res2, i1, 0)); ! else ! printf("OK:%-15s", PQgetvalue(res1, i1, 0)); ! else ! printf("NG:%-15s,nothing?", PQgetvalue(res1, i1, 0)); printf("\n"); } PQclear(res1); /* close the portal */ ! res1 = PQexec(conn1, "CLOSE myportal1"); PQclear(res1); + res2 = PQexec(conn2, "CLOSE myportal2"); + PQclear(res2); /* end the transaction */ res1 = PQexec(conn1, "END"); PQclear(res1); + res2 = PQexec(conn2, "END"); + PQclear(res2); /* close the connections to the database and cleanup */ PQfinish(conn1); Index: src/test/examples/testlo.c =================================================================== RCS file: /home/saito/CVSWK/pgsql/src/test/examples/testlo.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -c -r1.1.1.1 -r1.2 *** src/test/examples/testlo.c 17 Jan 2008 05:35:26 -0000 1.1.1.1 --- src/test/examples/testlo.c 17 Jan 2008 05:38:23 -0000 1.2 *************** *** 242,254 **** else { printf("\tas large object %u.\n", lobjOid); ! printf("picking out bytes 1000-2000 of the large object\n"); pickout(conn, lobjOid, 1000, 1000); printf("overwriting bytes 1000-2000 of the large object with X's\n"); overwrite(conn, lobjOid, 1000, 1000); ! printf("exporting large object to file \"%s\" ...\n", out_filename); /* exportFile(conn, lobjOid, out_filename); */ if (!lo_export(conn, lobjOid, out_filename)) --- 242,254 ---- else { printf("\tas large object %u.\n", lobjOid); ! /* printf("picking out bytes 1000-2000 of the large object\n"); pickout(conn, lobjOid, 1000, 1000); printf("overwriting bytes 1000-2000 of the large object with X's\n"); overwrite(conn, lobjOid, 1000, 1000); ! */ printf("exporting large object to file \"%s\" ...\n", out_filename); /* exportFile(conn, lobjOid, out_filename); */ if (!lo_export(conn, lobjOid, out_filename)) Index: src/test/examples/win32.mak =================================================================== RCS file: src/test/examples/win32.mak diff -N src/test/examples/win32.mak *** /dev/null 1 Jan 1970 00:00:00 -0000 --- src/test/examples/win32.mak 17 Jan 2008 06:06:48 -0000 1.3 *************** *** 0 **** --- 1,176 ---- + # Makefile for Microsoft Visual C++ 7.1-8.0 + + # USE_SSL=1 will compile with OpenSSL + # USE_KFW=1 will compile with kfw(kerberos for Windows) + # DEBUG=1 compiles with debugging symbols + # ENABLE_THREAD_SAFETY=1 compiles with threading enabled + + ENABLE_THREAD_SAFETY=1 + + !IF ("$(CPU)" == "")||("$(CPU)" == "i386") + CPU=i386 + !MESSAGE Building the Win32 test example modules.... + !MESSAGE + !ELSEIF ("$(CPU)" == "IA64")||("$(CPU)" == "AMD64") + ADD_DEFINES=/D "WIN64" /Wp64 /GS + ADD_SECLIB=bufferoverflowU.lib + !MESSAGE Building the Win64 test example modules... + !MESSAGE + !ELSE + !MESSAGE Please check a CPU=$(CPU) ? + !MESSAGE CPU=i386 or AMD64 or IA64 + !ERROR Make aborted. + !ENDIF + + # Inclusion of manifest + !IF "$(_NMAKE_VER)" != "6.00.9782.0" + EMBED_MANIFEST=yes + !ENDIF + + !IF "$(SSL_INC)" == "" + SSL_INC=C:\OpenSSL\include + !ENDIF + + !IF "$(SSL_LIB_PATH)" == "" + SSL_LIB_PATH=C:\OpenSSL\lib\VC + !ENDIF + + !IF "$(KFW_INC)" == "" + KFW_INC=C:\kfw-2.6.5\inc + !ENDIF + + !IF "$(KFW_LIB_PATH)" == "" + KFW_LIB_PATH=C:\kfw-2.6.5\lib\$(CPU) + !ENDIF + + !IF "$(OS)" == "Windows_NT" + NULL= + !ELSE + NULL=nul + !ENDIF + + CPP=cl.exe + PERL=perl.exe + FLEX=flex.exe + + !IFDEF DEBUG + OPT=/Od /Zi /MDd + LOPT=/DEBUG + DEBUGDEF=/D _DEBUG + OUTDIR=.\Debug + INTDIR=.\Debug + !ELSE + OPT=/O2 /MD + LOPT= + DEBUGDEF=/D NDEBUG + OUTDIR=.\Release + INTDIR=.\Release + !ENDIF + + CPP_OBJS=$(INTDIR)/ + + CPP_PROJ=/nologo $(OPT) /W3 /EHsc /D "WIN32" $(DEBUGDEF) /D "_CONSOLE" \ + /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" $(ADD_DEFINES) /FD /c \ + /I ..\..\include /I ..\..\interfaces\libpq /I ..\..\include\port\win32 \ + /I ..\..\include\port\win32_msvc \ + /D "FRONTEND" /D "_CRT_SECURE_NO_DEPRECATE" + + !IFDEF USE_SSL + CPP_PROJ=$(CPP_PROJ) /D USE_SSL + SSL_LIBS=ssleay32.lib libeay32.lib gdi32.lib + !ENDIF + + !IFDEF USE_KFW + CPP_PROJ=$(CPP_PROJ) /D KRB5 + KFW_LIBS=krb5_32.lib comerr32.lib gssapi32.lib + !ENDIF + + !IFDEF ENABLE_THREAD_SAFETY + CPP_PROJ=$(CPP_PROJ) /D ENABLE_THREAD_SAFETY + !ENDIF + + ALL : "$(OUTDIR)\testlibpq.exe" "$(OUTDIR)\testlibpq2.exe" "$(OUTDIR)\testlibpq3.exe" "$(OUTDIR)\testlibpq4.exe" "$(OUTDIR)\testlo.exe" + + CLEAN : + -@erase "$(INTDIR)\testlibpq.obj" + -@erase "$(INTDIR)\testlibpq2.obj" + -@erase "$(INTDIR)\testlibpq3.obj" + -@erase "$(INTDIR)\testlibpq4.obj" + -@erase "$(INTDIR)\testlo.obj" + -@erase "$(INTDIR)\snprintf.obj" + -@erase "$(INTDIR)\*.idb" + -@erase "$(OUTDIR)\testlibpq.exe" + -@erase "$(OUTDIR)\testlibpq2.exe" + -@erase "$(OUTDIR)\testlibpq3.exe" + -@erase "$(OUTDIR)\testlibpq4.exe" + -@erase "$(OUTDIR)\testlo.exe" + -@erase "$(OUTDIR)\*.exe.manifest" + + LINK32=link.exe + LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\ + advapi32.lib shfolder.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\ + odbccp32.lib wsock32.lib $(SSL_LIBS) $(KFW_LIB) $(ADD_SECLIB) \ + /libpath:"$(SSL_LIB_PATH)" /libpath:"$(KFW_LIB_PATH)" \ + /nologo /subsystem:console /incremental:no /machine:$(CPU) $(LOPT) + + OPT_OBJ = $(INTDIR)\snprintf.obj + + !IFDEF DEBUG + LINK32_OBJS = $(OPT_OBJ) "..\..\interfaces\libpq\Debug\libpqddll.lib" + !ELSE + LINK32_OBJS = $(OPT_OBJ) "..\..\interfaces\libpq\Release\libpqdll.lib" + !ENDIF + + "$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + + "$(OUTDIR)\testlibpq.exe" : "$(OUTDIR)" "$(INTDIR)\testlibpq.obj" "$(OPT_OBJ)" + $(LINK32) /out:"$(OUTDIR)\testlibpq.exe" @<< + $(LINK32_FLAGS) $(LINK32_OBJS) "$(INTDIR)\testlibpq.obj" + << + !IFDEF EMBED_MANIFEST + mt -manifest $(OUTDIR)\testlibpq.exe.manifest -outputresource:$(OUTDIR)\testlibpq.exe;1 + !ENDIF + + "$(OUTDIR)\testlibpq2.exe" : "$(OUTDIR)" "$(INTDIR)\testlibpq2.obj" "$(OPT_OBJ)" + $(LINK32) /out:"$(OUTDIR)\testlibpq2.exe" @<< + $(LINK32_FLAGS) $(LINK32_OBJS) "$(INTDIR)\testlibpq2.obj" + << + !IFDEF EMBED_MANIFEST + mt -manifest $(OUTDIR)\testlibpq2.exe.manifest -outputresource:$(OUTDIR)\testlibpq2.exe;1 + !ENDIF + + "$(OUTDIR)\testlibpq3.exe" : "$(OUTDIR)" "$(INTDIR)\testlibpq3.obj" "$(OPT_OBJ)" + $(LINK32) /out:"$(OUTDIR)\testlibpq3.exe" @<< + $(LINK32_FLAGS) $(LINK32_OBJS) "$(INTDIR)\testlibpq3.obj" + << + !IFDEF EMBED_MANIFEST + mt -manifest $(OUTDIR)\testlibpq3.exe.manifest -outputresource:$(OUTDIR)\testlibpq3.exe;1 + !ENDIF + + "$(OUTDIR)\testlibpq4.exe" : "$(OUTDIR)" "$(INTDIR)\testlibpq4.obj" "$(OPT_OBJ)" + $(LINK32) /out:"$(OUTDIR)\testlibpq4.exe" @<< + $(LINK32_FLAGS) $(LINK32_OBJS) "$(INTDIR)\testlibpq4.obj" + << + !IFDEF EMBED_MANIFEST + mt -manifest $(OUTDIR)\testlibpq4.exe.manifest -outputresource:$(OUTDIR)\testlibpq4.exe;1 + !ENDIF + + "$(OUTDIR)\testlo.exe" : "$(OUTDIR)" "$(INTDIR)\testlo.obj" "$(OPT_OBJ)" + $(LINK32) /out:"$(OUTDIR)\testlo.exe" @<< + $(LINK32_FLAGS) $(LINK32_OBJS) "$(INTDIR)\testlo.obj" + << + !IFDEF EMBED_MANIFEST + mt -manifest $(OUTDIR)\testlo.exe.manifest -outputresource:$(OUTDIR)\testlo.exe;1 + !ENDIF + + "$(INTDIR)\snprintf.obj" : "$(INTDIR)" ..\..\port\snprintf.c + $(CPP) @<< + $(CPP_PROJ) ..\..\port\snprintf.c + << + + .c{$(CPP_OBJS)}.obj:: + $(CPP) @<< + $(CPP_PROJ) $< + << +