浏览代码

v.out.postgis: bugfix (create_pgfile)
add error handler for map link


git-svn-id: https://svn.osgeo.org/grass/grass/trunk@53974 15284696-431f-4ddb-bdfa-cd5b030d7da7

Martin Landa 12 年之前
父节点
当前提交
01a6bddbac
共有 2 个文件被更改,包括 15 次插入2 次删除
  1. 1 1
      vector/v.out.postgis/create.c
  2. 14 1
      vector/v.out.postgis/main.c

+ 1 - 1
vector/v.out.postgis/create.c

@@ -53,7 +53,7 @@ char *create_pgfile(const char *dsn, const char *schema, const char *olink,
         int length;
         
         length = strlen(dsn);
-        conninfo = (char *) G_malloc(length - 3);
+        conninfo = (char *) G_malloc(length - 2);
         for (i = 3; i < length; i++)
             conninfo[i-3] = dsn[i];
         conninfo[length-3] = '\0';

+ 14 - 1
vector/v.out.postgis/main.c

@@ -21,6 +21,8 @@
 
 #include "local_proto.h"
 
+static void link_handler(void *);
+
 int main(int argc, char *argv[])
 {
     struct GModule *module;
@@ -88,7 +90,10 @@ int main(int argc, char *argv[])
     if (ret == -1)
         G_fatal_error(_("Unable to open vector map <%s>"),
                       params.input->answer);
-    Vect_set_error_handler_io(&In, &Out);
+    Vect_set_error_handler_io(&In, NULL);
+    if (params.olink->answer)
+	G_add_error_handler(link_handler, params.olink->answer);
+
     if (ret < 2) 
         G_warning(_("Unable to open vector map <%s> on topological level"),
                   params.input->answer);
@@ -132,3 +137,11 @@ int main(int argc, char *argv[])
     
     exit(EXIT_SUCCESS);
 }
+
+void link_handler(void *p) {
+    const char *link = (const char *) p;
+    
+    G_debug(1, "link_handler: %s", link);
+    if (G_find_vector2(link, G_mapset()))
+	Vect_delete(link);
+}