static void write_mntent_to_mtab(FILE *fp, const mntent_t *mnt) { #ifdef MOUNT_TABLE_ON_FILE putmntent(fp, update_mnttab_fields(mnt)); #endif /* MOUNT_TABLE_ON_FILE */ }
int addMountEntry (FILE *table, MountEntry *entry) { errno = ENOSYS; if (!putmntent(table, entry)) return 1; logMessage(LOG_ERR, "mounts table entry add error: %s[%s] -> %s: %s", entry->mnt_fstype, entry->mnt_special, entry->mnt_mountp, strerror(errno)); return 0; }
static int HandleMTab(char *cacheMountDir) { #if (defined (AFS_SUN_ENV) || defined (AFS_HPUX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV) || defined(AFS_LINUX20_ENV)) && !defined(AFS_SUN58_ENV) FILE *tfilep; #ifdef AFS_SUN5_ENV char tbuf[16]; struct mnttab tmntent; memset(&tmntent, '\0', sizeof(struct mnttab)); if (!(tfilep = fopen(MOUNTED_TABLE, "a+"))) { printf("Can't open %s\n", MOUNTED_TABLE); perror(MNTTAB); exit(-1); } tmntent.mnt_special = "AFS"; tmntent.mnt_mountp = cacheMountDir; tmntent.mnt_fstype = "xx"; tmntent.mnt_mntopts = "rw"; sprintf(tbuf, "%ld", (long)time((time_t *) 0)); tmntent.mnt_time = tbuf; putmntent(tfilep, &tmntent); fclose(tfilep); #else #if defined(AFS_SGI_ENV) || defined(AFS_LINUX20_ENV) struct mntent tmntent; tfilep = setmntent("/etc/mtab", "a+"); tmntent.mnt_fsname = "AFS"; tmntent.mnt_dir = cacheMountDir; tmntent.mnt_type = "afs"; tmntent.mnt_opts = "rw"; tmntent.mnt_freq = 1; tmntent.mnt_passno = 3; addmntent(tfilep, &tmntent); endmntent(tfilep); #else struct mntent tmntent; memset(&tmntent, '\0', sizeof(struct mntent)); tfilep = setmntent(MOUNTED_TABLE, "a+"); if (!tfilep) { printf("Can't open %s for write; Not adding afs entry to it\n", MOUNTED_TABLE); return 1; } tmntent.mnt_fsname = "AFS"; tmntent.mnt_dir = cacheMountDir; tmntent.mnt_type = "xx"; tmntent.mnt_opts = "rw"; tmntent.mnt_freq = 1; tmntent.mnt_passno = 3; #ifdef AFS_HPUX_ENV tmntent.mnt_type = "afs"; tmntent.mnt_time = time(0); tmntent.mnt_cnode = 0; #endif addmntent(tfilep, &tmntent); endmntent(tfilep); #endif /* AFS_SGI_ENV */ #endif /* AFS_SUN5_ENV */ #endif /* unreasonable systems */ #ifdef AFS_DARWIN_ENV #ifndef AFS_DARWIN100_ENV mach_port_t diskarb_port; kern_return_t status; status = DiskArbStart(&diskarb_port); if (status == KERN_SUCCESS) { status = DiskArbDiskAppearedWithMountpointPing_auto("AFS", DISK_ARB_NETWORK_DISK_FLAG, cacheMountDir); } return status; #endif #endif /* AFS_DARWIN_ENV */ return 0; }