Files
Arquivotheca.SunOS-4.1.4/usr.etc/suninstall/lib/make_mount.c
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

116 lines
2.2 KiB
C

#ifndef lint
#ifdef SunB1
static char mls_sccsid[] = "@(#)make_mount.c 1.1 94/10/31 SMI; SunOS MLS";
#else
static char sccsid[] = "@(#)make_mount.c 1.1 94/10/31 SMI";
#endif /* SunB1 */
#endif lint
/*
* Copyright (c) 1989 Sun Microsystems, Inc.
*/
/*
* Name: make_mount_list()
*
* Description: Make a mount_list from the data in the DISK_INFO
* files and update the root and user partitions in 'sys_p'.
* This routine is used by its caller() to make sure that
* a root and user mount point exists in the configuration.
*
* Returns 1 if everything is okay, and -1 if there was an error.
*/
#include <stdio.h>
#include <string.h>
#include "install.h"
#include "menu.h"
/*
* External functions:
*/
extern char * sprintf();
int
make_mount_list(sys_p)
sys_info * sys_p;
{
char buf[BUFSIZ]; /* input buffer */
disk_info disk; /* disk info buffer */
FILE * fp; /* ptr to disk_list */
mnt_ent mount_list[NMOUNT]; /* mount list */
mnt_ent * mp; /* ptr to mount list entry */
char pathname[MAXPATHLEN]; /* pathname buffer */
(void) unlink(MOUNT_LIST);
fp = fopen(DISK_LIST, "r");
if (fp == NULL) {
menu_log("%s: %s: cannot open file.", progname, DISK_LIST);
return(-1);
}
while (fgets(buf, sizeof(buf), fp)) {
delete_blanks(buf);
(void) sprintf(pathname, "%s.%s", DISK_INFO, buf);
switch (read_disk_info(pathname, &disk)) {
case 1:
break;
case 0:
continue;
case -1:
(void) fclose(fp);
return(-1);
}
if (disk_to_mount_list(&disk, MOUNT_LIST) != 1) {
(void) fclose(fp);
return(-1);
}
}
(void) fclose(fp);
switch (read_mount_list(MOUNT_LIST, mount_list)) {
case 1:
break;
/*
* Create a zero-length mount_list if one does not exist.
*/
case 0:
if (fp = fopen(MOUNT_LIST, "w"))
(void) fclose(fp);
break;
case -1:
return(-1);
} /* end switch */
bzero(sys_p->root, sizeof(sys_p->root));
bzero(sys_p->user, sizeof(sys_p->user));
for (mp = mount_list; mp->partition[0]; mp++) {
if (strcmp(mp->mount_pt, "/") == 0) {
(void) strcpy(sys_p->root, mp->partition);
}
else if (strcmp(mp->mount_pt, "/usr") == 0) {
(void) strcpy(sys_p->user, mp->partition);
}
}
if (save_sys_info(SYS_INFO, sys_p) != 1)
return(-1);
return(1);
} /* end make_mount_list() */