home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR9 / WDOS0793.ZIP / DUDLEY.ZIP / TXTLOAD.C < prev   
C/C++ Source or Header  |  1993-05-28  |  3KB  |  102 lines

  1.  /* compiles with MSC 4.0, TCC 2.0, or Watcom 386 8.0
  2.  * makefile sets MSC true when using MSC 4.0 compiler.
  3.  */
  4.  
  5. #include <dos.h>
  6. #include <errno.h>
  7. #include <math.h>
  8. #include <stdio.h>
  9. #include <time.h>
  10. #include <string.h>
  11. #include <signal.h>
  12. #include <stdlib.h>
  13. #if __TURBOC__
  14. #include <mem.h>
  15. #include <alloc.h>
  16. #include <fcntl.h>
  17. #include <sys\stat.h>
  18. #include <io.h>
  19. #elif MSC
  20. #include <memory.h>
  21. #include <malloc.h>
  22. #include <fcntl.h>
  23. #include <sys\types.h>
  24. #include <sys\stat.h>
  25. #include <io.h>
  26. #endif
  27.  
  28. #define MAIN 0
  29. #include "makemsg.h"
  30.  
  31. char nothing[] = "";
  32.  
  33. #define MENBUFLEN 256
  34.  
  35. /* load messages into calloc'd array.
  36.  * typical usage:
  37.  unsigned cnt;
  38.  int error, line;
  39.  struct msg *txt[139];
  40.  FILE *menufile;
  41.     menufile = fopen("ROUTEMSG.TXT","r");
  42.     cnt = sizeof (txt)/sizeof (char *);
  43.     error = loadmsgs (cnt, txt, menufile, load, &line);
  44.     if (error) {
  45.         printf ("Error at line %d in ROUTEMSG.TXT.\n",  line);
  46.         exit (EFORMAT);
  47.     }
  48.  * return number of messages in *cnt.
  49.  * return error condition or 0 if OK.
  50.  */
  51.                 /* ***** LOADMSGS ***** */
  52. int loadmsgs (cnt, arp, mfile, lod)
  53. unsigned int *cnt;
  54. struct msg         arp[];
  55. FILE                   *mfile;
  56. int                             lod;
  57. {
  58.   int j, k, row;
  59.   char lbuf[MENBUFLEN];
  60.  
  61.   char bufr[MENBUFLEN];
  62.   int error=0;
  63.   int col=-1;
  64.     for (k = 0 ; k < *cnt ; k++ ) {
  65.         if (NULL == fgets (lbuf, 128, mfile)) { *cnt = k-1; break; 
  66. }
  67.         row = atoi(lbuf);
  68.         if (k!=row) { error++; break; }
  69.         if (k!=(col+1)) { error++; break; }
  70.         col = row;             /* save row for monotonicity check 
  71. */
  72.         memset (bufr,0,MENBUFLEN);
  73.         if (NULL == fgets (lbuf, 128, mfile)) { error++; break; }
  74.         while(lbuf[0] != 4) {
  75.             if(bufr[0]) strcat (bufr, "\n");
  76.             if (lbuf[0] == '\n') strcat (bufr, "\n");
  77.             else {
  78.                 lbuf[strlen (lbuf)-1] = '\000';
  79.                 strcat (bufr, lbuf);
  80.             }
  81.             if (NULL == fgets (lbuf, 128, mfile)) { error++; 
  82. break; }
  83.         }
  84.                 /* now store message in bufr away */
  85.         if (lod) {
  86.             j = strlen (bufr);
  87.             arp[k].s = calloc (j+1, 1);
  88.             if(arp[k].s == NULL) {
  89.                 fprintf(stderr,"can't alloc more memory, line 
  90. %u\n",k);
  91.                 return(ENOMEM);
  92.             }
  93.             strcpy (arp[k].s, bufr);
  94.         }
  95.         else arp[k].s = ¬hing[0];
  96.         arp[k].index = k;
  97.     }
  98.     return (error);
  99. }
  100.  
  101.  
  102.