123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /*!
- \file nme_in_mps.c
- \brief GIS Library - check map name
- (C) 2001-2008 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 Checks to see if 'name_in' is in the format: <name> in <mapset>
- \param name_in full map name
- \param[out] name_out map name
- \param[out] mapset mapset name
- \return 1 name_in is in this format.
- name_out will contain the simple <name>
- mapset will contain <mapset>
- \return 0 name_in is not in this format
- name_out and mapset are undefined (changed)
- */
- #ifndef COMMENTED_OUT
- int G__name_in_mapset(const char *name_in, char *name_out, char *mapset)
- {
- char in[1024];
- *in = 0;
- return (sscanf(name_in, "%s %s %s", name_out, in, mapset) == 3 &&
- strcmp(in, "in") == 0);
- }
- #endif
- /*!
- \brief Check if map name is fully qualified (map @ mapset)
- Note:
- - <b>name</b> is char array of size GNAME_MAX
- - <b>mapset</b> 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 fully qualified file name
- Returns a fully qualified name for the file <b>name</b> in
- <b>mapset.</b> 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.
- The following example shows how an interactive version of <i>d.rast</i>
- interfaces with the command-line version of <i>d.rast</i>:
- \code
- #include "gis.h"
- int main(char *argc, char **argv)
- {
- char name[GNAME_MAX], *mapset, *fqn;
- char command[1024];
- G_gisinit(argv[0]);
- mapset = G_ask_cell_old ("", name, "");
- if (mapset == NULL) exit(EXIT_SUCCESS);
- fqn = G_fully_qualified_name (name, mapset);
- sprintf (command, "d.rast map='%s'", fqn);
- system(command);
- }
- \endcode
- \param name map name
- \param mapset mapset name
- \return pointer to full map name (map @ mapset)
- */
- char *G_fully_qualified_name(const char *name, const char *mapset)
- {
- char fullname[GNAME_MAX + GMAPSET_MAX];
- if (strchr(name, '@'))
- sprintf(fullname, "%s", name);
- else
- sprintf(fullname, "%s@%s", name, mapset);
- return G_store(fullname);
- }
|