1f5854a49Spendry /*
2f5854a49Spendry  * Copyright (c) 1989 Jan-Simon Pendry
3f5854a49Spendry  * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
4*ff516eb5Sbostic  * Copyright (c) 1989, 1993
5*ff516eb5Sbostic  *	The Regents of the University of California.  All rights reserved.
6f5854a49Spendry  *
7f5854a49Spendry  * This code is derived from software contributed to Berkeley by
8f5854a49Spendry  * Jan-Simon Pendry at Imperial College, London.
9f5854a49Spendry  *
1040bce266Spendry  * %sccs.include.redist.c%
11f5854a49Spendry  *
12*ff516eb5Sbostic  *	@(#)wr_bparam.c	8.1 (Berkeley) 06/06/93
13278f1af9Spendry  *
1485d0f232Spendry  * $Id: wr_bparam.c,v 5.2.2.1 1992/02/09 15:09:46 jsp beta $
15278f1af9Spendry  *
16f5854a49Spendry  */
17f5854a49Spendry 
18f5854a49Spendry #include "../fsinfo/fsinfo.h"
19f5854a49Spendry 
20f5854a49Spendry /*
21f5854a49Spendry  * Write a host/path in NFS format
22f5854a49Spendry  */
write_nfsname(ef,fp,hn)23f5854a49Spendry static int write_nfsname(ef, fp, hn)
24f5854a49Spendry FILE *ef;
25f5854a49Spendry fsmount *fp;
26f5854a49Spendry char *hn;
27f5854a49Spendry {
28f5854a49Spendry 	int errors = 0;
29f5854a49Spendry 	char *h = strdup(fp->f_ref->m_dk->d_host->h_hostname);
30f5854a49Spendry 	domain_strip(h, hn);
31f5854a49Spendry 	fprintf(ef, "%s:%s", h, fp->f_volname);
32f5854a49Spendry 	free(h);
33f5854a49Spendry 	return errors;
34f5854a49Spendry }
35f5854a49Spendry 
36f5854a49Spendry /*
37f5854a49Spendry  * Write a bootparams entry for a host
38f5854a49Spendry  */
write_boot_info(ef,hp)39f5854a49Spendry static int write_boot_info(ef, hp)
40f5854a49Spendry FILE *ef;
41f5854a49Spendry host *hp;
42f5854a49Spendry {
43f5854a49Spendry 	int errors = 0;
44f5854a49Spendry 	fprintf(ef, "%s\troot=", hp->h_hostname);
45f5854a49Spendry 	errors += write_nfsname(ef, hp->h_netroot, hp->h_hostname);
46f5854a49Spendry 	fputs(" swap=", ef);
47f5854a49Spendry 	errors += write_nfsname(ef, hp->h_netswap, hp->h_hostname);
48f5854a49Spendry 	fputs("\n", ef);
49f5854a49Spendry 
50f5854a49Spendry 	return 0;
51f5854a49Spendry }
52f5854a49Spendry 
53f5854a49Spendry /*
54f5854a49Spendry  * Output a bootparams file
55f5854a49Spendry  */
write_bootparams(q)56f5854a49Spendry int write_bootparams(q)
57f5854a49Spendry qelem *q;
58f5854a49Spendry {
59f5854a49Spendry 	int errors = 0;
60f5854a49Spendry 
61f5854a49Spendry 	if (bootparams_pref) {
62f5854a49Spendry 		FILE *ef = pref_open(bootparams_pref, "bootparams", info_hdr, "bootparams");
63f5854a49Spendry 		if (ef) {
64f5854a49Spendry 			host *hp;
65f5854a49Spendry 			ITER(hp, host, q)
66f5854a49Spendry 				if (hp->h_netroot && hp->h_netswap)
67f5854a49Spendry 					errors += write_boot_info(ef, hp);
68f5854a49Spendry 			errors += pref_close(ef);
69f5854a49Spendry 		} else {
70f5854a49Spendry 			errors++;
71f5854a49Spendry 		}
72f5854a49Spendry 	}
73f5854a49Spendry 
74f5854a49Spendry 	return errors;
75f5854a49Spendry }
76