1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #include <grass/gis.h>
- #include <grass/dbmi.h>
- #include <grass/glocale.h>
- /* TODO: are we as restrictive here as for vector names? */
- /*!
- \fn int db_legal_tablename (char *s)
- \brief Check if output is legal table name
- \return 1 OK
- \return -1 if name does not start with letter A..Za..z
- or if name does not continue with A..Za..z0..9_@
- Rule: [A-Za-z][A-Za-z0-9_@]*
- \param name table name to be checked
- */
- int db_legal_tablename(const char *s)
- {
- char buf[GNAME_MAX];
- sprintf(buf, "%s", s);
- if (*s == '.' || *s == 0) {
- fprintf(stderr,
- _("Illegal table map name <%s>. May not contain '.' or 'NULL'.\n"),
- buf);
- return DB_FAILED;
- }
- /* file name must start with letter */
- if (!((*s >= 'A' && *s <= 'Z') || (*s >= 'a' && *s <= 'z'))) {
- fprintf(stderr,
- _("Illegal table map name <%s>. Must start with a letter.\n"),
- buf);
- return DB_FAILED;
- }
- for (s++; *s; s++)
- if (!
- ((*s >= 'A' && *s <= 'Z') || (*s >= 'a' && *s <= 'z') ||
- (*s >= '0' && *s <= '9') || *s == '_' || *s == '@')) {
- fprintf(stderr,
- _("Illegal table map name <%s>. Character <%c> not allowed.\n"),
- buf, *s);
- return DB_FAILED;
- }
- return DB_OK;
- }
|