DWORD DosLowAlloc( WORD wBytes ) { if( DpmiTable.pLowAlloc == 0 ) return (DWORD) _xgrab( wBytes ); return ( DpmiTable.pLowAlloc )( wBytes ); }
int ScanModPublics(WORD wModule){ BYTE abBuffer[300]; WORD wLen,wPublics; BYTE *pbBuffer,bType; wPublics=0; _tlseek(wLib,alOffsets[wModule],0); if (ReadByte()== THEADR) if (ReadHdrRecord(abBuffer)){ while(TRUE){ bType = ReadByte(); switch(bType){ case PUBDEF: if ((wLen = ReadWord())!=0xffff){ WORD GrpIndex,SegIndex; if ((GrpIndex=ReadByte()) >= 128){ wLen -=2; ReadByte(); } else wLen--; if ((SegIndex=ReadByte()) >= 128){ wLen -=2; ReadByte(); } else wLen--; if (GrpIndex==0 && SegIndex == 0){ ReadWord(); wLen -= 2; } while(wLen > 1){ ReadName(abBuffer); pcStrings[wPublics]=_xgrab(strlen(abBuffer)+1); strcpy(pcStrings[wPublics],abBuffer); wPublics++; ReadWord(); if (ReadByte() >= 128){ wLen -=2; ReadByte(); } else wLen--; wLen -= strlen(abBuffer)+1; wLen -= 2; } ReadByte(); } break; case 0x0: case LIBTRL: case THEADR: return wPublics; default: if (!SkipRecord()){ return 0xffff; } } } } FreeStrings(wPublics); return 0xffff; }
CLIPPER RECV( PARAMS ) // nSocket --> cResult #endif { LPBYTE buffer = ( LPBYTE ) _xgrab( 8192 ); WORD wLen = recv( _parni( 1 ), ( char * ) buffer, 8192, 0 ); if( wLen < 10000 ) // socket errors = 10000 + ... _storclen( ( char * ) buffer, wLen, 2 ); else _storclen( "", 0, 2 ); _retni( wLen ); _xfree( buffer ); }
CLIPPER JW_SCRAM(void) { char *temp; char *str; unsigned int len; int i; char c; if ( PCOUNT == 2 && ISCHAR(1) && ISNUM(2)) { /* get pointer to param */ str = _parc(1); /* get strings length */ len = _parclen(1); /* allocate temp buffer */ temp = _xgrab(len+1); /* put null byte */ temp[len] = '\0'; /* get encrypting value */ i = _parni(2); /* convert to char */ c = (char)i; /* copy input string to buffer XORing and 2's complementing as we go */ for (i = 0; i < len; i++) { temp[i] = ~(str[i] ^ c); } /* post modified value as CLIPPER return */ _retclen(temp, len); /* free buffer */ _xfree(temp); } else { /* bad param */ _ret(); } }
int ScanModExternals(WORD wModule){ BYTE abBuffer[300]; WORD wLen,wExternals; BYTE *pbBuffer,bType; wExternals=0; _tlseek(wLib,alOffsets[wModule],0); if (ReadByte()== THEADR) if (ReadHdrRecord(abBuffer)){ while(TRUE){ bType = ReadByte(); switch(bType){ case EXTDEF: if ((wLen = ReadWord())!=0xffff){ while(wLen > 1){ ReadName(abBuffer); pcStrings[wExternals]=_xgrab(strlen(abBuffer)+1); strcpy(pcStrings[wExternals],abBuffer); wExternals++; wLen -= strlen(abBuffer)+1; if (ReadByte() >= 128){ wLen -=2; ReadByte(); } else wLen--; } ReadByte(); } break; case 0x0: case LIBTRL: case THEADR: return wExternals; default: if (!SkipRecord()){ return 0xffff; } } } } FreeStrings(wExternals); return 0xffff; }