GRASS 8 Programmer's Manual 8.6.0dev(2026)-1878fdfec5
Loading...
Searching...
No Matches
rename.c
Go to the documentation of this file.
1/*!
2 * \file lib/gis/rename.c
3 *
4 * \brief GIS Library - Rename file functions.
5 *
6 * SPDX-FileCopyrightText: 2001-2015 GRASS Development Team
7 * SPDX-License-Identifier: GPL-2.0-or-later
8 *
9 * \author Original author CERL
10 */
11
12#include <stdio.h>
13#include <stdlib.h>
14#include <string.h>
15#include <unistd.h>
16#include <grass/gis.h>
17
18/*!
19 \brief Rename a file or a directory in the filesystem.
20
21 The file or directory <i>oldname</i> is renamed to <i>newname</i>.
22
23 \param oldname current name
24 \param newname new name
25
26 \return 0 if successful
27 \return -1 on error
28 */
29int G_rename_file(const char *oldname, const char *newname)
30{
31 int ret;
32
33#ifdef __MINGW32__
35#endif
36
38
39 if (ret == -1) {
40 /* if fails, try to copy file and then remove */
41 if (1 == G_copy_file(oldname, newname)) {
42 if (remove(oldname) != -1)
43 ret = 0;
44 }
45 }
46
47 return ret;
48}
49
50/*!
51 \brief Rename a database file.
52
53 The file or directory <i>oldname</i> under the database <i>element</i>
54 directory in the current mapset is renamed to <i>newname</i>.
55
56 \bug This routine does not check to see if the <i>newname</i>
57 name is a valid database file name.
58
59 \param element element name
60 \param oldname current name
61 \param newname new name
62
63 \return 0 if <i>oldname</i> does not exist
64 \return 1 if successful
65 \return -1 on error
66 */
67int G_rename(const char *element, const char *oldname, const char *newname)
68{
69 const char *mapset;
71 char from[GPATH_MAX], to[GPATH_MAX];
72
73 /* name in mapset legal only if mapset is current mapset */
74 mapset = G_mapset();
76 strcmp(mapset, xmapset))
77 return -1;
79 strcmp(mapset, xmapset))
80 return -1;
81
82 /* if file does not exist return 0 */
83 if (access(G_file_name(from, element, oldname, mapset), 0) != 0)
84 return 0;
85
86 G_file_name(to, element, newname, mapset);
87
88 /* return result of rename */
89 return G_rename_file(from, to) == 0 ? 1 : -1;
90}
int G_name_is_fully_qualified(const char *, char *, char *)
Check if map name is fully qualified (map @ mapset)
Definition nme_in_mps.c:34
char * G_file_name(char *, const char *, const char *, const char *)
Builds full path names to GIS data files.
Definition file_name.c:59
int G_copy_file(const char *, const char *)
Copies one file to another.
Definition copy_file.c:30
const char * G_mapset(void)
Get current mapset name.
Definition gis/mapset.c:31
#define GMAPSET_MAX
Definition gis.h:194
#define GPATH_MAX
Definition gis.h:196
#define GNAME_MAX
Definition gis.h:193
int G_rename_file(const char *oldname, const char *newname)
Rename a file or a directory in the filesystem.
Definition rename.c:29
int G_rename(const char *element, const char *oldname, const char *newname)
Rename a database file.
Definition rename.c:67
#define access
Definition unistd.h:7