/* * Copyright (C) 2014 The Android Open Source Project * * 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. */ #pragma once #define _BSD_SOURCE #include #include // For environ. #include // For size_t. #include // For getentropy. #include "private/bsd_sys_param.h" #define __BEGIN_HIDDEN_DECLS _Pragma("GCC visibility push(hidden)") #define __END_HIDDEN_DECLS _Pragma("GCC visibility pop") extern const char* __progname; /* Ignore all DEF_STRONG/DEF_WEAK in OpenBSD. */ #define DEF_STRONG(sym) #define DEF_WEAK(sym) #define __weak_alias __strong_alias /* Ignore all __warn_references in OpenBSD. */ #define __warn_references(sym,msg) #define PROTO_NORMAL(x) #if !defined(ANDROID_HOST_MUSL) #define explicit_bzero(p, s) memset_explicit(p, 0, s) #endif #if defined(ANDROID_HOST_MUSL) #define __LIBC_HIDDEN__ __attribute__((visibility("hidden"))) #endif /* OpenBSD has this in paths.h. But this directory doesn't normally exist. * Even when it does exist, only the 'shell' user has permissions. */ #define _PATH_TMP "/data/local/tmp/" /* Use appropriate shell depending on process's executable. */ __LIBC_HIDDEN__ extern const char* __bionic_get_shell_path(); #define _PATH_BSHELL __bionic_get_shell_path() __LIBC_HIDDEN__ extern char* __findenv(const char*, int, int*); __LIBC_HIDDEN__ extern char* _mktemp(char*); // Only OpenBSD has this at the moment, and we're more likely to just say // "malloc is always calloc", so we don't expose this as libc API. __LIBC_HIDDEN__ void* recallocarray(void*, size_t, size_t, size_t);