147488Spendry /* 247488Spendry * Copyright (c) 1989 Jan-Simon Pendry 347488Spendry * Copyright (c) 1989 Imperial College of Science, Technology & Medicine 447488Spendry * Copyright (c) 1989 The Regents of the University of California. 547488Spendry * All rights reserved. 647488Spendry * 747488Spendry * This code is derived from software contributed to Berkeley by 847488Spendry * Jan-Simon Pendry at Imperial College, London. 947488Spendry * 1047530Spendry * %sccs.include.redist.c% 1147488Spendry * 12*52455Spendry * @(#)wr_bparam.c 5.4 (Berkeley) 02/09/92 1349686Spendry * 14*52455Spendry * $Id: wr_bparam.c,v 5.2.2.1 1992/02/09 15:09:46 jsp beta $ 1549686Spendry * 1647488Spendry */ 1747488Spendry 1847488Spendry #include "../fsinfo/fsinfo.h" 1947488Spendry 2047488Spendry /* 2147488Spendry * Write a host/path in NFS format 2247488Spendry */ 2347488Spendry static int write_nfsname(ef, fp, hn) 2447488Spendry FILE *ef; 2547488Spendry fsmount *fp; 2647488Spendry char *hn; 2747488Spendry { 2847488Spendry int errors = 0; 2947488Spendry char *h = strdup(fp->f_ref->m_dk->d_host->h_hostname); 3047488Spendry domain_strip(h, hn); 3147488Spendry fprintf(ef, "%s:%s", h, fp->f_volname); 3247488Spendry free(h); 3347488Spendry return errors; 3447488Spendry } 3547488Spendry 3647488Spendry /* 3747488Spendry * Write a bootparams entry for a host 3847488Spendry */ 3947488Spendry static int write_boot_info(ef, hp) 4047488Spendry FILE *ef; 4147488Spendry host *hp; 4247488Spendry { 4347488Spendry int errors = 0; 4447488Spendry fprintf(ef, "%s\troot=", hp->h_hostname); 4547488Spendry errors += write_nfsname(ef, hp->h_netroot, hp->h_hostname); 4647488Spendry fputs(" swap=", ef); 4747488Spendry errors += write_nfsname(ef, hp->h_netswap, hp->h_hostname); 4847488Spendry fputs("\n", ef); 4947488Spendry 5047488Spendry return 0; 5147488Spendry } 5247488Spendry 5347488Spendry /* 5447488Spendry * Output a bootparams file 5547488Spendry */ 5647488Spendry int write_bootparams(q) 5747488Spendry qelem *q; 5847488Spendry { 5947488Spendry int errors = 0; 6047488Spendry 6147488Spendry if (bootparams_pref) { 6247488Spendry FILE *ef = pref_open(bootparams_pref, "bootparams", info_hdr, "bootparams"); 6347488Spendry if (ef) { 6447488Spendry host *hp; 6547488Spendry ITER(hp, host, q) 6647488Spendry if (hp->h_netroot && hp->h_netswap) 6747488Spendry errors += write_boot_info(ef, hp); 6847488Spendry errors += pref_close(ef); 6947488Spendry } else { 7047488Spendry errors++; 7147488Spendry } 7247488Spendry } 7347488Spendry 7447488Spendry return errors; 7547488Spendry } 76