Quellcode durchsuchen

Allow fully qualified names in Vect_open_new()
Don't call G_legal_filename() on qualified names


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

Glynn Clements vor 16 Jahren
Ursprung
Commit
e556f52845
2 geänderte Dateien mit 11 neuen und 5 gelöschten Zeilen
  1. 11 0
      lib/vector/Vlib/open.c
  2. 0 5
      vector/v.random/main.c

+ 11 - 0
lib/vector/Vlib/open.c

@@ -481,6 +481,7 @@ Vect_open_new (struct Map_info *Map, const char *name, int with_z)
 {
     int  ret, ferror;
     char errmsg[2000], buf[200];
+    char xname[GNAME_MAX], xmapset[GMAPSET_MAX];
 
     G_debug ( 2, "Vect_open_new(): name = %s", name);
     
@@ -488,6 +489,16 @@ Vect_open_new (struct Map_info *Map, const char *name, int with_z)
     ferror = Vect_get_fatal_error ();
     Vect_set_fatal_error (GV_FATAL_EXIT);
 
+    if (G__name_is_fully_qualified(name, xname, xmapset))
+    {
+	if (strcmp(xmapset, G_mapset()) != 0)
+	{
+	    sprintf ( errmsg, _("%s is not in the current mapset (%s)"), name, G_mapset());
+	    fatal_error (ferror , errmsg );
+	}
+	name = xname;
+    }
+
     /* check for [A-Za-z][A-Za-z0-9_]* in name */
     if (Vect_legal_filename(name) < 0 ) {
        sprintf ( errmsg, _("Vector map name is not SQL compliant") );

+ 0 - 5
vector/v.random/main.c

@@ -119,11 +119,6 @@ int main(int argc, char *argv[])
     n = atoi(parm.nsites->answer);
     b = (flag.drand48->answer == '\0') ? 0 : 1;
 
-    if (G_legal_filename(output) == -1) {
-	G_fatal_error(_("<%s> is an illegal file name"),
-		      output);
-    }
-
     if (n <= 0) {
 	G_fatal_error(_("Number of points must be > 0 (%d given)"),
 		      n);