home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 10 / Fresh_Fish_10_2352.bin / new / util / misc / ascsend / cli / source / ascsend.c next >
C/C++ Source or Header  |  1995-06-19  |  13KB  |  445 lines

  1. #include "ascsend.h"
  2.  
  3. UBYTE          *version = ASCSEND_VERSION; 
  4. LONG            values[10] = {0L,0L,0L,0L,0L,0L,0L,0L,0L,0L};
  5. struct  RDArgs *args;
  6. ULONG           verzoegerung = 12;
  7. ULONG           v_char;
  8. long          __OSlibversion = 37;
  9. ULONG          filesize;
  10. ULONG          filepos;
  11. UBYTE         *filename;
  12. UBYTE          windowname[STRINGSIZE];
  13. UBYTE         *screenname;
  14. ULONG          waits;
  15. LONG           do_it = FALSE;
  16.  
  17. void __stdargs main(int argc,char **argv)
  18. {
  19.  {
  20.   if(args = ReadArgs("FILE/A,WINDOW/K/M,SCREEN/K,WAIT/K/N,DELAY/K/N,DELAYCHAR/K/N,",values,NULL))
  21.   {
  22.    filename   = (UBYTE *)(values[0]);
  23.    if(values[1])
  24.    {
  25.     UBYTE **p;
  26.     p = (UBYTE **)values[1];
  27.     while(*p)
  28.     {
  29.      strcat(windowname,*p);strcat(windowname," ");
  30.      p++;
  31.     }
  32.     windowname[strlen(windowname)-1] = 0;
  33.    }
  34.    if(values[2])screenname = (UBYTE *)values[2];
  35.    if(values[3]){ LONG *n = (LONG *)values[3];waits = ((LONG)*n > 0) ? (LONG)*n : 0 ;}
  36.    if(values[4]){ LONG *n = (LONG *)values[4];verzoegerung = ((LONG)*n > 0) ? (LONG)*n : 0 ;}
  37.    if(values[5]){ LONG *n = (LONG *)values[5];v_char = ((LONG)*n > 0) ? (LONG)*n : 0 ;}
  38.  
  39.    if(screenname && windowname[0])printf("*ASCSEND FEHLER* SCREEN und WINDOW Parameter geht nicht !\n");  
  40.    else
  41.    {
  42.     if(!(screenname || windowname[0]))do_it = TRUE;
  43.     if(waits)Delay(waits);
  44.     if(screenname)   activate_screen(screenname);
  45.     if(windowname[0])activate_window(windowname);
  46.     if(do_it)Sendfile(filename,GET_A_FILE);
  47.    }
  48.   }
  49.   FreeArgs(args);
  50.  }
  51.  exit(0);
  52. }
  53.  
  54. long __regargs Sendfile(UBYTE *filename,ULONG mode)
  55. {
  56.  int rc = TRUE;
  57.  struct InputEvent *ie;
  58.  UBYTE buffer[STRINGSIZE];
  59.  UBYTE *filebuffer;
  60.  int Ldelay     = FALSE;
  61.  ULONG           stop = FALSE;
  62.  ULONG           v_line;
  63.  ULONG           v_z;
  64.  ULONG           fpm;
  65.  v_line = verzoegerung;
  66.  v_z = v_char;
  67.  filepos = 0;
  68.  if(filebuffer = getfilebuffer(filename,mode))
  69.  {
  70.   while((getnextchar(filebuffer,buffer)) && (!stop))
  71.   {
  72.    *(buffer + 1) = 0;
  73.    switch(*buffer)
  74.    {
  75.     case '\n' : Ldelay = TRUE;
  76.                 strcpy(buffer,"\\n");
  77.                 break;
  78.     case '\r' : Ldelay = TRUE;
  79.                 strcpy(buffer,"\\r");
  80.                 break;
  81.     case '\t' : strcpy(buffer,"\\t");
  82.                 break;
  83.     case '\\' : fpm = filepos;
  84.                 getnextchar(filebuffer,buffer + 1);
  85.                 *(buffer + 2) = 0;
  86.                 {
  87.                  int end = FALSE;
  88.                  int p = 2;
  89.                  ULONG v;
  90.                  if((*(buffer + 1)=='d')||(*(buffer + 1)=='l')||(*(buffer + 1)=='c')||
  91.                     (*(buffer + 1)=='n')||(*(buffer + 1)=='r')||(*(buffer + 1)=='t'))
  92.                  {
  93.                   do
  94.                   {
  95.                    if( (*(buffer + 1)=='n')||(*(buffer + 1)=='r')||(*(buffer + 1)=='t'))
  96.                    {
  97.                     end = TRUE;
  98.                    }
  99.                    else
  100.                    {
  101.                     getnextchar(filebuffer,buffer + p);
  102.                     if(!(isdigit(*(buffer + p))) || (p >= 6))
  103.                     {
  104.                      end = TRUE;
  105.                      *(buffer + p + 1) = 0;
  106.                      v = atol(buffer + 2);
  107.                      switch(*(buffer + 1))
  108.                      {
  109.                       case 'd' : Delay(v);
  110.                                  break;
  111.                       case 'l' : v_line = v;
  112.                                  break;
  113.                       case 'c' : v_z = v;
  114.                                  break;
  115.                       default  : break;
  116.                      }
  117.                      *buffer = 0;
  118.                      filepos -= 1;
  119.                     }
  120.                     p++;
  121.                     if(p >= (STRINGSIZE - 2))end = TRUE;
  122.                    }
  123.                   }
  124.                   while(!end); 
  125.                  }
  126.                  else
  127.                  {
  128.                   UBYTE t[2] = {0,0}; 
  129.                   struct InputEvent ev;
  130.                   if(*(buffer + 1) == '(')
  131.                   {
  132.                    getnextchar(filebuffer,buffer + 2);
  133.                    getnextchar(filebuffer,buffer + 3);
  134.                    getnextchar(filebuffer,buffer + 4);
  135.                    getnextchar(filebuffer,buffer + 5);
  136.                    if((*(buffer + 3) == 'm')&&(*(buffer + 5)==':'))
  137.                    {
  138.                     int p = 6;
  139.                     int py;
  140.                     int end = FALSE;
  141.                     while(!end)
  142.                     {
  143.                      getnextchar(filebuffer,buffer + p);
  144.                      if(!(isdigit(*(buffer + p))))
  145.                      {
  146.                       end = TRUE;
  147.                      }
  148.                      p++;
  149.                     }
  150.                     --p;
  151.                     if(*(buffer + p) == ',')
  152.                     {
  153.                      p++;
  154.                      py = p;
  155.                      end = FALSE;
  156.                      while(!end)
  157.                      {
  158.                       getnextchar(filebuffer,buffer + p);
  159.                       if(!(isdigit(*(buffer + p))))
  160.                       {
  161.                        end = TRUE;
  162.                       }
  163.                       p++;
  164.                      }
  165.                      --p;
  166.                      if(*(buffer + p) == ')')
  167.                      {
  168.                       ev.ie_Class = IECLASS_POINTERPOS;
  169.                       ev.ie_NextEvent = NULL;
  170.                       ev.ie_Qualifier = 0;
  171.                       ev.ie_SubClass  = 0;
  172.                       ev.ie_TimeStamp.tv_secs = 0;
  173.                       ev.ie_TimeStamp.tv_micro = 0;
  174.                       ev.ie_Y = (WORD)atol(buffer + py);
  175.                       ev.ie_X = (WORD)atol(buffer + 6);
  176.                       switch(*(buffer + 2))
  177.                       {
  178.                        case 'l' : if(*(buffer + 4) == 'd')
  179.                                    ev.ie_Code      = IECODE_LBUTTON ;
  180.                                   else
  181.                                     ev.ie_Code      = IECODE_LBUTTON | IECODE_UP_PREFIX;
  182.                                   AddIEvents(&ev);
  183.                                   break;
  184.                        case 'r' : if(*(buffer + 4) == 'd')
  185.                                    ev.ie_Code      = IECODE_RBUTTON ;
  186.                                   else
  187.                                     ev.ie_Code      = IECODE_RBUTTON | IECODE_UP_PREFIX;
  188.                                   AddIEvents(&ev);
  189.                                   break;
  190.                         case 'm' : if(*(buffer + 4) == 'd')
  191.                                    ev.ie_Code      = IECODE_MBUTTON ;
  192.                                   else
  193.                                     ev.ie_Code      = IECODE_MBUTTON | IECODE_UP_PREFIX;
  194.                                   AddIEvents(&ev);
  195.                                   break;
  196.                       }
  197.                       *buffer = 0;
  198.                      }
  199.                      else
  200.                      {
  201.                       filepos =fpm;
  202.                       strcpy(buffer,"\\\\");
  203.                       if(ie = InvertString(buffer,NULL))
  204.                       {
  205.                        AddIEvents(ie);
  206.                        FreeIEvents(ie);
  207.                        *buffer = 0;
  208.                       }
  209.                      }
  210.                     }
  211.                     else
  212.                     {
  213.                      filepos = fpm;
  214.                      strcpy(buffer,"\\\\");
  215.                      if(ie = InvertString(buffer,NULL))
  216.                      {
  217.                       AddIEvents(ie);
  218.                       FreeIEvents(ie);
  219.                       *buffer = 0;
  220.                      }
  221.                     }
  222.                    }
  223.                    else
  224.                    {
  225.                     filepos = fpm;
  226.                     strcpy(buffer,"\\\\");
  227.                     if(ie = InvertString(buffer,NULL))
  228.                     {
  229.                      AddIEvents(ie);
  230.                      FreeIEvents(ie);
  231.                      *buffer = 0;
  232.                     }
  233.                    }
  234.                   }
  235.                   else
  236.                   {
  237.                    t[0] = *(buffer + 1);
  238.                    strcpy(buffer,"\\\\");
  239.                    if(ie = InvertString(buffe