pebble/src/fw/applib/pebble_warn_unsupported_functions.h
2025-01-27 11:38:16 -08:00

64 lines
3 KiB
C

/*
* Copyright 2024 Google LLC
*
* 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.
*/
/* This file provides clear error messages when developer
* attempts to use a function call supported by newlib-c but
* not provided by the pebble libraries.
*
* ex. use of fopen("test.txt", "r") will display...
* src/main.c:123:3 error: static assertion failed: "fopen() is not supported"
*/
// Rather than asserting on printf,
// lets map it to app_log for simple cross-compiles
#define printf(format, ...) \
app_log(APP_LOG_LEVEL_DEBUG, __FILE_NAME__, __LINE__, format, ##__VA_ARGS__)
// List of unsupported file io calls
#define fopen(...) _Static_assert(0, "fopen() is not supported")
#define fclose(...) _Static_assert(0, "fclose() is not supported")
#define fread(...) _Static_assert(0, "fread() is not supported")
#define fwrite(...) _Static_assert(0, "fwrite() is not supported")
#define fseek(...) _Static_assert(0, "fseek() is not supported")
#define ftell(...) _Static_assert(0, "ftell() is not supported")
#define fsetpos(...) _Static_assert(0, "fsetpos() is not supported")
#define fscanf(...) _Static_assert(0, "fscanf() is not supported")
#define fgetc(...) _Static_assert(0, "fgetc() is not supported")
#define fgets(...) _Static_assert(0, "fgets() is not supported")
#define fputc(...) _Static_assert(0, "fputc() is not supported")
#define fputs(...) _Static_assert(0, "fputs() is not supported")
// List of unsupported print calls
#define fprintf(...) _Static_assert(0, "fprintf() is not supported")
#define sprintf(...) _Static_assert(0, "sprintf() is not supported")
#define vfprintf(...) _Static_assert(0, "vfprintf() is not supported")
#define vsprintf(...) _Static_assert(0, "vsprintf() is not supported")
#define vsnprintf(...) _Static_assert(0, "vsnprintf() is not supported")
// List of unsupported io calls
#define open(...) _Static_assert(0, "open() is not supported")
#define close(...) _Static_assert(0, "close() is not supported")
#define creat(...) _Static_assert(0, "creat() is not supported")
#define read(...) _Static_assert(0, "read() is not supported")
#define write(...) _Static_assert(0, "write() is not supported")
#define stat(...) _Static_assert(0, "stat() is not supported")
// List of unsupported memory calls
#define alloca(...) _Static_assert(0, "alloca() is not supported")
#define mmap(...) _Static_assert(0, "mmap() is not supported")
#define brk(...) _Static_assert(0, "brk() is not supported")
#define sbrk(...) _Static_assert(0, "sbrk() is not supported")