#
# PostgreSQL top level makefile
#
-# $Header: /cvsroot/pgsql/GNUmakefile.in,v 1.24 2002/03/29 17:32:48 petere Exp $
+# $Header: /cvsroot/pgsql/GNUmakefile.in,v 1.25 2002/08/22 00:15:04 scrappy Exp $
#
subdir =
opt_files := src/backend/utils/mb contrib/retep/build.xml \
src/tools src/corba src/data src/tutorial \
$(addprefix src/bin/, pgaccess pgtclsh pg_encoding) \
- $(addprefix src/interfaces/, odbc libpq++ libpgtcl perl5 python jdbc) \
+ $(addprefix src/interfaces/, odbc libpgtcl perl5 python jdbc) \
$(addprefix src/pl/, plperl tcl)
docs_files := doc/postgres.tar.gz doc/src doc/TODO.detail
ac_env_CPP_value=$CPP
ac_cv_env_CPP_set=${CPP+set}
ac_cv_env_CPP_value=$CPP
-ac_env_CXX_set=${CXX+set}
-ac_env_CXX_value=$CXX
-ac_cv_env_CXX_set=${CXX+set}
-ac_cv_env_CXX_value=$CXX
-ac_env_CXXFLAGS_set=${CXXFLAGS+set}
-ac_env_CXXFLAGS_value=$CXXFLAGS
-ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set}
-ac_cv_env_CXXFLAGS_value=$CXXFLAGS
-ac_env_CXXCPP_set=${CXXCPP+set}
-ac_env_CXXCPP_value=$CXXCPP
-ac_cv_env_CXXCPP_set=${CXXCPP+set}
-ac_cv_env_CXXCPP_value=$CXXCPP
ac_env_DOCBOOKSTYLE_set=${DOCBOOKSTYLE+set}
ac_env_DOCBOOKSTYLE_value=$DOCBOOKSTYLE
ac_cv_env_DOCBOOKSTYLE_set=${DOCBOOKSTYLE+set}
--with-unixodbc build ODBC driver for unixODBC
--with-iodbc build ODBC driver for iODBC
--with-odbcinst=DIR default directory for odbcinst.ini sysconfdir
- --with-CXX build C++ modules (libpq++)
--with-gnu-ld assume the C compiler uses GNU ld default=no
Some influential environment variables:
CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have
headers in a nonstandard directory <include dir>
CPP C preprocessor
- CXX C++ compiler command
- CXXFLAGS C++ compiler flags
- CXXCPP C++ preprocessor
DOCBOOKSTYLE
location of DocBook stylesheets
fi;
-# Set here so it can be over-ridden in the template file
-GCC_CXXFLAGS="-O2"
-VENDOR_CXXFLAGS=""
-
case $template in
aix) pgac_cc_list="gcc xlc";;
irix) pgac_cc_list="cc";; # no gcc
# Assume system is ELF if it predefines __ELF__ as 1,
-# otherwise believe host_os based default.
-case $host_os in
- freebsd1*|freebsd2*) elf=no;;
- freebsd3*|freebsd4*) elf=yes;;
-esac
-
-
-cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
-#if __ELF__
- yes
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "yes" >/dev/null 2>&1; then
- ELF_SYS=true
-else
- if test "X$elf" = "Xyes" ; then
- ELF_SYS=true
-else
- ELF_SYS=
-fi
-fi
-rm -f conftest*
-
-
-
-
-
-#
-# Optionally build C++ code (i.e., libpq++)
-#
-echo "$as_me:$LINENO: checking whether to build C++ modules" >&5
-echo $ECHO_N "checking whether to build C++ modules... $ECHO_C" >&6
-
-
-
-# Check whether --with-CXX or --without-CXX was given.
-if test "${with_CXX+set}" = set; then
- withval="$with_CXX"
-
- case $withval in
- yes)
- :
- ;;
- no)
- :
- ;;
- *)
- with_CXX=yes
-CXX=$withval
- ;;
- esac
-
-else
- with_CXX=no
-fi;
-
-
-if test "$with_CXX" = yes; then
-
- echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-
- # If the user has specified CXXFLAGS in the environment, leave it
- # alone, else use a default.
-
- ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
- do
- # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_CXX+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$CXX"; then
- ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
-fi
-fi
-CXX=$ac_cv_prog_CXX
-if test -n "$CXX"; then
- echo "$as_me:$LINENO: result: $CXX" >&5
-echo "${ECHO_T}$CXX" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- test -n "$CXX" && break
- done
-fi
-if test -z "$CXX"; then
- ac_ct_CXX=$CXX
- for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- if test -n "$ac_ct_CXX"; then
- ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CXX="$ac_prog"
- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
-done
-
-fi
-fi
-ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
-if test -n "$ac_ct_CXX"; then
- echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
-echo "${ECHO_T}$ac_ct_CXX" >&6
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
- test -n "$ac_ct_CXX" && break
-done
-test -n "$ac_ct_CXX" || ac_ct_CXX="g++"
-
- CXX=$ac_ct_CXX
-fi
-
-
-# Provide some information about the compiler.
-echo "$as_me:$LINENO:" \
- "checking for C++ compiler version" >&5
-ac_compiler=`set X $ac_compile; echo $2`
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
- (eval $ac_compiler --version </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5
- (eval $ac_compiler -v </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5
- (eval $ac_compiler -V </dev/null >&5) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }
-
-echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
-echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6
-if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
-int
-main ()
-{
-#ifndef __GNUC__
- choke me
-#endif
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_compiler_gnu=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_compiler_gnu=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
-
-fi
-echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
-echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6
-GXX=`test $ac_compiler_gnu = yes && echo yes`
-ac_test_CXXFLAGS=${CXXFLAGS+set}
-ac_save_CXXFLAGS=$CXXFLAGS
-CXXFLAGS="-g"
-echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
-echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6
-if test "${ac_cv_prog_cxx_g+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_prog_cxx_g=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_cv_prog_cxx_g=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
-echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6
-if test "$ac_test_CXXFLAGS" = set; then
- CXXFLAGS=$ac_save_CXXFLAGS
-elif test $ac_cv_prog_cxx_g = yes; then
- if test "$GXX" = yes; then
- CXXFLAGS="-g -O2"
- else
- CXXFLAGS="-g"
- fi
-else
- if test "$GXX" = yes; then
- CXXFLAGS="-O2"
- else
- CXXFLAGS=
- fi
-fi
-for ac_declaration in \
- ''\
- '#include <stdlib.h>' \
- 'extern "C" void std::exit (int) throw (); using std::exit;' \
- 'extern "C" void std::exit (int); using std::exit;' \
- 'extern "C" void exit (int) throw ();' \
- 'extern "C" void exit (int);' \
- 'void exit (int);'
-do
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-$ac_declaration
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
-int
-main ()
-{
-exit (42);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- :
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-continue
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
-$ac_declaration
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
-int
-main ()
-{
-exit (42);
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- break
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-done
-rm -f conftest*
-if test -n "$ac_declaration"; then
- echo '#ifdef __cplusplus' >>confdefs.h
- echo $ac_declaration >>confdefs.h
- echo '#endif' >>confdefs.h
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
- if test "$ac_env_CXXFLAGS" != set; then
- if test "$GXX" = yes; then
- CXXFLAGS="$GCC_CXXFLAGS"
- else
- CXXFLAGS="$VENDOR_CXXFLAGS"
- fi
- fi
- if test "$enable_debug" = yes && test "$ac_cv_prog_cxx_g" = yes; then
- CXXFLAGS="$CXXFLAGS -g"
- fi
- { echo "$as_me:$LINENO: using CXXFLAGS=$CXXFLAGS" >&5
-echo "$as_me: using CXXFLAGS=$CXXFLAGS" >&6;}
-
- ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
-echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6
-if test -z "$CXXCPP"; then
- if test "${ac_cv_prog_CXXCPP+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- # Double quotes because CXXCPP needs to be expanded
- for CXXCPP in "$CXX -E" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
-#include <assert.h>
- Syntax error
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_cxx_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- :
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether non-existent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
-#include <ac_nonexistent.h>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_cxx_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- # Broken: success on invalid input.
-continue
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Passes both tests.
-ac_preproc_ok=:
-break
-fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- break
-fi
-
- done
- ac_cv_prog_CXXCPP=$CXXCPP
-
-fi
- CXXCPP=$ac_cv_prog_CXXCPP
-else
- ac_cv_prog_CXXCPP=$CXXCPP
-fi
-echo "$as_me:$LINENO: result: $CXXCPP" >&5
-echo "${ECHO_T}$CXXCPP" >&6
-ac_preproc_ok=false
-for ac_cxx_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
-#include <assert.h>
- Syntax error
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_cxx_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- :
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Broken: fails on valid input.
-continue
-fi
-rm -f conftest.err conftest.$ac_ext
+# otherwise believe host_os based default.
+case $host_os in
+ freebsd1*|freebsd2*) elf=no;;
+ freebsd3*|freebsd4*) elf=yes;;
+esac
- # OK, works on sane cases. Now check whether non-existent headers
- # can be detected and how.
- cat >conftest.$ac_ext <<_ACEOF
+
+cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
-#include <ac_nonexistent.h>
+#if __ELF__
+ yes
+#endif
+
_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_cxx_preproc_warn_flag
- else
- ac_cpp_err=
- fi
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ egrep "yes" >/dev/null 2>&1; then
+ ELF_SYS=true
else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- # Broken: success on invalid input.
-continue
+ if test "X$elf" = "Xyes" ; then
+ ELF_SYS=true
else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- # Passes both tests.
-ac_preproc_ok=:
-break
+ ELF_SYS=
fi
-rm -f conftest.err conftest.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then
- :
-else
- { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&5
-echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&2;}
- { (exit 1); exit 1; }; }
fi
+rm -f conftest*
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-else
- echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
fi
-if test "$with_CXX" = yes; then
-
-
-ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-if test "${ac_cv_header_string+set}" = set; then
- echo "$as_me:$LINENO: checking for string" >&5
-echo $ECHO_N "checking for string... $ECHO_C" >&6
-if test "${ac_cv_header_string+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_string" >&5
-echo "${ECHO_T}$ac_cv_header_string" >&6
-else
- # Is the header compilable?
-echo "$as_me:$LINENO: checking string usability" >&5
-echo $ECHO_N "checking string usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
-$ac_includes_default
-#include <string>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_header_compiler=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-ac_header_compiler=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-
-# Is the header present?
-echo "$as_me:$LINENO: checking string presence" >&5
-echo $ECHO_N "checking string presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
-#include <string>
-_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- egrep -v '^ *\+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_cxx_preproc_warn_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_header_preproc=yes
-else
- echo "$as_me: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc in
- yes:no )
- { echo "$as_me:$LINENO: WARNING: string: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: string: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: string: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: string: proceeding with the preprocessor's result" >&2;};;
- no:yes )
- { echo "$as_me:$LINENO: WARNING: string: present but cannot be compiled" >&5
-echo "$as_me: WARNING: string: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: string: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: string: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: string: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: string: proceeding with the preprocessor's result" >&2;};;
-esac
-echo "$as_me:$LINENO: checking for string" >&5
-echo $ECHO_N "checking for string... $ECHO_C" >&6
-if test "${ac_cv_header_string+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- ac_cv_header_string=$ac_header_preproc
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_string" >&5
-echo "${ECHO_T}$ac_cv_header_string" >&6
-
-fi
-if test $ac_cv_header_string = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_CXX_STRING_HEADER 1
-_ACEOF
-
-else
- echo "$as_me:$LINENO: checking for class string in <string.h>" >&5
-echo $ECHO_N "checking for class string in <string.h>... $ECHO_C" >&6
-if test "${pgac_cv_class_string_in_string_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
-int
-main ()
-{
-string foo = "test"
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- pgac_cv_class_string_in_string_h=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-pgac_cv_class_string_in_string_h=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $pgac_cv_class_string_in_string_h" >&5
-echo "${ECHO_T}$pgac_cv_class_string_in_string_h" >&6
-
- if test x"$pgac_cv_class_string_in_string_h" != xyes ; then
- { { echo "$as_me:$LINENO: error: neither <string> nor <string.h> seem to define the C++ class 'string'" >&5
-echo "$as_me: error: neither <string> nor <string.h> seem to define the C++ class 'string'" >&2;}
- { (exit 1); exit 1; }; }
- fi
-
-fi
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-echo "$as_me:$LINENO: checking for namespace std in C++" >&5
-echo $ECHO_N "checking for namespace std in C++... $ECHO_C" >&6
-if test "${pgac_cv_cxx_namespace_std+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-ac_ext=cc
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
-
-cat >conftest.$ac_ext <<_ACEOF
-#line $LINENO "configure"
-#include "confdefs.h"
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef HAVE_CXX_STRING_HEADER
-#include <string>
-#endif
-using namespace std;
-
-#ifdef F77_DUMMY_MAIN
-# ifdef __cplusplus
- extern "C"
-# endif
- int F77_DUMMY_MAIN() { return 1; }
-#endif
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- pgac_cv_cxx_namespace_std=yes
-else
- echo "$as_me: failed program was:" >&5
-cat conftest.$ac_ext >&5
-pgac_cv_cxx_namespace_std=no
-fi
-rm -f conftest.$ac_objext conftest.$ac_ext
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-fi
-echo "$as_me:$LINENO: result: $pgac_cv_cxx_namespace_std" >&5
-echo "${ECHO_T}$pgac_cv_cxx_namespace_std" >&6
-
-if test $pgac_cv_cxx_namespace_std = yes ; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_NAMESPACE_STD 1
-_ACEOF
-
-fi
-fi
-
-
# Check for Tcl configuration script tclConfig.sh
if test "$with_tcl" = yes; then
for ac_prog in tclsh tcl
s,@with_iodbc@,$with_iodbc,;t t
s,@odbcinst_ini_dir@,$odbcinst_ini_dir,;t t
s,@ELF_SYS@,$ELF_SYS,;t t
-s,@CXX@,$CXX,;t t
-s,@CXXFLAGS@,$CXXFLAGS,;t t
-s,@ac_ct_CXX@,$ac_ct_CXX,;t t
-s,@CXXCPP@,$CXXCPP,;t t
-s,@with_CXX@,$with_CXX,;t t
-s,@GXX@,$GXX,;t t
s,@AWK@,$AWK,;t t
s,@FLEX@,$FLEX,;t t
s,@FLEXFLAGS@,$FLEXFLAGS,;t t
dnl Process this file with autoconf to produce a configure script.
-dnl $Header: /cvsroot/pgsql/configure.in,v 1.195 2002/08/20 17:54:43 petere Exp $
+dnl $Header: /cvsroot/pgsql/configure.in,v 1.196 2002/08/22 00:15:06 scrappy Exp $
dnl
dnl Developers, please strive to achieve this order:
dnl
# variable.
PGAC_ARG_REQ(with, CC, [], [CC=$with_CC])
-# Set here so it can be over-ridden in the template file
-GCC_CXXFLAGS="-O2"
-VENDOR_CXXFLAGS=""
-
case $template in
aix) pgac_cc_list="gcc xlc";;
irix) pgac_cc_list="cc";; # no gcc
-#
-# Optionally build C++ code (i.e., libpq++)
-#
-AC_MSG_CHECKING([whether to build C++ modules])
-PGAC_ARG_OPTARG(with, CXX, [ --with-CXX build C++ modules (libpq++)],
- [],
- [CXX=$withval],
-[
- AC_MSG_RESULT(yes)
-
- # If the user has specified CXXFLAGS in the environment, leave it
- # alone, else use a default.
-
- AC_PROG_CXX
- if test "$ac_env_CXXFLAGS" != set; then
- if test "$GXX" = yes; then
- CXXFLAGS="$GCC_CXXFLAGS"
- else
- CXXFLAGS="$VENDOR_CXXFLAGS"
- fi
- fi
- if test "$enable_debug" = yes && test "$ac_cv_prog_cxx_g" = yes; then
- CXXFLAGS="$CXXFLAGS -g"
- fi
- AC_MSG_NOTICE([using CXXFLAGS=$CXXFLAGS])
-
- AC_PROG_CXXCPP
-],
-[AC_MSG_RESULT(no)])
-AC_SUBST(with_CXX)
-AC_SUBST(GXX)
-
CPPFLAGS="$CPPFLAGS $INCLUDES"
LDFLAGS="$LDFLAGS $LIBDIRS"
PGAC_CHECK_GETTEXT
fi
-if test "$with_CXX" = yes; then
- PGAC_CLASS_STRING
- PGAC_CXX_NAMESPACE_STD
-fi
-
-
# Check for Tcl configuration script tclConfig.sh
if test "$with_tcl" = yes; then
PGAC_PATH_TCLCONFIGSH([$with_tclconfig])
#
# Copyright (c) 1994, Regents of the University of California
#
-# $Header: /cvsroot/pgsql/src/interfaces/Makefile,v 1.45 2001/03/09 21:50:27 petere Exp $
+# $Header: /cvsroot/pgsql/src/interfaces/Makefile,v 1.46 2002/08/22 00:15:10 scrappy Exp $
#
#-------------------------------------------------------------------------
DIRS := libpq ecpg libpgeasy
-ALLDIRS := $(DIRS) odbc libpq++ libpgtcl perl5 python jdbc
+ALLDIRS := $(DIRS) odbc libpgtcl perl5 python jdbc
ifeq ($(enable_odbc), yes)
DIRS += odbc
endif
-ifeq ($(with_CXX), yes)
-DIRS += libpq++
-endif
-
ifeq ($(with_tcl), yes)
DIRS += libpgtcl
endif
+++ /dev/null
-
-5/18/1999 - vv
----------
-
-* Rewrote libpq++.h
-* Incremented shared library version to 3.0
-* Cleaned up makefiles
-* Made examples use the installed versions of the library and header
-
-
-4/26/1999 - vv
----------
-
-* Changed PrintTuples and DisplayTuples in PgDatabase to use PQprint()
-
-
-
-4/14/1999 - vv
----------
-
-* Changed connection routines to use PQconnectdb()
-* Connect now returns CONNECTION_OK or CONNECTION_BAD
-* Eliminated pgEnv
-* Changed error handler to return proper messages
-* New function LOid() returns Large Object ID
-* New function Status() returns Large Object Status
-
-
-
-
-
-
+++ /dev/null
-#-------------------------------------------------------------------------
-#
-# Makefile for libpq++ library
-#
-# Copyright (c) 1994, Regents of the University of California
-#
-# $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/Makefile,v 1.30 2001/05/22 11:24:28 momjian Exp $
-#
-#-------------------------------------------------------------------------
-
-subdir = src/interfaces/libpq++
-top_builddir = ../../..
-include $(top_builddir)/src/Makefile.global
-
-NAME= pq++
-SO_MAJOR_VERSION= 4
-SO_MINOR_VERSION= 0
-
-override CPPFLAGS := -I$(libpq_srcdir) $(CPPFLAGS)
-
-OBJS = pgconnection.o pgdatabase.o pgtransdb.o pgcursordb.o pglobject.o
-
-SHLIB_LINK= $(libpq)
-
-# communicate with Makefile.shlib
-cplusplus := yes
-
-
-all: all-lib
-
-# Shared library stuff
-include $(top_srcdir)/src/Makefile.shlib
-
-
-.PHONY: examples
-examples:
- $(MAKE) -C examples all
-
-install: all installdirs install-headers install-lib
-
-libpqxx_includedir = $(includedir)/libpq++
-MAINHEADER = libpq++.h
-LIBPGXXHEADERS = pgconnection.h pgdatabase.h pgtransdb.h pgcursordb.h pglobject.h
-
-.PHONY: install-headers
-install-headers: $(MAINHEADER) $(LIBPGXXHEADERS)
- $(INSTALL_DATA) $< $(DESTDIR)$(includedir)
- for i in $(LIBPGXXHEADERS); do $(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(libpqxx_includedir) || exit 1; done
-
-installdirs:
- $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) $(DESTDIR)$(libpqxx_includedir)
-
-uninstall: uninstall-lib
- rm -f $(DESTDIR)$(includedir)/$(MAINHEADER)
- for i in $(LIBPGXXHEADERS); do rm -f $(DESTDIR)$(libpqxx_includedir)/$$i || exit; done
-
-clean distclean maintainer-clean: clean-lib
- rm -f $(OBJS)
- -$(MAKE) -C examples clean
-
-
-dep depend:
- $(CXX) -MM $(CPPFLAGS) $(CXXFLAGS) *.cc >depend
-
-ifeq (depend,$(wildcard depend))
-include depend
-endif
+++ /dev/null
-Based on the original work by William Wanders (wwanders@sci.kun.nl)
-and Jolly Chen (jolly@cs.berkeley.edu), this is the first set of
-changes to libpq++ since ~1997. Pgenv has been removed, deprecated
-functions removed and/or updated and error handling rewritten,
-however for the most part it remains as a wrapper around libpq.
-The documentation on libpq is recommended reading to understand
-the function of libpq++.
-
-The API provided herein is subject to change in later versions of
-PostgreSQL.
-
-For details on how to to use libpq++, see Section 3 in Part 1 of
-the PostgreSQL Developer's Guide and the test programs in the
-examples/ subdirectory.
-
-** PgConnection has been changed to accept either the environment
-variables or conninfo style strings. See the PQconnectdb in the
-documentation on libpq for details.
-
-libpq++ has only been tested with g++, version 2.7.2.1
-
-Vince Vielhaber (vev@michvhf.com)
-Tue May 18 08:30:00 EDT 1999
-
-
+++ /dev/null
-
-* Implement exceptions
-* Many other things I have yet to discover
-
+++ /dev/null
-#-------------------------------------------------------------------------
-#
-# Makefile for libpq++ examples
-#
-# Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
-# Portions Copyright (c) 1994, Regents of the University of California
-#
-# $Header: /cvsroot/pgsql/src/interfaces/libpq++/examples/Attic/Makefile,v 1.15 2002/07/27 20:10:05 petere Exp $
-#
-#-------------------------------------------------------------------------
-
-subdir = src/interfaces/libpq++/examples
-top_builddir = ../../../..
-include $(top_builddir)/src/Makefile.global
-
-LIBNAME= libpq++
-HEADERDIR= $(includedir)
-LIBPQDIR= $(libdir)
-
-CXXFLAGS= $(CFLAGS)
-
-CXXFLAGS+= -I$(HEADERDIR)
-
-LDFLAGS+= -L$(LIBPQDIR) -lpq++
-
-PROGS= testlibpq0 testlibpq1 testlibpq2 testlibpq3 \
- testlibpq4 testlibpq5 testlibpq6 testlo
-
-all: $(PROGS)
-
-$(PROGS): % : %.cc
- $(CXX) $(CXXFLAGS) -o $@ $@.cc $(LDFLAGS)
-
-clean:
- rm -f $(PROGS)
-
+++ /dev/null
-/*-------------------------------------------------------------------------
-*
-* testlibpq0.c--
-* small test program for libpq++,
-* small interactive loop where queries can be entered interactively
-* and sent to the backend
-*
-* Copyright (c) 1994, Regents of the University of California
-*
-*
-* IDENTIFICATION
-* $Header: /cvsroot/pgsql/src/interfaces/libpq++/examples/Attic/testlibpq0.cc,v 1.7 2002/07/02 16:32:19 momjian Exp $
-*
-*-------------------------------------------------------------------------
-*/
-
-#include <iostream.h>
-#include "libpq++.h"
-
-int main()
-{
- // Open the connection to the database and make sure it's OK
- PgDatabase data("dbname=template1");
- if ( data.ConnectionBad() )
- {
- cout << "Connection was unsuccessful..." << endl
- << "Error message returned: " << data.ErrorMessage() << endl;
- return 1;
- }
- else
- cout << "Connection successful... Enter queries below:" << endl;
-
- // Interactively obtain and execute queries
- ExecStatusType status;
- string buf;
- int done = 0;
- while (!done)
- {
- cout << "> ";
- cout.flush();
- getline(cin, buf);
- if ( buf != "" )
- if ( (status = data.Exec( buf.c_str() )) == PGRES_TUPLES_OK )
- data.DisplayTuples();
- else
- cout << "No tuples returned..." << endl
- << "status = " << status << endl
- << "Error returned: " << data.ErrorMessage() << endl;
- else
- done = 1;
- }
- return 0;
-} // End main()
+++ /dev/null
-/*
-* testlibpq1.cc
-* Test the C++ version of LIBPQ, the POSTGRES frontend library.
-*
-* queries the template1 database for a list of database names
-*
-*/
-
-#include <iostream.h>
-#include <iomanip.h>
-#include "libpq++.h"
-
-int main()
-{
- // Begin, by establishing a connection to the backend.
- // When no parameters are given then the system will
- // try to use reasonable defaults by looking up environment variables
- // or, failing that, using hardwired constants
- const char* dbName = "dbname=template1";
- PgDatabase data(dbName);
-
- // check to see that the backend connection was successfully made
- if ( data.ConnectionBad() )
- {
- cerr << "Connection to database '" << dbName << "' failed." << endl
- << "Error returned: " << data.ErrorMessage() << endl;
- exit(1);
- }
-
- // start a transaction block
- if ( !data.ExecCommandOk("BEGIN") )
- {
- cerr << "BEGIN command failed" << endl;
- exit(1);
- }
-
- // submit command to the backend
- if ( !data.ExecCommandOk("DECLARE myportal CURSOR FOR select * from pg_database") )
- {
- cerr << "DECLARE CURSOR command failed" << endl;
- exit(1);
- }
-
- // fetch instances from the pg_database, the system catalog of databases
- if ( !data.ExecTuplesOk("FETCH ALL in myportal") )
- {
- cerr << "FETCH ALL command didn't return tuples properly" << endl;
- exit(1);
- }
-
- // first, print out the attribute names
- int nFields = data.Fields();
- for (int i = 0; i < nFields; i++)
- cout << setiosflags(ios::right) << setw(15) << data.FieldName(i);
- cout << endl << endl;
-
- // next, print out the instances
- for (int i = 0; i < data.Tuples(); i++)
- {
- for (int j = 0; j < nFields; j++)
- cout << setiosflags(ios::right) << setw(15) << data.GetValue(i, j);
- cout << endl;
- }
-
- // Close the portal
- data.Exec("CLOSE myportal");
-
- // End the transaction
- data.Exec("END");
- return 0;
-}
-
-
+++ /dev/null
-/*
-* testlibpq2.cc
-* Test the C++ version of LIBPQ, the POSTGRES frontend library.
-*
-* queries the template1 database for a list of database names using transaction block
-*
-*/
-
-#include <iostream.h>
-#include <iomanip.h>
-#include "libpq++.h"
-
-int main()
-{
- // Begin, by establishing a connection to the backend.
- // When no parameters are given then the system will
- // try to use reasonable defaults by looking up environment variables
- // or, failing that, using hardwired constants
- const char* dbName = "dbname=template1";
- PgTransaction data(dbName);
-
- // check to see that the backend connection was successfully made
- if ( data.ConnectionBad() )
- {
- cerr << "Connection to database '" << dbName << "' failed." << endl
- << "Error returned: " << data.ErrorMessage() << endl;
- exit(1);
- }
-
- // submit command to the backend
- if ( !data.ExecCommandOk("DECLARE myportal CURSOR FOR select * from pg_database") )
- {
- cerr << "DECLARE CURSOR command failed" << endl;
- exit(1);
- }
-
- // fetch instances from the pg_database, the system catalog of databases
- if ( !data.ExecTuplesOk("FETCH ALL in myportal") )
- {
- cerr << "FETCH ALL command didn't return tuples properly" << endl;
- exit(1);
- }
-
- // first, print out the attribute names
- int nFields = data.Fields();
- for (int i = 0; i < nFields; i++)
- cout << setiosflags(ios::right) << setw(15) << data.FieldName(i);
- cout << endl << endl;
-
- // next, print out the instances
- for (int i = 0; i < data.Tuples(); i++)
- {
- for (int j = 0; j < nFields; j++)
- cout << setiosflags(ios::right) << setw(15) << data.GetValue(i, j);
- cout << endl;
- }
-
- // close the portal
- data.Exec("CLOSE myportal");
- return 0;
-}
+++ /dev/null
-CREATE TABLE TBL1 (i int4);
-
-CREATE TABLE TBL2 (i int4);
-
-CREATE RULE r1 AS ON INSERT TO TBL1 DO [INSERT INTO TBL2 values (new.i); NOTIFY TBL2];
+++ /dev/null
-/*
-* testlibpq3.cc
-* Test the C++ version of LIBPQ, the POSTGRES frontend library.
-*
-* queries the template1 database for a list of database names using transaction block
-* and cursor interface.
-*
-*/
-
-#include <iostream.h>
-#include <iomanip.h>
-#include "libpq++.h"
-
-int main()
-{
- // Begin, by establishing a connection to the backend.
- // When no parameters are given then the system will
- // try to use reasonable defaults by looking up environment variables
- // or, failing that, using hardwired constants.
- // Create a cursor database query object.
- // All queries using cursor will be performed through this object.
- const char* dbName = "dbname=template1";
- PgCursor cData(dbName, "myportal");
-
- // check to see that the backend connection was successfully made
- if ( cData.ConnectionBad() )
- {
- cerr << "Connection to database '" << dbName << "' failed." << endl
- << "Error returned: " << cData.ErrorMessage() << endl;
- exit(1);
- }
-
- // submit command to the backend
- if ( !cData.Declare("select * from pg_database") )
- {
- cerr << "DECLARE CURSOR command failed" << endl;
- exit(1);
- }
-
- // fetch instances from the pg_cDatabase, the system catalog of cDatabases
- if ( !cData.Fetch() )
- {
- cerr << "FETCH ALL command didn't return tuples properly" << endl;
- exit(1);
- }
-
- // first, print out the attribute names
- int nFields = cData.Fields();
- for (int i = 0; i < nFields; i++)
- cout << setiosflags(ios::right) << setw(15) << cData.FieldName(i);
- cout << endl << endl;
-
- // next, print out the instances
- for (int i = 0; i < cData.Tuples(); i++)
- {
- for (int j = 0; j < nFields; j++)
- cout << setiosflags(ios::right) << setw(15) << cData.GetValue(i, j);
- cout << endl;
- }
- return 0;
-}
+++ /dev/null
-CREATE TABLE test1 (i int4, d float4, p polygon);
-
-INSERT INTO test1 values (1, 3.567, '(3.0, 4.0, 1.0, 2.0)'::polygon);
-
-INSERT INTO test1 values (2, 89.05, '(4.0, 3.0, 2.0, 1.0)'::polygon);
-
+++ /dev/null
-/*
-* testlibpq4.cc
-* Test of the asynchronous notification interface
-*
- populate a test database with the following (use testlibpq4.sql):
-
-CREATE TABLE TBL1 (i int4);
-
-CREATE TABLE TBL2 (i int4);
-
-CREATE RULE r1 AS ON INSERT TO TBL1 DO [INSERT INTO TBL2 values (new.i); NOTIFY TBL2];
-
-* Then start up this program
-* After the program has begun, do
-
-INSERT INTO TBL1 values (10);
-
-*
-*
-*/
-#include <iostream.h>
-#include "libpq++.h"
-#include <stdlib.h>
-
-int main()
-{
- // Begin, by connecting to the backend using hardwired constants
- // and a test database created by the user prior to the invokation
- // of this test program.
- const char* dbName = "dbname=template1";
- PgDatabase data(dbName);
-
- // Check to see that the backend connection was successfully made
- if ( data.ConnectionBad() )
- {
- cerr << "Connection to database '" << dbName << "' failed." << endl
- << data.ErrorMessage() << endl;
- exit(1);
- }
-
- // Listen to a table
- if ( !data.ExecCommandOk("LISTEN TBL2") )
- {
- cerr << "LISTEN command failed" << endl;
- exit(1);
- }
-
- // Test asynchronous notification
- while (1)
- {
- // check for asynchronous returns
- PGnotify* notify = data.Notifies();
- if (notify)
- {
- cerr << "ASYNC NOTIFY of '" << notify->relname
- << "' from backend pid '" << notify->be_pid
- << "' received" << endl;
- free(notify);
- break;
- }
- }
- return 0;
-}
+++ /dev/null
-CREATE TABLE TBL1 (i int4);
-
-CREATE TABLE TBL2 (i int4);
-
-CREATE RULE r1 AS ON INSERT TO TBL1 DO (INSERT INTO TBL2 values (new.i); NOTIFY TBL2);
+++ /dev/null
-/*
-* testlibpq5.cc
-* Test the C++ version of LIBPQ, the POSTGRES frontend library.
-* tests the binary cursor interface
-*
-*
-*
-populate a database by doing the following (use testlibpq5.sql):
-
-CREATE TABLE test1 (i int4, d float4, p polygon);
-
-INSERT INTO test1 values (1, 3.567, '(3.0, 4.0, 1.0, 2.0)'::polygon);
-
-INSERT INTO test1 values (2, 89.05, '(4.0, 3.0, 2.0, 1.0)'::polygon);
-
-the expected output is:
-
-tuple 0: got
-i = (4 bytes) 1,
-d = (4 bytes) 3.567000,
-p = (4 bytes) 2 points boundbox = (hi=3.000000/4.000000, lo = 1.000000,2.000000)
-tuple 1: got
-i = (4 bytes) 2,
-d = (4 bytes) 89.050003,
-p = (4 bytes) 2 points boundbox = (hi=4.000000/3.000000, lo = 2.000000,1.000000)
-
-*
-*/
-#include <iostream.h>
-#include "libpq++.h"
-#include <stdlib.h>
-extern "C"
-{
-#include "postgres.h" // for Postgres types
-#include "utils/geo_decls.h" // for the POLYGON type
-}
-
-int main()
-{
- // Begin, by connecting to the backend using hardwired constants
- // and a test database created by the user prior to the invokation
- // of this test program. Connect using cursor interface.
- const char* dbName = "dbname=template1"; // change this to the name of your test database
- PgCursor data(dbName, "mycursor");
-
- // check to see that the backend connection was successfully made
- if ( data.ConnectionBad() )
- {
- cerr << "Connection to database '" << dbName << "' failed." << endl
- << data.ErrorMessage();
- exit(1);
- }
-
- // Declare a binary cursor for all the tuples in database 'test1'
- if ( !data.Declare("select * from test1", 1) )
- {
- cerr << "DECLARE CURSOR command failed" << endl;
- exit(1);
- }
-
- // fetch all instances from the current cursor
- if ( !data.Fetch() )
- {
- cerr << "FETCH ALL command didn't return tuples properly" << endl;
- exit(1);
- }
-
- // Find the field numbers for the columns 'i', 'd', and 'p'
- int i_fnum = data.FieldNum("i");
- int d_fnum = data.FieldNum("d");
- int p_fnum = data.FieldNum("p");
-
- /*
- for (i=0;i<3;i++) {
- printf("type[%d] = %d, size[%d] = %d\n",
- i, data.FieldType(i),
- i, data.FieldSize(i));
- }
- */
-
- // Print out the information about the extracted tuple
- for (int i = 0; i < data.Tuples(); i++)
- {
- // we hard-wire this to the 3 fields we know about
- int* ival = (int*)data.GetValue(i, i_fnum);
- float* dval = (float*)data.GetValue(i, d_fnum);
- int plen = data.GetLength(i, p_fnum);
-
- // Allocate correct memory space for the Polygon struct and copy
- // the extracted data into it.
- // plen doesn't include the length field so need to increment by VARHDSZ
- POLYGON* pval = (POLYGON*) malloc(plen + VARHDRSZ);
- pval->size = plen;
- memmove((char*)&pval->npts, data.GetValue(i, p_fnum), plen);
-
- // Display Polygon Information
- cout << "tuple " << i << ": got" << endl
- << " i = (" << data.GetLength(i, i_fnum) << " bytes) " << *ival << "," << endl
- << " d = (" << data.GetLength(i, d_fnum) << " bytes) " << *dval << "," << endl
- << " p = (" << data.GetLength(i, d_fnum) << " bytes) " << pval->npts << " points"
- << "\tboundbox = (hi=" << pval->boundbox.high.x << "/" << pval->boundbox.high.y << ","
- << "lo = " << pval->boundbox.low.x << "," << pval->boundbox.low.y << ")" << endl;
-
- // Deallocate memory allocated for the Polygon structure
- free(pval);
- }
- return 0;
-}
+++ /dev/null
-CREATE TABLE test1 (i int4, d float4, p polygon);
-
-INSERT INTO test1 values (1, 3.567, '(3.0, 4.0, 1.0, 2.0)'::polygon);
-
-INSERT INTO test1 values (2, 89.05, '(4.0, 3.0, 2.0, 1.0)'::polygon);
-
+++ /dev/null
-/*
-* testlibpq4.cc
-* Test the C++ version of LIBPQ, the POSTGRES frontend library.
-* tests the copy in features
-*
-*/
-#include <iostream.h>
-#include "libpq++.h"
-#include <stdlib.h>
-
-int main()
-{
- // Begin, by connecting to the backend using hardwired constants
- // and a test database created by the user prior to the invokation
- // of this test program. Connect using transaction interface.
- const char* dbName = "dbname=template1";
- PgTransaction data(dbName);
-
- // check to see that the backend connection was successfully made
- if ( data.ConnectionBad() )
- {
- cerr << "Connection to database '" << dbName << "' failed." << endl
- << data.ErrorMessage();
- exit(1);
- }
- else
- cout << "Connected to database '" << dbName << "'..." << endl;
-
- // Create a new table
- if ( !data.ExecCommandOk("CREATE TABLE foo (a int4, b char(16), d float8)") )
- {
- cerr << "CREATE TABLE foo command failed" << endl;
- exit(1);
- }
- else
- cout << "CREATEd TABLE foo successfully.." << endl;
-
- // Initiate Copy command
- if ( data.ExecCommandOk("COPY foo FROM STDIN") )
- {
- cerr << "COPY foo FROM STDIN" << endl;
- exit(1);
- }
- else
- cout << "COPY foo FROM STDIN was successful.." << endl;
-
- // Put some test data into the table
- data.PutLine("3\thello world\t4.5\n");
- cout << "Line: \"3\thello world\t4.5\" copied..." << endl;
- data.PutLine("4\tgoodbye word\t7.11\n");
- cout << "Line: \"4\tgoodbye word\t7.11\" copied..." << endl;
- data.PutLine("\\.\n");
- cout << "Line: \"\\.\" copied..." << endl;
- if ( !data.EndCopy() )
- cout << "Ended COPY succesfully..." << endl;
- else
- cerr << "End Copy failed..." << endl;
-
- // Print the data that was inserted into the table
- if ( data.ExecTuplesOk("SELECT * FROM foo") )
- data.PrintTuples();
- else
- cerr << "SELECT * FROM foo failed..." << endl;
-
- // Drop the test table
- data.Exec("DROP TABLE foo");
- return 0;
-}
+++ /dev/null
-/*-------------------------------------------------------------------------
-*
-* lotest.cc--
-* test using large objects with libpq
-*
-* Copyright (c) 1994, Regents of the University of California
-*
-*
-* IDENTIFICATION
-* $Header: /cvsroot/pgsql/src/interfaces/libpq++/examples/Attic/testlo.cc,v 1.9 2002/07/02 16:32:19 momjian Exp $
-*
-*-------------------------------------------------------------------------
-*/
-#include <iostream.h>
-#include "libpq++.h"
-#include <stdlib.h>
-
-int main(int argc, char **argv)
-{
- // Check if the program was invoked correctly; if not, signal error
- if (argc < 4 || argc > 5)
- {
- cerr << "Usage: " << argv[0] << " conninfo_str in_filename out_filename [oid]" << endl;
- exit(1);
- }
-
- // Get the arguments passed to the program
- char* conninfo = argv[1];
- char* in_filename = argv[2];
- char* out_filename = argv[3];
-
- // Set up the connection and create a large object
- int lobjId = ( argc == 4 ? 0 : atoi(argv[4]) );
- PgLargeObject object(lobjId, conninfo);
-
- // check to see that the backend connection was successfully made
- if ( object.ConnectionBad() )
- {
- cerr << "Connection with conninfo '" << conninfo << "' failed." << endl
- << object.ErrorMessage();
- exit(1);
- }
-
- // Test the import and export features of the Large Object interface
- object.Exec("BEGIN");
- cout << "Importing file \"" << in_filename << "\"..." << endl;
- object.Import(in_filename);
- cout << "Exporting large object to file \"" << out_filename << "\"..." << endl;
- object.Export(out_filename);
- object.Exec("END"); // WHY DOES IT CORE DUMP HERE ???
- return 0;
-}
+++ /dev/null
-/*-------------------------------------------------------------------------
-*
-* libpq++.h
-*
-*
-* DESCRIPTION
-* C++ client interface to Postgres
-* used for building front-end applications
-*
-* NOTES
-* This is intended to be included by client applications.
-* It will not work as an inclusion in the libpq++ sources, since
-* in the build environment the individual include files are not
-* yet installed in a subdirectory.
-*
-* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
-* Portions Copyright (c) 1994, Regents of the University of California
-*
-* $Id: libpq++.h,v 1.13 2002/07/02 16:32:19 momjian Exp $
-*
-*-------------------------------------------------------------------------
-*/
-
-
-#ifndef LIBPQXX_H
-#define LIBPQXX_H
-
-#include <string.h>
-
-#include "libpq++/pgconnection.h"
-#include "libpq++/pgdatabase.h"
-#include "libpq++/pglobject.h"
-#include "libpq++/pgtransdb.h"
-#include "libpq++/pgcursordb.h"
-
-#endif /* LIBPQXX_H */
+++ /dev/null
-#include <winver.h>
-
-VS_VERSION_INFO VERSIONINFO
- FILEVERSION 7,2,0,0
- PRODUCTVERSION 7,2,0,0
- FILEFLAGSMASK 0x3fL
- FILEFLAGS 0x0L
- FILEOS 0x40004L
- FILETYPE 0x1L
- FILESUBTYPE 0x0L
-BEGIN
- BLOCK "StringFileInfo"
- BEGIN
- BLOCK "040904b0"
- BEGIN
- VALUE "Comments", "\0"
- VALUE "CompanyName", " \0"
- VALUE "FileDescription", "PostgreSQL C++ Access Library\0"
- VALUE "FileVersion", "7, 2, 0, 0\0"
- VALUE "InternalName", "libpq++\0"
- VALUE "LegalCopyright", "Copyright © 2000\0"
- VALUE "LegalTrademarks", "\0"
- VALUE "OriginalFilename", "libpq++.dll\0"
- VALUE "PrivateBuild", "\0"
- VALUE "ProductName", "PostgreSQL\0"
- VALUE "ProductVersion", "7, 2, 0, 0\0"
- VALUE "SpecialBuild", "\0"
- END
- END
- BLOCK "VarFileInfo"
- BEGIN
- VALUE "Translation", 0x409, 1200
- END
-END
+++ /dev/null
-/*-------------------------------------------------------------------------
-*
-* FILE
-* pgconnection.cc
-*
-* DESCRIPTION
-* implementation of the PgConnection class.
-* PgConnection encapsulates a frontend to backend connection
-*
-* Copyright (c) 1994, Regents of the University of California
-*
-* IDENTIFICATION
-* $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/pgconnection.cc,v 1.15 2002/07/02 16:32:19 momjian Exp $
-*
-*-------------------------------------------------------------------------
-*/
-
-#include "pgconnection.h"
-
-#ifdef HAVE_NAMESPACE_STD
-using namespace std;
-#endif
-
-// ****************************************************************
-//
-// PgConnection Implementation
-//
-// ****************************************************************
-// default constructor -- initialize everything
-PgConnection::PgConnection()
- : pgConn(NULL), pgResult(NULL), pgCloseConnection(false)
-{}
-
-
-// constructor -- checks environment variable for database name
-// Now uses PQconnectdb
-
-PgConnection::PgConnection(const char* conninfo)
- : pgConn(NULL), pgResult(NULL), pgCloseConnection(true)
-{
- // Connect to the database
- Connect(conninfo);
-}
-
-
-// destructor - closes down the connection and cleanup
-PgConnection::~PgConnection()
-{
- // Close the connection only if needed
- // This feature will most probably be used by the derived classes that
- // need not close the connection after they are destructed.
- CloseConnection();
-}
-
-
-// PgConnection::CloseConnection()
-// close down the connection if there is one
-void PgConnection::CloseConnection()
-{
- // if the connection is open, close it first
- if (pgCloseConnection)
- {
- if (pgResult)
- PQclear(pgResult);
- pgResult = NULL;
- if (pgConn)
- PQfinish(pgConn);
- pgConn = NULL;
- pgCloseConnection = false;
- }
-}
-
-
-// PgConnection::connect
-// establish a connection to a backend
-ConnStatusType PgConnection::Connect(const char conninfo[])
-{
- // if the connection is open, close it first
- CloseConnection();
-
- // Connect to the database
- pgConn = PQconnectdb(conninfo);
-
- // Now we have a connection we must close (even if it's bad!)
- pgCloseConnection = true;
-
- // Status will return either CONNECTION_OK or CONNECTION_BAD
- return Status();
-}
-
-// PgConnection::status -- return connection or result status
-ConnStatusType PgConnection::Status() const
-{
- return PQstatus(pgConn);
-}
-
-// PgConnection::exec -- send a query to the backend
-ExecStatusType PgConnection::Exec(const char* query)
-{
- // Clear the result stucture if needed
- if (pgResult)
- PQclear(pgResult);
-
- // Execute the given query
- pgResult = PQexec(pgConn, query);
-
- // Return the status
- if (pgResult)
- return PQresultStatus(pgResult);
- else
- return PGRES_FATAL_ERROR;
-}
-
-// Return true if the Postgres command was executed OK
-int PgConnection::ExecCommandOk(const char* query)
-{
- return Exec(query) == PGRES_COMMAND_OK;
-}
-
-int PgConnection::ExecTuplesOk(const char* query)
-{
- return Exec(query) == PGRES_TUPLES_OK;
-}
-
-// Don't know why these next two need to be part of Connection
-
-// PgConnection::notifies() -- returns a notification from a list of unhandled notifications
-PGnotify* PgConnection::Notifies()
-{
- return PQnotifies(pgConn);
-}
-
-// From Integer To String Conversion Function
-string PgConnection::IntToString(int n)
-{
- char buffer [4*sizeof(n) + 2];
- sprintf(buffer, "%d", n);
- return buffer;
-}
-
-bool PgConnection::ConnectionBad() const
-{
- return Status() == CONNECTION_BAD;
-}
-
-const char* PgConnection::ErrorMessage() const
-{
- return (const char *)PQerrorMessage(pgConn);
-}
-
-const char* PgConnection::DBName() const
-{
- return (const char *)PQdb(pgConn);
-}
-
-PQnoticeProcessor PgConnection::SetNoticeProcessor(PQnoticeProcessor proc, void *arg)
-{
- return PQsetNoticeProcessor(pgConn, proc, arg);
-}
-
+++ /dev/null
-/*-------------------------------------------------------------------------
-*
-* pgconnection.h
-*
-*
-* DESCRIPTION
-* Postgres Connection Class:
-* Manage Postgres backend connection
-*
-* NOTES
-* Currently under construction.
-*
-* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
-* Portions Copyright (c) 1994, Regents of the University of California
-*
-* $Id: pgconnection.h,v 1.19 2002/07/02 16:32:19 momjian Exp $
-*
-*-------------------------------------------------------------------------
-*/
-
-#ifndef PGCONNECTION_H
-#define PGCONNECTION_H
-
-extern "C"
-{
-#include "pg_config.h"
-}
-
-/* We assume that the C++ compiler will have these keywords, even though
- * pg_config.h may have #define'd them to empty because the C compiler doesn't.
- */
-#undef const
-#undef inline
-#undef signed
-#undef volatile
-
-#ifdef HAVE_CXX_STRING_HEADER
-#include <string>
-#endif
-
-extern "C"
-{
-#include "libpq-fe.h"
-}
-
-#ifdef HAVE_NAMESPACE_STD
-#define PGSTD std::
-#else
-#define PGSTD
-#endif
-
-
-// ****************************************************************
-//
-// PgConnection - a connection made to a postgres backend
-//
-// ****************************************************************
-// This class contains all the information about the connection
-// to the backend process. All the database classes should be
-// derived from this class to obtain the connection interface.
-class DLLIMPORT PgConnection
-{
-protected:
- PGconn* pgConn; // Connection Structure
- PGresult* pgResult; // Current Query Result
- bool pgCloseConnection; // true if connection should be closed by destructor
-
-public:
- explicit PgConnection(const char* conninfo); // use reasonable & environment defaults
- virtual ~PgConnection(); // close connection and clean up
-
- // Connection status and error messages
- ConnStatusType Status() const;
- bool ConnectionBad() const;
- const char* ErrorMessage() const;
-
- // returns the database name of the connection
- const char* DBName() const;
-
- // Query Execution interface
- ExecStatusType Exec(const char* query); // send a query to the backend
- int ExecCommandOk(const char* query); // send a command and check if it's OK
- int ExecTuplesOk(const char* query); // send a command and check if tuples are returned
- PGnotify* Notifies();
-
- // set the notice processor
- PQnoticeProcessor SetNoticeProcessor(PQnoticeProcessor proc, void *arg);
-
-protected:
- ConnStatusType Connect(const char* conninfo);
- void CloseConnection();
- static PGSTD string IntToString(int);
- // Default constructor is only available to subclasses
- PgConnection();
-
-private:
- // We don't support copying of PgConnection objects,
- // so make copy constructor and assignment op private.
- PgConnection(const PgConnection&);
- PgConnection& operator= (const PgConnection&);
-};
-
-
-#undef PGSTD
-
-#endif // PGCONNECTION_H
+++ /dev/null
-/*-------------------------------------------------------------------------
-*
-* FILE
-* pgcursordb.cpp
-*
-* DESCRIPTION
-* implementation of the PgCursor class.
-* PgCursor encapsulates a cursor interface to the backend
-*
-* Copyright (c) 1994, Regents of the University of California
-*
-* IDENTIFICATION
-* $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/pgcursordb.cc,v 1.8 2002/07/02 16:32:19 momjian Exp $
-*
-*-------------------------------------------------------------------------
-*/
-
-#include "pgcursordb.h"
-
-#ifdef HAVE_NAMESPACE_STD
-using namespace std;
-#endif
-
-
-// ****************************************************************
-//
-// PgCursor Implementation
-//
-// ****************************************************************
-// Make a connection to the specified database with default environment
-// See PQconnectdb() for conninfo usage
-PgCursor::PgCursor(const char* conninfo, const char* cursor)
- : PgTransaction(conninfo), pgCursor(cursor)
-{}
-
-// Do not make a connection to the backend -- just query
-// Connection should not be closed after the object destructs since some
-// other object is using the connection
-//PgCursor::PgCursor(const PgConnection& conn, const char* cursor)
-// : PgTransaction(conn), pgCursor(cursor)
-//{}
-
-// Destructor: End the transaction block
-
-PgCursor::~PgCursor()
-{
- Close();
-}
-
-
-// ****************************************************************
-//
-// PgCursor: Cursor Interface Implementation
-//
-// ****************************************************************
-// Declare a cursor: name has already been supplied in the constructor
-int PgCursor::Declare(string query, bool binary)
-{
- string cmd = "DECLARE " + pgCursor;
- if ( binary )
- cmd += " BINARY";
- cmd += " CURSOR FOR " + query;
- return ExecCommandOk( cmd.c_str() );
-}
-
-// Fetch ALL tuples in given direction
-int PgCursor::Fetch(const char* dir)
-{
- return Fetch("ALL", dir);
-}
-
-// Fetch specified amount of tuples in given direction
-int PgCursor::Fetch(unsigned num, const char* dir)
-{
- return Fetch( IntToString(num), dir );
-}
-
-// Create and execute the actual fetch command with the given arguments
-int PgCursor::Fetch(string num, string dir)
-{
- string cmd = "FETCH " + dir + " " + num + " IN " + pgCursor;
- return ExecTuplesOk( cmd.c_str() );
-}
-
-// Close the cursor: no more queries using the cursor should be allowed
-// Actually, the backend should take care of it.
-int PgCursor::Close()
-{
- string cmd = "CLOSE " + pgCursor;
- return ExecCommandOk( cmd.c_str() );
-}
+++ /dev/null
-/*-------------------------------------------------------------------------
-*
-* pgcursordb.h
-*
-*
-* DESCRIPTION
-* Postgres Cursor Database Class:
-* Query Postgres backend using a cursor
-*
-* NOTES
-* Currently under construction.
-*
-* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
-* Portions Copyright (c) 1994, Regents of the University of California
-*
-*
-* $Id: pgcursordb.h,v 1.12 2002/07/02 16:32:19 momjian Exp $
-*
-*-------------------------------------------------------------------------
-*/
-
-#ifndef PGCURSORDB_H
-#define PGCURSORDB_H
-
-#ifndef PGTRANSDB_H
-#include "pgtransdb.h"
-#endif
-
-#ifdef HAVE_NAMESPACE_STD
-#define PGSTD std::
-#else
-#define PGSTD
-#endif
-
-// ****************************************************************
-//
-// PgCursor - a class for querying databases using a cursor
-//
-// ****************************************************************
-// This is the database access class that declares a cursor and
-// manipulates data through it. The interface will introduce some
-// ease of use through the methods that will allow cursor specific
-// operations, like fetch, forward, etc.
-class DLLIMPORT PgCursor : public PgTransaction
-{
-public:
- PgCursor(const char* conninfo, const char* cursor); // use reasonable & environment defaults
- // connect to the database with given environment and database name
- // PgCursor(const PgConnection&, const char* cursor);
- ~PgCursor(); // close connection and clean up
-
- // Commands associated with cursor interface
- int Declare(PGSTD string query, bool binary = false); // Declare a cursor with given name
- int Fetch(const char* dir = "FORWARD"); // Fetch ALL tuples in given direction
- int Fetch(unsigned num, const char* dir = "FORWARD"); // Fetch specified amount of tuples
- int Close(); // Close the cursor
-
- // Accessors to the cursor name
- const char* Cursor() const
- {
- return pgCursor.c_str();
- }
- // TODO: Setter has same name as getter--ouch!
- // OBSOLESCENT
- void Cursor(PGSTD string cursor)
- {
- pgCursor = cursor;
- }
-
-protected:
- int Fetch(PGSTD string num, PGSTD string dir);
-
-protected:
- PGSTD string pgCursor;
-
-protected:
- PgCursor() : PgTransaction()
- {} // Do not connect
-
-
-private:
- // We don't support copying of PgCursor objects,
- // so make copy constructor and assignment op private.
- PgCursor(const PgCursor&);
- PgCursor& operator= (const PgCursor&);
-}
-; // End PgCursor Class Declaration
-
-
-#undef PGSTD
-
-#endif // PGCURSORDB_H
-
+++ /dev/null
-/*-------------------------------------------------------------------------
-*
-* FILE
-* pgdatabase.cpp
-*
-* DESCRIPTION
-* implementation of the PgDatabase class.
-* PgDatabase encapsulates some utility routines
-*
-* Copyright (c) 1994, Regents of the University of California
-*
-* IDENTIFICATION
-* $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/pgdatabase.cc,v 1.13 2002/07/02 16:32:19 momjian Exp $
-*
-*-------------------------------------------------------------------------
-*/
-
-#include "pgdatabase.h"
-
-#ifdef HAVE_NAMESPACE_STD
-using namespace std;
-#endif
-
-
-// OBSOLESCENT (uses PQprint(), which is no longer being maintained)
-void PgDatabase::DisplayTuples(FILE *out,
- bool fillAlign,
- const char* fieldSep,
- bool printHeader,
- bool /* quiet */) const
-{
- PQprintOpt po;
-
- po.header = printHeader;
- po.align = fillAlign;
- po.standard = po.html3 = po.expanded = po.pager = 0;
- po.fieldSep = (char *) (fieldSep);
- po.tableOpt = po.caption = 0;
- po.fieldName = 0;
-
- PQprint(out, pgResult, &po);
-}
-
-
-
-// OBSOLESCENT (uses PQprint(), which is no longer being maintained)
-void PgDatabase::PrintTuples(FILE *out,
- bool printAttName,
- bool terseOutput,
- bool fillAlign) const
-{
- PQprintOpt po;
-
- po.header = printAttName;
- po.align = fillAlign;
- po.standard = po.html3 = po.expanded = po.pager = 0;
- po.tableOpt = po.caption = 0;
- po.fieldSep = (char *) (terseOutput ? "" : "|");
- po.fieldName = 0;
-
- PQprint(out, pgResult, &po);
-}
-
-
-
-int PgDatabase::Tuples() const
-{
- return PQntuples(pgResult);
-}
-
-
-int PgDatabase::CmdTuples() const
-{
- const char *a = PQcmdTuples(pgResult);
- return a[0] ? atoi(a) : -1;
-}
-
-
-// TODO: Make const?
-int PgDatabase::Fields()
-{
- return PQnfields(pgResult);
-}
-
-
-const char* PgDatabase::FieldName(int field_num) const
-{
- return PQfname(pgResult, field_num);
-}
-
-
-int PgDatabase::FieldNum(const char* field_name) const
-{
- return PQfnumber(pgResult, field_name);
-}
-
-
-Oid PgDatabase::FieldType(int field_num) const
-{
- return PQftype(pgResult, field_num);
-}
-
-
-Oid PgDatabase::FieldType(const char* field_name) const
-{
- return PQftype(pgResult, FieldNum(field_name));
-}
-
-
-int PgDatabase::FieldSize(int field_num) const
-{
- return PQfsize(pgResult, field_num);
-}
-
-
-int PgDatabase::FieldSize(const char* field_name) const
-{
- return PQfsize(pgResult, FieldNum(field_name));
-}
-
-
-const char* PgDatabase::GetValue(int tup_num, int field_num) const
-{
- return PQgetvalue(pgResult, tup_num, field_num);
-}
-
-
-const char* PgDatabase::GetValue(int tup_num, const char* field_name) const
-{
- return PQgetvalue(pgResult, tup_num, FieldNum(field_name));
-}
-
-
-bool PgDatabase::GetIsNull(int tup_num, int field_num) const
-{
- return PQgetisnull(pgResult, tup_num, field_num);
-}
-
-
-bool PgDatabase::GetIsNull(int tup_num, const char* field_name) const
-{
- return PQgetisnull(pgResult, tup_num, FieldNum(field_name));
-}
-
-
-int PgDatabase::GetLength(int tup_num, int field_num) const
-{
- return PQgetlength(pgResult, tup_num, field_num);
-}
-
-
-int PgDatabase::GetLength(int tup_num, const char* field_name) const
-{
- return PQgetlength(pgResult, tup_num, FieldNum(field_name));
-}
-
-
-int PgDatabase::GetLine(char str[], int length)
-{
- return PQgetline(pgConn, str, length);
-}
-
-
-void PgDatabase::PutLine(const char str[])
-{
- PQputline(pgConn, str);
-}
-
-
-const char* PgDatabase::OidStatus() const
-{
- return PQoidStatus(pgResult);
-}
-
-
-int PgDatabase::EndCopy()
-{
- return PQendcopy(pgConn);
-}
-
-
+++ /dev/null
-/*-------------------------------------------------------------------------
-*
-* pgdatabase.h
-*
-*
-* DESCRIPTION
-* Postgres Database Class:
-* Query Postgres backend to obtain query results
-*
-* NOTES
-* Currently under construction.
-*
-* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
-* Portions Copyright (c) 1994, Regents of the University of California
-*
-*
-* $Id: pgdatabase.h,v 1.14 2002/07/02 16:32:19 momjian Exp $
-*
-*-------------------------------------------------------------------------
-*/
-
-#ifndef PGDATABASE_H
-#define PGDATABASE_H
-
-#ifndef PGCONNECTION_H
-#include "pgconnection.h"
-#endif
-
-// ****************************************************************
-//
-// PgDatabase - a class for accessing databases
-//
-// ****************************************************************
-// This is the basic database access class. Its interface should
-// be used only after a query has been sent to the backend and
-// results are being received.
-class DLLIMPORT PgDatabase : public PgConnection
-{
-public:
- // connect to the database with conninfo
- explicit PgDatabase(const char* conninfo) : PgConnection(conninfo)
- {}
-
- ~PgDatabase()
- {} // close connection and clean up
-
-
- typedef int size_type;
-
- // query result access
- size_type Tuples() const;
- size_type CmdTuples() const;
- int Fields();
- const char* FieldName(int field_num) const;
- int FieldNum(const char* field_name) const;
- Oid FieldType(int field_num) const;
- Oid FieldType(const char* field_name) const;
- int FieldSize(int field_num) const;
- int FieldSize(const char* field_name) const;
- const char* GetValue(size_type tup_num, int field_num) const;
- const char* GetValue(size_type tup_num, const char* field_name) const;
- bool GetIsNull(size_type tup_num, int field_num) const;
- bool GetIsNull(size_type tup_num, const char* field_name) const;
- int GetLength(size_type tup_num, int field_num) const;
- int GetLength(size_type tup_num, const char* field_name) const;
-
- // OBSOLESCENT (use PQprint()):
- void DisplayTuples(FILE *out = 0, bool fillAlign = true,
- const char* fieldSep = "|", bool printHeader = true, bool quiet = false) const;
- void PrintTuples(FILE *out = 0, bool printAttName = true,
- bool terseOutput = false, bool fillAlign = false) const;
-
- // copy command related access
- int GetLine(char str[], int length);
- void PutLine(const char str[]);
- const char* OidStatus() const;
- int EndCopy();
-
-protected:
- PgDatabase() : PgConnection()
- {} // Do not connect
-
-
-private:
- // We don't support copying of PgDatabase objects,
- // so make copy constructor and assignment op private.
- PgDatabase(const PgDatabase&);
- PgDatabase& operator= (const PgDatabase&);
-};
-
-#endif // PGDATABASE_H
+++ /dev/null
-/*-------------------------------------------------------------------------
-*
-* FILE
-* pglobject.cc
-*
-* DESCRIPTION
-* implementation of the PgLargeObject class.
-* PgLargeObject encapsulates a frontend to backend connection
-*
-* Copyright (c) 1994, Regents of the University of California
-*
-* IDENTIFICATION
-* $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/pglobject.cc,v 1.11 2002/07/02 16:32:19 momjian Exp $
-*
-*-------------------------------------------------------------------------
-*/
-
-#include "pglobject.h"
-
-extern "C"
-{
-#include "libpq/libpq-fs.h"
-}
-
-#ifdef HAVE_NAMESPACE_STD
-using namespace std;
-#endif
-
-
-// ****************************************************************
-//
-// PgLargeObject Implementation
-//
-// ****************************************************************
-// default constructor
-// creates a large object in the default database
-// See PQconnectdb() for conninfo usage
-PgLargeObject::PgLargeObject(const char* conninfo)
- : PgConnection(conninfo)
-{
- Init();
- if (! ConnectionBad())
- {
- Create();
- Open();
- }
-}
-
-// constructor
-// open an existing large object in the default database
-// See PQconnectdb() for conninfo usage
-PgLargeObject::PgLargeObject(Oid lobjId, const char* conninfo)
- : PgConnection(conninfo)
-{
- Init(lobjId);
- if (! ConnectionBad())
- {
- if ( !pgObject )
- Create();
- Open();
- }
-}
-
-// destructor -- closes large object
-PgLargeObject::~PgLargeObject()
-{
- Close();
-}
-
-// PgLargeObject::Init
-// Initialize the variables
-void PgLargeObject::Init(Oid lobjId)
-{
- pgFd = -1;
- pgObject = lobjId;
-}
-
-// PgLargeObject::create
-// create large object and check for errors
-void PgLargeObject::Create()
-{
- // Create the object
- pgObject = lo_creat(pgConn, INV_READ | INV_WRITE);
-
- // Check for possible errors
- if (!pgObject)
- loStatus = "PgLargeObject: can't create large object" ;
- else
- loStatus = "PgLargeObject: created large object" ;
-}
-
-// PgLargeObject::open
-// open large object and check for errors
-void PgLargeObject::Open()
-{
- // Close any prior object
- Close();
- // Open the object
- pgFd = lo_open(pgConn, pgObject, INV_READ | INV_WRITE);
-
- // Check for possible errors
- string objStr( IntToString(pgObject) );
- if (pgFd < 0)
- loStatus = "PgLargeObject: can't open large object " + objStr ;
- else
- loStatus = "PgLargeObject: created and opened large object " + objStr ;
-}
-
-// PgLargeObject::unlink
-// destroy large object and delete from it from the database
-int PgLargeObject::Unlink()
-{
- // Unlink the object
- int temp = lo_unlink(pgConn, pgObject);
-
- // Initialize the large object upon success
- if (!temp)
- {
- Close();
- Init();
- }
-
- // Return the status
- return temp;
-}
-
-
-void PgLargeObject::Close()
-{
- if (pgFd >= 0)
- lo_close(pgConn, pgFd);
- pgFd = -1;
-}
-
-
-int PgLargeObject::Read(char* buf, int len)
-{
- return lo_read(pgConn, pgFd, buf, len);
-}
-
-
-int PgLargeObject::Write(const char* buf, int len)
-{
- return lo_write(pgConn, pgFd, (char*)buf, len);
-}
-
-
-int PgLargeObject::LSeek(int offset, int whence)
-{
- return lo_lseek(pgConn, pgFd, offset, whence);
-}
-
-
-int PgLargeObject::Tell() const
-{
- return lo_tell(pgConn, pgFd);
-}
-
-
-Oid PgLargeObject::Import(const char* filename)
-{
- return pgObject = lo_import(pgConn, filename);
-}
-
-
-int PgLargeObject::Export(const char* filename)
-{
- return lo_export(pgConn, pgObject, filename);
-}
-
-
-string PgLargeObject::Status() const
-{
- return loStatus;
-}
-
-Oid PgLargeObject::LOid()
-{
- return pgObject;
-}
+++ /dev/null
-/*-------------------------------------------------------------------------
-*
-* FILE
-* pglobject.h
-*
-* DESCRIPTION
-* declaration of the PGlobj class.
-* PGlobj encapsulates a large object interface to Postgres backend
-*
-* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
-* Portions Copyright (c) 1994, Regents of the University of California
-*
-*
-* $Id: pglobject.h,v 1.11 2002/07/02 16:32:19 momjian Exp $
-*
-*-------------------------------------------------------------------------
-*/
-
-#ifndef PGLOBJECT_H
-#define PGLOBJECT_H
-
-#ifndef PGCONNECTION_H
-#include "pgconnection.h"
-#endif
-
-#ifdef HAVE_NAMESPACE_STD
-#define PGSTD std::
-#else
-#define PGSTD
-#endif
-
-
-// ****************************************************************
-//
-// PgLargeObject - a class for accessing Large Object in a database
-//
-// ****************************************************************
-class DLLIMPORT PgLargeObject : public PgConnection
-{
-private:
- int pgFd;
- Oid pgObject;
- PGSTD string loStatus;
- void Init(Oid lobjId = 0);
-
-public:
- explicit PgLargeObject(const char* conninfo = 0); // use reasonable defaults and create large object
- explicit PgLargeObject(Oid lobjId, const char* conninfo = 0); // use reasonable defaults and open large object
- ~PgLargeObject(); // close connection and clean up
-
- void Create();
- void Open();
- void Close();
- int Read(char* buf, int len);
- int Write(const char* buf, int len);
- int LSeek(int offset, int whence);
- int Tell() const;
- int Unlink();
- Oid LOid();
- Oid Import(const char* filename);
- int Export(const char* filename);
- PGSTD string Status() const;
-
-private:
- // We don't support copying of PgLargeObject objects,
- // so make copy constructor and assignment op private.
- PgLargeObject(const PgLargeObject&);
- PgLargeObject& operator= (const PgLargeObject&);
-};
-
-
-#undef PGSTD
-
-#endif // PGLOBJECT_H
+++ /dev/null
-/*-------------------------------------------------------------------------
-*
-* FILE
-* pgtransdb.cpp
-*
-* DESCRIPTION
-* implementation of the PgTransaction class.
-* PgConnection encapsulates a transaction querying to backend
-*
-* Copyright (c) 1994, Regents of the University of California
-*
-* IDENTIFICATION
-* $Header: /cvsroot/pgsql/src/interfaces/libpq++/Attic/pgtransdb.cc,v 1.5 2002/07/02 16:32:19 momjian Exp $
-*
-*-------------------------------------------------------------------------
-*/
-
-#include "pgtransdb.h"
-
-// ****************************************************************
-//
-// PgTransaction Implementation
-//
-// ****************************************************************
-// Make a connection to the specified database with default environment
-// See PQconnectdb() for conninfo usage.
-PgTransaction::PgTransaction(const char* conninfo)
- : PgDatabase(conninfo),
- pgCommitted(true)
-{
- BeginTransaction();
-}
-
-// Destructor: End the transaction block
-PgTransaction::~PgTransaction()
-{
- if (!pgCommitted)
- Exec("ABORT");
-}
-
-// Begin the transaction block
-ExecStatusType PgTransaction::BeginTransaction()
-{
- pgCommitted = false;
- return Exec("BEGIN");
-} // End BeginTransaction()
-
-// Begin the transaction block
-ExecStatusType PgTransaction::EndTransaction()
-{
- pgCommitted = true;
- return Exec("END");
-} // End EndTransaction()
-
+++ /dev/null
-/*-------------------------------------------------------------------------
-*
-* pgtransdb.h
-*
-*
-* DESCRIPTION
-* Postgres Transaction Database Class:
-* Query Postgres backend using a transaction block
-*
-* NOTES
-* Currently under construction.
-*
-* Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
-* Portions Copyright (c) 1994, Regents of the University of California
-*
-*
-* $Id: pgtransdb.h,v 1.11 2002/07/18 04:49:30 momjian Exp $
-*
-*-------------------------------------------------------------------------
-*/
-
-#ifndef PGTRANSDB_H
-#define PGTRANSDB_H
-
-#ifndef PGDATABASE_H
-#include "pgdatabase.h"
-#endif
-
-// ****************************************************************
-//
-// PgTransaction - a class for running transactions against databases
-//
-// ****************************************************************
-// This is the database access class that keeps an open
-// transaction block during its lifetime. The block is ABORTed when
-// the object is destroyed, unless you call EndTransaction() method
-// before destruction of the object.
-class DLLIMPORT PgTransaction : public PgDatabase
-{
-public:
- explicit PgTransaction(const char* conninfo); // use reasonable & environment defaults
- // connect to the database with given environment and database name
- // explicit PgTransaction(const PgConnection&);
- ~PgTransaction(); // close connection and clean up
-
- ExecStatusType BeginTransaction();
- ExecStatusType EndTransaction();
-
-protected:
- PgTransaction() : PgDatabase(), pgCommitted(true)
- {} // Do not connect
-
-
-private:
- bool pgCommitted;
-
- // We don't support copying of PgTransaction objects,
- // so make copy constructor and assignment op private.
- PgTransaction(const PgTransaction&);
- PgTransaction& operator= (const PgTransaction&);
-}
-; // End PgTransaction Class Declaration
-
-#endif // PGTRANSDB_H
+++ /dev/null
-# Makefile for Microsoft Visual C++ 6.0 (or compat)
-
-# Will build a Win32 static library (non-debug) libpq++.lib
-# and a Win32 dynamic library (non-debug) libpq++.dll with import library libpq++dll.lib
-
-
-!IF "$(OS)" == "Windows_NT"
-NULL=
-!ELSE
-NULL=nul
-!ENDIF
-
-.SUFFIXES : .cc
-
-CPP=cl.exe
-RSC=rc.exe
-
-OUTDIR=.\Release
-INTDIR=.\Release
-# Begin Custom Macros
-OutDir=.\Release
-# End Custom Macros
-
-ALL : "$(OUTDIR)\libpq++.dll" "$(OUTDIR)\libpq++.lib"
-
-CLEAN :
- -@erase "$(INTDIR)\pgconnection.obj"
- -@erase "$(INTDIR)\pgcursordb.obj"
- -@erase "$(INTDIR)\pgdatabase.obj"
- -@erase "$(INTDIR)\pglobject.obj"
- -@erase "$(INTDIR)\pgtransdb.obj"
- -@erase "$(OUTDIR)\libpq++.lib"
- -@erase "$(OUTDIR)\libpq++.dll"
- -@erase "$(OUTDIR)\libpq++dll.exp"
- -@erase "$(OUTDIR)\libpq++dll.lib"
- -@erase "$(OUTDIR)\libpq++dll.res"
- -@erase "*.pch"
- -@erase "$(OUTDIR)\libpq++.pch"
-
-"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-
-CPP_PROJ=/nologo /TP /MD /W3 /GX /O2 /I "..\..\include" /I "..\libpq" /D "NDEBUG" /D\
- "WIN32" /D "_WINDOWS" /Fp"$(INTDIR)\libpq++.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c /D "HAVE_VSNPRINTF" /D "HAVE_STRDUP"
-
-CPP_OBJS=.\Release/
-CPP_SBRS=.
-
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\libpq++.lib"
-LIB32_OBJS= \
- "$(OUTDIR)\pgconnection.obj" \
- "$(OUTDIR)\pgcursordb.obj" \
- "$(OUTDIR)\pgdatabase.obj" \
- "$(OUTDIR)\pglobject.obj" \
- "$(OUTDIR)\pgtransdb.obj"
-
-RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libpq++dll.res"
-
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib wsock32.lib\
- odbccp32.lib libpq.lib msvcrt.lib /nologo /subsystem:windows /dll /incremental:no\
- /pdb:"$(OUTDIR)\libpq++.pdb" /machine:I386 /out:"$(OUTDIR)\libpq++.dll"\
- /implib:"$(OUTDIR)\libpq++dll.lib" /libpath:"..\libpq\release"
-LINK32_OBJS= \
- "$(OUTDIR)\pgconnection.obj" \
- "$(OUTDIR)\pgcursordb.obj" \
- "$(OUTDIR)\pgdatabase.obj" \
- "$(OUTDIR)\pglobject.obj" \
- "$(OUTDIR)\pgtransdb.obj" \
- "$(OUTDIR)\libpq++dll.res"
-
-"$(INTDIR)\libpq++dll.res" : "$(INTDIR)" libpq++dll.rc
- $(RSC) $(RSC_PROJ) libpq++dll.rc
-
-"$(OUTDIR)\libpq++.lib" : "$(OUTDIR)" $(LIB32_OBJS)
- $(LIB32) @<<
- $(LIB32_FLAGS) $(LIB32_OBJS)
-<<
-
-"$(OUTDIR)\libpq++.dll" : "$(OUTDIR)" $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-.c{$(CPP_OBJS)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(CPP_OBJS)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cc{$(CPP_OBJS)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(CPP_OBJS)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.c{$(CPP_SBRS)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(CPP_SBRS)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cc{$(CPP_SBRS)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(CPP_SBRS)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-# $Header: /cvsroot/pgsql/src/win32.mak,v 1.6 2001/08/24 22:42:28 petere Exp $
+# $Header: /cvsroot/pgsql/src/win32.mak,v 1.7 2002/08/22 00:15:08 scrappy Exp $
# Makefile for Microsoft Visual C++ 5.0 (or compat)
# Top-file makefile for Win32 parts of postgresql.
cd ..
cd interfaces\libpq
nmake /f win32.mak $(MAKEMACRO)
- cd ..\libpq++
- nmake /f win32.mak $(MAKEMACRO)
cd ..\..\bin\psql
nmake /f win32.mak $(MAKEMACRO)
cd ..\..