147490Spendry /* 247490Spendry * Copyright (c) 1989 Jan-Simon Pendry 347490Spendry * Copyright (c) 1989 Imperial College of Science, Technology & Medicine 447490Spendry * Copyright (c) 1989 The Regents of the University of California. 547490Spendry * All rights reserved. 647490Spendry * 747490Spendry * This code is derived from software contributed to Berkeley by 847490Spendry * Jan-Simon Pendry at Imperial College, London. 947490Spendry * 1047530Spendry * %sccs.include.redist.c% 1147490Spendry * 12*52455Spendry * @(#)wr_exportfs.c 5.4 (Berkeley) 02/09/92 1349686Spendry * 14*52455Spendry * $Id: wr_exportfs.c,v 5.2.2.1 1992/02/09 15:09:48 jsp beta $ 1549686Spendry * 1647490Spendry */ 1747490Spendry 1847490Spendry #include "../fsinfo/fsinfo.h" 1947490Spendry 2047490Spendry static int write_export_info(ef, q, errors) 2147490Spendry FILE *ef; 2247490Spendry qelem *q; 2347490Spendry int errors; 2447490Spendry { 2547490Spendry mount *mp; 2647490Spendry 2747490Spendry ITER(mp, mount, q) { 2847490Spendry if (mp->m_mask & (1<<DM_EXPORTFS)) 2947490Spendry fprintf(ef, "%s\t%s\n", mp->m_volname, mp->m_exportfs); 3047490Spendry if (mp->m_mount) 3147490Spendry errors += write_export_info(ef, mp->m_mount, 0); 3247490Spendry } 3347490Spendry 3447490Spendry return errors; 3547490Spendry } 3647490Spendry 3747490Spendry static int write_dkexports(ef, q) 3847490Spendry FILE *ef; 3947490Spendry qelem *q; 4047490Spendry { 4147490Spendry int errors = 0; 4247490Spendry disk_fs *dp; 4347490Spendry 4447490Spendry ITER(dp, disk_fs, q) { 4547490Spendry if (dp->d_mount) 4647490Spendry errors += write_export_info(ef, dp->d_mount, 0); 4747490Spendry } 4847490Spendry return errors; 4947490Spendry } 5047490Spendry 5147490Spendry int write_exportfs(q) 5247490Spendry qelem *q; 5347490Spendry { 5447490Spendry int errors = 0; 5547490Spendry 5647490Spendry if (exportfs_pref) { 5747490Spendry host *hp; 5847490Spendry show_area_being_processed("write exportfs", ""); 5947490Spendry ITER(hp, host, q) { 6047490Spendry if (hp->h_disk_fs) { 6147490Spendry FILE *ef = pref_open(exportfs_pref, hp->h_hostname, gen_hdr, hp->h_hostname); 6247490Spendry if (ef) { 6347490Spendry show_new(hp->h_hostname); 6447490Spendry errors += write_dkexports(ef, hp->h_disk_fs); 6547490Spendry errors += pref_close(ef); 6647490Spendry } else { 6747490Spendry errors++; 6847490Spendry } 6947490Spendry } 7047490Spendry } 7147490Spendry } 7247490Spendry 7347490Spendry return errors; 7447490Spendry } 75