123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- /**********************************************************************
- * char *
- * G__file_name (path, element, name, maps)
- * char path[] buffer to hold resultant full path to file.
- * const char *element database element (eg, "cell", "cellhd", etc)
- * const char *name name of file to build path to
- * const char *mapset mapset name
- *
- * builds full path names to GIS data files
- *
- * returns:
- * pointer to 'path'
- *
- * note:
- * if name is of the form nnn@ppp then path is set
- * as if name had been nnn and mapset had been ppp
- * (mapset parameter itself is ignored in this case)
- *********************************************************************/
- #include <string.h>
- #include <grass/gis.h>
- char *G__file_name(char *path,
- const char *element, const char *name, const char *mapset)
- {
- char xname[GNAME_MAX];
- char xmapset[GMAPSET_MAX];
- const char *pname = name;
- char *location = G__location_path();
- /*
- * if a name is given, build a file name
- * must split the name into name, mapset if it is
- * in the name@mapset format
- */
- if (name && *name && G__name_is_fully_qualified(name, xname, xmapset)) {
- pname = xname;
- sprintf(path, "%s/%s", location, xmapset);
- }
- else if (mapset && *mapset)
- sprintf(path, "%s/%s", location, mapset);
- else
- sprintf(path, "%s/%s", location, G_mapset());
- G_free(location);
- if (element && *element) {
- strcat(path, "/");
- strcat(path, element);
- }
- if (pname && *pname) {
- strcat(path, "/");
- strcat(path, pname);
- }
- return path;
- }
- char *G__file_name_misc(char *path,
- const char *dir,
- const char *element,
- const char *name, const char *mapset)
- {
- char xname[GNAME_MAX];
- char xmapset[GMAPSET_MAX];
- const char *pname = name;
- char *location = G__location_path();
- /*
- * if a name is given, build a file name
- * must split the name into name, mapset if it is
- * in the name@mapset format
- */
- if (name && *name && G__name_is_fully_qualified(name, xname, xmapset)) {
- pname = xname;
- sprintf(path, "%s/%s", location, xmapset);
- }
- else if (mapset && *mapset)
- sprintf(path, "%s/%s", location, mapset);
- else
- sprintf(path, "%s/%s", location, G_mapset());
- G_free(location);
- if (dir && *dir) {
- strcat(path, "/");
- strcat(path, dir);
- }
- if (pname && *pname) {
- strcat(path, "/");
- strcat(path, pname);
- }
- if (element && *element) {
- strcat(path, "/");
- strcat(path, element);
- }
- return path;
- }
|