GRASS GIS 7 Programmer's Manual  7.0.5(2016)-r00000
rename.c
Go to the documentation of this file.
1 
14 #include <stdio.h>
15 #include <stdlib.h>
16 #include <string.h>
17 #include <unistd.h>
18 #include <grass/gis.h>
19 
20 
32 int G_rename_file(const char *oldname, const char *newname)
33 {
34 
35 #ifdef __MINGW32__
36  remove(newname);
37 #endif
38 
39  return rename(oldname, newname);
40 }
41 
59 int G_rename(const char *element, const char *oldname, const char *newname)
60 {
61  const char *mapset;
62  char xname[GNAME_MAX], xmapset[GMAPSET_MAX];
63  char from[GPATH_MAX], to[GPATH_MAX];
64 
65  /* name in mapset legal only if mapset is current mapset */
66  mapset = G_mapset();
67  if (G_name_is_fully_qualified(oldname, xname, xmapset)
68  && strcmp(mapset, xmapset))
69  return -1;
70  if (G_name_is_fully_qualified(newname, xname, xmapset)
71  && strcmp(mapset, xmapset))
72  return -1;
73 
74  /* if file does not exist return 0 */
75  if (access(G_file_name(from, element, oldname, mapset), 0) != 0)
76  return 0;
77 
78  G_file_name(to, element, newname, mapset);
79 
80  /* return result of rename */
81  return G_rename_file(from, to) == 0 ? 1 : -1;
82 }
const char * G_mapset(void)
Get current mapset name.
Definition: mapset.c:33
int G_rename(const char *element, const char *oldname, const char *newname)
Rename a database file.
Definition: rename.c:59
Definition: lidar.h:89
char * G_file_name(char *path, const char *element, const char *name, const char *mapset)
Builds full path names to GIS data files.
Definition: file_name.c:33
int G_rename_file(const char *oldname, const char *newname)
Rename a file in the filesystem.
Definition: rename.c:32
int G_name_is_fully_qualified(const char *fullname, char *name, char *mapset)
Check if map name is fully qualified (map @ mapset)
Definition: nme_in_mps.c:36