2357 lines
93 KiB
QBasic
2357 lines
93 KiB
QBasic
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[32768];"
|
|
FPRINT Outfile," StrCnt=(StrCnt + 1) & 32768;"
|
|
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,"{"
|
|
FPRINT Outfile," int c, status = ((c = fgetc(stream)) == EOF);"
|
|
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[32768];"
|
|
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][32768];"
|
|
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[][32768], 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 |