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 80123 2001-07-22 01:25:25Z 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
57struct mtablist *mtabhead;
58
59int
60main(int argc, char **argv) {
61 int ch, keep, success, pathlen;
62 time_t expire, now;
63 char *host, *path;
64 struct mtablist *mtab;
65
66 expire = 0;

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

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

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

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

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

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

--- 96 unchanged lines hidden ---