home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 10
/
Fresh_Fish_10_2352.bin
/
new
/
util
/
misc
/
ascsend
/
cli
/
source
/
ascsend.c
next >
Wrap
C/C++ Source or Header
|
1995-06-19
|
13KB
|
445 lines
#include "ascsend.h"
UBYTE *version = ASCSEND_VERSION;
LONG values[10] = {0L,0L,0L,0L,0L,0L,0L,0L,0L,0L};
struct RDArgs *args;
ULONG verzoegerung = 12;
ULONG v_char;
long __OSlibversion = 37;
ULONG filesize;
ULONG filepos;
UBYTE *filename;
UBYTE windowname[STRINGSIZE];
UBYTE *screenname;
ULONG waits;
LONG do_it = FALSE;
void __stdargs main(int argc,char **argv)
{
{
if(args = ReadArgs("FILE/A,WINDOW/K/M,SCREEN/K,WAIT/K/N,DELAY/K/N,DELAYCHAR/K/N,",values,NULL))
{
filename = (UBYTE *)(values[0]);
if(values[1])
{
UBYTE **p;
p = (UBYTE **)values[1];
while(*p)
{
strcat(windowname,*p);strcat(windowname," ");
p++;
}
windowname[strlen(windowname)-1] = 0;
}
if(values[2])screenname = (UBYTE *)values[2];
if(values[3]){ LONG *n = (LONG *)values[3];waits = ((LONG)*n > 0) ? (LONG)*n : 0 ;}
if(values[4]){ LONG *n = (LONG *)values[4];verzoegerung = ((LONG)*n > 0) ? (LONG)*n : 0 ;}
if(values[5]){ LONG *n = (LONG *)values[5];v_char = ((LONG)*n > 0) ? (LONG)*n : 0 ;}
if(screenname && windowname[0])printf("*ASCSEND FEHLER* SCREEN und WINDOW Parameter geht nicht !\n");
else
{
if(!(screenname || windowname[0]))do_it = TRUE;
if(waits)Delay(waits);
if(screenname) activate_screen(screenname);
if(windowname[0])activate_window(windowname);
if(do_it)Sendfile(filename,GET_A_FILE);
}
}
FreeArgs(args);
}
exit(0);
}
long __regargs Sendfile(UBYTE *filename,ULONG mode)
{
int rc = TRUE;
struct InputEvent *ie;
UBYTE buffer[STRINGSIZE];
UBYTE *filebuffer;
int Ldelay = FALSE;
ULONG stop = FALSE;
ULONG v_line;
ULONG v_z;
ULONG fpm;
v_line = verzoegerung;
v_z = v_char;
filepos = 0;
if(filebuffer = getfilebuffer(filename,mode))
{
while((getnextchar(filebuffer,buffer)) && (!stop))
{
*(buffer + 1) = 0;
switch(*buffer)
{
case '\n' : Ldelay = TRUE;
strcpy(buffer,"\\n");
break;
case '\r' : Ldelay = TRUE;
strcpy(buffer,"\\r");
break;
case '\t' : strcpy(buffer,"\\t");
break;
case '\\' : fpm = filepos;
getnextchar(filebuffer,buffer + 1);
*(buffer + 2) = 0;
{
int end = FALSE;
int p = 2;
ULONG v;
if((*(buffer + 1)=='d')||(*(buffer + 1)=='l')||(*(buffer + 1)=='c')||
(*(buffer + 1)=='n')||(*(buffer + 1)=='r')||(*(buffer + 1)=='t'))
{
do
{
if( (*(buffer + 1)=='n')||(*(buffer + 1)=='r')||(*(buffer + 1)=='t'))
{
end = TRUE;
}
else
{
getnextchar(filebuffer,buffer + p);
if(!(isdigit(*(buffer + p))) || (p >= 6))
{
end = TRUE;
*(buffer + p + 1) = 0;
v = atol(buffer + 2);
switch(*(buffer + 1))
{
case 'd' : Delay(v);
break;
case 'l' : v_line = v;
break;
case 'c' : v_z = v;
break;
default : break;
}
*buffer = 0;
filepos -= 1;
}
p++;
if(p >= (STRINGSIZE - 2))end = TRUE;
}
}
while(!end);
}
else
{
UBYTE t[2] = {0,0};
struct InputEvent ev;
if(*(buffer + 1) == '(')
{
getnextchar(filebuffer,buffer + 2);
getnextchar(filebuffer,buffer + 3);
getnextchar(filebuffer,buffer + 4);
getnextchar(filebuffer,buffer + 5);
if((*(buffer + 3) == 'm')&&(*(buffer + 5)==':'))
{
int p = 6;
int py;
int end = FALSE;
while(!end)
{
getnextchar(filebuffer,buffer + p);
if(!(isdigit(*(buffer + p))))
{
end = TRUE;
}
p++;
}
--p;
if(*(buffer + p) == ',')
{
p++;
py = p;
end = FALSE;
while(!end)
{
getnextchar(filebuffer,buffer + p);
if(!(isdigit(*(buffer + p))))
{
end = TRUE;
}
p++;
}
--p;
if(*(buffer + p) == ')')
{
ev.ie_Class = IECLASS_POINTERPOS;
ev.ie_NextEvent = NULL;
ev.ie_Qualifier = 0;
ev.ie_SubClass = 0;
ev.ie_TimeStamp.tv_secs = 0;
ev.ie_TimeStamp.tv_micro = 0;
ev.ie_Y = (WORD)atol(buffer + py);
ev.ie_X = (WORD)atol(buffer + 6);
switch(*(buffer + 2))
{
case 'l' : if(*(buffer + 4) == 'd')
ev.ie_Code = IECODE_LBUTTON ;
else
ev.ie_Code = IECODE_LBUTTON | IECODE_UP_PREFIX;
AddIEvents(&ev);
break;
case 'r' : if(*(buffer + 4) == 'd')
ev.ie_Code = IECODE_RBUTTON ;
else
ev.ie_Code = IECODE_RBUTTON | IECODE_UP_PREFIX;
AddIEvents(&ev);
break;
case 'm' : if(*(buffer + 4) == 'd')
ev.ie_Code = IECODE_MBUTTON ;
else
ev.ie_Code = IECODE_MBUTTON | IECODE_UP_PREFIX;
AddIEvents(&ev);
break;
}
*buffer = 0;
}
else
{
filepos =fpm;
strcpy(buffer,"\\\\");
if(ie = InvertString(buffer,NULL))
{
AddIEvents(ie);
FreeIEvents(ie);
*buffer = 0;
}
}
}
else
{
filepos = fpm;
strcpy(buffer,"\\\\");
if(ie = InvertString(buffer,NULL))
{
AddIEvents(ie);
FreeIEvents(ie);
*buffer = 0;
}
}
}
else
{
filepos = fpm;
strcpy(buffer,"\\\\");
if(ie = InvertString(buffer,NULL))
{
AddIEvents(ie);
FreeIEvents(ie);
*buffer = 0;
}
}
}
else
{
t[0] = *(buffer + 1);
strcpy(buffer,"\\\\");
if(ie = InvertString(buffe