|
|
1.1 ! root 1: /* ! 2: * $Id: mtab_ultrix.c,v 5.2 90/06/23 22:20:57 jsp Rel $ ! 3: * ! 4: * Copyright (c) 1990 Jan-Simon Pendry ! 5: * Copyright (c) 1990 Imperial College of Science, Technology & Medicine ! 6: * Copyright (c) 1990 The Regents of the University of California. ! 7: * All rights reserved. ! 8: * ! 9: * This code is derived from software contributed to Berkeley by ! 10: * Jan-Simon Pendry at Imperial College, London. ! 11: * ! 12: * Redistribution and use in source and binary forms are permitted provided ! 13: * that: (1) source distributions retain this entire copyright notice and ! 14: * comment, and (2) distributions including binaries display the following ! 15: * acknowledgement: ``This product includes software developed by the ! 16: * University of California, Berkeley and its contributors'' in the ! 17: * documentation or other materials provided with the distribution and in ! 18: * all advertising materials mentioning features or use of this software. ! 19: * Neither the name of the University nor the names of its contributors may ! 20: * be used to endorse or promote products derived from this software without ! 21: * specific prior written permission. ! 22: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ! 23: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ! 24: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 25: * ! 26: * @(#)mtab_ultrix.c 5.1 (Berkeley) 6/29/90 ! 27: */ ! 28: ! 29: #include "am.h" ! 30: ! 31: #ifdef READ_MTAB_ULTRIX_STYLE ! 32: ! 33: #include <sys/mount.h> ! 34: #include <sys/fs_types.h> ! 35: ! 36: static struct mntent *mnt_dup(mp) ! 37: struct fs_data *mp; ! 38: { ! 39: struct mntent *new_mp = ALLOC(mntent); ! 40: ! 41: new_mp->mnt_fsname = strdup(mp->fd_devname); ! 42: new_mp->mnt_dir = strdup(mp->fd_path); ! 43: if (mp->fd_fstype >= GT_NUMTYPES) ! 44: mp->fd_fstype = GT_UNKWN; ! 45: else if (gt_names[mp->fd_fstype] == 0) ! 46: mp->fd_fstype = GT_UNKWN; ! 47: new_mp->mnt_type = strdup(gt_names[mp->fd_fstype]); ! 48: new_mp->mnt_opts = strdup("unset"); ! 49: ! 50: new_mp->mnt_freq = 0; ! 51: new_mp->mnt_passno = mp->fd_dev; ! 52: ! 53: return new_mp; ! 54: } ! 55: ! 56: /* ! 57: * Read a mount table into memory ! 58: */ ! 59: mntlist *read_mtab(fs) ! 60: char *fs; ! 61: { ! 62: mntlist **mpp, *mhp; ! 63: ! 64: /* From: Piete Brooks <[email protected]> */ ! 65: ! 66: int loc=0; ! 67: #undef NMOUNT ! 68: #define NMOUNT 20 ! 69: struct fs_data mountbuffer[NMOUNT], *fs_data; ! 70: int ret; ! 71: ! 72: mpp = &mhp; ! 73: while ((ret = getmountent(&loc, mountbuffer, NMOUNT)) > 0) { ! 74: for (fs_data = mountbuffer; fs_data < &mountbuffer[ret]; fs_data++) { ! 75: /* ! 76: * Allocate a new slot ! 77: */ ! 78: *mpp = ALLOC(mntlist); ! 79: ! 80: /* ! 81: * Copy the data returned by getmntent ! 82: */ ! 83: (*mpp)->mnt = mnt_dup(fs_data); ! 84: ! 85: /* ! 86: * Move to next pointer ! 87: */ ! 88: mpp = &(*mpp)->mnext; ! 89: } ! 90: } ! 91: if (ret < 0) { ! 92: plog(XLOG_ERROR, "getmountent: %m"); ! 93: return 0; ! 94: } ! 95: *mpp = 0; ! 96: ! 97: return mhp; ! 98: } ! 99: ! 100: #endif /* READ_MTAB_ULTRIX_STYLE */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.