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