15 #include <grass/gis.h>
38 char *
G_basename(
char *filename,
const char *desired_ext)
41 char *dot = strrchr(filename,
'.');
62 char *sep_ptr = strchr(str, sep);
66 return len - (size_t)(sep_ptr - str) - 1;
80 size_t ndigits,
size_t ndecimals)
82 double integer, decimal;
83 integer = floor(number);
84 char intfmt[GNAME_MAX] =
"%d";
85 char intstr[GNAME_MAX];
86 char decfmt[GNAME_MAX] =
"";
87 char decstr[GNAME_MAX] =
"";
91 sprintf(intfmt,
"%%0%zud", ndigits);
93 sprintf(intstr, intfmt, (
int)integer);
96 sprintf(decfmt,
"_%%0%zud", ndecimals);
97 decimal = ((number - integer) * pow(10., (
double)ndecimals));
98 sprintf(decstr, decfmt, (
int)decimal);
100 result = G_malloc(strlen(intstr) + strlen(decstr) + 1);
101 sprintf(result,
"%s%s", intstr, decstr);
114 char *envvar =
"GRASS_BASENAME_SEPARATOR";
117 envsep = getenv(envvar);
118 return (envsep !=
NULL && strlen(envsep) > 0) ? envsep: GBASENAME_SEP;
132 size_t i, length, lensep;
138 lensep = strlen(separator);
139 length = lensep * (len - 1) + 1;
140 for (i = 0; i < len; i++){
141 length += strlen(strings[i]);
143 result = G_malloc(length);
147 strcpy(result, strings[0]);
148 for (i = 1; i < len; i++){
149 strcat(result, separator);
150 strcat(result, strings[i]);
169 size_t ndigits,
size_t ndecimals)
171 char *separator, *numberstr, *result;
176 result = G_malloc(strlen(basename) + strlen(separator) + strlen(numberstr) + 1);
179 sprintf(result,
"%s%s%s", basename, separator, numberstr);