13f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes/* 23f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * Copyright (C) 2014, The Android Open Source Project 33f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * All rights reserved. 43f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * 53f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * Redistribution and use in source and binary forms, with or without 63f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * modification, are permitted provided that the following conditions 73f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * are met: 83f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * * Redistributions of source code must retain the above copyright 93f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * notice, this list of conditions and the following disclaimer. 103f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * * Redistributions in binary form must reproduce the above copyright 113f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * notice, this list of conditions and the following disclaimer in 123f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * the documentation and/or other materials provided with the 133f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * distribution. 143f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * 153f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 163f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 173f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 183f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 193f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 203f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 213f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 223f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 233f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 243f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 253f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 263f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes * SUCH DAMAGE. 273f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes */ 283f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes 29fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes#include <stdbool.h> 303f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes#include <sys/types.h> 313f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes 323f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes/* We want chown to support user.group as well as user:group. */ 333f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes#define SUPPORT_DOT 343f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes 3504650ef7f6167d59aad19d4cd6fc78b2d84c83e5Elliott Hughes/* We don't localize /system/bin! */ 3604650ef7f6167d59aad19d4cd6fc78b2d84c83e5Elliott Hughes#define WITHOUT_NLS 3704650ef7f6167d59aad19d4cd6fc78b2d84c83e5Elliott Hughes 38fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes// NetBSD uses _DIAGASSERT to null-check arguments and the like. 39fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes#include <assert.h> 40fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes#define _DIAGASSERT(e) ((e) ? (void) 0 : __assert2(__FILE__, __LINE__, __func__, #e)) 41fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes 42fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes// TODO: update our <sys/cdefs.h> to support this properly. 43fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes#define __type_fit(t, a) (0 == 0) 44fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes 45fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes// TODO: should this be in our <sys/cdefs.h>? 46c713bce90183fa4ade82bc6f4b08280d32f1fb58Chih-Hung Hsieh#define __arraycount(a) (sizeof(a) / sizeof((a)[0])) 47fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes 48fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes// This at least matches GNU dd(1) behavior. 49fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes#define SIGINFO SIGUSR1 50fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes 51fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes#define S_ISWHT(x) false 52fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes 533f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes__BEGIN_DECLS 543f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes 55fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes/* From NetBSD <stdlib.h>. */ 56fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes#define HN_DECIMAL 0x01 57fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes#define HN_NOSPACE 0x02 58fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes#define HN_B 0x04 59fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes#define HN_DIVISOR_1000 0x08 60fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes#define HN_GETSCALE 0x10 61fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes#define HN_AUTOSCALE 0x20 62fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughesint humanize_number(char *, size_t, int64_t, const char *, int, int); 63fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughesint dehumanize_number(const char *, int64_t *); 64fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hugheschar *getbsize(int *, long *); 65fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hugheslong long strsuftoll(const char *, const char *, long long, long long); 66fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hugheslong long strsuftollx(const char *, const char *, long long, long long, 67fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes char *, size_t); 68fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes 69fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes/* From NetBSD <string.h>. */ 70fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughesvoid strmode(mode_t, char*); 71fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes 72fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes/* From NetBSD <sys/param.h>. */ 73fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes#define MAXBSIZE 65536 74fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes 75fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes/* From NetBSD <sys/stat.h>. */ 76fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes#define DEFFILEMODE (S_IRUSR | S_IWUSR) 77fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes 78fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes/* From NetBSD <unistd.h>. */ 79fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughesvoid swab(const void * __restrict, void * __restrict, ssize_t); 80fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes 81fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughes/* From NetBSD <util.h>. */ 82fd4c6b0a3a25921a9fe24691a695d715aecb6afeElliott Hughesint raise_default_signal(int); 833f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes 843f6b63e74d78ab259b55513a933bab3c5c1cc165Elliott Hughes__END_DECLS 85