summaryrefslogtreecommitdiffstats
path: root/usr.sbin/services_mkdb
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2014-01-22 16:50:18 +0000
committerjhb <jhb@FreeBSD.org>2014-01-22 16:50:18 +0000
commitada0e25d918f99abb6bf16ddd3802b8b28a5c935 (patch)
treeeb9b51abca9c240367567e0786ea70f326ff0442 /usr.sbin/services_mkdb
parent3f1e8f48cd8fa6e166ed853783ef71a081b29aaf (diff)
downloadFreeBSD-src-ada0e25d918f99abb6bf16ddd3802b8b28a5c935.zip
FreeBSD-src-ada0e25d918f99abb6bf16ddd3802b8b28a5c935.tar.gz
Similar to cap_mkdb(1), add endianness support to services_mkdb(1)
to support cross-builds once this is invoked during releases.
Diffstat (limited to 'usr.sbin/services_mkdb')
-rw-r--r--usr.sbin/services_mkdb/extern.h2
-rw-r--r--usr.sbin/services_mkdb/services_mkdb.812
-rw-r--r--usr.sbin/services_mkdb/services_mkdb.c17
3 files changed, 27 insertions, 4 deletions
diff --git a/usr.sbin/services_mkdb/extern.h b/usr.sbin/services_mkdb/extern.h
index 94e31d3..b973972 100644
--- a/usr.sbin/services_mkdb/extern.h
+++ b/usr.sbin/services_mkdb/extern.h
@@ -29,6 +29,6 @@
* $FreeBSD$
*/
-extern const HASHINFO hinfo;
+extern HASHINFO hinfo;
void uniq(const char *);
diff --git a/usr.sbin/services_mkdb/services_mkdb.8 b/usr.sbin/services_mkdb/services_mkdb.8
index 834423a..e3b70e2 100644
--- a/usr.sbin/services_mkdb/services_mkdb.8
+++ b/usr.sbin/services_mkdb/services_mkdb.8
@@ -37,6 +37,7 @@
.Nd generate the services database
.Sh SYNOPSIS
.Nm
+.Op Fl b | l
.Op Fl q
.Op Fl o Ar database
.Op Ar file
@@ -61,6 +62,10 @@ The file must be in the correct format (see
.Pp
The options are as follows:
.Bl -tag -width indent
+.It Fl b
+Use big-endian byte order for database metadata.
+.It Fl l
+Use little-endian byte order for database metadata.
.It Fl o Ar database
Put the output databases in the named file.
.It Fl q
@@ -70,6 +75,13 @@ Print the services file to stdout, omitting duplicate entries and comments.
.El
.Pp
The databases are used by the C library services routines (see
+.Pp
+The
+.Fl b
+and
+.Fl l
+flags are mutually exclusive.
+The default byte ordering is the current host order.
.Xr getservent 3 ) .
.Sh FILES
.Bl -tag -width ".Pa /var/db/services.db.tmp" -compact
diff --git a/usr.sbin/services_mkdb/services_mkdb.c b/usr.sbin/services_mkdb/services_mkdb.c
index 7f5316c..a91340e 100644
--- a/usr.sbin/services_mkdb/services_mkdb.c
+++ b/usr.sbin/services_mkdb/services_mkdb.c
@@ -67,7 +67,7 @@ static const char *getprotostr(StringList *, size_t);
static const char *mkaliases(StringList *, char *, size_t);
static void usage(void);
-const HASHINFO hinfo = {
+HASHINFO hinfo = {
.bsize = 256,
.ffactor = 4,
.nelem = 32768,
@@ -87,14 +87,21 @@ main(int argc, char *argv[])
int warndup = 1;
int unique = 0;
int otherflag = 0;
+ int byteorder = 0;
size_t cnt = 0;
StringList *sl, ***svc;
size_t port, proto;
setprogname(argv[0]);
- while ((ch = getopt(argc, argv, "qo:u")) != -1)
+ while ((ch = getopt(argc, argv, "blo:qu")) != -1)
switch (ch) {
+ case 'b':
+ case 'l':
+ if (byteorder != 0)
+ usage();
+ byteorder = ch == 'b' ? 4321 : 1234;
+ break;
case 'q':
otherflag = 1;
warndup = 0;
@@ -119,6 +126,9 @@ main(int argc, char *argv[])
if (argc == 1)
fname = argv[0];
+ /* Set byte order. */
+ hinfo.lorder = byteorder;
+
if (unique)
uniq(fname);
@@ -423,7 +433,8 @@ out:
static void
usage(void)
{
- (void)fprintf(stderr, "Usage:\t%s [-q] [-o <db>] [<servicefile>]\n"
+ (void)fprintf(stderr,
+ "Usage:\t%s [-b | -l] [-q] [-o <db>] [<servicefile>]\n"
"\t%s -u [<servicefile>]\n", getprogname(), getprogname());
exit(1);
}
OpenPOWER on IntegriCloud