save.cpp
上传用户:yingdiyu
上传日期:2007-01-06
资源大小:116k
文件大小:2k
源码类别:

磁盘编程

开发平台:

Others

  1. /*
  2. FIPS - the First nondestructive Interactive Partition Splitting program
  3. Module save.cpp
  4. RCS - Header:
  5. $Header: c:/daten/fips/source/main/RCS/save.cpp 1.4 1995/01/19 00:01:24 schaefer Exp schaefer $
  6. Copyright (C) 1993 Arno Schaefer
  7. This program is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 2 of the License, or
  10. (at your option) any later version.
  11. This program is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15. You should have received a copy of the GNU General Public License
  16. along with this program; if not, write to the Free Software
  17. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18. Report problems and direct all questions to:
  19. schaefer@rbg.informatik.th-darmstadt.de
  20. */
  21. #include <stdio.h>
  22. #include <io.h>
  23. #include "global.h"
  24. #include "hdstruct.h"
  25. /* ----------------------------------------------------------------------- */
  26. /* Save root- and boot sector to floppy disk                               */
  27. /* ----------------------------------------------------------------------- */
  28. void save_root_and_boot (harddrive *drive,partition *partition)
  29. {
  30. FILE *save_file;
  31. char *filename = "a:\rootboot.000";
  32. while (access (filename,0) == 0)
  33. {
  34. if (++filename[14] > '9')
  35. error ("Too many save files on disk");
  36. }
  37. if ((save_file = fopen (filename,"wb")) == NULL)
  38. error ("Can't open file: %s",filename);
  39. printx ("nWriting file %sn", filename);
  40. if (fwrite (drive->root_sector->data,1,512,save_file) != 512)
  41. error ("Error writing file: %s",filename);
  42. if (fwrite (partition->boot_sector->data,1,512,save_file) != 512)
  43. error ("Error writing file: %s",filename);
  44. if (fputc (drive->number,save_file) != drive->number)
  45. error ("Error writing file: %s",filename);
  46. if (fputc (partition->number,save_file) != partition->number)
  47. error ("Error writing file: %s",filename);
  48. if (fclose (save_file))
  49. error ("Error closing file: %s",filename);
  50. }