showmount.c revision 1160694128cd3980cc06abe31af529a887efd310
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
/*
* University Copyright- Copyright (c) 1982, 1986, 1988
* The Regents of the University of California
* All Rights Reserved
*
* University Acknowledgment- Portions of this document are derived from
* software developed by the University of California, Berkeley, and its
* contributors.
*/
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* showmount
*/
#include <stdio.h>
#include <stdarg.h>
#include <rpc/rpcb_clnt.h>
#include <netdb.h>
#include <errno.h>
#include <locale.h>
int sorthost();
int sortpath();
void pr_err(char *, ...);
void printex();
void usage();
/*
* Dynamically-sized array of pointers to mountlist entries. Each element
* points into the linked list returned by the RPC call. We use an array
* so that we can conveniently sort the entries.
*/
int
{
int err;
char *last;
extern int optind;
extern char *optarg;
int c;
int numentries;
#if !defined(TEXT_DOMAIN)
#define TEXT_DOMAIN "SYS_TEST"
#endif
(void) textdomain(TEXT_DOMAIN);
switch (c) {
case 'a':
aflg++;
break;
case 'd':
dflg++;
break;
case 'e':
eflg++;
break;
default:
usage();
exit(1);
}
}
case 0: /* no args */
exit(1);
}
break;
case 1: /* one arg */
break;
default: /* too many args */
usage();
exit(1);
}
/*
* First try circuit, then drop back to datagram if
* circuit is unavailable (an old version of mountd perhaps)
* Using circuit is preferred because it can handle
* arbitrarily long export lists.
*/
"datagram_n");
pr_err("");
exit(1);
}
}
if (eflg) {
exit(0);
}
}
xdr_void, 0, xdr_mountlist,
exit(1);
}
/*
* Count the number of entries in the list. If the list is empty,
* quit now.
*/
numentries = 0;
numentries++;
if (numentries == 0)
exit(0);
/*
* Allocate memory for the array and initialize the array.
*/
sizeof (struct mountbody *));
exit(1);
}
}
/*
* Sort the entries and print the results.
*/
if (dflg)
else
if (aflg) {
(*tb)->ml_directory);
} else if (dflg) {
last = "";
}
} else {
last = "";
}
}
return (0);
}
int
sorthost(a, b)
struct mountbody **a, **b;
{
}
int
sortpath(a, b)
struct mountbody **a, **b;
{
}
void
usage()
{
gettext("Usage: showmount [-a] [-d] [-e] [host]\n"));
}
void
{
}
void
char *host;
{
struct exportnode *e;
int max;
exit(1);
}
} else {
}
max = 0;
}
}
while (ex) {
}
while (gr) {
if (gr) {
printf(",");
}
}
printf("\n");
}
}