/* * Copyright (C) 2015-2020 "IoT.bzh" * Author "Fulup Ar Foll" * Author José Bollo * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #define _GNU_SOURCE #include #include #include #include #include "afb-api.h" /** * Checks wether 'name' is a valid API name. * @return 1 if valid, 0 otherwise */ int afb_api_is_valid_name(const char *name) { unsigned char c; c = (unsigned char)*name; if (c == 0) /* empty names aren't valid */ return 0; do { if (c < (unsigned char)'\x80') { switch(c) { default: if (c > ' ') break; /*@fallthrough@*/ case '"': case '#': case '%': case '&': case '\'': case '/': case '?': case '`': case '\\': case '\x7f': return 0; } } c = (unsigned char)*++name; } while(c != 0); return 1; }