verify_mode_2_encoder.c
上传用户:weiliju62
上传日期:2007-01-06
资源大小:619k
文件大小:1k
源码类别:

SCSI/ASPI

开发平台:

MultiPlatform

  1. /* test program for the sector formatting library */
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. #include <fcntl.h>
  6. #include "ecc.h"
  7. int main(int argc, char *argv[])
  8. {
  9. int fin;
  10. unsigned int sector = 0;
  11. unsigned int verified = 0;
  12. int address;
  13. if (argc < 2) {
  14. fprintf(stderr, "Usage: %s 2448-byte-sector-filen", argv[0]);
  15. return 0;
  16. }
  17. if (argv[1][0] == '-') {
  18. fin = STDIN_FILENO;
  19. } else {
  20. fin = open(argv[1], O_RDONLY);
  21. }
  22. if (fin == -1) {
  23. perror("");
  24. fprintf(stderr, "could not open file %s for reading.n",argv[1]);
  25. exit(1);
  26. }
  27. address = 150;
  28. for (; 1; sector++) {
  29. unsigned char inbuf[2448];
  30. unsigned char inbuf_copy[2448];
  31. int have_read;
  32. /* get one original sector */
  33. have_read = 0;
  34. while (2448 != have_read) {
  35. int retval;
  36. retval = read(fin, inbuf+have_read, 2448-have_read);
  37. if (retval < 0) break;
  38. if (retval == 0)
  39. break;
  40. have_read += retval;
  41. }
  42.         /* make a copy to work on */
  43. memcpy(inbuf_copy, inbuf, 2448);
  44. /* clear fields,  which shall be built */
  45. memset(inbuf_copy, 0, 16);
  46. /* build fields */
  47. do_encode_L2(inbuf_copy, MODE_2, address++);
  48. /* check fields */
  49. if (memcmp(inbuf_copy, inbuf, 2448) != 0) {
  50. fprintf(stderr, "difference at sector %un", sector);
  51. } else verified++;
  52. }
  53. fprintf(stderr, "%u sectors, %u verified okn", sector, verified);
  54. close(fin);
  55. return 0;
  56. }