Index: ogdi-dfsg/configure
===================================================================
--- ogdi-dfsg.orig/configure
+++ ogdi-dfsg/configure
@@ -3939,7 +3939,7 @@
 fi
 
 
-for ac_header in projects.h
+for ac_header in proj_api.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
@@ -4085,8 +4085,8 @@
    { (exit 1); exit 1; }; }
   fi
   if test "$ac_cv_header_projects_h" = no ; then
-    { { echo "$as_me:$LINENO: error: Unable to find external PROJ.4 projects.h file, give path or use default internal library." >&5
-echo "$as_me: error: Unable to find external PROJ.4 projects.h file, give path or use default internal library." >&2;}
+    { { echo "$as_me:$LINENO: error: Unable to find external PROJ.4 proj_api.h file, give path or use default internal library." >&5
+echo "$as_me: error: Unable to find external PROJ.4 proj_api.h file, give path or use default internal library." >&2;}
    { (exit 1); exit 1; }; }
   fi
 
@@ -4095,12 +4095,12 @@
 
 elif test "$with_proj" != "no" -a "$with_proj" != "" ; then
 
-  if test -r $with_proj/include/projects.h ; then
-    echo "checking for $with_proj/include/projects.h ... found"
+  if test -r $with_proj/include/proj_api.h ; then
+    echo "checking for $with_proj/include/proj_api.h ... found"
     PROJ_INCLUDE=-I$with_proj/include
   else
-    { { echo "$as_me:$LINENO: error: Unable to find $with_proj/include/projects.h" >&5
-echo "$as_me: error: Unable to find $with_proj/include/projects.h" >&2;}
+    { { echo "$as_me:$LINENO: error: Unable to find $with_proj/include/proj_api.h" >&5
+echo "$as_me: error: Unable to find $with_proj/include/proj_api.h" >&2;}
    { (exit 1); exit 1; }; }
   fi
 
Index: ogdi-dfsg/configure.in
===================================================================
--- ogdi-dfsg.orig/configure.in
+++ ogdi-dfsg/configure.in
@@ -81,13 +81,13 @@
 if test "$with_proj" = "yes" ; then
 
   AC_CHECK_LIB(proj,pj_init,PROJ_SETTING=external,PROJ_SETTING=missing,)
-  AC_CHECK_HEADERS(projects.h)
+  AC_CHECK_HEADERS(proj_api.h)
 
   if test $PROJ_SETTING = missing ; then
     AC_MSG_ERROR([Unable to find external PROJ.4 library, give path or use default internal library.])
   fi
   if test "$ac_cv_header_projects_h" = no ; then
-    AC_MSG_ERROR([Unable to find external PROJ.4 projects.h file, give path or use default internal library.])
+    AC_MSG_ERROR([Unable to find external PROJ.4 proj_api.h file, give path or use default internal library.])
   fi
 
   PROJ_SETTING=external
@@ -95,11 +95,11 @@
 
 elif test "$with_proj" != "no" -a "$with_proj" != "" ; then
   
-  if test -r $with_proj/include/projects.h ; then
-    echo "checking for $with_proj/include/projects.h ... found"
+  if test -r $with_proj/include/projapi.h ; then
+    echo "checking for $with_proj/include/proj_api.h ... found"
     PROJ_INCLUDE=-I$with_proj/include
   else
-    AC_MSG_ERROR([Unable to find $with_proj/include/projects.h])
+    AC_MSG_ERROR([Unable to find $with_proj/include/proj_api.h])
   fi
 
   if test -r $with_proj/lib/libproj.so ; then
Index: ogdi-dfsg/ogdi/c-api/client.c
===================================================================
--- ogdi-dfsg.orig/ogdi/c-api/client.c
+++ ogdi-dfsg/ogdi/c-api/client.c
@@ -1576,7 +1576,7 @@
   char *error_message;
   ecs_CtlPoints *cpts;
   ecs_Result *res;
-  PJ *tempproj;
+  projPJ tempproj;
 
   if (multiblock != 0) {
     res = &cln_dummy_result;
@@ -1598,7 +1598,7 @@
   /* Check if the projection is valid */
 
   if (strncmp(projection,PROJ_LONGLAT,13) != 0) {
-    tempproj = (PJ *) cln_ProjInit(projection);
+    tempproj = (projPJ) cln_ProjInit(projection);
     if(tempproj == NULL) {
       res = &cln_dummy_result;
       ecs_SetError(res,1,"This projection string is invalid");
@@ -1775,7 +1775,7 @@
   ecs_Result *res;
   register ecs_Client *cln;
   char *server_proj;
-  PJ *oldtarget,*oldsource;
+  projPJ oldtarget,oldsource;
   ecs_Region oldreg;
   int oldisprojequal;
   int oldisTargetLL;
@@ -1874,7 +1874,7 @@
 
   if (strncmp(projection,PROJ_LONGLAT,13) != 0) {
     cln->isTargetLL = FALSE;
-    cln->target = (PJ *) cln_ProjInit(projection);
+    cln->target = (projPJ) cln_ProjInit(projection);
     if(cln->target == NULL) {
       goto setprojerror;
     }
@@ -1920,7 +1920,7 @@
 
   if (strncmp(server_proj,PROJ_LONGLAT,13) != 0) {
     cln->isSourceLL = FALSE;
-    cln->source = (PJ *) cln_ProjInit(server_proj);
+    cln->source = (projPJ) cln_ProjInit(server_proj);
     if(cln->source == NULL) {
       goto setprojerror;
     }
@@ -2328,13 +2328,13 @@
  *	char *d: Projection name
  *
  *  OUT
- *	return PJ *: New projection structure. If NULL, the operation
+ *	return projPJ: New projection structure. If NULL, the operation
  *	is a failure.
  *
  *----------------------------------------------------------------------
  */
 
-PJ *cln_ProjInit(d)
+projPJ cln_ProjInit(d)
      char *d;
 {
   int i,n;
@@ -2343,7 +2343,7 @@
   char *l;
   int longueur;
   char *c;
-  PJ *retour;
+  projPJ retour;
   
   if ((c = (char *) malloc(strlen(d)+3)) == NULL) {
     return NULL;
@@ -2378,7 +2378,7 @@
     n++;
   }
 
-  retour = (PJ *) pj_init(n, (char **) tableau);
+  retour = (projPJ) pj_init(n, (char **) tableau);
   free(c);
   free(tableau);
 
Index: ogdi-dfsg/ogdi/c-api/ecsgeo.c
===================================================================
--- ogdi-dfsg.orig/ogdi/c-api/ecsgeo.c
+++ ogdi-dfsg/ogdi/c-api/ecsgeo.c
@@ -310,7 +310,7 @@
      char *projection;
      double X1,Y1,X2,Y2;
 {
-  PJ *proj;
+  projPJ proj;
   char **argv;
   int argc;
   double lon1,lat1,lon2,lat2;
Index: ogdi-dfsg/ogdi/datum_driver/usa/dtusa.c
===================================================================
--- ogdi-dfsg.orig/ogdi/datum_driver/usa/dtusa.c
+++ ogdi-dfsg/ogdi/datum_driver/usa/dtusa.c
@@ -26,7 +26,12 @@
   ********************************************************************/
 
 #include "ecs.h"
-#include "projects.h"
+#include "proj_api.h"
+
+/* Definition from Proj.4 */
+projUV nad_cvt(projUV, int, struct CTABLE *);
+struct CTABLE *nad_init(projCtx ctx, char *);
+void nad_free(struct CTABLE *);
 
 typedef struct {
   struct CTABLE *dtptr;
@@ -124,7 +129,7 @@
     strcat(pathfile,"/");  
     strcat(pathfile,table);  
 
-    ptr->dtptr = nad_init(pathfile);
+    ptr->dtptr = nad_init(pj_get_default_ctx(), pathfile);
     if (ptr->dtptr == NULL) {
       ptr->count--;
       return FALSE;
Index: ogdi-dfsg/ogdi/include/ecs_util.h
===================================================================
--- ogdi-dfsg.orig/ogdi/include/ecs_util.h
+++ ogdi-dfsg/ogdi/include/ecs_util.h
@@ -105,12 +105,7 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 
-#include "projects.h"
-
-/* Ensure we are compatible with PROJ.4.4.x and PROJ.4.3.x */
-#ifndef USE_PROJUV
-#  define projUV UV
-#endif
+#include "proj_api.h"
 
 #include "ecs.h"
 
@@ -1054,8 +1049,8 @@
      ecs_Family currentSelectionFamily: Current layer selection type
      char *tclprocname: attribute callback procedure for tcl
      char *target_proj: Projection descriptor
-     PJ *target: target (c interface) projection descriptors
-     PJ *source: source (driver) projection descriptors
+     projPJ target: target (c interface) projection descriptors
+     projPJ source: source (driver) projection descriptors
      ecs_Datum targetdatum: target datum information
      ecs_Datum sourcedatum: source datum information
      void *dthandle: Handle to the datum driver
@@ -1092,8 +1088,8 @@
   ecs_Family currentSelectionFamily; /* Current layer selection type */
   char *tclprocname;      /* attribute callback procedure for tcl */
   char *target_proj;
-  PJ *target;             /* source and target projection descriptors */
-  PJ *source;
+  projPJ target;             /* source and target projection descriptors */
+  projPJ source;
   int isSourceLL;         /* flags to avoid unnecessary computation */
   int isTargetLL;
   int isProjEqual;
@@ -1165,7 +1161,7 @@
 
 /* Projection conversion functions */
 
-PJ *cln_ProjInit                     _ANSI_ARGS_((char *d));
+projPJ cln_ProjInit                     _ANSI_ARGS_((char *d));
 int cln_CompareProjections           _ANSI_ARGS_((int ClientID));
 int cln_UpdateMaxRegion              _ANSI_ARGS_((int ClientID, double x, double y, ecs_Region *gr, int sens, int first));
 int cln_ConvRegion                   _ANSI_ARGS_((int ClientID, ecs_Region *gr, int sens));
Index: ogdi-dfsg/contrib/ogdi_import/ogdi_import.c
===================================================================
--- ogdi-dfsg.orig/contrib/ogdi_import/ogdi_import.c
+++ ogdi-dfsg/contrib/ogdi_import/ogdi_import.c
@@ -63,12 +63,7 @@
 #include "ecs.h"
 #include "shapefil.h"
 #include <assert.h>
-#include "projects.h"
-
-#ifndef PJ_VERSION
-#define projPJ PJ*
-#define projUV UV
-#endif
+#include "proj_api.h"
 
 static int	ClientID = -1;
 static int      bNoDict = FALSE;
Index: ogdi-dfsg/contrib/ogdi_info/ogdi_info.c
===================================================================
--- ogdi-dfsg.orig/contrib/ogdi_info/ogdi_info.c
+++ ogdi-dfsg/contrib/ogdi_info/ogdi_info.c
@@ -63,7 +63,7 @@
  */
 
 #include "ecs.h"
-#include "projects.h"
+#include "proj_api.h"
 
 static int	ClientID = -1;
 static int      bNoDict = FALSE;
@@ -214,7 +214,7 @@
 /*                          DumpGlobalRegion()                          */
 /************************************************************************/
 
-static int DumpGlobalRegion( ecs_Region * region, PJ * proj_defn )
+static int DumpGlobalRegion( ecs_Region * region, projPJ proj_defn )
 
 {
     ecs_Result	*result;
@@ -398,7 +398,7 @@
 
 {
     ecs_Result *result;
-    PJ	       *proj_defn = NULL;
+    projPJ     proj_defn = NULL;
 
 /* -------------------------------------------------------------------- */
 /*      Close old client if there is one active.                        */
