Deleted Added
sdiff udiff text old ( 80123 ) new ( 80146 )
full compact
1/*
2 * Copyright (c) 1999 Martin Blapp
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 13 unchanged lines hidden (view full) ---

22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 */
27
28#ifndef lint
29static const char rcsid[] =
30 "$FreeBSD: head/usr.sbin/rpc.umntall/rpc.umntall.c 80146 2001-07-22 12:17:51Z iedowse $";
31#endif /* not lint */
32
33#include <sys/param.h>
34#include <sys/ucred.h>
35#include <sys/mount.h>
36
37#include <rpc/rpc.h>
38#include <nfs/rpcv2.h>

--- 10 unchanged lines hidden (view full) ---

49int verbose;
50
51static int do_umount (char *, char *);
52static int do_umntall (char *);
53static int is_mounted (char *, char *);
54static void usage (void);
55int xdr_dir (XDR *, char *);
56
57int
58main(int argc, char **argv) {
59 int ch, keep, success, pathlen;
60 time_t expire, now;
61 char *host, *path;
62 struct mtablist *mtab;
63
64 expire = 0;

--- 28 unchanged lines hidden (view full) ---

93 signal(SIGQUIT, SIG_IGN);
94
95 /* Default expiretime is one day */
96 if (expire == 0)
97 expire = 86400;
98 time(&now);
99
100 /* Read PATH_MOUNTTAB. */
101 if (!read_mtab()) {
102 if (verbose)
103 warnx("no mounttab entries (%s does not exist)",
104 PATH_MOUNTTAB);
105 mtabhead = NULL;
106 }
107
108 if (host == NULL && path == NULL) {
109 /* Check each entry and do any necessary unmount RPCs. */

--- 16 unchanged lines hidden (view full) ---

126 mtab->mtab_host, mtab->mtab_dirp);
127 continue;
128 }
129 if (do_umount(mtab->mtab_host, mtab->mtab_dirp)) {
130 if (verbose)
131 warnx("umount RPC for %s:%s succeeded",
132 mtab->mtab_host, mtab->mtab_dirp);
133 /* Remove all entries for this host + path. */
134 clean_mtab(mtab->mtab_host, mtab->mtab_dirp,
135 verbose);
136 }
137 }
138 success = 1;
139 } else {
140 if (host == NULL && path != NULL)
141 /* Missing hostname. */
142 usage();
143 if (path == NULL) {

--- 8 unchanged lines hidden (view full) ---

152 path[pathlen - 1] = '\0';
153 success = do_umount(host, path);
154 if (verbose && success)
155 warnx("umount RPC for %s:%s succeeded", host,
156 path);
157 }
158 /* If successful, remove any corresponding mounttab entries. */
159 if (success)
160 clean_mtab(host, path, verbose);
161 }
162 /* Write and unlink PATH_MOUNTTAB if necessary */
163 if (success)
164 success = write_mtab(verbose);
165 free_mtab();
166 exit (success ? 0 : 1);
167}
168
169/*
170 * Send a RPC_MNT UMNTALL request to hostname.
171 * XXX This works for all mountd implementations,
172 * but produces a RPC IOERR on non FreeBSD systems.

--- 96 unchanged lines hidden ---