1: /*- 2: * Copyright (c) 1993, 1994 3: * The Regents of the University of California. 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 9: * notice, this list of conditions and the following disclaimer. 10: * 2. Redistributions in binary form must reproduce the above copyright 11: * notice, this list of conditions and the following disclaimer in the 12: * documentation and/or other materials provided with the distribution. 13: * 3. All advertising materials mentioning features or use of this software 14: * must display the following acknowledgement: 15: * This product includes software developed by the University of 16: * California, Berkeley and its contributors. 17: * 4. Neither the name of the University nor the names of its contributors 18: * may be used to endorse or promote products derived from this software 19: * without specific prior written permission. 20: * 21: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 22: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 25: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31: * SUCH DAMAGE. 32: */ 33: 34: #if !defined(lint) && defined(DOSCCS) 35: static char copyright[] = 36: "@(#) Copyright (c) 1993, 1994\n\ 37: The Regents of the University of California. All rights reserved.\n"; 38: 39: static char sccsid[] = "@(#)mount_ufs.c 8.2.2 (2.11BSD) 1996/4/18"; 40: #endif /* not lint */ 41: 42: #include <sys/param.h> 43: #include <sys/mount.h> 44: 45: #include <errno.h> 46: #include <stdio.h> 47: #include <stdlib.h> 48: #include <string.h> 49: #include <unistd.h> 50: 51: #include "mntopts.h" 52: 53: void ufs_usage(); 54: 55: static struct mntopt mopts[] = { 56: MOPT_STDOPTS, 57: MOPT_ASYNC, 58: MOPT_SYNC, 59: MOPT_UPDATE, 60: { NULL } 61: }; 62: 63: int 64: mount_ufs(argc, argv) 65: int argc; 66: register char *argv[]; 67: { 68: extern int optreset; 69: int ch, mntflags; 70: 71: mntflags = 0; 72: optind = optreset = 1; /* Reset for parse of new argv. */ 73: while ((ch = getopt(argc, argv, "o:")) != EOF) 74: switch (ch) { 75: case 'o': 76: getmntopts(optarg, mopts, &mntflags); 77: break; 78: case '?': 79: default: 80: ufs_usage(); 81: } 82: argc -= optind; 83: argv += optind; 84: 85: if (argc != 2) 86: ufs_usage(); 87: 88: if (mount(argv[0], argv[1], mntflags) < 0) { 89: (void)fprintf(stderr, "%s on %s: ", argv[0], argv[1]); 90: switch (errno) { 91: case EMFILE: 92: (void)fprintf(stderr, "mount table full.\n"); 93: break; 94: case EINVAL: 95: if (mntflags & MNT_UPDATE) 96: (void)fprintf(stderr, 97: "Specified device does not match mounted device.\n"); 98: else 99: (void)fprintf(stderr, 100: "Incorrect super block.\n"); 101: break; 102: default: 103: (void)fprintf(stderr, "%s\n", strerror(errno)); 104: break; 105: } 106: fflush(stderr); 107: return (1); 108: } 109: return (0); 110: } 111: 112: void 113: ufs_usage() 114: { 115: (void)fprintf(stderr, "usage: mount_ufs [-o options] special node\n"); 116: exit(1); 117: }