[BACK]Return to disks.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / distrib / utils / sysinst

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/distrib/utils/sysinst/Attic/disks.c between version 1.39 and 1.40

version 1.39, 2000/12/22 10:12:12 version 1.40, 2001/01/14 02:38:14
Line 64  static void foundffs (struct data *list,
Line 64  static void foundffs (struct data *list,
 static int do_fsck(const char *diskpart);  static int do_fsck(const char *diskpart);
 static int fsck_root (void);  static int fsck_root (void);
 static int  static int
     do_ffs_newfs(const char *partname, int part, const char *mountpoint);      do_flfs_newfs(const char *partname, int part, const char *mountpoint);
   static int fsck_num(const char *mp);
   
 static int fsck_with_error_menu(const char *diskpart);  static int fsck_with_error_menu(const char *diskpart);
 static int target_mount_with_error_menu(const char *opt, char *diskpart,  static int target_mount_with_error_menu(const char *opt, char *diskpart,
Line 203  disp_cur_fspart(int disp, int showall)
Line 204  disp_cur_fspart(int disp, int showall)
                         msg_table_add(MSG_fspart_row_start,                          msg_table_add(MSG_fspart_row_start,
                                         'a'+i, psize, poffset, pend,                                          'a'+i, psize, poffset, pend,
                                         fstypenames[bsdlabel[i].pi_fstype]);                                          fstypenames[bsdlabel[i].pi_fstype]);
                         if (bsdlabel[i].pi_fstype == FS_BSDFFS)                          if (PI_ISBSDFS(&bsdlabel[i]))
                                 msg_table_add(MSG_fspart_row_end_bsd,                                  msg_table_add(MSG_fspart_row_end_bsd,
                                                 bsdlabel[i].pi_bsize,                                                  bsdlabel[i].pi_bsize,
                                                 bsdlabel[i].pi_fsize,                                                  bsdlabel[i].pi_fsize,
                                                   preservemount[i] ? "Yes" : "No",
                                                 fsmount[i]);                                                  fsmount[i]);
                         else if (bsdlabel[i].pi_fstype == FS_MSDOS)                          else if (bsdlabel[i].pi_fstype == FS_MSDOS)
                                 msg_table_add(MSG_fspart_row_end_msdos,                                  msg_table_add(MSG_fspart_row_end_msdos,
Line 252  make_filesystems(void)
Line 254  make_filesystems(void)
         for (i = 0; i < getmaxpartitions(); i++) {          for (i = 0; i < getmaxpartitions(); i++) {
                 /*                  /*
                  * newfs and mount. For now, process only BSD filesystems.                   * newfs and mount. For now, process only BSD filesystems.
                  * but if this is the  mounted-on root, don't touch it!                   * but if this is the mounted-on root, has no mount
                    * point defined, or is marked preserve, don't touch it!
                  */                   */
                 snprintf(partname, STRSIZE, "%s%c", diskdev, 'a'+i);                  snprintf(partname, STRSIZE, "%s%c", diskdev, 'a'+i);
                 if (bsdlabel[i].pi_fstype == FS_BSDFFS &&                  if (PI_ISBSDFS(&bsdlabel[i]) && !is_active_rootpart(partname)) {
                     !is_active_rootpart(partname)) {                          error = do_flfs_newfs(partname, i, fsmount[i]);
                         error = do_ffs_newfs(partname, i, fsmount[i]);  
                         if (error)                          if (error)
                                 return error;                                  return error;
                 }                  }
Line 267  make_filesystems(void)
Line 269  make_filesystems(void)
   
 /* newfs and mount an ffs filesystem. */  /* newfs and mount an ffs filesystem. */
 static int  static int
 do_ffs_newfs(const char *partname, int partno, const char *mountpoint)  do_flfs_newfs(const char *partname, int partno, const char *mountpoint)
 {  {
         char devname[STRSIZE];          char devname[STRSIZE];
         int error;          int error;
   
         error = run_prog(RUN_DISPLAY, MSG_cmdfail,          if (*mountpoint && !preservemount[partno])
             "/sbin/newfs /dev/r%s", partname);                  error = run_prog(RUN_DISPLAY, MSG_cmdfail, "%s /dev/r%s",
                       bsdlabel[partno].pi_fstype == FS_BSDFFS ?
                       "/sbin/newfs" : "/sbin/newfs_lfs", partname);
           else
                   error = 0;
         if (*mountpoint && error == 0) {          if (*mountpoint && error == 0) {
                 snprintf(devname, STRSIZE, "/dev/%s", partname);                  snprintf(devname, STRSIZE, "/dev/%s", partname);
                 if (partno > 0) {                  if (partno > 0) /* XXX strcmp(mountpoint, "/") ? XXX */
                         make_target_dir(mountpoint);                          make_target_dir(mountpoint);
                         error = target_mount("-v -o async",                  error = target_mount(bsdlabel[partno].pi_fstype == FS_BSDFFS ?
                             devname, mountpoint);                      "-v -o async" : "-v", devname, mountpoint);
                 } else  
                         error = target_mount("-v -o async",  
                             devname, mountpoint);  
                 if (error) {                  if (error) {
                         msg_display(MSG_mountfail, devname, mountpoint);                          msg_display(MSG_mountfail, devname, mountpoint);
                         process_menu (MENU_ok);                          process_menu (MENU_ok);
Line 295  int
Line 298  int
 make_fstab(void)  make_fstab(void)
 {  {
         FILE *f;          FILE *f;
         int i;          int i, swapdev = -1;
   
         /* Create the fstab. */          /* Create the fstab. */
         make_target_dir("/etc");          make_target_dir("/etc");
         f = target_fopen("/etc/fstab", "w");          f = target_fopen("/etc/fstab", "w");
         if (logging)          if (logging)
                 (void)fprintf(log, "Creating %s/etc/fstab.\n", target_prefix());                  (void)fprintf(log, "Creating %s/etc/fstab.\n", target_prefix());
         if (scripting)          scripting_fprintf(NULL, "cat <<EOF >%s/etc/fstab\n", target_prefix());
                 (void)fprintf(script, "cat <<EOF >%s/etc/fstab\n", target_prefix());  
   
         if (f == NULL) {          if (f == NULL) {
 #ifndef DEBUG  #ifndef DEBUG
Line 316  make_fstab(void)
Line 318  make_fstab(void)
                 f = stdout;                  f = stdout;
 #endif  #endif
         }          }
         (void)fprintf (f, "/dev/%sa / ffs rw 1 1\n", diskdev);          for (i = 0; i < getmaxpartitions(); i++)
         if (scripting)                  if (bsdlabel[i].pi_fstype == FS_BSDFFS)
                 (void)fprintf (script, "/dev/%sa / ffs rw 1 1\n", diskdev);                          scripting_fprintf(f, "/dev/%s%c %s ffs rw 1 %d\n",
         (void)fprintf (f, "/dev/%sb none swap sw 0 0\n", diskdev);                                         diskdev, 'a'+i, fsmount[i],
         if (scripting)                                         fsck_num(fsmount[i]));
                 (void)fprintf (script, "/dev/%sb none swap sw 0 0\n", diskdev);                  else if (bsdlabel[i].pi_fstype == FS_BSDLFS) {
         for (i = getrawpartition() + 1; i < getmaxpartitions(); i++)                          char *s = "#";
                 if (bsdlabel[i].pi_fstype == FS_BSDFFS) {  
                         (void)fprintf (f, "/dev/%s%c %s ffs rw 1 2\n",                          /* If there is no LFS, just comment it out. */
                                        diskdev, 'a'+i, fsmount[i]);                          if (!check_lfs_progs())
                         if (scripting)                                  s++;
                                 (void)fprintf (script, "/dev/%s%c %s ffs rw 1 2\n",                          scripting_fprintf(f, "%s/dev/%s%c %s lfs rw 1 %d\n", s,
                                         diskdev, 'a'+i, fsmount[i]);                                         diskdev, 'a'+i, fsmount[i],
                 } else if (bsdlabel[i].pi_fstype == FS_MSDOS ) {                                         fsck_num(fsmount[i]));
                         (void)fprintf(f, "/dev/%s%c %s msdos rw 0 0\n",                  } else if (bsdlabel[i].pi_fstype == FS_MSDOS)
                           scripting_fprintf(f, "/dev/%s%c %s msdos rw 0 0\n",
                                        diskdev, 'a'+i, fsmount[i]);                                         diskdev, 'a'+i, fsmount[i]);
                         if (scripting)                  else if (bsdlabel[i].pi_fstype == FS_SWAP) {
                                 (void)fprintf(script, "/dev/%s%c %s msdos rw 0 0\n",                          if (swapdev == -1)
                                         diskdev, 'a'+i, fsmount[i]);                                  swapdev = i;
                           scripting_fprintf(f, "/dev/%s%c none swap sw 0 0\n", diskdev, 'a'+i);
                 }                  }
         (void)fprintf(f, "/kern /kern kernfs rw\n");          if (layout_tmp) {
         if (scripting) {                  if (swapdev != -1)
                 (void)fprintf(script, "/kern /kern kernfs rw\n");                          scripting_fprintf(f, "/dev/%s%c /tmp mfs rw\n", diskdev, 'a'+swapdev);
                 (void)fprintf(script, "EOF\n");                  else
                           scripting_fprintf(f, "swap /tmp mfs rw\n");
         }          }
           scripting_fprintf(script, "/kern /kern kernfs rw\n");
           scripting_fprintf(NULL, "EOF\n");
   
 #ifndef DEBUG  #ifndef DEBUG
         fclose(f);          fclose(f);
         fflush(NULL);          fflush(NULL);
Line 350  make_fstab(void)
Line 358  make_fstab(void)
         return 0;          return 0;
 }  }
   
   static int
   fsck_num(const char *mp)
   {
           static int num = 1;
   
           if (strcmp(mp, "/"))
                   return 1;
   
           return (++num);
   }
   
   
 /* Get information on the file systems mounted from the root filesystem.  /* Get information on the file systems mounted from the root filesystem.
  * Offer to convert them into 4.4BSD inodes if they are not 4.4BSD   * Offer to convert them into 4.4BSD inodes if they are not 4.4BSD
Line 402  inode_kind(char *dev)
Line 421  inode_kind(char *dev)
                 return -2;                  return -2;
         }          }
         close(fd);          close(fd);
           if (fs_is_lfs(&fs.fs))
                   return -4;
         if (fs.fs.fs_magic != FS_MAGIC)          if (fs.fs.fs_magic != FS_MAGIC)
                 return -3;                  return -3;
         if (fs.fs.fs_inodefmt < FS_44INODEFMT)          if (fs.fs.fs_inodefmt < FS_44INODEFMT)
Line 423  do_fsck(const char *diskpart)
Line 444  do_fsck(const char *diskpart)
 {  {
         char raw[SSTRSIZE];          char raw[SSTRSIZE];
         int inodetype;          int inodetype;
         char * upgr = "";          char *upgr = "", *prog = "/sbin/fsck_ffs";
         int err;          int err;
   
         /* cons up raw partition name. */          /* cons up raw partition name. */
         snprintf (raw, SSTRSIZE, "/dev/r%s", diskpart);          snprintf (raw, SSTRSIZE, "/dev/r%s", diskpart);
         inodetype = inode_kind (raw);          inodetype = inode_kind (raw);
   
         if (inodetype < 0) {          if (inodetype == -4) {
                   if (check_lfs_progs() == 0)
                           return EOPNOTSUPP;      /* XXX */
                   prog = "/sbin/fsck_lfs";
           } else if (inodetype < 0) {
                 /* error */                  /* error */
                 return inodetype;                  return inodetype;
         }          } else if (inodetype == 0) {
         else if (inodetype == 0) {  
                 /* Ask to upgrade */                  /* Ask to upgrade */
                 msg_display(MSG_upgrinode, raw);                  msg_display(MSG_upgrinode, raw);
                 process_menu(MENU_yesno);                  process_menu(MENU_yesno);
Line 444  do_fsck(const char *diskpart)
Line 468  do_fsck(const char *diskpart)
   
         /*endwin();*/          /*endwin();*/
 #ifndef DEBUG_SETS  #ifndef DEBUG_SETS
         err = run_prog(RUN_DISPLAY, NULL, "/sbin/fsck_ffs %s%s", upgr, raw);          err = run_prog(RUN_DISPLAY, NULL, "%s %s%s", prog, upgr, raw);
 #else  #else
         err = run_prog(RUN_DISPLAY, NULL, "/sbin/fsck_ffs -f %s%s", upgr, raw);          err = run_prog(RUN_DISPLAY, NULL, "%s -f %s%s", prog, upgr, raw);
 #endif  #endif
                 wrefresh(stdscr);          wrefresh(stdscr);
         return err;          return err;
 }  }
   
Line 461  do_fsck(const char *diskpart)
Line 485  do_fsck(const char *diskpart)
 int  int
 fsck_with_error_menu(const char *diskpart)  fsck_with_error_menu(const char *diskpart)
 {  {
         register int error;          int error;
         if ((error = do_fsck (diskpart)) != 0) {  
           if ((error = do_fsck(diskpart)) != 0) {
 #ifdef DEBUG  #ifdef DEBUG
                 fprintf(stderr, "sysinst: do_fsck() returned err %d\n", error);                  fprintf(stderr, "sysinst: do_fsck() returned err %d\n", error);
 #endif  #endif
Line 482  fsck_with_error_menu(const char *diskpar
Line 507  fsck_with_error_menu(const char *diskpar
 int target_mount_with_error_menu(const char *opt,  int target_mount_with_error_menu(const char *opt,
                  char *diskpart, const char *mntpoint)                   char *diskpart, const char *mntpoint)
 {  {
         register int error;          int error;
         char devname[STRSIZE];          char devname[STRSIZE];
   
         snprintf(devname, STRSIZE, "/dev/%s", diskpart);          snprintf(devname, STRSIZE, "/dev/%s", diskpart);

Legend:
Removed from v.1.39  
changed lines
  Added in v.1.40

CVSweb <webmaster@jp.NetBSD.org>