GRASS GIS 8 Programmer's Manual
8.5.0dev(2024)-d6dec75dd4
legal_dbname.c
Go to the documentation of this file.
1
/*!
2
\file lib/db/dbmi_base/legal_dbname.c
3
4
\brief DBMI Library (base) - validate DB names
5
6
\todo Are we as restrictive here as for vector names?
7
8
(C) 1999-2009, 2011 by the GRASS Development Team
9
10
This program is free software under the GNU General Public License
11
(>=v2). Read the file COPYING that comes with GRASS for details.
12
13
\author Joel Jones (CERL/UIUC), Radim Blazek
14
\author Doxygenized by Martin Landa <landa.martin gmail.com> (2011)
15
*/
16
17
#include <
grass/gis.h
>
18
#include <
grass/dbmi.h
>
19
#include <
grass/glocale.h
>
20
21
/*!
22
\brief Check if output is legal table name
23
24
Rule: [A-Za-z][A-Za-z0-9_@]*
25
\param s table name to be checked
26
27
\return 1 OK
28
\return -1 if name does not start with letter A..Za..z or if name does
29
not continue with A..Za..z0..9_@
30
*/
31
int
db_legal_tablename
(
const
char
*s)
32
{
33
char
buf[
GNAME_MAX
];
34
35
sprintf(buf,
"%s"
, s);
36
37
if
(*s ==
'.'
|| *s == 0) {
38
G_warning
(
39
_
(
"Illegal table map name <%s>. May not contain '.' or 'NULL'."
),
40
buf);
41
return
DB_FAILED
;
42
}
43
44
/* file name must start with letter */
45
if
(!((*s >=
'A'
&& *s <=
'Z'
) || (*s >=
'a'
&& *s <=
'z'
))) {
46
G_warning
(
_
(
"Illegal table map name <%s>. Must start with a letter."
),
47
buf);
48
return
DB_FAILED
;
49
}
50
51
for
(s++; *s; s++)
52
if
(!((*s >=
'A'
&& *s <=
'Z'
) || (*s >=
'a'
&& *s <=
'z'
) ||
53
(*s >=
'0'
&& *s <=
'9'
) || *s ==
'_'
|| *s ==
'@'
)) {
54
G_warning
(
55
_
(
"Illegal table map name <%s>. Character <%c> not allowed."
),
56
buf, *s);
57
return
DB_FAILED
;
58
}
59
60
return
DB_OK
;
61
}
dbmi.h
DB_FAILED
#define DB_FAILED
Definition:
dbmi.h:72
DB_OK
#define DB_OK
Definition:
dbmi.h:71
G_warning
void G_warning(const char *,...) __attribute__((format(printf
gis.h
GNAME_MAX
#define GNAME_MAX
Definition:
gis.h:191
glocale.h
_
#define _(str)
Definition:
glocale.h:10
db_legal_tablename
int db_legal_tablename(const char *s)
Check if output is legal table name.
Definition:
legal_dbname.c:31
lib
db
dbmi_base
legal_dbname.c
Generated on Sun Dec 22 2024 07:38:16 for GRASS GIS 8 Programmer's Manual by
1.9.1