Loading...
Searching...
No Matches
nme_in_mps.c
Go to the documentation of this file.
/*!
\file lib/gis/nme_in_mps.c
\brief GIS Library - check map name
(C) 2001-2009, 2013 by the GRASS Development Team
This program is free software under the GNU General Public License
(>=v2). Read the file COPYING that comes with GRASS for details.
\author Original author CERL
*/
#include <string.h>
#include <grass/gis.h>
/*!
\brief Check if map name is fully qualified (map @ mapset)
Returns a fully qualified name for the file <i>name</i> in
<i>mapset</i>. Currently this string is in the form
<i>name\@mapset</i>, but the programmer should pretend not to know this
and always call this routine to get the fully qualified name.
Note:
- <i>name</i> is char array of size GNAME_MAX
- <i>mapset</i> is char array of size GMAPSET_MAX
\param fullname full map name
\param[out] name map name
\param[out] mapset mapset name
\return 1 if input map name is fully qualified
\return 0 if input map name is not fully qualified
*/
int G_name_is_fully_qualified(const char *fullname, char *name, char *mapset)
{
const char *p;
char *q;
/* search for name@mapset */
*name = *mapset = 0;
for (p = fullname; *p; p++)
if (*p == '@')
break;
if (*p == 0)
return 0;
/* copy the name part */
q = name;
while (fullname != p)
*q++ = *fullname++;
*q = 0;
/* copy the mapset part */
p++; /* skip the @ */
q = mapset;
while ((*q++ = *p++))
;
return (*name && *mapset);
}
/*!
\brief Get fully qualified element name
Returns a fully qualified name for GIS element <i>name</i> in
<i>mapset</i>. Currently this string is in the form
<b>name\@mapset</b>, but the programmer should pretend not to know
this and always call this routine to get the fully qualified name.
String is allocated by G_store().
\code
#include <grass/gis.h>
int main(char *argc, char **argv)
{
char name[GNAME_MAX], *mapset, *fqn;
char command[1024];
G_gisinit(argv[0]);
mapset = G_find_rast(name, "");
if (mapset == NULL)
exit(EXIT_SUCCESS);
fqn = G_fully_qualified_name (name, mapset);
printf (stdout, "map='%s'", fqn);
exit(EXIT_SUCCESS);
}
\endcode
\param name element name
\param mapset mapset name
\return pointer to full element name (map\@mapset)
*/
char *G_fully_qualified_name(const char *name, const char *mapset)
{
char fullname[GNAME_MAX + GMAPSET_MAX];
if (strchr(name, '@') || strlen(mapset) < 1) {
snprintf(fullname, sizeof(fullname), "%s", name);
}
else {
snprintf(fullname, sizeof(fullname), "%s@%s", name, mapset);
}
return G_store(fullname);
}
/*!
\brief Returns unqualified map name (without @ mapset)
Returns an unqualified name for the file <i>name</i> in
<i>mapset</i>.
Note:
- <i>name, xname</i> are char array of size GNAME_MAX
- <i>mapset, xmapset</i> are char array of size GMAPSET_MAX
\param name map name
\param mapset mapset to check or NULL
\param[out] xname map name
\param[out] xmapset mapset name
\return 1 if input map name is fully qualified
\return 0 if name is not fully qualified
\return -1 if input mapset invalid (mapset != xmapset)
*/
int G_unqualified_name(const char *name, const char *mapset, char *xname,
char *xmapset)
{
if (G_name_is_fully_qualified(name, xname, xmapset)) {
/* name is fully qualified */
if (mapset && *mapset && strcmp(mapset, xmapset) != 0)
return -1;
return 1;
}
/* name is not fully qualified */
strcpy(xname, name);
if (mapset)
strcpy(xmapset, mapset);
else
xmapset[0] = '\0';
return 0;
}
name
const char * name
Definition named_colr.c:6
G_fully_qualified_name
char * G_fully_qualified_name(const char *name, const char *mapset)
Get fully qualified element name.
Definition nme_in_mps.c:101
G_name_is_fully_qualified
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
G_unqualified_name
int G_unqualified_name(const char *name, const char *mapset, char *xname, char *xmapset)
Returns unqualified map name (without @ mapset).
Definition nme_in_mps.c:134
strcpy
#define strcpy
Definition parson.c:66
G_store
char * G_store(const char *s)
Copy string to allocated memory.
Definition strings.c:87