summaryrefslogtreecommitdiffstats
path: root/sbin/sysinstall
diff options
context:
space:
mode:
authorjkh <jkh@FreeBSD.org>1995-01-14 10:31:29 +0000
committerjkh <jkh@FreeBSD.org>1995-01-14 10:31:29 +0000
commite1791b06e3b92a894b9e89fd4989fdb3a2a0ccc1 (patch)
tree1e44792e575d3513a72a496f901315388d832314 /sbin/sysinstall
parentbfd797c7f7bd6769d158ef4a35458cda5ded9a16 (diff)
downloadFreeBSD-src-e1791b06e3b92a894b9e89fd4989fdb3a2a0ccc1.zip
FreeBSD-src-e1791b06e3b92a894b9e89fd4989fdb3a2a0ccc1.tar.gz
Make sure a partition we're about to mount on will always exist on the
user's system. Make Mkdir() selectively not die in case of failure.
Diffstat (limited to 'sbin/sysinstall')
-rw-r--r--sbin/sysinstall/stage2.c16
-rw-r--r--sbin/sysinstall/stage4.c6
-rw-r--r--sbin/sysinstall/sysinstall.h2
-rw-r--r--sbin/sysinstall/utils.c11
4 files changed, 20 insertions, 15 deletions
diff --git a/sbin/sysinstall/stage2.c b/sbin/sysinstall/stage2.c
index b58d402..03c2867 100644
--- a/sbin/sysinstall/stage2.c
+++ b/sbin/sysinstall/stage2.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: stage2.c,v 1.16.2.1 1994/11/21 03:12:16 phk Exp $
+ * $Id: stage2.c,v 1.20 1994/12/27 23:26:56 jkh Exp $
*
*/
@@ -82,10 +82,10 @@ stage2()
MountUfs(p, dbuf, 1, 0);
}
- Mkdir("/mnt/etc");
- Mkdir("/mnt/dev");
- Mkdir("/mnt/mnt");
- Mkdir("/mnt/stand");
+ Mkdir("/mnt/etc", TRUE);
+ Mkdir("/mnt/dev", TRUE);
+ Mkdir("/mnt/mnt", TRUE);
+ Mkdir("/mnt/stand", TRUE);
TellEm("unzipping /stand/sysinstall onto hard disk");
exec(4, "/stand/gzip", "zcat", 0 );
@@ -137,13 +137,17 @@ stage2()
Fatal("Couldn't open /mnt/etc/fstab for writing.");
TellEm("Writing filesystems");
+ chdir("/mnt");
for (j = 1; Fsize[j]; j++) {
if (!strcmp(Ftype[Fsize[j]],"swap"))
fprintf(f1, "/dev/%s\t\tnone\tswap sw 0 0\n", Fname[Fsize[j]]);
- else
+ else {
fprintf(f1, "/dev/%s\t\t%s\t%s rw 1 1\n",
Fname[Fsize[j]], Fmount[Fsize[j]], Ftype[Fsize[j]]);
+ Mkdir(Fmount[Fsize[j]], FALSE);
+ }
}
+ chdir("/");
TellEm("Writing procfs");
fprintf(f1,"proc\t\t/proc\tprocfs rw 0 0\n");
fclose(f1);
diff --git a/sbin/sysinstall/stage4.c b/sbin/sysinstall/stage4.c
index 81222d0..f5ae29d 100644
--- a/sbin/sysinstall/stage4.c
+++ b/sbin/sysinstall/stage4.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: stage4.c,v 1.9 1994/11/17 23:36:48 ache Exp $
+ * $Id: stage4.c,v 1.10 1994/11/18 10:12:56 jkh Exp $
*
*/
@@ -76,8 +76,8 @@ retry:
Fatal("Pid %d, status %d, cpio=%d, gunzip=%d.\nerror:%s",
i, j, cpid, zpid, strerror(errno));
- /* bininst MUST be the last file on the floppy */
- if (access("/stand/bininst", R_OK) == -1) {
+ /* bininst.sh MUST be the last file on the floppy */
+ if (access("/stand/bininst.sh", R_OK) == -1) {
AskAbort("CPIO floppy was bad! Please check media for defects and retry.");
goto retry;
}
diff --git a/sbin/sysinstall/sysinstall.h b/sbin/sysinstall/sysinstall.h
index d96e9df..ec5a196 100644
--- a/sbin/sysinstall/sysinstall.h
+++ b/sbin/sysinstall/sysinstall.h
@@ -96,7 +96,7 @@ char *StrAlloc __P((char *str));
void Fatal __P((char *fmt, ...));
void AskAbort __P((char *fmt, ...));
void MountUfs __P((char *device, char *mountpoint, int do_mkdir,int flags));
-void Mkdir __P((char *path));
+void Mkdir __P((char *path, int die));
void Link __P((char *from, char *to));
void CopyFile __P((char *p1, char *p2));
u_long PartMb(struct disklabel *lbl,int part);
diff --git a/sbin/sysinstall/utils.c b/sbin/sysinstall/utils.c
index 1b84950..b92f05f 100644
--- a/sbin/sysinstall/utils.c
+++ b/sbin/sysinstall/utils.c
@@ -6,7 +6,7 @@
* this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
* ----------------------------------------------------------------------------
*
- * $Id: utils.c,v 1.30.2.1 1994/11/21 03:12:24 phk Exp $
+ * $Id: utils.c,v 1.34 1994/12/27 23:26:59 jkh Exp $
*
*/
@@ -173,7 +173,7 @@ MountUfs(char *device, char *mountpoint, int do_mkdir, int flags)
memset(&ufsargs,0,sizeof ufsargs);
if(do_mkdir && access(mountpoint,R_OK)) {
- Mkdir(mountpoint);
+ Mkdir(mountpoint, TRUE);
}
strcpy(dbuf,"/dev/");
@@ -188,7 +188,7 @@ MountUfs(char *device, char *mountpoint, int do_mkdir, int flags)
}
void
-Mkdir(char *ipath)
+Mkdir(char *ipath, int die)
{
struct stat sb;
int final=0;
@@ -205,11 +205,12 @@ Mkdir(char *ipath)
continue;
*p = '\0';
if (stat(path, &sb)) {
- if (errno != ENOENT)
+ if (errno != ENOENT && die)
Fatal("Couldn't stat directory %s: %s\n",
path,strerror(errno));
Debug("mkdir(%s..)",path);
- if (mkdir(path, S_IRWXU | S_IRWXG | S_IRWXO) < 0)
+ if (mkdir(path, S_IRWXU | S_IRWXG | S_IRWXO) < 0 &&
+ die)
Fatal("Couldn't create directory %s: %s\n",
path,strerror(errno));
}
OpenPOWER on IntegriCloud