2022-07-28 18:29:51 +00:00
SUB RunTimeFunctions
LOCAL X1$
LOCAL O1$ ' "%o"
LOCAL D1$ ' "%.15G"
LOCAL D2$ ' "%.19LG"
LOCAL T0$ ' "%H:%M:%S"
LOCAL T1$ ' "%H"
LOCAL T2$ ' "%M"
LOCAL T3$ ' "%S"
LOCAL T4$ ' "%p"
LOCAL T5$ ' "%Y"
LOCAL T6$ ' "%m"
LOCAL T7$ ' "%d"
LOCAL T8$ ' "%A"
LOCAL T9$ ' "%w"
LOCAL T10$ ' "%j"
LOCAL T11$ ' "%V" [ISO week date standard (ISO-8601)]
LOCAL T12$ ' "%m/%d/%y"
LOCAL T13$ ' %A, %B %d, %Y [DAY OF WEEK, MONTH NAME, DAY, FULL YEAR]
LOCAL TDIR$
D1$ = VCHR$ ( 8 , 34 , 37 , 32 , 46 , 49 , 53 , 71 , 34 )
D2$ = VCHR$ ( 9 , 34 , 37 , 32 , 46 , 49 , 57 , 76 , 71 , 34 )
O1$ = VCHR$ ( 4 , 34 , 37 , 111 , 34 )
T0$ = VCHR$ ( 10 , 34 , 37 , 72 , 58 , 37 , 77 , 58 , 37 , 83 , 34 )
T1$ = VCHR$ ( 4 , 34 , 37 , 72 , 34 )
T2$ = VCHR$ ( 4 , 34 , 37 , 77 , 34 )
T3$ = VCHR$ ( 4 , 34 , 37 , 83 , 34 )
T4$ = VCHR$ ( 4 , 34 , 37 , 112 , 34 )
T5$ = VCHR$ ( 4 , 34 , 37 , 89 , 34 )
T6$ = VCHR$ ( 4 , 34 , 37 , 109 , 34 )
T7$ = VCHR$ ( 4 , 34 , 37 , 100 , 34 )
T8$ = VCHR$ ( 4 , 34 , 37 , 65 , 34 )
T9$ = VCHR$ ( 4 , 34 , 37 , 119 , 34 )
T10$ = VCHR$ ( 4 , 34 , 37 , 106 , 34 )
T11$ = VCHR$ ( 4 , 34 , 37 , 86 , 34 )
T12$ = VCHR$ ( 10 , 34 , 37 , 109 , 47 , 37 , 100 , 47 , 37 , 121 , 34 )
T13$ = VCHR$ ( 15 , 34 , 37 , 65 , 44 , 32 , 37 , 66 , 32 , 37 , 100 , 44 , 32 , 37 , 89 , 34 )
X1$ = VCHR$ ( 4 , 34 , 37 , 88 , 34 )
TDIR$ = ENC$ ( "/tmp/mbc.XXXXXXXX" )
'U1$ = VCHR$(7,37,39,42,46,42,32,102)
FPRINT Outfile , ""
FPRINT Outfile , "// *************************************************"
FPRINT Outfile , "// " + $ BCX_STR_RUNTIME
FPRINT Outfile , "// *************************************************"
FPRINT Outfile , ""
IF NoRT = TRUE THEN EXIT SUB
IF UseFlag THEN
IF Use_Turbo THEN
FPRINT Outfile , "char *BCX_TmpStr (size_t Bites)"
FPRINT Outfile , "{"
FPRINT Outfile , " static int StrCnt;"
FPRINT Outfile , " static char *StrFunc[" , TurboSize , "];"
FPRINT Outfile , " StrCnt=((StrCnt+1) &" , TurboSize -1 , ");"
FPRINT Outfile , " #if defined BCX_MAX_VAR_SIZE"
FPRINT Outfile , " if(Bites*sizeof(char)>BCX_MAX_VAR_SIZE)"
FPRINT Outfile , " {"
FPRINT Outfile , " printf(" ; ENC$ ( "Buffer Overflow caught in BCX_TmpStr - requested space of %d EXCEEDS %d\\n" ) ; ",(int)(Bites*sizeof(char)),BCX_MAX_VAR_SIZE);"
FPRINT Outfile , " abort();"
FPRINT Outfile , " }"
FPRINT Outfile , " #endif"
FPRINT Outfile , " StrFunc[StrCnt]=(char*)realloc(StrFunc[StrCnt],Bites + 128);"
FPRINT Outfile , " return (char*)memset(StrFunc[StrCnt],0,Bites+128);"
FPRINT Outfile , "}\n\n"
ELSE
FPRINT Outfile , "char *BCX_TmpStr (size_t Bites)"
FPRINT Outfile , "{"
FPRINT Outfile , " static int StrCnt;"
FPRINT Outfile , " static char *StrFunc[65535];"
FPRINT Outfile , " StrCnt=(StrCnt + 1) & 65535;"
FPRINT Outfile , " if(StrFunc[StrCnt]) free (StrFunc[StrCnt]);"
FPRINT Outfile , " #if defined BCX_MAX_VAR_SIZE"
FPRINT Outfile , " if(Bites*sizeof(char)>BCX_MAX_VAR_SIZE)"
FPRINT Outfile , " {"
FPRINT Outfile , " printf(" , ENC$ ( "Buffer Overflow caught in BCX_TmpStr - requested space of %d EXCEEDS %d\\n" ) , ",(int)(Bites*sizeof(char)),BCX_MAX_VAR_SIZE);"
FPRINT Outfile , " abort();"
FPRINT Outfile , " }"
FPRINT Outfile , " #endif"
FPRINT Outfile , " return StrFunc[StrCnt]=(char*)calloc(Bites+128,sizeof(char));"
FPRINT Outfile , "}\n\n"
END IF
END IF
IF Use_CopyFile THEN
FPRINT Outfile , "void CopyFile (char *InFile,char *TmpFile,int OverWrite)"
FPRINT Outfile , "{"
FPRINT Outfile , " #define BLOCKCOPYSIZE (10 * 1000*1024)"
FPRINT Outfile , " char* tmp=0;"
FPRINT Outfile , " UINT blocks=1;"
FPRINT Outfile , " UINT overage=0;"
FPRINT Outfile , " UINT i;"
FPRINT Outfile , " FILE *FP1,*FP2;"
FPRINT Outfile , " if(!OverWrite)"
FPRINT Outfile , " {"
FPRINT Outfile , " if(Exist(TmpFile)) return;"
FPRINT Outfile , " }"
FPRINT Outfile , " if(Exist(InFile))"
FPRINT Outfile , " {"
FPRINT Outfile , " UINT length = lof(InFile);"
FPRINT Outfile , " if(length > BLOCKCOPYSIZE)"
FPRINT Outfile , " {"
FPRINT Outfile , " blocks = length/BLOCKCOPYSIZE;"
FPRINT Outfile , " overage= length % BLOCKCOPYSIZE;"
FPRINT Outfile , " length = BLOCKCOPYSIZE;"
FPRINT Outfile , " }"
FPRINT Outfile , ""
FPRINT Outfile , " tmp=(char*)calloc(16+length,1);"
FPRINT Outfile , ""
FPRINT Outfile , " if((FP1=fopen(InFile," , ENC$ ( "rb" ) , "))==0)"
FPRINT Outfile , " {"
FPRINT Outfile , " fprintf(stderr," , ENC$ ( "Can't open file %s\\n" ) , ",InFile);"
FPRINT Outfile , " exit(1);"
FPRINT Outfile , " }"
FPRINT Outfile , " if((FP2=fopen(TmpFile," , ENC$ ( "wb+" ) , "))==0)"
FPRINT Outfile , " {"
FPRINT Outfile , " fprintf(stderr," , ENC$ ( "Can't open file %s\\n" ) , ",TmpFile);"
FPRINT Outfile , " exit(1);"
FPRINT Outfile , " }"
FPRINT Outfile , " for(i=0; i<blocks; i+=1)"
FPRINT Outfile , " {"
FPRINT Outfile , " fread(tmp,1,length,FP1);"
FPRINT Outfile , " fwrite(tmp,1,length,FP2);"
FPRINT Outfile , " }"
FPRINT Outfile , " if(overage>0)"
FPRINT Outfile , " {"
FPRINT Outfile , " fread(tmp,1,overage,FP1);"
FPRINT Outfile , " fwrite(tmp,1,overage,FP2);"
FPRINT Outfile , " }"
FPRINT Outfile , " fclose(FP2); fclose(FP1);"
FPRINT Outfile , " if(tmp) free(tmp);"
FPRINT Outfile , " struct stat st;"
FPRINT Outfile , " if(stat(InFile, &st) != -1)"
FPRINT Outfile , " chmod(TmpFile,st.st_mode);"
FPRINT Outfile , " }"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Str_Cmp THEN
FPRINT Outfile , "int str_cmp (char *a, char *b)"
FPRINT Outfile , "{"
FPRINT Outfile , " int counter=0;"
FPRINT Outfile , " for(;;)"
FPRINT Outfile , " {"
FPRINT Outfile , " if((a[counter]^b[counter]))"
FPRINT Outfile , " {"
FPRINT Outfile , " if((UINT) a[counter]>= (UINT) b[counter])"
FPRINT Outfile , " return 1;"
FPRINT Outfile , " return -1;"
FPRINT Outfile , " }"
FPRINT Outfile , " if(!a[counter]) return 0;"
FPRINT Outfile , " counter++;"
FPRINT Outfile , " }"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Eof THEN
FPRINT Outfile , "int EoF (FILE* stream)"
FPRINT Outfile , "{"
2022-07-28 19:40:08 +00:00
FPRINT Outfile , " int c, status = ((c = fgetc(stream)) == EOF);"
2022-07-28 18:29:51 +00:00
FPRINT Outfile , " ungetc(c,stream);"
FPRINT Outfile , " return status;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Cint THEN
FPRINT Outfile , "int Cint (double A)"
FPRINT Outfile , "{"
FPRINT Outfile , " return (A >=0 ? (int)(A+0.5) : (int)(A-0.5));"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Clng THEN
FPRINT Outfile , "long CLNG (double A)"
FPRINT Outfile , "{"
FPRINT Outfile , " float r=.5;"
FPRINT Outfile , " double a=A-(long)A;"
FPRINT Outfile , " if(A<0) { r=-.5; a=-a; }"
FPRINT Outfile , " if(((long)A % 2)==0&&a<=.5)"
FPRINT Outfile , " return (long)A;"
FPRINT Outfile , " else"
FPRINT Outfile , " return (long)(A+r);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Left THEN
FPRINT Outfile , "char *left (char *S, int length)"
FPRINT Outfile , "{"
FPRINT Outfile , " int tmplen = strlen(S);"
FPRINT Outfile , " if(length<1) return BCX_TmpStr(1);"
FPRINT Outfile , " if(length<tmplen) tmplen=length;"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(tmplen);"
FPRINT Outfile , " return (char*)memcpy(strtmp,S,tmplen);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Right THEN
FPRINT Outfile , "char *right (char *S, int length)"
FPRINT Outfile , "{"
FPRINT Outfile , " int tmplen = strlen(S);"
FPRINT Outfile , " char *BCX_RetStr = BCX_TmpStr(tmplen);"
FPRINT Outfile , " tmplen -= length;"
FPRINT Outfile , " if (tmplen<0) tmplen = 0;"
FPRINT Outfile , " return strcpy(BCX_RetStr, &S[tmplen]);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Rpad THEN
FPRINT Outfile , "char *rpad (char *a, int L, int c)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp;"
FPRINT Outfile , " int s = strlen(a);"
FPRINT Outfile , " if((L-s)<1) return a;"
FPRINT Outfile , " strtmp=BCX_TmpStr(L);"
FPRINT Outfile , " strcpy(strtmp,a);"
FPRINT Outfile , " memset(&strtmp[s],c,(L-s));"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Lpad THEN
FPRINT Outfile , "char *lpad (char *a, int L, int c)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp;"
FPRINT Outfile , " L=L-strlen(a);"
FPRINT Outfile , " if(L<1) return a;"
FPRINT Outfile , " strtmp = BCX_TmpStr(L);"
FPRINT Outfile , " memset(strtmp,c,L);"
FPRINT Outfile , " return strcat(strtmp,a);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Mid THEN
FPRINT Outfile , "char *mid (char *S, int start, int length)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp;"
FPRINT Outfile , " int tmplen = strlen(S);"
FPRINT Outfile , " if(start>tmplen||start<1) return BCX_TmpStr(1);"
FPRINT Outfile , " if (length<0 || length>(tmplen-start)+1)"
FPRINT Outfile , " length = (tmplen-start)+1;"
FPRINT Outfile , " strtmp = BCX_TmpStr(length);"
FPRINT Outfile , " return (char*)memcpy(strtmp,&S[start-1],length);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Trim THEN
FPRINT Outfile , "char *trim (char *S)"
FPRINT Outfile , "{"
FPRINT Outfile , " while(*S==32 || *S==9 || *S==10 || *S==11 || *S==13)"
' tab ,carriage return, vertical tab, newline, space
FPRINT Outfile , " S++;"
FPRINT Outfile , " int i = strlen(S);"
FPRINT Outfile , " while( i>0 && (S[i-1]==32 || S[i-1]==9 || S[i-1]==10"
FPRINT Outfile , " || S[i-1]==11 || S[i-1]==13))"
FPRINT Outfile , " i--;"
FPRINT Outfile , " char *strtmp=BCX_TmpStr(i);"
FPRINT Outfile , " return (char*)memcpy(strtmp,S,i);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Ltrim THEN
FPRINT Outfile , "char *ltrim (char *S, char c)"
FPRINT Outfile , "{"
FPRINT Outfile , " if(S[0]==0) return S;"
FPRINT Outfile , " while((*S==32 || *S==c) && *S !=0) S++;"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(strlen(S));"
FPRINT Outfile , " return strcpy(strtmp,S);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Rtrim THEN
FPRINT Outfile , "char *rtrim (char *S,char c)"
FPRINT Outfile , "{"
FPRINT Outfile , " if(S[0]==0) return S;"
FPRINT Outfile , " int i = strlen(S);"
FPRINT Outfile , " while(i>0 && (S[i-1]==c || S[i-1]==32))"
FPRINT Outfile , " i--;"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(i);"
FPRINT Outfile , " return (char*)memcpy(strtmp,S,i);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Strim THEN
FPRINT Outfile , "char *strim (char *src)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(strlen(src));"
FPRINT Outfile , " char *dst = strtmp;"
FPRINT Outfile , " while (isspace((unsigned char)*src)) src++;"
FPRINT Outfile , " do"
FPRINT Outfile , " {"
FPRINT Outfile , " while (*src && !isspace((unsigned char)*src)) *dst++ = *src++;"
FPRINT Outfile , " if (*src)"
FPRINT Outfile , " {"
FPRINT Outfile , " *dst++ = *src++;"
FPRINT Outfile , " while (isspace((unsigned char)*src)) src++;"
FPRINT Outfile , " }"
FPRINT Outfile , " } while (*src);"
FPRINT Outfile , " if (isspace((unsigned char)*(--dst))) *dst = 0;"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Command THEN
FPRINT Outfile , "char *command (int nArg)"
FPRINT Outfile , " {"
FPRINT Outfile , " int i = 0;"
FPRINT Outfile , " char *retstr=BCX_TmpStr(1);"
FPRINT Outfile , " if(nArg < i) // return entire commandline"
FPRINT Outfile , " {"
FPRINT Outfile , " retstr = BCX_TmpStr(G_argc * 2048);"
FPRINT Outfile , " for(i=1; i < G_argc; i++)"
FPRINT Outfile , " {"
FPRINT Outfile , " strcat(retstr, G_argv[i]);"
FPRINT Outfile , " strcat(retstr, SPC);"
FPRINT Outfile , " }"
FPRINT Outfile , " }"
FPRINT Outfile , " else if(nArg < G_argc)"
FPRINT Outfile , " {"
FPRINT Outfile , " retstr = BCX_TmpStr(strlen(G_argv[nArg]) + 1);"
FPRINT Outfile , " strcpy(retstr, G_argv[nArg]);"
FPRINT Outfile , " }"
FPRINT Outfile , " return retstr;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Extract THEN
FPRINT Outfile , "char *extract (char *mane, char *match)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *a;"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(strlen(mane));"
FPRINT Outfile , " if(*match!=0)"
FPRINT Outfile , " {"
FPRINT Outfile , " a=_strstr_(mane,match);"
FPRINT Outfile , " if(a) return (char*)memcpy(strtmp,mane,a-mane);"
FPRINT Outfile , " }"
FPRINT Outfile , " return strcpy(strtmp,mane);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Remain THEN
FPRINT Outfile , "char *remain (char *mane, char *mat)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *p = strstr(mane,mat);"
FPRINT Outfile , " if(p)"
FPRINT Outfile , " {"
FPRINT Outfile , " p+=(strlen(mat));"
FPRINT Outfile , " return p;"
FPRINT Outfile , " }"
FPRINT Outfile , " return mane;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Replace THEN
FPRINT Outfile , "char *replace (char *src, char *pat, char *rep)"
FPRINT Outfile , "{"
FPRINT Outfile , " size_t patsz, repsz, tmpsz, delta;"
FPRINT Outfile , " char *strtmp, *p, *q, *r;"
FPRINT Outfile , " if (!pat || !*pat)"
FPRINT Outfile , " {"
FPRINT Outfile , " strtmp = BCX_TmpStr(strlen(src));"
FPRINT Outfile , " if (!strtmp) return NULL;"
FPRINT Outfile , " return strcpy(strtmp, src);"
FPRINT Outfile , " }"
FPRINT Outfile , " repsz = strlen(rep);"
FPRINT Outfile , " patsz = strlen(pat);"
FPRINT Outfile , " for (tmpsz=0, p=src; (q=_strstr_(p,pat))!=0; p=q+patsz)"
FPRINT Outfile , " tmpsz += (size_t) (q - p) + repsz;"
FPRINT Outfile , " tmpsz += strlen(p);"
FPRINT Outfile , " strtmp = BCX_TmpStr(tmpsz);"
FPRINT Outfile , " if (!strtmp) return NULL;"
FPRINT Outfile , " for (r=strtmp,p=src; (q=_strstr_(p,pat))!=0;p=q+patsz)"
FPRINT Outfile , " {"
FPRINT Outfile , " delta = (size_t) (q-p);"
FPRINT Outfile , " memcpy(r,p,delta); r += delta;"
FPRINT Outfile , " strcpy(r,rep); r += repsz;"
FPRINT Outfile , " }"
FPRINT Outfile , " strcpy(r,p);"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Reverse THEN
FPRINT Outfile , "char *reverse (char *s)"
FPRINT Outfile , "{"
FPRINT Outfile , " int j=strlen(s);"
FPRINT Outfile , " char *rstr = BCX_TmpStr(j);"
FPRINT Outfile , " while(j) rstr[--j] = *(s++);"
FPRINT Outfile , " return rstr;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Findfirst THEN
FPRINT Outfile , "char *findfirst (char *filespec, FILE_FIND_DATA *FindData)"
FPRINT Outfile , "{"
FPRINT Outfile , " struct dirent *dp;"
FPRINT Outfile , " struct stat st;"
FPRINT Outfile , ""
FPRINT Outfile , " if(FindData->FileHandle)"
FPRINT Outfile , " closedir(FindData->FileHandle);"
FPRINT Outfile , ""
FPRINT Outfile , " strcpy(FindData->path, BcxSplitPath(filespec, FDRV|FPATH));"
FPRINT Outfile , " strcpy(FindData->cFileSpec,BcxSplitPath(filespec, FNAME|FEXT));"
FPRINT Outfile , " if(*FindData->path==0) strcpy(FindData->path, " , ENC$ ( "." ) , ");"
FPRINT Outfile , ""
FPRINT Outfile , " FindData->FileHandle=opendir(FindData->path);"
FPRINT Outfile , ""
FPRINT Outfile , " while(FindData->FileHandle)"
FPRINT Outfile , " {"
FPRINT Outfile , " dp=readdir(FindData->FileHandle);"
FPRINT Outfile , " if(dp==NULL) break;"
FPRINT Outfile , ""
FPRINT Outfile , " if(like(dp->d_name,FindData->cFileSpec))"
FPRINT Outfile , " {"
FPRINT Outfile , " strcpy(FindData->cFileName,dp->d_name);"
FPRINT Outfile , " lstat(join(2,FindData->path,dp->d_name), &st);"
FPRINT Outfile , " FindData->dwFileAttributes = st.st_mode;"
FPRINT Outfile , " return FindData->cFileName;"
FPRINT Outfile , " }"
FPRINT Outfile , " }"
FPRINT Outfile , ""
FPRINT Outfile , " *FindData->cFileName=0;"
FPRINT Outfile , " return FindData->cFileName;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Findnext THEN
FPRINT Outfile , "char *findnext (FILE_FIND_DATA *FindData)"
FPRINT Outfile , "{"
FPRINT Outfile , " struct dirent *dp;"
FPRINT Outfile , " struct stat st;"
FPRINT Outfile , ""
FPRINT Outfile , " while(FindData->FileHandle)"
FPRINT Outfile , " {"
FPRINT Outfile , " dp=readdir(FindData->FileHandle);"
FPRINT Outfile , " if(dp==NULL) break;"
FPRINT Outfile , ""
FPRINT Outfile , " if(like(dp->d_name,FindData->cFileSpec))"
FPRINT Outfile , " {"
FPRINT Outfile , " strcpy(FindData->cFileName,dp->d_name);"
FPRINT Outfile , " lstat(join(2,FindData->path,dp->d_name), &st);"
FPRINT Outfile , " FindData->dwFileAttributes = st.st_mode;"
FPRINT Outfile , " return FindData->cFileName;"
FPRINT Outfile , " }"
FPRINT Outfile , " }"
FPRINT Outfile , ""
FPRINT Outfile , " *FindData->cFileName=0;"
FPRINT Outfile , " return FindData->cFileName;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Ucase THEN
FPRINT Outfile , "char *ucase (char *S)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(strlen(S));"
FPRINT Outfile , " return _strupr_(strcpy(strtmp,S));"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Lcase THEN
FPRINT Outfile , "char *lcase (char *S)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(strlen(S));"
FPRINT Outfile , " return _strlwr_(strcpy(strtmp,S));"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Mcase THEN
FPRINT Outfile , "char *mcase (char *S)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(strlen(S)+1);"
FPRINT Outfile , " char *s = strtmp;"
FPRINT Outfile , " _strlwr_(strcpy(strtmp,S));"
FPRINT Outfile , " while(*s)"
FPRINT Outfile , " {"
FPRINT Outfile , " if(islower(*s))"
FPRINT Outfile , " {"
FPRINT Outfile , " *s-=32;"
FPRINT Outfile , " while(isalpha(*++s));"
FPRINT Outfile , " }"
FPRINT Outfile , " s++;"
FPRINT Outfile , " }"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Remove THEN
FPRINT Outfile , "char *RemoveStr (char *a, char *b)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp, *p, *d;"
FPRINT Outfile , " int tmplen;"
FPRINT Outfile , " strtmp = d = BCX_TmpStr(strlen(a));"
FPRINT Outfile , " if(!b || !*b) return strcpy(strtmp,a);"
FPRINT Outfile , " p=_strstr_(a,b); tmplen = strlen(b);"
FPRINT Outfile , " while(p)"
FPRINT Outfile , " {"
FPRINT Outfile , " memcpy(d,a,p-a);"
FPRINT Outfile , " d+= (p-a);"
FPRINT Outfile , " a=p+tmplen;"
FPRINT Outfile , " p=_strstr_(a,b);"
FPRINT Outfile , " }"
FPRINT Outfile , " strcpy(d,a);"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_IRemove THEN
FPRINT Outfile , "char *IRemoveStr (char *a, char *b)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp, *p, *d;"
FPRINT Outfile , " int tmplen;"
FPRINT Outfile , " strtmp = d = BCX_TmpStr(strlen(a));"
FPRINT Outfile , " if(!b || !*b) return strcpy(strtmp,a);"
FPRINT Outfile , " p=_stristr_(a,b); tmplen = strlen(b);"
FPRINT Outfile , " while(p)"
FPRINT Outfile , " {"
FPRINT Outfile , " memcpy(d,a,p-a);"
FPRINT Outfile , " d+= (p-a);"
FPRINT Outfile , " a=p+tmplen;"
FPRINT Outfile , " p=_stristr_(a,b);"
FPRINT Outfile , " }"
FPRINT Outfile , " strcpy(d,a);"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Ins THEN
FPRINT Outfile , "char *ins (char *S, int i, char *a)"
FPRINT Outfile , "{"
FPRINT Outfile , " int j = strlen(S);"
FPRINT Outfile , " if(i<1 || i>j+1) return S;"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(j + strlen(a));"
FPRINT Outfile , " memcpy(strtmp,S,--i);"
FPRINT Outfile , " strcpy(&strtmp[i],a);"
FPRINT Outfile , " return strcat(strtmp,&S[i]);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Del THEN
FPRINT Outfile , "char *del (char *S, int i, int j)"
FPRINT Outfile , "{"
FPRINT Outfile , " int ln = strlen(S);"
FPRINT Outfile , " if(i<1 || i>ln) return S;"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(ln);"
FPRINT Outfile , " memcpy(strtmp,S,--i);"
FPRINT Outfile , " return strcat(strtmp,&S[i+j]);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Str THEN
FPRINT Outfile , "char *str (double d)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(16);"
FPRINT Outfile , " sprintf(strtmp," ; D1$ ; ",d);"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Strl THEN
FPRINT Outfile , "char *strl (long double d)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(27);"
FPRINT Outfile , " sprintf(strtmp," ; D2$ ; ",d);"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Curdir THEN
FPRINT Outfile , "char *curdir (void)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(2048);"
FPRINT Outfile , " char *res=getcwd(strtmp, 1024);"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Hex THEN
FPRINT Outfile , "char *hex (int a)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(16);"
FPRINT Outfile , " sprintf(strtmp," ; enc$ ( "%02X" ) ; ",a);"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Tempdir THEN
FPRINT Outfile , "char *tempdir (void)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(2048);"
FPRINT Outfile , " if(!Exist(" ; enc$ ( "/tmp/mbc.compiler" ) ; ")) {"
FPRINT Outfile , " mkdir (" ; enc$ ( "/tmp/mbc.compiler" ) ; ",0755);"
FPRINT Outfile , " }"
FPRINT Outfile , " strcpy(strtmp," ; enc$ ( "/tmp/mbc.compiler" ) ; ");"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Sysdir THEN
FPRINT Outfile , "char *sysdir (void)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(2048);"
FPRINT Outfile , " GetSystemDirectory (strtmp,2048);"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Repeat THEN
FPRINT Outfile , "char *repeat (int count, char *a)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp = BCX_TmpStr((1+count)*strlen(a));"
FPRINT Outfile , " while(count-->0) strtmp = strcat(strtmp, a);"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_String THEN
FPRINT Outfile , "char *stringx (int count, int a)"
FPRINT Outfile , "{"
FPRINT Outfile , " if(count<1) return BCX_TmpStr(1);"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(count);"
FPRINT Outfile , " return (char*)memset(strtmp,a,count);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Shell THEN
FPRINT Outfile , "void Shell (char *cmd)"
FPRINT Outfile , "{"
FPRINT Outfile , " int res=system(cmd);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Space THEN
FPRINT Outfile , "char *space (int count)"
FPRINT Outfile , "{"
FPRINT Outfile , " if(count<1) return BCX_TmpStr(1);"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(count);"
FPRINT Outfile , " return (char*)memset(strtmp,32,count);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Time THEN
FPRINT Outfile , "char *timef (int t)"
FPRINT Outfile , "{"
FPRINT Outfile , " time_t elapse_time;"
FPRINT Outfile , " struct tm *tp;"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(256);"
FPRINT Outfile , " time (&elapse_time);"
FPRINT Outfile , " tp = localtime(&elapse_time);"
FPRINT Outfile , " switch (t)"
FPRINT Outfile , " {"
FPRINT Outfile , " case 0:"
FPRINT Outfile , " strftime(strtmp,256," , T0$ , ",tp); break;"
FPRINT Outfile , " case 1:"
FPRINT Outfile , " strftime(strtmp,256," , T1$ , ",tp); break;"
FPRINT Outfile , " case 2:"
FPRINT Outfile , " strftime(strtmp,256," , T2$ , ",tp); break;"
FPRINT Outfile , " case 3:"
FPRINT Outfile , " strftime(strtmp,256," , T3$ , ",tp); break;"
FPRINT Outfile , " case 4:"
FPRINT Outfile , " strftime(strtmp,256," , T4$ , ",tp); break;"
FPRINT Outfile , " case 5:"
FPRINT Outfile , " strftime(strtmp,256," , T5$ , ",tp); break;"
FPRINT Outfile , " case 6:"
FPRINT Outfile , " strftime(strtmp,256," , T6$ , ",tp); break;"
FPRINT Outfile , " case 7:"
FPRINT Outfile , " strftime(strtmp,256," , T7$ , ",tp); break;"
FPRINT Outfile , " case 8:"
FPRINT Outfile , " strftime(strtmp,256," , T8$ , ",tp); break;"
FPRINT Outfile , " case 9:"
FPRINT Outfile , " strftime(strtmp,256," , T9$ , ",tp); break;"
FPRINT Outfile , " case 10:"
FPRINT Outfile , " strftime(strtmp,256," , T10$ , ",tp); break;"
FPRINT Outfile , " case 11:"
FPRINT Outfile , " strftime(strtmp,256," , T11$ , ",tp); break;"
FPRINT Outfile , " case 12:"
FPRINT Outfile , " strftime(strtmp,256," , T12$ , ",tp); break;"
FPRINT Outfile , " case 13:"
FPRINT Outfile , " strftime(strtmp,256," , T13$ , ",tp); break;"
FPRINT Outfile , " }"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Enclose THEN
FPRINT Outfile , "char *enc (char *A, int L, int R)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *BCX_RetStr = BCX_TmpStr(strlen(A)+3);"
FPRINT Outfile , " if(L==0) L=34;"
FPRINT Outfile , " if(R==0) R=L;"
FPRINT Outfile , " sprintf(BCX_RetStr," , ENC$ ( "%c%s%c%s" ) , ",L,A,R," , ENC$ ( "\0" ) , ");"
FPRINT Outfile , " return BCX_RetStr;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Chr THEN
FPRINT Outfile , "char *chr (int a,int b,int c,int d,int e,int f,int g,int h,int i,int j)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(11);"
FPRINT Outfile , " strtmp[0] = a;"
FPRINT Outfile , " strtmp[1] = b;"
FPRINT Outfile , " strtmp[2] = c;"
FPRINT Outfile , " strtmp[3] = d;"
FPRINT Outfile , " strtmp[4] = e;"
FPRINT Outfile , " strtmp[5] = f;"
FPRINT Outfile , " strtmp[6] = g;"
FPRINT Outfile , " strtmp[7] = h;"
FPRINT Outfile , " strtmp[8] = i;"
FPRINT Outfile , " strtmp[9] = j;"
FPRINT Outfile , " strtmp[10] = 0;"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_VChr THEN
FPRINT Outfile , "char *vchr(int charcount, ...)"
FPRINT Outfile , "{"
FPRINT Outfile , " int c = 0, i = charcount;"
FPRINT Outfile , " char *s_ = BCX_TmpStr(charcount + 1);"
FPRINT Outfile , " va_list marker;"
FPRINT Outfile , " s_[i] = 0;"
FPRINT Outfile , " va_start(marker, charcount);"
FPRINT Outfile , " while(i-- > 0) s_[c++] = va_arg(marker,int);"
FPRINT Outfile , " va_end(marker);"
FPRINT Outfile , " return s_;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Join THEN
FPRINT Outfile , "char * join(int n, ...)"
FPRINT Outfile , "{"
FPRINT Outfile , " int i = n, tmplen = 0;"
FPRINT Outfile , " char *strtmp, *s_;"
FPRINT Outfile , ""
FPRINT Outfile , " va_list marker;"
FPRINT Outfile , " va_start(marker, n); // Initialize variable arguments"
FPRINT Outfile , " while(i-- > 0)"
FPRINT Outfile , " {"
FPRINT Outfile , " s_ = va_arg(marker, char *);"
FPRINT Outfile , " if(s_) tmplen += strlen(s_);"
FPRINT Outfile , " }"
FPRINT Outfile , " strtmp = BCX_TmpStr(tmplen);"
FPRINT Outfile , " va_end(marker); // Reset variable arguments"
FPRINT Outfile , " i = n;"
FPRINT Outfile , " va_start(marker, n); // Initialize variable arguments"
FPRINT Outfile , " while(i-- > 0)"
FPRINT Outfile , " {"
FPRINT Outfile , " s_ = va_arg(marker, char *);"
FPRINT Outfile , " if(s_) strcat(strtmp, s_);"
FPRINT Outfile , " }"
FPRINT Outfile , " va_end(marker); // Reset variable arguments"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Environ THEN
FPRINT Outfile , "char* Environ(char *S)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp, *tmp;"
FPRINT Outfile , ""
FPRINT Outfile , " tmp = getenv(S);"
FPRINT Outfile , " if(tmp != NULL) {"
FPRINT Outfile , " strtmp = BCX_TmpStr(strlen(tmp)+1);"
FPRINT Outfile , " return strcpy(strtmp, tmp);"
FPRINT Outfile , " }"
FPRINT Outfile , " return BCX_TmpStr(1);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Oct THEN
FPRINT Outfile , "char *oct (int a)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(2048);"
FPRINT Outfile , " sprintf(strtmp," ; O1$ ; ",a);"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Bin THEN
FPRINT Outfile , "char* Bin(int number)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(2048);"
FPRINT Outfile , " itoa(number,strtmp,2);"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Pause THEN
FPRINT Outfile , "void Pause(void)"
FPRINT Outfile , "{"
FPRINT Outfile , " printf(" , ENC$ ( "\\n%s\\n" ) , "," , ENC$ ( "Press any key to continue . . ." ) , ");"
FPRINT Outfile , " _getch_(TRUE);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Keypress THEN
FPRINT Outfile , "int keypress(void)"
FPRINT Outfile , "{"
FPRINT Outfile , " return _getch_(TRUE);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Inkey THEN
FPRINT Outfile , "char* inkey(void)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(2);"
FPRINT Outfile , " strtmp[0] = _getch_(FALSE);"
FPRINT Outfile , " if(strtmp[0] == -1) strtmp[0] = 0;"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_InkeyD THEN
FPRINT Outfile , "int inkeyd(void)"
FPRINT Outfile , "{"
FPRINT Outfile , " return _getch_(TRUE);"
FPRINT Outfile , "}\n\n"
END IF
'/***** 2010-12-08 Added to support INSTAT -AIR *****/
IF Use_Instat THEN
FPRINT Outfile , "int kbhit(void)"
FPRINT Outfile , "{"
FPRINT Outfile , " struct termios oldt, newt;"
FPRINT Outfile , " int ch;"
FPRINT Outfile , " int oldf;"
FPRINT Outfile , " tcgetattr(STDIN_FILENO, &oldt);"
FPRINT Outfile , " newt = oldt;"
FPRINT Outfile , " newt.c_lflag &= ~(ICANON | ECHO);"
FPRINT Outfile , " tcsetattr(STDIN_FILENO, TCSANOW, &newt);"
FPRINT Outfile , " oldf = fcntl(STDIN_FILENO, F_GETFL, 0);"
FPRINT Outfile , " fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK);"
FPRINT Outfile , " ch = getchar();"
FPRINT Outfile , " tcsetattr(STDIN_FILENO, TCSANOW, &oldt);"
FPRINT Outfile , " fcntl(STDIN_FILENO, F_SETFL, oldf);"
FPRINT Outfile , " if(ch != EOF)"
FPRINT Outfile , " {"
FPRINT Outfile , " ungetc(ch, stdin);"
FPRINT Outfile , " return 1;"
FPRINT Outfile , " }"
FPRINT Outfile , " return 0;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_GetCh THEN
FPRINT Outfile , "int _getch_(int waitkey)"
FPRINT Outfile , "{"
FPRINT Outfile , " struct termios initial_settings, new_settings;"
FPRINT Outfile , " unsigned char ch;"
FPRINT Outfile , ""
FPRINT Outfile , " tcgetattr(0,&initial_settings);"
FPRINT Outfile , " new_settings = initial_settings;"
FPRINT Outfile , " new_settings.c_lflag &= ~ICANON;"
FPRINT Outfile , " new_settings.c_lflag &= ~ECHO;"
FPRINT Outfile , " new_settings.c_lflag &= ~ISIG;"
FPRINT Outfile , " new_settings.c_cc[VMIN] = waitkey;"
FPRINT Outfile , " new_settings.c_cc[VTIME] = 0;"
FPRINT Outfile , " tcsetattr(0, TCSANOW, &new_settings);"
FPRINT Outfile , ""
FPRINT Outfile , " //read(0,&ch,1);"
FPRINT Outfile , " ch = getchar();"
FPRINT Outfile , " tcsetattr(0, TCSANOW, &initial_settings);"
FPRINT Outfile , " return ch;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Now THEN
FPRINT Outfile , "char *now (void)"
FPRINT Outfile , "{"
FPRINT Outfile , " time_t elapse_time;"
FPRINT Outfile , " struct tm *tp;"
FPRINT Outfile , " char *strtmp = BCX_TmpStr(2048);"
FPRINT Outfile , " time(&elapse_time);"
FPRINT Outfile , " tp=localtime(&elapse_time);"
FPRINT Outfile , " strftime(strtmp,256," , ENC$ ( "%m/%d/%y %I:%M:%S: %p" ) , ",tp);"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}"
END IF
IF Use_AppExePath THEN
FPRINT Outfile , "char *AppExePath (void)"
FPRINT Outfile , "{"
FPRINT Outfile , " char fullpath[MAX_PATH];"
FPRINT Outfile , " int length;"
! # if defined ( __APPLE__ )
FPRINT Outfile , " pid_t pid = getpid();"
FPRINT Outfile , " length = proc_pidpath (pid, fullpath, sizeof(fullpath));"
! # else
FPRINT Outfile , " length = readlink(" , ENC$ ( "/proc/self/exe" ) , ", fullpath, MAX_PATH);"
! # endif
FPRINT Outfile , " if(length < 1) return BCX_TmpStr(1);"
FPRINT Outfile , ""
FPRINT Outfile , " fullpath[length] = 0;"
FPRINT Outfile , " return BcxSplitPath(fullpath, FDRV|FPATH);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_AppExeName THEN
FPRINT Outfile , "char *AppExeName (void)"
FPRINT Outfile , "{"
FPRINT Outfile , " return BcxSplitPath(G_argv[0], FNAME|FEXT);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_TempFileName THEN
FPRINT Outfile , "char * TempFileName (char *dr, char *prefix)"
FPRINT Outfile , "{"
FPRINT Outfile , " static unsigned int count;"
FPRINT Outfile , " char *f, *tmpstr = BCX_TmpStr(MAX_PATH);"
FPRINT Outfile , " int i, length;"
FPRINT Outfile , ""
FPRINT Outfile , " if(!count) srand(time(0));"
FPRINT Outfile , ""
FPRINT Outfile , " if(dr) strcpy(tmpstr, dr);"
FPRINT Outfile , " length = strlen(tmpstr);"
FPRINT Outfile , " if(length && (tmpstr[length-1] != '\\\\' && tmpstr[length-1] != '/'))"
FPRINT Outfile , " tmpstr[length++] = '/';"
FPRINT Outfile , " if(prefix) strcpy(&tmpstr[length], prefix);"
FPRINT Outfile , " f = &tmpstr[strlen(tmpstr)];"
FPRINT Outfile , ""
FPRINT Outfile , " do {"
FPRINT Outfile , " count++;"
FPRINT Outfile , " for(i=0; i<5; i+=1)"
FPRINT Outfile , " {"
FPRINT Outfile , " do {"
FPRINT Outfile , " f[i]=(char)(rnd()*122);"
FPRINT Outfile , " }while((f[i]<65)||(f[i]>90&&f[i]<97));"
FPRINT Outfile , " }"
FPRINT Outfile , " snprintf(&f[5],3," , ENC$ ( "%x" ) , ", count);"
FPRINT Outfile , " } while (Exist(tmpstr));"
FPRINT Outfile , ""
FPRINT Outfile , " return tmpstr;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Boolstr THEN
FPRINT Outfile , "char * BoolStr (int a)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *BCX_RetStr=BCX_TmpStr(5);"
FPRINT Outfile , " if(a) return strcpy(BCX_RetStr," , ENC$ ( "True" ) , ");"
FPRINT Outfile , " return strcpy(BCX_RetStr," , ENC$ ( "False" ) , ");"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Using THEN
FPRINT Outfile , "char *Using (char *Mask, double Num)"
FPRINT Outfile , "{"
FPRINT Outfile , " int Spaces = 0;"
FPRINT Outfile , " int CntDec = 0;"
FPRINT Outfile , " int Decimals = 0;"
FPRINT Outfile , " int Dollar = 0;"
FPRINT Outfile , " char* BCX_RetStr = BCX_TmpStr(512);"
FPRINT Outfile , " char Buf_1[512]={0};"
FPRINT Outfile , " char* p = Mask;"
FPRINT Outfile , " char* r;"
FPRINT Outfile , " int len;"
FPRINT Outfile , ""
FPRINT Outfile , " while (*p)"
FPRINT Outfile , " {"
FPRINT Outfile , " if (*p == 36) Dollar++;"
FPRINT Outfile , " if (*p == 32) Spaces++;"
FPRINT Outfile , " if ((*p == 32 || *p == 35)&& CntDec) Decimals++;"
FPRINT Outfile , " if (*p == 46) CntDec = 1;"
FPRINT Outfile , " p++;"
FPRINT Outfile , " }"
FPRINT Outfile , " sprintf(Buf_1," , ENC$ ( "%1.*f" ) , ",Decimals,Num);"
FPRINT Outfile , ""
FPRINT Outfile , " len = strlen(Buf_1)-Decimals-(Decimals>0?1:0);"
FPRINT Outfile , " r = BCX_RetStr+Dollar+Spaces;"
FPRINT Outfile , " p = Buf_1;"
FPRINT Outfile , " while (*p)"
FPRINT Outfile , " {"
FPRINT Outfile , " *r++ = *p++;"
FPRINT Outfile , " if (--len>2 && *(p-1) != '-' && len % 3 == 0)"
FPRINT Outfile , " {"
FPRINT Outfile , " *r++ = ',';"
FPRINT Outfile , " }"
FPRINT Outfile , " }"
FPRINT Outfile , " if(Dollar) BCX_RetStr[Spaces]=36;"
FPRINT Outfile , " if(Spaces) memset(BCX_RetStr,32,Spaces);"
FPRINT Outfile , ""
FPRINT Outfile , " return BCX_RetStr;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_SearchPath THEN
FPRINT Outfile , "char *SEARCHPATH (char *szFile)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *BCX_RetStr=BCX_TmpStr(MAX_PATH+1);"
FPRINT Outfile , " PCHAR lpbs=0;"
FPRINT Outfile , " SearchPath(0,szFile,0,MAX_PATH,BCX_RetStr,&lpbs);"
FPRINT Outfile , " if(lpbs) *lpbs=0;"
FPRINT Outfile , " return BCX_RetStr;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Instrrev THEN
FPRINT Outfile , "int InstrRev (char *s, char *p, int os, int sens)"
FPRINT Outfile , "{"
FPRINT Outfile , " int sl, pl, ox;"
FPRINT Outfile , " int (*cmp)(const char *, const char *, size_t );"
FPRINT Outfile , ""
FPRINT Outfile , " if (!s || !p) return 0;"
FPRINT Outfile , " sl = strlen(s); pl = strlen(p);"
FPRINT Outfile , " if (os > sl || sl == 0 || pl == 0 || (ox = sl - pl) < 0)"
FPRINT Outfile , " return 0;"
FPRINT Outfile , ""
FPRINT Outfile , " if (os <= 0) "
FPRINT Outfile , " os = ox ;"
FPRINT Outfile , " else if(os >= pl)"
FPRINT Outfile , " os = os - pl ;"
FPRINT Outfile , " else"
FPRINT Outfile , " return 0;"
FPRINT Outfile , ""
FPRINT Outfile , " cmp = (sens ? strncasecmp : strncmp);"
FPRINT Outfile , " do { if (cmp(s + os , p, pl) == 0)"
FPRINT Outfile , " return os+1;"
FPRINT Outfile , " } while (os--);"
FPRINT Outfile , " return 0;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Instr THEN
FPRINT Outfile , "int instr_b(char* mane,char* match,int offset,int sensflag)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *s;"
FPRINT Outfile , " if (!mane || !match || ! *match || offset>(int)strlen(mane)) return 0;"
FPRINT Outfile , " if (sensflag)"
FPRINT Outfile , " s = _stristr_(offset>0 ? mane+offset-1 : mane,match);"
FPRINT Outfile , " else"
FPRINT Outfile , " s = _strstr_(offset>0 ? mane+offset-1 : mane,match);"
FPRINT Outfile , " return s ? (int)(s-mane)+1 : 0;"
FPRINT Outfile , "}\n\n"
END IF
IF UseLCaseTbl THEN
FPRINT Outfile , "char *MakeLCaseTbl (void)"
FPRINT Outfile , "{"
FPRINT Outfile , " static char tbl[256];"
FPRINT Outfile , " if(!tbl['a'])"
FPRINT Outfile , " {"
FPRINT Outfile , " int i; for (i=0; i < 256; i++)"
FPRINT Outfile , " tbl[i] = (char)(int)tolower(i);"
FPRINT Outfile , " }"
FPRINT Outfile , " return tbl;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Stristr THEN
FPRINT Outfile , "char *_stristr_(char *String, char *Pattern)"
FPRINT Outfile , "{"
FPRINT Outfile , " int mi=-1;"
FPRINT Outfile , " char *LowCase = MakeLCaseTbl();"
FPRINT Outfile , " while(Pattern[++mi])"
FPRINT Outfile , " {"
FPRINT Outfile , " if(String[mi]==0) return 0;"
FPRINT Outfile , " if(LowCase[(unsigned char)String[mi]]!=LowCase[(unsigned char)Pattern[mi]])"
FPRINT Outfile , " { String++; mi=-1; }"
FPRINT Outfile , " }"
FPRINT Outfile , " return String;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_StrStr THEN
FPRINT Outfile , "char *_strstr_(char *String, char *Pattern)"
FPRINT Outfile , "{"
FPRINT Outfile , " int mi=-1;"
FPRINT Outfile , " while(Pattern[++mi])"
FPRINT Outfile , " {"
FPRINT Outfile , " if(String[mi]==0) return 0;"
FPRINT Outfile , " if(String[mi]!=Pattern[mi])"
FPRINT Outfile , " { String++; mi=-1; }"
FPRINT Outfile , " }"
FPRINT Outfile , " return String;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Inchr THEN
FPRINT Outfile , "int inchr (char *A, char *B)"
FPRINT Outfile , "{"
FPRINT Outfile , " char* C=A;"
FPRINT Outfile , " while(*C)"
FPRINT Outfile , " {"
FPRINT Outfile , " if(*C==*B) return C-A+1;"
FPRINT Outfile , " C++;"
FPRINT Outfile , " }"
FPRINT Outfile , " return 0;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Asc THEN
FPRINT Outfile , "extern int asc (char *z,int index)"
FPRINT Outfile , "{"
FPRINT Outfile , " return (unsigned char) z[index];"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Sgn THEN
FPRINT Outfile , "double sgn (double a)"
FPRINT Outfile , "{"
FPRINT Outfile , " if(a<0) return -1;"
FPRINT Outfile , " if(a>0) return 1;"
FPRINT Outfile , " return 0;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Round THEN
FPRINT Outfile , "double Round (double n, int d)"
FPRINT Outfile , "{"
FPRINT Outfile , " return (floor((n)*pow(10.0,(d))+0.5)/pow(10.0,(d)));"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Embed THEN
FPRINT Outfile , "char* GetResource (int *resource)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *BCX_RetStr={0};"
FPRINT Outfile , " static char* dat;"
FPRINT Outfile , " memset(&dat,0,sizeof(char *));"
FPRINT Outfile , " dat=(char*)resource;"
FPRINT Outfile , " BCX_RetStr=BCX_TmpStr(strlen(dat));"
FPRINT Outfile , " strcpy(BCX_RetStr,dat);"
FPRINT Outfile , " return BCX_RetStr;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Exist THEN
FPRINT Outfile , "bool Exist (char *szFilePath)"
FPRINT Outfile , "{"
FPRINT Outfile , " int retstat;"
FPRINT Outfile , " struct stat sb;"
FPRINT Outfile , " retstat = stat(szFilePath, &sb);"
FPRINT Outfile , " if(retstat != -1)"
FPRINT Outfile , " return TRUE;"
FPRINT Outfile , " return FALSE;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Tally THEN
FPRINT Outfile , "int tally (char *szLine, char *szChar, int sensflag)"
FPRINT Outfile , "{"
FPRINT Outfile , " if(!*szChar) return 0;"
FPRINT Outfile , " int mlen = strlen(szChar);"
FPRINT Outfile , " int iCount = 0;"
FPRINT Outfile , " char *p = (sensflag == 0 ? _strstr_(szLine, szChar) : _stristr_(szLine, szChar));"
FPRINT Outfile , " while (p)"
FPRINT Outfile , " {"
FPRINT Outfile , " iCount++;"
FPRINT Outfile , " p+=mlen;"
FPRINT Outfile , " p = (sensflag == 0 ? _strstr_(p, szChar) : _stristr_(p, szChar));"
FPRINT Outfile , " }"
FPRINT Outfile , " return iCount;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Timer THEN
FPRINT Outfile , "float timer (void)"
FPRINT Outfile , "{"
FPRINT Outfile , " return ((double)clock()/CLOCKS_PER_SEC);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Rnd THEN
FPRINT Outfile , "float rnd (void)"
FPRINT Outfile , "{"
FPRINT Outfile , " return (float)rand()/RAND_MAX;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Exp THEN
FPRINT Outfile , "double Exp (double arg)"
FPRINT Outfile , "{"
FPRINT Outfile , " return pow(2.718281828459045,arg);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Randomize THEN
FPRINT Outfile , "void randomize (unsigned int seed)"
FPRINT Outfile , "{"
FPRINT Outfile , " srand(seed);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Max THEN
FPRINT Outfile , "double _MAX_ (double a, double b)"
FPRINT Outfile , "{"
FPRINT Outfile , " if(a>b)"
FPRINT Outfile , " return a;"
FPRINT Outfile , " return b;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Min THEN
FPRINT Outfile , "double _MIN_ (double a, double b)"
FPRINT Outfile , "{"
FPRINT Outfile , " if(a<b)"
FPRINT Outfile , " return a;"
FPRINT Outfile , " return b;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Locate THEN
FPRINT Outfile , "void locate (int row,int col,int show,int shape)"
FPRINT Outfile , "{"
FPRINT Outfile , " printf(" , ENC$ ( "%c%s%u%s%u%s" ) , ",27," , ENC$ ( "[" ) , ",row," , ENC$ ( ";" ) , ",col," , ENC$ ( "H" ) , ");"
FPRINT Outfile , " // find cursor size/shape function!"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Cls THEN
FPRINT Outfile , "void cls (void)"
FPRINT Outfile , "{"
FPRINT Outfile , " printf(" , ENC$ ( "%s%s%s%s" ) , ",ESC," , ENC$ ( "[2J" ) , ",ESC," , ENC$ ( "[H" ) , ");"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Color THEN
FPRINT Outfile , "void color (int fg,int bg)"
FPRINT Outfile , "{"
FPRINT Outfile , " printf(" , ENC$ ( "%c%s%u%s%u%s" ) , ",27," , ENC$ ( "[" ) , ",30+(fg&7)," , ENC$ ( ";" ) , ",40+(bg&7)," , ENC$ ( "m" ) , ");"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Midstr THEN
FPRINT Outfile , "void midstr (char *src, int st, int length, char *rep)"
FPRINT Outfile , "{"
FPRINT Outfile , " int srclen = strlen(src);"
FPRINT Outfile , " if(st>srclen++ || st<1) return;"
FPRINT Outfile , " int replen = strlen(rep);"
FPRINT Outfile , " if(replen < length || length==-1) length=replen;"
FPRINT Outfile , " if((st+length) > srclen) length=srclen-st;"
FPRINT Outfile , " memcpy(&src[st-1],rep,length);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Swap THEN
FPRINT Outfile , "void swap ( UCHAR* A, UCHAR* B, int length)"
FPRINT Outfile , "{"
FPRINT Outfile , " UCHAR t;"
FPRINT Outfile , " while(length--)"
FPRINT Outfile , " {"
FPRINT Outfile , " t = *A;"
FPRINT Outfile , " *(A++) = *B;"
FPRINT Outfile , " *(B++) = t;"
FPRINT Outfile , " }"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Like THEN
FPRINT Outfile , "int like (char *raw, char *pat)"
FPRINT Outfile , "{"
FPRINT Outfile , " char a, b, d;"
FPRINT Outfile , " char *r, *p;"
FPRINT Outfile , " int star = 0;"
FPRINT Outfile , " for(;;) {"
FPRINT Outfile , " if ((d = *pat++)==0) return (star || !*raw);"
FPRINT Outfile , " else if (d == '*') star = 1;"
FPRINT Outfile , " else if (d == '?') { if (!*raw++) return 0; }"
FPRINT Outfile , " else break;"
FPRINT Outfile , " }"
FPRINT Outfile , " b = d;"
FPRINT Outfile , " do if ((a = *raw++) == b) {"
FPRINT Outfile , " r = raw;"
FPRINT Outfile , " p = pat;"
FPRINT Outfile , " do {"
FPRINT Outfile , " if ((d = *p++) == '*')"
FPRINT Outfile , " if (like(r, p - 1)) return 1;"
FPRINT Outfile , " else break;"
FPRINT Outfile , " else if (!d) {"
FPRINT Outfile , " if (!*r) return 1;"
FPRINT Outfile , " else break;"
FPRINT Outfile , " }"
FPRINT Outfile , " } while (*r++ == d || d == '?');"
FPRINT Outfile , " } while (star && a);"
FPRINT Outfile , " return 0;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Lof THEN
FPRINT Outfile , "DWORD lof (char *FileName)"
FPRINT Outfile , "{"
FPRINT Outfile , ""
FPRINT Outfile , " int retstat;"
FPRINT Outfile , " struct stat sb;"
FPRINT Outfile , " retstat = stat(FileName, &sb);"
FPRINT Outfile , " if(retstat != -1)"
FPRINT Outfile , " return sb.st_size;"
FPRINT Outfile , " return 0;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Iif THEN
FPRINT Outfile , "double iif (bool cond, double tp, double fp)"
FPRINT Outfile , "{"
FPRINT Outfile , " if(cond) return tp;"
FPRINT Outfile , " return fp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_sziif THEN
FPRINT Outfile , "char * sziif (bool i, char *a, char *b)"
FPRINT Outfile , "{"
FPRINT Outfile , " if(i) return a;"
FPRINT Outfile , " return b;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_DynamicA THEN
FPRINT Outfile , "void *CreateArr(void *a, int elem_size, int update, int num_dims, ... )"
FPRINT Outfile , "{"
FPRINT Outfile , " va_list ap;"
FPRINT Outfile , " void *RetPtr;"
FPRINT Outfile , ""
FPRINT Outfile , " va_start(ap, num_dims);"
FPRINT Outfile , " RetPtr = CreateArr_internal(a, elem_size, update, num_dims, ap);"
FPRINT Outfile , " va_end(ap);"
FPRINT Outfile , " return (RetPtr);"
FPRINT Outfile , "}\n\n"
FPRINT Outfile , "void *CreateArr_internal(void *a, int elem_size, int update, int num_dims, va_list ap)"
FPRINT Outfile , "{"
FPRINT Outfile , " size_t s, s1, s2;"
FPRINT Outfile , " void **vp;"
FPRINT Outfile , " va_list marker;"
FPRINT Outfile , " "
FPRINT Outfile , "#ifdef va_copy"
FPRINT Outfile , " va_copy(marker, ap);"
FPRINT Outfile , "#else"
FPRINT Outfile , " marker = ap;"
FPRINT Outfile , "#endif"
FPRINT Outfile , " s = va_arg(marker, size_t);"
FPRINT Outfile , " s2 = s + 2;"
FPRINT Outfile , " if(num_dims == 1)"
FPRINT Outfile , " {"
FPRINT Outfile , " if(update && a)"
FPRINT Outfile , " a=realloc(a,s2*elem_size);"
FPRINT Outfile , " else"
FPRINT Outfile , " a=calloc(s2,elem_size);"
FPRINT Outfile , " return a;"
FPRINT Outfile , " }"
FPRINT Outfile , " else"
FPRINT Outfile , " if(update && a)"
FPRINT Outfile , " {"
FPRINT Outfile , " s1 = 0;"
FPRINT Outfile , " vp = (void**)a;"
FPRINT Outfile , " while(*vp && s1 <= s)"
FPRINT Outfile , " {"
FPRINT Outfile , " vp++;"
FPRINT Outfile , " s1++;"
FPRINT Outfile , " }"
FPRINT Outfile , " if(s1 > s)"
FPRINT Outfile , " {"
FPRINT Outfile , " vp--;"
FPRINT Outfile , " DestroyArr(vp, num_dims, 0);"
FPRINT Outfile , " }"
FPRINT Outfile , " a=realloc(a,s2*sizeof(int));"
FPRINT Outfile , " s1 = 0;"
FPRINT Outfile , " vp = (void**)a;"
FPRINT Outfile , " while(*vp && s1 <= s)"
FPRINT Outfile , " {"
FPRINT Outfile , " vp++;"
FPRINT Outfile , " s1++;"
FPRINT Outfile , " }"
FPRINT Outfile , " while(s1 < s2)"
FPRINT Outfile , " {"
FPRINT Outfile , " *(((int *)vp)) = 0;"
FPRINT Outfile , " vp++;"
FPRINT Outfile , " s1++;"
FPRINT Outfile , " }"
FPRINT Outfile , " }"
FPRINT Outfile , " else"
FPRINT Outfile , " a=calloc(s2*sizeof(int),1);"
FPRINT Outfile , " vp = (void**)a;"
FPRINT Outfile , " if(--num_dims > 0)"
FPRINT Outfile , " {"
FPRINT Outfile , " for(s1 = 0; s1 < s; s1++)"
FPRINT Outfile , " {"
FPRINT Outfile , " vp[s1] = CreateArr_internal(vp[s1], elem_size, update, num_dims, marker);"
FPRINT Outfile , " }"
FPRINT Outfile , " }"
FPRINT Outfile , " return a;"
FPRINT Outfile , "}\n\n"
FPRINT Outfile , "void DestroyArr (void** a,int num_dims, int top_free)"
FPRINT Outfile , "{"
FPRINT Outfile , " int i = 0;"
FPRINT Outfile , " static int s = 0;"
FPRINT Outfile , " if(num_dims == 1)"
FPRINT Outfile , " {"
FPRINT Outfile , " free(a);"
FPRINT Outfile , " return;"
FPRINT Outfile , " }"
FPRINT Outfile , " s++;"
FPRINT Outfile , " num_dims--; "
FPRINT Outfile , " while(a[i])"
FPRINT Outfile , " {"
FPRINT Outfile , " DestroyArr((void**)a[i], num_dims, top_free);"
FPRINT Outfile , " if(num_dims > 1)"
FPRINT Outfile , " free(a[i]);"
FPRINT Outfile , " a[i++]=NULL;"
FPRINT Outfile , " }"
FPRINT Outfile , " s--;"
FPRINT Outfile , " if(s == 0 && top_free)"
FPRINT Outfile , " free(a);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Idxqsort THEN
FPRINT Outfile , "int IdxCompare (const void *one, const void *two)"
FPRINT Outfile , "{"
FPRINT Outfile , " int *ptr1 = (int *)(one);"
FPRINT Outfile , " int *ptr2 = (int *)(two);"
FPRINT Outfile , " return strcasecmp (pppStr[Key][*ptr1],pppStr[Key][*ptr2]);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_IdxqsortSt THEN
FPRINT Outfile , "int IdxCompareSt (const void* one, const void* two)"
FPRINT Outfile , "{"
FPRINT Outfile , "#define compare1 cmp1+(StructSize * (*(UINT *)(one)))"
FPRINT Outfile , "#define compare2 cmp1+(StructSize * (*(UINT *)(two)))"
FPRINT Outfile , ""
FPRINT Outfile , " if (Key==0)" 'String
FPRINT Outfile , " return strcasecmp(compare1, compare2);"
FPRINT Outfile , ""
FPRINT Outfile , " if (Key==1)" 'Integer
FPRINT Outfile , " {"
FPRINT Outfile , " if (*(int*)(compare1) < *(int*)(compare2)) return -1;"
FPRINT Outfile , " if (*(int*)(compare1) > *(int*)(compare2)) return 1;"
FPRINT Outfile , " return 0;"
FPRINT Outfile , " }"
FPRINT Outfile , ""
FPRINT Outfile , " if (Key==2)" 'Double
FPRINT Outfile , " {"
FPRINT Outfile , " if (*(double*)(compare1) < *(double*)(compare2)) return -1;"
FPRINT Outfile , " if (*(double*)(compare1) > *(double*)(compare2)) return 1;"
FPRINT Outfile , " return 0;"
FPRINT Outfile , " }"
FPRINT Outfile , ""
FPRINT Outfile , " if (Key==3)" 'Unsigned integer
FPRINT Outfile , " {"
FPRINT Outfile , " if (*(UINT*)(compare1) < *(UINT*)(compare2)) return -1;"
FPRINT Outfile , " if (*(UINT*)(compare1) > *(UINT*)(compare2)) return 1;"
FPRINT Outfile , " }"
FPRINT Outfile , "return 0;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_PtrqsortSt THEN
FPRINT Outfile , "int PtrCompareSt (const void* one, const void* two)"
FPRINT Outfile , "{"
FPRINT Outfile , "#define pcompare1 ((char*)(one)+OffSet)"
FPRINT Outfile , "#define pcompare2 ((char*)(two)+OffSet)"
FPRINT Outfile , ""
FPRINT Outfile , " if (Key==0)"
FPRINT Outfile , " return strcasecmp(pcompare1, pcompare2);"
FPRINT Outfile , ""
FPRINT Outfile , " if (Key==1)"
FPRINT Outfile , " {"
FPRINT Outfile , " if (*(int*)(pcompare1) < *(int*)(pcompare2)) return -1;"
FPRINT Outfile , " if (*(int*)(pcompare1) > *(int*)(pcompare2)) return 1;"
FPRINT Outfile , " return 0;"
FPRINT Outfile , " }"
FPRINT Outfile , ""
FPRINT Outfile , " if (Key==2)"
FPRINT Outfile , " {"
FPRINT Outfile , " if (*(double*)(pcompare1) < *(double*)(pcompare2)) return -1;"
FPRINT Outfile , " if (*(double*)(pcompare1) > *(double*)(pcompare2)) return 1;"
FPRINT Outfile , " return 0;"
FPRINT Outfile , " }"
FPRINT Outfile , ""
FPRINT Outfile , " if (Key==3)"
FPRINT Outfile , " {"
FPRINT Outfile , " if (*(UINT*)(pcompare1) < *(UINT*)(pcompare2)) return -1;"
FPRINT Outfile , " if (*(UINT*)(pcompare1) > *(UINT*)(pcompare2)) return 1;"
FPRINT Outfile , " }"
FPRINT Outfile , "return 0;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Strqsorta THEN
FPRINT Outfile , "int StrCompareA (const void *arg1, const void *arg2)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *v1 = (char*) arg1;"
FPRINT Outfile , " char *v2 = (char*) arg2;"
FPRINT Outfile , " return strcasecmp (v1,v2);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Strqsortd THEN
FPRINT Outfile , "int StrCompareD (const void *arg1, const void *arg2)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *v1 = (char*) arg1;"
FPRINT Outfile , " char *v2 = (char*) arg2;"
FPRINT Outfile , " return strcasecmp (v2,v1);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_DynStrqsorta THEN
FPRINT Outfile , "int DynStrCompareA (const void *arg1, const void *arg2)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *v1 = *(char **) arg1;"
FPRINT Outfile , " char *v2 = *(char **) arg2;"
FPRINT Outfile , " return strcasecmp(v1, v2);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_DynStrqsortd THEN
FPRINT Outfile , "int DynStrCompareD (const void *arg1, const void *arg2)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *v1 = *(char **) arg1;"
FPRINT Outfile , " char *v2 = *(char **) arg2;"
FPRINT Outfile , " return strcasecmp(v2, v1);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Numqsortaint THEN
FPRINT Outfile , "int NumCompareAint (const void *one, const void *two)"
FPRINT Outfile , "{"
FPRINT Outfile , " int *ptr1 = (int *)(one);"
FPRINT Outfile , " int *ptr2 = (int *)(two);"
FPRINT Outfile , " if (*ptr1 < *ptr2) return -1;"
FPRINT Outfile , " else if (*ptr1 == *ptr2) return 0;"
FPRINT Outfile , " else return 1;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Numqsortdint THEN
FPRINT Outfile , "int NumCompareDint (const void *one, const void *two)"
FPRINT Outfile , "{"
FPRINT Outfile , " int *ptr1 = (int *)(one);"
FPRINT Outfile , " int *ptr2 = (int *)(two);"
FPRINT Outfile , " if (*ptr1 > *ptr2) return -1;"
FPRINT Outfile , " else if (*ptr1 == *ptr2) return 0;"
FPRINT Outfile , " else return 1;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Numqsortafloat THEN
FPRINT Outfile , "int NumCompareAfloat (const void *one, const void *two)"
FPRINT Outfile , "{"
FPRINT Outfile , " float *ptr1 = (float *)(one);"
FPRINT Outfile , " float *ptr2 = (float *)(two);"
FPRINT Outfile , " if (*ptr1 < *ptr2) return -1;"
FPRINT Outfile , " else if (*ptr1 == *ptr2) return 0;"
FPRINT Outfile , " else return 1;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Numqsortdfloat THEN
FPRINT Outfile , "int NumCompareDfloat (const void *one, const void *two)"
FPRINT Outfile , "{"
FPRINT Outfile , " float *ptr1 = (float *)(one);"
FPRINT Outfile , " float *ptr2 = (float *)(two);"
FPRINT Outfile , " if (*ptr1 > *ptr2) return -1;"
FPRINT Outfile , " else if (*ptr1 == *ptr2) return 0;"
FPRINT Outfile , " else return 1;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Numqsortadouble THEN
FPRINT Outfile , "int NumCompareAdouble (const void *one, const void *two)"
FPRINT Outfile , "{"
FPRINT Outfile , " double *ptr1 = (double *)(one);"
FPRINT Outfile , " double *ptr2 = (double *)(two);"
FPRINT Outfile , " if (*ptr1 < *ptr2) return -1;"
FPRINT Outfile , " else if (*ptr1 == *ptr2) return 0;"
FPRINT Outfile , " else return 1;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Numqsortddouble THEN
FPRINT Outfile , "int NumCompareDdouble (const void *one, const void *two)"
FPRINT Outfile , "{"
FPRINT Outfile , " double *ptr1 = (double *)(one);"
FPRINT Outfile , " double *ptr2 = (double *)(two);"
FPRINT Outfile , " if (*ptr1 > *ptr2) return -1;"
FPRINT Outfile , " else if (*ptr1 == *ptr2) return 0;"
FPRINT Outfile , " else return 1;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_FillArray THEN
FPRINT Outfile , "int fillarray(char *input, int ArrayType, int MaxCnt, void *Array)"
FPRINT Outfile , "{"
FPRINT Outfile , " if(MaxCnt < 1) return -1;"
FPRINT Outfile , " int c = 0, cnt=-1, cnt2;"
FPRINT Outfile , " char A[65535];"
FPRINT Outfile , " int *intptr = (int *)Array;"
FPRINT Outfile , " float *floatptr = (float *)Array;"
FPRINT Outfile , " double *doubleptr = (double *)Array;"
FPRINT Outfile , " long double *ldoubleptr = (long double *)Array;"
FPRINT Outfile , " for(;;)"
FPRINT Outfile , " {"
FPRINT Outfile , " cnt2=0;"
FPRINT Outfile , " while(input[++cnt]!=',')"
FPRINT Outfile , " {"
FPRINT Outfile , " if(input[cnt]==0) break;"
FPRINT Outfile , " A[cnt2++]=input[cnt];"
FPRINT Outfile , " }"
FPRINT Outfile , " A[cnt2]=0;"
FPRINT Outfile , " if(cnt2==0||c==MaxCnt) break;"
FPRINT Outfile , " "
FPRINT Outfile , " if(ArrayType==2)"
FPRINT Outfile , " intptr[c++] = atoi(A);"
FPRINT Outfile , " else if(ArrayType==3)"
FPRINT Outfile , " floatptr[c++] = atof(A);"
FPRINT Outfile , " else if(ArrayType==4)"
FPRINT Outfile , " doubleptr[c++] = atof(A);"
FPRINT Outfile , " else if(ArrayType==5)"
FPRINT Outfile , " ldoubleptr[c++] = atof(A);"
FPRINT Outfile , ""
FPRINT Outfile , " if(input[cnt]==0) break;"
FPRINT Outfile , " } "
FPRINT Outfile , " return (c-1);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Loc THEN
FPRINT Outfile , "int loc(FILE *fp, int fplen)"
FPRINT Outfile , "{"
FPRINT Outfile , " fpos_t t;"
FPRINT Outfile , " fgetpos(fp, &t);"
FPRINT Outfile , "#if defined( __POCC__ )"
FPRINT Outfile , " t.off %= fplen;"
FPRINT Outfile , " return (int)t.off;"
FPRINT Outfile , "#else"
FPRINT Outfile , " t %= fplen;"
FPRINT Outfile , " return (int)t;"
FPRINT Outfile , "#endif"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Rec THEN
FPRINT Outfile , "int rec(FILE *fp, int fplen)"
FPRINT Outfile , "{"
FPRINT Outfile , " fpos_t t;"
FPRINT Outfile , " fgetpos(fp, &t);"
FPRINT Outfile , "#if defined( __POCC__ )"
FPRINT Outfile , " t.off /= fplen;"
FPRINT Outfile , " return (int)++t.off;"
FPRINT Outfile , "#else"
FPRINT Outfile , " t /= fplen;"
FPRINT Outfile , " return (int)++t;"
FPRINT Outfile , "#endif"
FPRINT Outfile , "}\n\n"
END IF
IF Use_RecCount THEN
FPRINT Outfile , "int reccount(FILE *fp, int fplen)"
FPRINT Outfile , "{"
FPRINT Outfile , " fpos_t t;"
FPRINT Outfile , " fseek(fp,0,SEEK_END);"
FPRINT Outfile , " fgetpos(fp, &t);"
FPRINT Outfile , "#if defined( __POCC__ )"
FPRINT Outfile , " t.off /= fplen;"
FPRINT Outfile , " return (int)t.off;"
FPRINT Outfile , "#else"
FPRINT Outfile , " t /= fplen;"
FPRINT Outfile , " return (int)t;"
FPRINT Outfile , "#endif"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Scan THEN
FPRINT Outfile , "int scan(char *input, char *format, ... )"
FPRINT Outfile , "{"
FPRINT Outfile , " int c,d ;"
FPRINT Outfile , " char *s_;"
FPRINT Outfile , " int *intptr;"
FPRINT Outfile , " float *floatptr;"
FPRINT Outfile , " double *doubleptr;"
FPRINT Outfile , " char A[50][65535];"
FPRINT Outfile , " va_list marker;"
FPRINT Outfile , " c = 0;"
FPRINT Outfile , " d = Split(A,input," ; ENC$ ( "," ) ; ");"
FPRINT Outfile , " va_start(marker, format); //Initialize arguments"
FPRINT Outfile , " while(d && *format)"
FPRINT Outfile , " {"
FPRINT Outfile , " if(*format == '%') format++;"
FPRINT Outfile , " if(*format == 's')"
FPRINT Outfile , " {"
FPRINT Outfile , " s_ = va_arg(marker, char *);"
FPRINT Outfile , " strcpy(s_, A[c]);"
FPRINT Outfile , " c++;"
FPRINT Outfile , " d--;"
FPRINT Outfile , " }"
FPRINT Outfile , " if(*format == 'd')"
FPRINT Outfile , " {"
FPRINT Outfile , " intptr = va_arg(marker, int *);"
FPRINT Outfile , " *intptr = atoi(A[c]);"
FPRINT Outfile , " c++;"
FPRINT Outfile , " d--;"
FPRINT Outfile , " }"
FPRINT Outfile , " if(*format == 'g')"
FPRINT Outfile , " {"
FPRINT Outfile , " floatptr = va_arg(marker, float *);"
FPRINT Outfile , " *floatptr = atof(A[c]);"
FPRINT Outfile , " c++;"
FPRINT Outfile , " d--;"
FPRINT Outfile , " }"
FPRINT Outfile , " if(*format == 'l')"
FPRINT Outfile , " {"
FPRINT Outfile , " format++;"
FPRINT Outfile , " doubleptr = va_arg(marker, double *);"
FPRINT Outfile , " *doubleptr = atof(A[c]);"
FPRINT Outfile , " c++;"
FPRINT Outfile , " d--;"
FPRINT Outfile , " }"
FPRINT Outfile , " format++;"
FPRINT Outfile , " }"
FPRINT Outfile , " va_end(marker); // Reset variable arguments"
FPRINT Outfile , " if(d) return(1); // More data than variables"
FPRINT Outfile , " if(*format == 0) return(0); // OK"
FPRINT Outfile , " return(-1); // More variables than data"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Split THEN
FPRINT Outfile , "int Split (char Buf[][65535], char *T, char *Delim, int Flg)"
FPRINT Outfile , "{"
FPRINT Outfile , " int Begin = 0;"
FPRINT Outfile , " int Count = 0;"
FPRINT Outfile , " int Quote = 0;"
FPRINT Outfile , " int Index,i;"
FPRINT Outfile , " int lenT = strlen(T);"
FPRINT Outfile , " char Chr34[2]={34,0};"
FPRINT Outfile , " for(Index=1;Index<=lenT;Index++)"
FPRINT Outfile , " {"
FPRINT Outfile , " if(instr_b(Delim,mid(T,Index,1))&&!Quote)"
FPRINT Outfile , " {"
FPRINT Outfile , " strcpy(Buf[Count],(char*)mid(T,Begin,Index-Begin));"
FPRINT Outfile , " if ((Flg & 2) == 0) // 0 if old version"
FPRINT Outfile , " Count++;"
FPRINT Outfile , " else"
FPRINT Outfile , " if (Buf[Count][0] != 0) Count++;"
FPRINT Outfile , " Begin=0;"
FPRINT Outfile , " if((Flg & 1) == 1) // 1 if true"
FPRINT Outfile , " strcpy(Buf[Count++],(char*)mid(T,Index,1));"
FPRINT Outfile , " }"
FPRINT Outfile , " else"
FPRINT Outfile , " {"
FPRINT Outfile , " if(strcmp(mid(T,Index,1),Chr34)==0) Quote=!Quote;"
FPRINT Outfile , " if(Begin==0) Begin=Index;"
FPRINT Outfile , " }"
FPRINT Outfile , " }"
FPRINT Outfile , " if(Begin)"
FPRINT Outfile , " strcpy(Buf[Count++],(char*)mid(T,Begin,Index-Begin));"
FPRINT Outfile , " if((Flg & 1) == 0) // 0 if false"
FPRINT Outfile , " for(i=0;i<Count;i++) strcpy(Buf[i],(char*)RemoveStr(Buf[i],Chr34));"
FPRINT Outfile , " return Count;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_DSplit THEN
FPRINT Outfile , "int DSplit (PCHAR *Buf, char *T, char *Delim, int Flg)"
FPRINT Outfile , "{"
FPRINT Outfile , " int Begin=0;"
FPRINT Outfile , " int Count=0;"
FPRINT Outfile , " int Quote=0;"
FPRINT Outfile , " int Index=0;"
FPRINT Outfile , " int lenT = strlen(T);"
FPRINT Outfile , " char Chr34[2]={34,0};"
FPRINT Outfile , " for(Index=1;Index<=lenT;Index++)"
FPRINT Outfile , " {"
FPRINT Outfile , " if(instr_b(Delim,mid(T,Index,1))&&!Quote)"
FPRINT Outfile , " {"
FPRINT Outfile , " strcpy(Buf[Count],(char*)mid(T,Begin,Index-Begin));"
FPRINT Outfile , " if ((Flg & 2) == 0) // 0 if old version"
FPRINT Outfile , " Count++;"
FPRINT Outfile , " else"
FPRINT Outfile , " if (Buf[Count][0] != 0) Count++;"
FPRINT Outfile , " Begin=0;"
FPRINT Outfile , " if((Flg & 1) == 1) // 1 if true"
FPRINT Outfile , " strcpy(Buf[Count++],(char*)mid(T,Index,1));"
FPRINT Outfile , " }"
FPRINT Outfile , " else"
FPRINT Outfile , " {"
FPRINT Outfile , " if(strcmp(mid(T,Index,1),Chr34)==0) Quote=!Quote;"
FPRINT Outfile , " if(Begin==0) Begin=Index;"
FPRINT Outfile , " }"
FPRINT Outfile , " }"
FPRINT Outfile , " if(Begin) strcpy(Buf[Count++],(char*)mid(T,Begin,Index-Begin));"
FPRINT Outfile , " if((Flg & 1) == 0) // 0 if false"
FPRINT Outfile , " for(Index=0;Index<Count;Index++) strcpy(Buf[Index],(char*)RemoveStr(Buf[Index],Chr34));"
FPRINT Outfile , " return Count;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Bin2dec THEN
FPRINT Outfile , "int Bin2Dec (char *cptr)"
FPRINT Outfile , "{"
FPRINT Outfile , " int i, j = 0;"
FPRINT Outfile , " while(cptr && *cptr && strchr(" ; ENC$ ( "01" ) ; ", *cptr))"
FPRINT Outfile , " {"
FPRINT Outfile , " i = *cptr++ - '0';"
FPRINT Outfile , " j <<= 1;"
FPRINT Outfile , " j |= (i & 0x01);"
FPRINT Outfile , " }"
FPRINT Outfile , " return(j);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Hex2Dec THEN
FPRINT Outfile , "int Hex2Dec (char *szInput)"
FPRINT Outfile , "{"
FPRINT Outfile , " char ch;"
FPRINT Outfile , " char *dwLen = szInput+strlen(szInput);"
FPRINT Outfile , " char *LowCase = MakeLCaseTbl();"
FPRINT Outfile , " DWORD dwOut = 0;"
FPRINT Outfile , " while(*szInput)"
FPRINT Outfile , " {"
FPRINT Outfile , " ch = LowCase[(unsigned char)*szInput++];"
FPRINT Outfile , " if((ch >= 'a' && ch <= 'f') || (ch >= '0' && ch <= '9'))"
FPRINT Outfile , " dwOut |=((int)ch - (ch>'9' ? 'a'-10 : '0')) << ((dwLen - szInput) << 2);"
FPRINT Outfile , " }"
FPRINT Outfile , " return dwOut;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Verify THEN
FPRINT Outfile , "int Verify (char *Src, char *Allowed)"
FPRINT Outfile , "{"
FPRINT Outfile , " int i, j;"
FPRINT Outfile , " for (i=1; i<=strlen(Src); i++)"
FPRINT Outfile , " {"
FPRINT Outfile , " j=VerifyInstr(Allowed,mid(Src,i,1));"
FPRINT Outfile , " if (!j) return 0;"
FPRINT Outfile , " }"
FPRINT Outfile , " return TRUE;"
FPRINT Outfile , "}\n\n"
FPRINT Outfile , "int VerifyInstr(char* mane,char* match,int offset)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *s;"
FPRINT Outfile , " if (!mane || !match || !*match || offset>(int)strlen(mane)) return 0;"
FPRINT Outfile , " s = strstr (offset>0 ? mane+offset-1 : mane,match);"
FPRINT Outfile , " return s ? (int)(s-mane)+1 : 0;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Retain THEN
FPRINT Outfile , "char *Retain (char *Text, char *ValidChars)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *BCX_RetStr=BCX_TmpStr(strlen(Text));"
FPRINT Outfile , " char *temp=BCX_RetStr;"
FPRINT Outfile , " while(*Text)"
FPRINT Outfile , " {"
FPRINT Outfile , " if(strchr(ValidChars,*Text)) *(temp++) = *Text;"
FPRINT Outfile , " Text++;"
FPRINT Outfile , " }"
FPRINT Outfile , " return BCX_RetStr;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_LoadFile THEN
FPRINT Outfile , "char* LoadFile (char *N)"
FPRINT Outfile , "{"
FPRINT Outfile , " FILE* FP1;"
FPRINT Outfile , " char* BCX_RetStr;"
FPRINT Outfile , " if(Exist(N))"
FPRINT Outfile , " {"
FPRINT Outfile , " BCX_RetStr=BCX_TmpStr(lof(N));"
FPRINT Outfile , " if((FP1=fopen(N," , ENC$ ( "rb" ) , "))!=0)"
FPRINT Outfile , " GET(FP1,BCX_RetStr,lof(N));"
FPRINT Outfile , " fclose(FP1);"
FPRINT Outfile , " return BCX_RetStr;"
FPRINT Outfile , " }"
FPRINT Outfile , " else"
FPRINT Outfile , " {"
FPRINT Outfile , " BCX_RetStr=BCX_TmpStr(64);"
FPRINT Outfile , " return strcpy(BCX_RetStr," , ENC$ ( "File Not Found" ) , ");"
FPRINT Outfile , " }"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Freefile THEN
FPRINT Outfile , "FILE* FreeFile (void)"
FPRINT Outfile , "{"
FPRINT Outfile , " static FILE *pf;"
FPRINT Outfile , " if(pf){free(pf);pf=NULL;}"
FPRINT Outfile , " pf = (FILE*)calloc(sizeof(FILE*),sizeof(FILE*));"
FPRINT Outfile , " return pf;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Run THEN
FPRINT Outfile , "int Run (char* Cmdline, int ShowHide, int WaitState)"
FPRINT Outfile , "{"
FPRINT Outfile , " int processId;"
FPRINT Outfile , " char *s, *p, *cmd_line;"
FPRINT Outfile , ""
FPRINT Outfile , " cmd_line=(char*)malloc(strlen(Cmdline)+1);"
FPRINT Outfile , " if(cmd_line==NULL) return -2;"
FPRINT Outfile , ""
FPRINT Outfile , " strcpy(cmd_line, Cmdline);"
FPRINT Outfile , " p = s = cmd_line;"
FPRINT Outfile , " processId=fork();"
FPRINT Outfile , " if(processId==0)"
FPRINT Outfile , " {"
FPRINT Outfile , " PCHAR argv[30];"
FPRINT Outfile , " int i=0;"
FPRINT Outfile , " while(*p)"
FPRINT Outfile , " {"
FPRINT Outfile , " if(*p==34)"
FPRINT Outfile , " {"
FPRINT Outfile , " while(*(++p)!=34) {}"
FPRINT Outfile , " }"
FPRINT Outfile , " if(*p==32)"
FPRINT Outfile , " {"
FPRINT Outfile , " while(*(p+1)==32) p++;"
FPRINT Outfile , " argv[i++]=s;"
FPRINT Outfile , " *p=0; s=p+1;"
FPRINT Outfile , " }"
FPRINT Outfile , " p++;"
FPRINT Outfile , " }"
FPRINT Outfile , " argv[i] = s;"
FPRINT Outfile , " argv[i+1]= 0;"
FPRINT Outfile , " execvp(argv[0],argv);"
FPRINT Outfile , " printf(" , ENC$ ( "Failed to run%s\\n" ) , ",argv[0]);"
FPRINT Outfile , " exit(-1);"
FPRINT Outfile , " }"
FPRINT Outfile , " else if(processId!=-1)"
FPRINT Outfile , " {"
FPRINT Outfile , " if(WaitState) waitpid(processId,NULL,0);"
FPRINT Outfile , " }"
FPRINT Outfile , " waitpid(-1,NULL,WNOHANG);"
FPRINT Outfile , " free(cmd_line), cmd_line=NULL;"
FPRINT Outfile , " return processId;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Download THEN
FPRINT Outfile , "int Download (char *URL,char *Localname)"
FPRINT Outfile , "{"
FPRINT Outfile , " int RetVal;"
'~ FPRINT Outfile," RetVal=BCX_DynaCall (", ENC$("URLDownloadToFile"), "," ;
'~ FPRINT Outfile, ENC$("urlmon.dll"), ",5,NULL,URL,Localname,0,NULL);"
FPRINT Outfile , " return RetVal=!RetVal;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_PeekStr THEN
FPRINT Outfile , "char *peekstr (LPVOID Src, int Count)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *Des=BCX_TmpStr(Count);"
FPRINT Outfile , " memmove(Des,Src,Count);"
FPRINT Outfile , " return Des;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_QBColor THEN
FPRINT Outfile , "int qbcolor (int N)"
FPRINT Outfile , "{"
FPRINT Outfile , " switch (N)"
FPRINT Outfile , " {"
FPRINT Outfile , " case 0 : return RGB(0,0,0);"
FPRINT Outfile , " case 1 : return RGB(0,0,128);"
FPRINT Outfile , " case 2 : return RGB(0,128,0);"
FPRINT Outfile , " case 3 : return RGB(0,128,128);"
FPRINT Outfile , " case 4 : return RGB(196,0,0);"
FPRINT Outfile , " case 5 : return RGB(128,0,128);"
FPRINT Outfile , " case 6 : return RGB(128,64,0);"
FPRINT Outfile , " case 7 : return RGB(196,196,196);"
FPRINT Outfile , " case 8 : return RGB(128,128,128);"
FPRINT Outfile , " case 9 : return RGB(0,0, 255);"
FPRINT Outfile , " case 10 : return RGB(0,255,0);"
FPRINT Outfile , " case 11 : return RGB(0,255,255);"
FPRINT Outfile , " case 12 : return RGB(255,0,0);"
FPRINT Outfile , " case 13 : return RGB(255,0,255);"
FPRINT Outfile , " case 14 : return RGB(255,255,0);"
FPRINT Outfile , " case 15 : return RGB(255,255,255);"
FPRINT Outfile , " case 16 : return RGB(164,164,164);"
FPRINT Outfile , " case 17 : return RGB(128,160,255);"
FPRINT Outfile , " case 18 : return RGB(160,255,160);"
FPRINT Outfile , " case 19 : return RGB(160,255,255);"
FPRINT Outfile , " case 20 : return RGB(255,160,160);"
FPRINT Outfile , " case 21 : return RGB(255,160,255);"
FPRINT Outfile , " case 22 : return RGB(255,255,160);"
FPRINT Outfile , " case 23 : return RGB(212,212,212);"
FPRINT Outfile , " case 24 : return RGB(180,180,180);"
FPRINT Outfile , " case 25 : return RGB(188,220,255);"
FPRINT Outfile , " case 26 : return RGB(220,255,220);"
FPRINT Outfile , " case 27 : return RGB(220,255,255);"
FPRINT Outfile , " case 28 : return RGB(255,220,220);"
FPRINT Outfile , " case 29 : return RGB(255,220,255);"
FPRINT Outfile , " case 30 : return RGB(255,255,220);"
FPRINT Outfile , " case 31 : return RGB(228,228,228);"
FPRINT Outfile , " }"
FPRINT Outfile , "return 0;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Cvi THEN
FPRINT Outfile , "short CVI (char *s)"
FPRINT Outfile , "{"
FPRINT Outfile , " return ((short*)s)[0];"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Mki THEN
FPRINT Outfile , "char *MKI (short cvt)"
FPRINT Outfile , "{"
FPRINT Outfile , " static char temp[3];"
FPRINT Outfile , " return (char *)memmove(temp,&cvt,2);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Cvl THEN
FPRINT Outfile , "long CVL (char *s)"
FPRINT Outfile , "{"
FPRINT Outfile , " return ((long*)s)[0];"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Mkl THEN
FPRINT Outfile , "char *MKL (int cvt)"
FPRINT Outfile , "{"
FPRINT Outfile , " static char temp[5];"
FPRINT Outfile , " return (char *) memmove(temp,&cvt,4);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Cvs THEN
FPRINT Outfile , "float CVS (char *s)"
FPRINT Outfile , "{"
FPRINT Outfile , " return ((float*)s)[0];"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Mks THEN
FPRINT Outfile , "char *MKS (float cvt)"
FPRINT Outfile , "{"
FPRINT Outfile , " static char temp[5];"
FPRINT Outfile , " return (char *) memmove(temp,&cvt,4);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Cvd THEN
FPRINT Outfile , "double CVD (char *s)"
FPRINT Outfile , "{"
FPRINT Outfile , " return ((double*)s)[0];"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Cvld THEN
FPRINT Outfile , "long double CVLD (char *s)"
FPRINT Outfile , "{"
FPRINT Outfile , " return ((long double*)s)[0];"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Mkd THEN
FPRINT Outfile , "char *MKD (double cvt)"
FPRINT Outfile , "{"
FPRINT Outfile , " static char temp[9];"
FPRINT Outfile , " return (char *) memmove(temp,&cvt,8);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_Mkld THEN
FPRINT Outfile , "char *MKLD (long double cvt)"
FPRINT Outfile , "{"
FPRINT Outfile , " static char temp[11];"
FPRINT Outfile , " return (char *) memmove(temp,&cvt,10);"
FPRINT Outfile , "}\n\n"
END IF
IF Use_BcxSplitPath THEN
FPRINT Outfile , "char *BcxSplitPath (char *FPath, int mask)"
FPRINT Outfile , "{"
FPRINT Outfile , " if(!FPath) return BCX_TmpStr(1);"
FPRINT Outfile , " char *BCX_RetStr=BCX_TmpStr(strlen(FPath));"
FPRINT Outfile , " char tmp[MAX_PATH*4];"
FPRINT Outfile , " _splitpath_(FPath,tmp,&tmp[MAX_PATH],&tmp[MAX_PATH*2],&tmp[MAX_PATH*3]);"
FPRINT Outfile , " if(mask & FDRV) strcat(BCX_RetStr,tmp);"
FPRINT Outfile , " if(mask & FPATH)strcat(BCX_RetStr,&tmp[MAX_PATH]);"
FPRINT Outfile , " if(mask & FNAME)strcat(BCX_RetStr,&tmp[MAX_PATH*2]);"
FPRINT Outfile , " if(mask & FEXT) strcat(BCX_RetStr,&tmp[MAX_PATH*3]);"
FPRINT Outfile , " return BCX_RetStr;"
FPRINT Outfile , "}\n\n"
FPRINT Outfile , " void _splitpath_(const char* path, char* drv, char* dir, char* name, char* ext)"
FPRINT Outfile , " {"
FPRINT Outfile , " const char* pend; /* end of processed string */"
FPRINT Outfile , " const char* p; /* search pointer */"
FPRINT Outfile , " const char* s; /* copy pointer */"
FPRINT Outfile , " "
FPRINT Outfile , " /* extract drive name */"
FPRINT Outfile , " if (path[0] && path[1]==':') {"
FPRINT Outfile , " if (drv) {"
FPRINT Outfile , " *drv++ = *path++;"
FPRINT Outfile , " *drv++ = *path++;"
FPRINT Outfile , " *drv = 0;"
FPRINT Outfile , " }"
FPRINT Outfile , " } else if (drv)"
FPRINT Outfile , " *drv = 0;"
FPRINT Outfile , " "
FPRINT Outfile , " /* search for end of string or stream separator */"
FPRINT Outfile , " for(pend=path; *pend && *pend!=':'; )"
FPRINT Outfile , " pend++;"
FPRINT Outfile , " "
FPRINT Outfile , " /* search for begin of file extension */"
FPRINT Outfile , " for(p=pend; p > path && *--p != '\\\\' && *p!='/'; )"
FPRINT Outfile , " if (*p == '.') {"
FPRINT Outfile , " pend = p;"
FPRINT Outfile , " break;"
FPRINT Outfile , " }"
FPRINT Outfile , " "
FPRINT Outfile , " if (ext)"
FPRINT Outfile , " {"
FPRINT Outfile , " s=pend;"
FPRINT Outfile , " do{ *ext++ = *s; } while(*s++);"
FPRINT Outfile , " }"
FPRINT Outfile , " /* search for end of directory name */"
FPRINT Outfile , " for(p=pend; p > path; )"
FPRINT Outfile , " if (*--p == '\\\\' || *p == '/') {"
FPRINT Outfile , " p++;"
FPRINT Outfile , " break;"
FPRINT Outfile , " }"
FPRINT Outfile , " "
FPRINT Outfile , " if (name) {"
FPRINT Outfile , " for(s=p; s<pend; )"
FPRINT Outfile , " *name++ = *s++;"
FPRINT Outfile , " "
FPRINT Outfile , " *name = 0;"
FPRINT Outfile , " }"
FPRINT Outfile , " "
FPRINT Outfile , " if (dir) {"
FPRINT Outfile , " for(s=path; s<p; )"
FPRINT Outfile , " *dir++ = *s++;"
FPRINT Outfile , " "
FPRINT Outfile , " *dir = 0;"
FPRINT Outfile , " }"
FPRINT Outfile , " }\n"
END IF
IF Use_StrUpLow THEN
FPRINT Outfile , "char *_strupr_(char *string)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *s;"
FPRINT Outfile , ""
FPRINT Outfile , " if (string)"
FPRINT Outfile , " {"
FPRINT Outfile , " for(s = string; *s; ++s)"
FPRINT Outfile , " *s = toupper(*s);"
FPRINT Outfile , " }"
FPRINT Outfile , " return string;"
FPRINT Outfile , "}\n"
FPRINT Outfile , "char *_strlwr_(char *string)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *s;"
FPRINT Outfile , ""
FPRINT Outfile , " if (string)"
FPRINT Outfile , " {"
FPRINT Outfile , " for (s = string; *s; ++s)"
FPRINT Outfile , " *s = tolower(*s);"
FPRINT Outfile , " }"
FPRINT Outfile , " return string;"
FPRINT Outfile , "}\n"
END IF
IF Use_Strtoken THEN
FPRINT Outfile , "char * StrToken (char *Source, char *TokenChar, int n)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *BCX_RetStr={0};"
FPRINT Outfile , " char *RetVal;"
FPRINT Outfile , " char *Copy;"
FPRINT Outfile , " int Posn=0;"
FPRINT Outfile , " int Find=0;"
FPRINT Outfile , " int LenSrc=strlen(Source);"
FPRINT Outfile , " RetVal=(char*)calloc(LenSrc+1,1);"
FPRINT Outfile , " Copy=Source;"
FPRINT Outfile , " if(tally(Source,TokenChar)==0)"
FPRINT Outfile , " {"
FPRINT Outfile , " BCX_RetStr=BCX_TmpStr(1);"
FPRINT Outfile , " if(RetVal)free(RetVal);"
FPRINT Outfile , " return BCX_RetStr;"
FPRINT Outfile , " }"
FPRINT Outfile , " if(n==1)"
FPRINT Outfile , " {"
FPRINT Outfile , " BCX_RetStr=BCX_TmpStr(LenSrc);"
FPRINT Outfile , " strcpy(BCX_RetStr,(char*)extract(Source,TokenChar));"
FPRINT Outfile , " if(RetVal)free(RetVal);"
FPRINT Outfile , " return BCX_RetStr;"
FPRINT Outfile , " }"
FPRINT Outfile , " if(n>tally(Source,TokenChar)+1)"
FPRINT Outfile , " {"
FPRINT Outfile , " BCX_RetStr=BCX_TmpStr(1);"
FPRINT Outfile , " if(RetVal)free(RetVal);"
FPRINT Outfile , " return BCX_RetStr;"
FPRINT Outfile , " }"
FPRINT Outfile , " while(*Copy)"
FPRINT Outfile , " {"
FPRINT Outfile , " if(*Copy==TokenChar[0]) Find++;"
FPRINT Outfile , " if(Find==n) break;"
FPRINT Outfile , " Copy++;"
FPRINT Outfile , " Posn++;"
FPRINT Outfile , " }"
FPRINT Outfile , " if(n==tally(Source,TokenChar)+1)"
FPRINT Outfile , " {"
FPRINT Outfile , " Posn=LenSrc;"
FPRINT Outfile , " Copy=Source+Posn;"
FPRINT Outfile , " while(*Copy&&Source[Posn]!=TokenChar[0])"
FPRINT Outfile , " {"
FPRINT Outfile , " Posn--;"
FPRINT Outfile , " Copy--;"
FPRINT Outfile , " }"
FPRINT Outfile , " }"
FPRINT Outfile , " strcpy(RetVal,(char*)mid(Source,1,Posn));"
FPRINT Outfile , " strcpy(RetVal,(char*)mid(RetVal,InstrRev(RetVal,TokenChar)));"
FPRINT Outfile , " BCX_RetStr=BCX_TmpStr(LenSrc);"
FPRINT Outfile , " strcpy(BCX_RetStr,(char*)RemoveStr(RetVal,TokenChar));"
FPRINT Outfile , " if(RetVal)free(RetVal);"
FPRINT Outfile , " return BCX_RetStr;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_iReplace THEN
FPRINT Outfile , "char *iReplace (char *src, char *pat, char *rep)"
FPRINT Outfile , "{"
FPRINT Outfile , " size_t patsz, repsz, tmpsz, delta;"
FPRINT Outfile , " char *strtmp, *p, *q, *r;"
FPRINT Outfile , " if (!pat || !*pat)"
FPRINT Outfile , " {"
FPRINT Outfile , " strtmp = BCX_TmpStr(strlen(src));"
FPRINT Outfile , " if (!strtmp) return NULL;"
FPRINT Outfile , " return strcpy(strtmp, src);"
FPRINT Outfile , " }"
FPRINT Outfile , " repsz = strlen(rep);"
FPRINT Outfile , " patsz = strlen(pat);"
FPRINT Outfile , " for (tmpsz=0, p=src;(q=_stristr_(p,pat))!=0; p=q+patsz)"
FPRINT Outfile , " tmpsz += (size_t) (q - p) + repsz;"
FPRINT Outfile , " tmpsz += strlen(p);"
FPRINT Outfile , " strtmp = BCX_TmpStr(tmpsz);"
FPRINT Outfile , " if (!strtmp) return NULL;"
FPRINT Outfile , " for (r=strtmp,p=src;(q=_stristr_(p,pat))!=0;p=q+patsz)"
FPRINT Outfile , " {"
FPRINT Outfile , " delta = (size_t) (q-p);"
FPRINT Outfile , " memcpy(r,p,delta); r += delta;"
FPRINT Outfile , " strcpy(r,rep); r += repsz;"
FPRINT Outfile , " }"
FPRINT Outfile , " strcpy(r,p);"
FPRINT Outfile , " return strtmp;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_WideToAnsi THEN
FPRINT Outfile , "char* WideToAnsi (wchar_t *WideStr, UINT CodePage,DWORD dwFlags)"
FPRINT Outfile , "{"
FPRINT Outfile , " char *BCX_RetStr={0};"
FPRINT Outfile , " UINT uLen;"
FPRINT Outfile , " uLen=wcstombs(NULL, WideStr, 0); //WideCharToMultiByte(CodePage,dwFlags,WideStr,-1,0,0,0,0);"
FPRINT Outfile , " BCX_RetStr=(char*)BCX_TmpStr(uLen);"
FPRINT Outfile , " wcstombs(BCX_RetStr, WideStr, uLen); //WideCharToMultiByte(CodePage,dwFlags,WideStr,-1,BCX_RetStr,uLen,0,0);"
FPRINT Outfile , " return BCX_RetStr;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_SysStr THEN
FPRINT Outfile , "BSTR SysStr (char * szIn, int widstr, int bfree)"
FPRINT Outfile , "{"
FPRINT Outfile , " static BSTR bStr[32];"
FPRINT Outfile , " static int index;"
FPRINT Outfile , " if(bfree)"
FPRINT Outfile , " {"
FPRINT Outfile , " for(index=0; index<32; index+=1) "
FPRINT Outfile , " SysFreeString(bStr[index]);"
FPRINT Outfile , " return 0;"
FPRINT Outfile , " }"
FPRINT Outfile , " index=(++index & 31);"
FPRINT Outfile , " SysFreeString(bStr[index]);"
FPRINT Outfile , " int length=strlen(szIn);"
FPRINT Outfile , " if(widstr)"
FPRINT Outfile , " {"
FPRINT Outfile , " bStr[index]=SysAllocStringLen(NULL, (2*length));"
FPRINT Outfile , " MultiByteToWideChar(CP_ACP,0,szIn,-1,bStr[index],(2*length+1));"
FPRINT Outfile , " }else{"
FPRINT Outfile , " bStr[index]=SysAllocStringByteLen(szIn, length);"
FPRINT Outfile , " }"
FPRINT Outfile , " return bStr[index];"
FPRINT Outfile , "}\n\n"
END IF
IF Use_AnsiToWide THEN
FPRINT Outfile , "wchar_t *AnsiToWide (char *AnsiStr, UINT CodePage,DWORD dwFlags)"
FPRINT Outfile , "{"
FPRINT Outfile , " UINT uLen;"
FPRINT Outfile , " wchar_t *WideStr;"
FPRINT Outfile , " uLen=mbstowcs(NULL, AnsiStr, 0); //MultiByteToWideChar(CodePage,dwFlags,AnsiStr,-1,0,0);"
FPRINT Outfile , " if(uLen<=1) return (wchar_t*)BCX_TmpStr(2);"
FPRINT Outfile , " WideStr = (wchar_t*)BCX_TmpStr(2*uLen);"
FPRINT Outfile , " mbstowcs(WideStr, AnsiStr, uLen); //MultiByteToWideChar(CodePage,dwFlags,AnsiStr,uLen,WideStr,uLen);"
FPRINT Outfile , " return WideStr;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_FileLocked THEN
FPRINT Outfile , "int FileLocked (char *Filename)"
FPRINT Outfile , "{"
FPRINT Outfile , " FILE *FP=fopen(Filename," , ENC$ ( "rb+" ) , ");"
FPRINT Outfile , " if(FP==0) return 1;"
FPRINT Outfile , " fclose(FP);"
FPRINT Outfile , " return 0;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_ContainedIn THEN
FPRINT Outfile , "int containedin(char * Token,char **Contain ,int c)"
FPRINT Outfile , " {"
FPRINT Outfile , " int i=0;"
FPRINT Outfile , " while(Contain[i][0])"
FPRINT Outfile , " {"
FPRINT Outfile , " if(0 == ((c == 0 || c == 2) ? strcmp(Contain[i],Token) : strcasecmp(Contain[i],Token)))"
FPRINT Outfile , " {"
FPRINT Outfile , " return ((c < 2) ? 0 : i);"
FPRINT Outfile , " }"
FPRINT Outfile , " i++;"
FPRINT Outfile , " }"
FPRINT Outfile , " return -1;"
FPRINT Outfile , " }\n\n"
END IF
IF Use_FindInType THEN
FPRINT Outfile , "int FindInType(char *Token,char *StOffset,int StSize,int start,int finish,int c,int *idx)"
FPRINT Outfile , " {"
FPRINT Outfile , " int j;"
FPRINT Outfile , " char *Srch;"
FPRINT Outfile , " int (*cmp)(const char*,const char*);"
FPRINT Outfile , " cmp = ((c == 0 || c == 2) ? strcmp : strcasecmp);"
FPRINT Outfile , " for(j=start; j<=finish; j++)"
FPRINT Outfile , " {"
FPRINT Outfile , " Srch = StOffset + ((idx==0) ? j*StSize : idx[j]*StSize);"
FPRINT Outfile , " if(cmp(Srch,Token)==0)"
FPRINT Outfile , " {"
FPRINT Outfile , " return ((c < 2) ? 0 : j);"
FPRINT Outfile , " }"
FPRINT Outfile , " }"
FPRINT Outfile , " return -1;"
FPRINT Outfile , " }\n\n"
END IF
IF Use_StartupCode THEN
FPRINT Outfile , "int BCX_StartupCode_(void)"
FPRINT Outfile , "{"
FOR INTEGER i = 1 TO StartNdx
FPRINT Outfile , " " + StartSub$ [ i ] + "();"
NEXT
FPRINT Outfile , " return 1;"
FPRINT Outfile , "}\n\n"
END IF
IF Use_ExitCode THEN
FPRINT Outfile , "int BCX_ExitCode_(void)"
FPRINT Outfile , "{"
FOR INTEGER i = 1 TO ExitNdx
FPRINT Outfile , " atexit(" + ExitSub$ [ i ] + ");"
NEXT
FPRINT Outfile , " return 1;"
FPRINT Outfile , "}\n\n"
END IF
if Use_Socket then
FPRINT Outfile , "sockaddr_in sock_addr (char *ServerName,int port)"
FPRINT Outfile , "{"
FPRINT Outfile , " in_addr iaHost;"
FPRINT Outfile , " hostent* lpHostEntry;"
FPRINT Outfile , " sockaddr_in saServer;"
FPRINT Outfile , " iaHost.s_addr=inet_addr(ServerName);"
FPRINT Outfile , " if(iaHost.s_addr==INADDR_NONE)"
FPRINT Outfile , " {"
FPRINT Outfile , " lpHostEntry=gethostbyname(ServerName);"
FPRINT Outfile , " }"
FPRINT Outfile , " else"
FPRINT Outfile , " {"
FPRINT Outfile , " lpHostEntry=gethostbyaddr((char*)&iaHost,sizeof(in_addr),AF_INET);"
FPRINT Outfile , " }"
FPRINT Outfile , " if(lpHostEntry==NULL)"
FPRINT Outfile , " {"
FPRINT Outfile , " printf(" + enc$ ( "Error! HOST NOT FOUND: %s\\n" ) + ", ServerName);"
FPRINT Outfile , " }"
FPRINT Outfile , " else"
FPRINT Outfile , " {"
FPRINT Outfile , " saServer.sin_port=htons(port);"
FPRINT Outfile , " saServer.sin_family=AF_INET;"
FPRINT Outfile , " saServer.sin_addr=*(in_addr*)lpHostEntry->h_addr;"
FPRINT Outfile , " }"
FPRINT Outfile , " return saServer;"
FPRINT Outfile , "}\n\n"
FPRINT Outfile , "int connect_socket (sockaddr_in saServer)"
FPRINT Outfile , "{"
FPRINT Outfile , " int Socket, nRet;"
FPRINT Outfile , " Socket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);"
FPRINT Outfile , " if(Socket==-1)"
FPRINT Outfile , " {"
FPRINT Outfile , " return Socket;"
FPRINT Outfile , " }"
FPRINT Outfile , " nRet=connect(Socket,(sockaddr*)&saServer,sizeof(sockaddr_in));"
FPRINT Outfile , " if(nRet==-1)"
FPRINT Outfile , " {"
FPRINT Outfile , " close(Socket);"
FPRINT Outfile , " return nRet;"
FPRINT Outfile , " }"
FPRINT Outfile , " return Socket;"
FPRINT Outfile , "}\n\n"
FPRINT Outfile , "int BcxSocket (char *ServerName,int port)"
FPRINT Outfile , "{"
FPRINT Outfile , " sockaddr_in saServer;"
FPRINT Outfile , " saServer=sock_addr(ServerName,port);"
FPRINT Outfile , " return connect_socket(saServer);"
FPRINT Outfile , "}\n\n"
FPRINT Outfile , "int BcxSocketSend (int Socket, char *szBuffer)"
FPRINT Outfile , "{"
FPRINT Outfile , " static int nRet;"
FPRINT Outfile , " nRet=send(Socket,szBuffer,strlen(szBuffer),0);"
FPRINT Outfile , " if(nRet==-1)"
FPRINT Outfile , " {"
FPRINT Outfile , " close(Socket);"
FPRINT Outfile , " }"
FPRINT Outfile , " return nRet;"
FPRINT Outfile , "}\n\n"
FPRINT Outfile , "int BcxSocketRead (int Socket, char *szBuffer)"
FPRINT Outfile , "{"
FPRINT Outfile , " return read(Socket,szBuffer,strlen(szBuffer));"
FPRINT Outfile , "}\n\n"
FPRINT Outfile , "void BcxSocketClose(int Socket) {"
FPRINT Outfile , " close(Socket);"
FPRINT Outfile , "}\n\n"
end if
'/***** 2013-06-26 New REGEX Keywords -AIR *****/
'/***** 2018-12-12 Changed to regmatch -AIR *****/
IF Use_RegEx THEN
FPRINT Outfile , "bool regmatch (char *buffer, char *pattern, REGEX* retval)"
FPRINT Outfile , "{"
FPRINT Outfile , " static int t;"
' FPRINT Outfile," memset(&t,0,sizeof(t));"
FPRINT Outfile , " static int i;"
' FPRINT Outfile," memset(&i,0,sizeof(i));"
FPRINT Outfile , " static regex_t re;"
' FPRINT Outfile," memset(&re,0,sizeof(re));"
FPRINT Outfile , " t=regcomp( &re,pattern,REG_ICASE|REG_EXTENDED);"
FPRINT Outfile , " if(t)"
FPRINT Outfile , " {"
FPRINT Outfile , " regerror(t, &re,buffer,sizeof(buffer));"
FPRINT Outfile , " printf(" + enc$ ( "regex error: %s %s" ) + ",buffer,pattern);"
FPRINT Outfile , " return 0;"
FPRINT Outfile , " }"
FPRINT Outfile , " t=regexec( &re,buffer,1023,(*retval).matches,0);"
FPRINT Outfile , " (*retval).count=re.re_nsub;"
FPRINT Outfile , " if(!t)"
FPRINT Outfile , " {"
FPRINT Outfile , " for(i=1; i<=(*retval).count; i+=1)"
FPRINT Outfile , " {"
FPRINT Outfile , " if((*retval).matches[i].rm_so>=0)"
FPRINT Outfile , " {"
FPRINT Outfile , " (*retval).results[i]=peekstr( &buffer[(*retval).matches[i].rm_so],((*retval).matches[i].rm_eo-(*retval).matches[i].rm_so));"
FPRINT Outfile , " }"
FPRINT Outfile , " }"
FPRINT Outfile , " }"
FPRINT Outfile , " regfree( &re);"
FPRINT Outfile , " if(!t)"
FPRINT Outfile , " {"
FPRINT Outfile , " return TRUE;"
FPRINT Outfile , " }"
FPRINT Outfile , " else"
FPRINT Outfile , " {"
FPRINT Outfile , " return FALSE;"
FPRINT Outfile , " }"
FPRINT Outfile , "}\n\n"
END IF
END SUB 'RunTimeFunctions