MakeDesc.c 718 B

123456789101112131415161718192021222324252627
  1. #include <stdio.h>
  2. #include "bm.h"
  3. #include "Extern.h"
  4. extern char * malloc();
  5. /* makes a pattern descriptor */
  6. struct PattDesc *MakeDesc(Pattern)
  7. char *Pattern;
  8. {
  9. struct PattDesc *Desc;
  10. Desc = (struct PattDesc *) malloc(sizeof(struct PattDesc));
  11. if (!(Desc->Skip1 = (unsigned short int *)
  12. malloc( sizeof(int) * (MAXCHAR + 1)))){
  13. fprintf(stderr,"bm: can't allocate space\n");
  14. exit(2);
  15. } /* if */
  16. if (!(Desc->Skip2 = (unsigned short int *)
  17. malloc(sizeof(int) * strlen(Pattern)))){
  18. fprintf(stderr,"bm: can't allocate space\n");
  19. exit(2);
  20. } /* if */
  21. Desc->Pattern=Pattern;
  22. Desc->PatLen = strlen(Desc->Pattern);
  23. MakeSkip(Desc->Pattern,Desc->Skip1,
  24. Desc->Skip2,Desc->PatLen);
  25. return(Desc);
  26. } /* main */