ok - here's the winc version First call this&1 = Document Name (varchar)&2 = Handle (long)FpKalk = new CStdioFile();char* pFileName = &(1:).GetBuffer(64);
v->st_returned = ObCharFld(" ");
if (!FpKalk->Open(pFileName, CFile::modeRead | CFile::shareDenyNone | CFile::typeBinary)) {
v->st_returned = ObCharFld("ERR");
}
else
&(2:) = (long) FpKalk->m_pStream; static CStdioFile* FpKalk; Then call this &1 = Document string (varchar)&2 = Document length (numeric) char * InpBuf;
int noread;
InpBuf = &(1:).GetBuffer(1024);
v->st_returned = ObCharFld(" ");
if ((noread = FpKalk->Read(InpBuf,1023)) == 0)
v->st_returned = ObCharFld("EOF");
&(1:).ReleaseBuffer(noread);
&(2:) = noread; Then repeatedly call the below followed by the above while returned status = successful &1 = Document string (varchar)&2 = Document length (numeric)&3 = Result string (varchar) {
char *dst;
char *src;
int len, lenout;
len = &(2:);
src=&(1:).GetBuffer(len);
lenout = ((len + 2) / 3) * 4;
dst = &(3:).GetBuffer(lenout);
char base64_table[] = {"ABCDEFGHIJKLMNOPQRSTUVWXYZ""abcdefghijklmnopqrstuvwxyz""0123456789+/"};
int x, y = 0, i, flag=0, m=0;
int n = 3;
char triple[3], quad[4], c;
for(x = 0; x > 2]; // FC = 11111100
quad[1] = base64_table[((triple[0] & 0x03) > 4)]; // 03 = 11
quad[2] = base64_table[((triple[1] & 0x0F) > 6)]; // 0F = 1111, C0=11110
quad[3] = base64_table[triple[2] & 0x3F]; // 3F = 111111
if(n