home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / EVENTS / AEAM100.ZIP / AEAM.CPP < prev    next >
Text File  |  1994-04-06  |  5KB  |  262 lines

  1. /***********************************
  2.  
  3.          AEAM v1.0
  4.  
  5.      Copyright (c) 1994,
  6.    by Devin Carraway (AquaMaestro)
  7.  
  8.   Source may be freely distributed
  9.   as part of the original archive,
  10.   or as a component in your own
  11.   programs.
  12.  
  13.  ***********************************/
  14.  
  15.  
  16. #include <stdio.h>
  17. #include <conio.h>
  18. #include <string.h>
  19. #include <process.h>
  20. #include <io.h>
  21. #include <fcntl.h>
  22.  
  23. typedef struct {
  24.     char        newuserpw[21],
  25.             systempw[21],
  26.             msgsdir[81],
  27.             gfilesdir[81],
  28.             datadir[81],
  29.             dloadsdir[81],
  30.             ramdrive,
  31.             tempdir[81],
  32.             xmark,
  33.             regcode[83],
  34.             bbs_init_modem[51],
  35.             answer[21],
  36.             connect_300[21],
  37.             connect_1200[21],
  38.             connect_2400[21],
  39.             connect_9600[21],
  40.             connect_19200[21],
  41.             no_carrier[21],
  42.             ring[21],
  43.             terminal[21],
  44.             systemname[51],
  45.             systemphone[13],
  46.             sysopname[51],
  47.             executestr[51];
  48.     unsigned char    newusersl,
  49.             newuserdsl,
  50.             maxwaiting,
  51.             comport[5],
  52.             com_ISR[5],
  53.             primaryport,
  54.             newuploads,
  55.             closedsystem;
  56.     unsigned short    systemnumber,
  57.             baudrate[5],
  58.             com_base[5],
  59.             maxusers,
  60.             newuser_restrict,
  61.             sysconfig,
  62.             sysoplowtime,
  63.             sysophightime,
  64.             executetime;
  65.     float        req_ratio,
  66.             newusergold;
  67.     char         sl[1792],
  68.             autoval[50];
  69.     char        hangupphone[21],
  70.             pickupphone[21];
  71.     unsigned short  netlowtime,
  72.             nethightime;
  73.     char            connect_300_a[21],
  74.             connect_1200_a[21],
  75.             connect_2400_a[21],
  76.             connect_9600_a[21],
  77.             connect_19200_a[21];
  78.     char            arcs[400];
  79.     char            beginday_c[51],
  80.             logon_c[51];
  81.     short           userreclen,
  82.             waitingoffset,
  83.             inactoffset;
  84.     char            newuser_c[51];
  85.     unsigned long   wwiv_reg_number;
  86.     char            dial_prefix[21];
  87.     float           post_call_ratio;
  88.     char            upload_c[51];
  89.     char            dszbatchdl[81];
  90.     char            modem_type[9];
  91.     char            batchdir[81];
  92.     short           sysstatusoffset;
  93.     char            network_type;
  94.     short           fuoffset,
  95.             fsoffset,
  96.             fnoffset;
  97.     unsigned short  max_subs,
  98.             max_dirs,
  99.             qscn_len;
  100.     unsigned char   email_storage_type;
  101.     unsigned long   sysconfig1;
  102.     char            res[19];
  103. } configrec;
  104.  
  105.  
  106. configrec syscfg;
  107.  
  108. char a_msg[6][81], top_line[81], l_sidebar[81], r_sidebar[81],
  109.      bottom_line[81], text_color, name_color, end_color;
  110.  
  111. int clear_blanks;
  112.  
  113. int read_amsg(void);
  114. void write_amsg(void);
  115. void read_config(char *path);
  116. void read_cfg(char *path);
  117. unsigned char *stripcolors(unsigned char *instr);
  118.  
  119.  
  120. void main(int argc, char *argv[])
  121. {
  122.   directvideo=1;
  123.   printf("\r\n\n- AEAM v1.0\r\n\n");
  124.   read_config("CONFIG.DAT");
  125.   read_cfg((argc>=2)?argv[1]:"AEAM.CFG");
  126.   if (read_amsg()==-1) {
  127.     printf("% Automessage already converted.\r\n");
  128.     exit(1);
  129.   }
  130.   write_amsg();
  131. }
  132.  
  133. void read_config(char *path)
  134. {
  135.   char s[81];
  136.   int f,i;
  137.  
  138.   f=open(path,O_RDONLY | O_BINARY);
  139.   if (f<0) {
  140.     printf("* Couldn't open CONFIG.DAT.\r\n");
  141.     exit(1);
  142.   }
  143.   read(f,(void *) (&syscfg), sizeof(configrec));
  144.   close(f);
  145. }
  146.  
  147.  
  148. void read_cfg(char *path)
  149. {
  150.   char s[81];
  151.   int i;
  152.   FILE *f;
  153.  
  154.   if ((f=fopen(path,"rt"))==NULL) {
  155.     printf("* Couldn't open %s.\r\n",path);
  156.     exit(2);
  157.   }
  158.   fgets(s,150,f);
  159.   name_color=s[0];
  160.   fgets(s,150,f);
  161.   text_color=s[0];
  162.   fgets(s,150,f);
  163.   end_color=s[0];
  164.   fgets(s,150,f);
  165.   strcpy(top_line,s);
  166.   fgets(s,150,f);
  167.   strcpy(l_sidebar,s);
  168.   for (i=0; i<strlen(l_sidebar); i++)
  169.     if ((l_sidebar[i]=='\r') || (l_sidebar[i]=='\n'))
  170.       l_sidebar[i]=0;
  171.   fgets(s,150,f);
  172.   strcpy(r_sidebar,s);
  173.   for (i=0; i<strlen(r_sidebar); i++)
  174.     if ((r_sidebar[i]=='\r') || (r_sidebar[i]=='\n'))
  175.       r_sidebar[i]=0;
  176.   fgets(s,150,f);
  177.   strcpy(bottom_line,s);
  178.   for (i=0; i<strlen(bottom_line); i++)
  179.     if ((bottom_line[i]=='\r') || (bottom_line[i]=='\n'))
  180.       bottom_line[i]=0;
  181.   fgets(s,2,f);
  182.   clear_blanks=((s[0]=='Y') || (s[0]=='y') || (s[0]=='1'));
  183.   fclose(f);
  184. }
  185.  
  186.  
  187. int read_amsg(void)
  188. {
  189.   char s[81];
  190.   int i,i1;
  191.   FILE *f;
  192.  
  193.   sprintf(s,"%sAUTO.MSG",syscfg.gfilesdir);
  194.   if ((f=fopen(s,"rt"))==NULL) {
  195.     printf("* Couldn't open %s.\r\n",s);
  196.     exit(3);
  197.   }
  198.   for (i=0; i<4; i++) {
  199.     fgets(a_msg[i],80,f);
  200.     if ((i==0) && (a_msg[i][0]==3)) {
  201.       fclose(f);
  202.       return(-1);
  203.     }
  204.     for (i1=0; i1<strlen(a_msg[i]); i1++)
  205.       if ((a_msg[i][i1]=='\r') || (a_msg[i][i1]=='\n'))
  206.     a_msg[i][i1]=0;
  207.   }
  208.   fclose(f);
  209.   return(0);
  210. }
  211.  
  212. void write_amsg(void)
  213. {
  214.   char s[81];
  215.   int i,i1;
  216.   FILE *f;
  217.  
  218.   sprintf(s,"%sAUTO.MSG",syscfg.gfilesdir);
  219.   if ((f=fopen(s,"w"))==NULL) {
  220.     printf("* Couldn't open %s for writing.\r\n",s);
  221.     exit(4);
  222.   }
  223.   fprintf(f,"%c%s%c\n",name_color,a_msg[0],end_color);
  224.   fprintf(f,top_line);
  225.   for (i=0; i<3; i++) {
  226.       if ((clear_blanks) && (!a_msg[i+1][0]))
  227.     continue;
  228.       else
  229.     if (a_msg[i+1][0])
  230.       for (i1=0; i1<39-strlen(stripcolors(a_msg[i+1])); i1++)
  231.         strcat(a_msg[i+1]," ");
  232.       sprintf(s,"%s%c %-39.39s %s\n",
  233.            l_sidebar,text_color,a_msg[i+1],r_sidebar);
  234.       fputs(s,f);
  235.   }
  236.   fprintf(f,"%s%c\n",bottom_line,end_color);
  237.   fclose(f);
  238. }
  239.  
  240.  
  241. unsigned char *stripcolors(unsigned char *instr)
  242. {
  243.   static unsigned char s[161];
  244.   int i,i1;
  245.  
  246.   if (strlen(instr)==0)
  247.     return("");
  248.  
  249.   i=0; i1=0;
  250.   do {
  251.     if (instr[i]==3)
  252.       i++;
  253.     else {
  254.       s[i1]=instr[i];
  255.       i1++;
  256.     }
  257.     i++;
  258.   } while (i<strlen(instr));
  259.   s[i1]=0;
  260.   return(s);
  261. }
  262.