S_UNIX.C
上传用户:yeshiping1
上传日期:2007-01-06
资源大小:29k
文件大小:2k
源码类别:

磁盘编程

开发平台:

Others

  1. /* This file contains system-specific functions for generic UNIX.
  2.  * The program pfdisk.c calls these routines.
  3.  */
  4. #include <stdio.h>
  5. #include <fcntl.h>
  6. #define extern
  7. #include "sysdep.h"
  8. #undef extern
  9. int usage(prog) /* print a usage message */
  10. char *prog; /* program name */
  11. {
  12.   fprintf(stderr,"Usage: %s devn
  13. twhere 'dev' is the device name, i.e. /dev/hd0n
  14. t(The device must start on absolute sector zero.)n",prog);
  15. }
  16. void getGeometry(dev, c, h, s)
  17. char *dev; /* device name */
  18. unsigned *c,*h,*s; /* cyls, heads, sectors */
  19. {
  20.   fprintf(stderr,
  21. "ntWarning:  The device "%s" is assumed to have:n
  22. tcyls=%d, heads=%d, sectors=%d (an arbitrary guess).n",
  23.   dev, *c, *h, *s);
  24.   fprintf(stderr,
  25. "ntThis program was compiled for generic UNIX and thereforen
  26. tdoes not know how to determine the disk parameters.  You mustn
  27. tdescribe the disk geometry manually, using the 'G' command.n");
  28. }
  29. int getFile(name, buf, len) /* read file into buffer */
  30. char *name, *buf;
  31. int len;
  32. { /* (open, read, close) */
  33.   int devfd, retval;
  34.   
  35.   devfd = open(name, O_RDONLY, 0);
  36.   if (devfd < 0) {
  37.     fprintf(stderr,"%s: can't open for readingn", name);
  38.     return(devfd);
  39.   }
  40.   retval = read(devfd, buf, len);
  41.   if (retval < 0)
  42.     fprintf(stderr,"%s: read failedn", name);
  43.   close(devfd);
  44.   return(retval);
  45. }
  46. int putFile(name, buf, len) /* write buffer to file */
  47. char *name, *buf;
  48. int len;
  49. { /* (open, write, close) */
  50.   int devfd, retval;
  51.   
  52.   devfd = open(name, O_WRONLY|O_CREAT, 0666);
  53.   if (devfd < 0) {
  54.     fprintf(stderr,"%s: can't open for writingn", name);
  55.     return(devfd);
  56.   }
  57.   retval = write(devfd, buf, len);
  58.   if (retval < 0)
  59.     fprintf(stderr,"%s: write failedn", name);
  60.   close(devfd);
  61.   return(retval);
  62. }
  63. int getBBlk(devname, buffer) /* read block into buffer */
  64. char *devname, *buffer; /* (open, read, close) */
  65. {
  66.   int devfd, retval;
  67.   
  68.   devfd = open(devname,O_RDONLY);
  69.   if (devfd < 0) {
  70.     printf("%s: can't open for readn", devname);
  71.     return(devfd);
  72.   }
  73.   retval = read(devfd, buffer, SECSIZE);
  74.   close(devfd);
  75.   return(retval);
  76. }
  77. int putBBlk(devname, buffer) /* write buffer to device */
  78. char *devname, *buffer; /* (open, write, close) */
  79. {
  80.   int devfd, retval;
  81.   
  82.   devfd = open(devname,O_WRONLY);
  83.   if (devfd < 0) {
  84.     printf("%s: can't open for writen",devname);
  85.     return(devfd);
  86.   }
  87.   retval = write(devfd, buffer, SECSIZE);
  88.   sync();
  89.   close(devfd);
  90.   return(retval);
  91. }