Bläddra i källkod

v.to.3d: call G_fatal_error() immediately

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@56204 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 12 år sedan
förälder
incheckning
b18aff3329
4 ändrade filer med 28 tillägg och 52 borttagningar
  1. 4 4
      vector/v.to.3d/local_proto.h
  2. 2 8
      vector/v.to.3d/main.c
  3. 11 20
      vector/v.to.3d/trans2.c
  4. 11 20
      vector/v.to.3d/trans3.c

+ 4 - 4
vector/v.to.3d/local_proto.h

@@ -14,9 +14,9 @@ struct opts {
 void parse_args(struct opts *);
 void parse_args(struct opts *);
 
 
 /* trans2.c */
 /* trans2.c */
-int trans2d(struct Map_info *, struct Map_info *, int,
-	    double, const char *, const char *);
+void trans2d(struct Map_info *, struct Map_info *, int,
+             double, const char *, const char *);
 
 
 /* trans3.c */
 /* trans3.c */
-int trans3d(struct Map_info *, struct Map_info *, int,
-	    const char *, const char *);
+void trans3d(struct Map_info *, struct Map_info *, int,
+             const char *, const char *);

+ 2 - 8
vector/v.to.3d/main.c

@@ -29,7 +29,6 @@ int main(int argc, char **argv)
     struct Map_info In, Out;
     struct Map_info In, Out;
     struct bound_box box;
     struct bound_box box;
     int type;
     int type;
-    int ret;
     
     
     G_gisinit(argv[0]);
     G_gisinit(argv[0]);
 
 
@@ -100,10 +99,9 @@ int main(int argc, char **argv)
 	}
 	}
     }
     }
 
 
-    ret = 0;
     if (opt.reverse->answer) {
     if (opt.reverse->answer) {
 	/* 3d -> 2d */
 	/* 3d -> 2d */
-	ret = trans3d(&In, &Out, type, opt.field->answer, opt.column->answer);
+        trans3d(&In, &Out, type, opt.field->answer, opt.column->answer);
     }
     }
     else {
     else {
 	/* 2d -> 3d */
 	/* 2d -> 3d */
@@ -112,11 +110,7 @@ int main(int argc, char **argv)
 	if (opt.height->answer) {
 	if (opt.height->answer) {
 	    height = atof(opt.height->answer);
 	    height = atof(opt.height->answer);
 	}
 	}
-	ret = trans2d(&In, &Out, type, height, opt.field->answer, opt.column->answer);
-    }
-
-    if (ret < 0) {
-	G_fatal_error(_("%s failed"), G_program_name());
+	trans2d(&In, &Out, type, height, opt.field->answer, opt.column->answer);
     }
     }
 
 
     if (!opt.reverse->answer && !opt.table->answer) {
     if (!opt.reverse->answer && !opt.table->answer) {

+ 11 - 20
vector/v.to.3d/trans2.c

@@ -14,11 +14,8 @@
    \param height fixed height (used only if column is NULL)
    \param height fixed height (used only if column is NULL)
    \param field layer number
    \param field layer number
    \param column attribute column used for height
    \param column attribute column used for height
-
-   \return number of writen features
-   \return -1 on error
  */
  */
-int trans2d(struct Map_info *In, struct Map_info *Out, int type,
+void trans2d(struct Map_info *In, struct Map_info *Out, int type,
 	    double height, const char *field_name, const char *column)
 	    double height, const char *field_name, const char *column)
 {
 {
     int i, ltype, line, field;
     int i, ltype, line, field;
@@ -49,28 +46,25 @@ int trans2d(struct Map_info *In, struct Map_info *Out, int type,
 
 
 	Fi = Vect_get_field(In, field);
 	Fi = Vect_get_field(In, field);
 	if (!Fi) {
 	if (!Fi) {
-	    G_warning(_("Database connection not defined for layer <%s>"),
-		      field_name);
-	    return -1;
+	    G_fatal_error(_("Database connection not defined for layer <%s>"),
+                          field_name);
 	}
 	}
 
 
 	driver = db_start_driver_open_database(Fi->driver, Fi->database);
 	driver = db_start_driver_open_database(Fi->driver, Fi->database);
 	if (!driver) {
 	if (!driver) {
-	    G_warning(_("Unable to open database <%s> by driver <%s>"),
-		      Fi->database, Fi->driver);
-	    return -1;
+	    G_fatal_error(_("Unable to open database <%s> by driver <%s>"),
+                          Fi->database, Fi->driver);
 	}
 	}
-
+        db_set_error_handler_driver(driver);
+        
 	/* column type must numeric */
 	/* column type must numeric */
 	ctype = db_column_Ctype(driver, Fi->table, column);
 	ctype = db_column_Ctype(driver, Fi->table, column);
 	if (ctype == -1) {
 	if (ctype == -1) {
-	    G_warning(_("Column <%s> not found in table <%s>"),
-		      column, Fi->table);
-	    return -1;
+	    G_fatal_error(_("Column <%s> not found in table <%s>"),
+                          column, Fi->table);
 	}
 	}
 	if (ctype != DB_C_TYPE_INT && ctype != DB_C_TYPE_DOUBLE) {
 	if (ctype != DB_C_TYPE_INT && ctype != DB_C_TYPE_DOUBLE) {
-	    G_warning(_("Column must be numeric"));
-	    return -1;
+	    G_fatal_error(_("Column must be numeric"));
 	}
 	}
 
 
         G_message(_("Fetching height from <%s> column..."), column);
         G_message(_("Fetching height from <%s> column..."), column);
@@ -87,8 +81,7 @@ int trans2d(struct Map_info *In, struct Map_info *Out, int type,
     while (1) {
     while (1) {
 	ltype = Vect_read_next_line(In, Points, Cats);
 	ltype = Vect_read_next_line(In, Points, Cats);
 	if (ltype == -1) {
 	if (ltype == -1) {
-	    G_warning(_("Unable to read vector map"));
-	    return -1;
+	    G_fatal_error(_("Unable to read vector map"));
 	}
 	}
 	if (ltype == -2) {	/* EOF */
 	if (ltype == -2) {	/* EOF */
 	    break;
 	    break;
@@ -136,6 +129,4 @@ int trans2d(struct Map_info *In, struct Map_info *Out, int type,
     
     
     Vect_destroy_line_struct(Points);
     Vect_destroy_line_struct(Points);
     Vect_destroy_cats_struct(Cats);
     Vect_destroy_cats_struct(Cats);
-
-    return line - 1;
 }
 }

+ 11 - 20
vector/v.to.3d/trans3.c

@@ -16,11 +16,8 @@ static int srch(const void *, const void *);
    \param type feature type to be transformed
    \param type feature type to be transformed
    \param field layer number
    \param field layer number
    \param zcolumn attribute column where to store height
    \param zcolumn attribute column where to store height
-
-   \return number of writen features
-   \return -1 on error
  */
  */
-int trans3d(struct Map_info *In, struct Map_info *Out, int type,
+void trans3d(struct Map_info *In, struct Map_info *Out, int type,
 	    const char *field_name, const char *zcolumn)
 	    const char *field_name, const char *zcolumn)
 {
 {
     int ltype, line;
     int ltype, line;
@@ -51,28 +48,25 @@ int trans3d(struct Map_info *In, struct Map_info *Out, int type,
 
 
 	Fi = Vect_get_field(Out, field);
 	Fi = Vect_get_field(Out, field);
 	if (!Fi) {
 	if (!Fi) {
-	    G_warning(_("Database connection not defined for layer <%s>"),
-		      field_name);
-	    return -1;
+	    G_fatal_error(_("Database connection not defined for layer <%s>"),
+                          field_name);
 	}
 	}
 
 
 	driver = db_start_driver_open_database(Fi->driver, Fi->database);
 	driver = db_start_driver_open_database(Fi->driver, Fi->database);
 	if (!driver) {
 	if (!driver) {
-	    G_warning(_("Unable to open database <%s> by driver <%s>"),
-		      Fi->database, Fi->driver);
-	    return -1;
+	    G_fatal_error(_("Unable to open database <%s> by driver <%s>"),
+                          Fi->database, Fi->driver);
 	}
 	}
-
+        db_set_error_handler_driver(driver);
+        
 	/* column type must numeric */
 	/* column type must numeric */
 	ctype = db_column_Ctype(driver, Fi->table, zcolumn);
 	ctype = db_column_Ctype(driver, Fi->table, zcolumn);
 	if (ctype == -1) {
 	if (ctype == -1) {
-	    G_warning(_("Column <%s> not found in table <%s>"),
-		      zcolumn, Fi->table);
-	    return -1;
+	    G_fatal_error(_("Column <%s> not found in table <%s>"),
+                          zcolumn, Fi->table);
 	}
 	}
 	if (ctype != DB_C_TYPE_INT && ctype != DB_C_TYPE_DOUBLE) {
 	if (ctype != DB_C_TYPE_INT && ctype != DB_C_TYPE_DOUBLE) {
-	    G_warning(_("Column must be numeric"));
-	    return -1;
+	    G_fatal_error(_("Column must be numeric"));
 	}
 	}
 
 
 	db_begin_transaction(driver);
 	db_begin_transaction(driver);
@@ -88,8 +82,7 @@ int trans3d(struct Map_info *In, struct Map_info *Out, int type,
     while (1) {
     while (1) {
 	ltype = Vect_read_next_line(In, Points, Cats);
 	ltype = Vect_read_next_line(In, Points, Cats);
 	if (ltype == -1) {
 	if (ltype == -1) {
-	    G_warning(_("Unable to read vector map"));
-	    return -1;
+	    G_fatal_error(_("Unable to read vector map"));
 	}
 	}
 	if (ltype == -2) {	/* EOF */
 	if (ltype == -2) {	/* EOF */
 	    break;
 	    break;
@@ -155,8 +148,6 @@ int trans3d(struct Map_info *In, struct Map_info *Out, int type,
 
 
     Vect_destroy_line_struct(Points);
     Vect_destroy_line_struct(Points);
     Vect_destroy_cats_struct(Cats);
     Vect_destroy_cats_struct(Cats);
-
-    return line - 1;
 }
 }
 
 
 int srch(const void *pa, const void *pb)
 int srch(const void *pa, const void *pb)