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