20000212-12:22 GMT+1 Philip Joseph <philjo@writeme.com>

This commit is contained in:
Philip Joseph
2000-02-12 11:28:12 +00:00
parent 31b03bb565
commit 23b4de58c4
2 changed files with 64 additions and 1 deletions

View File

@@ -1,3 +1,7 @@
20000212-12:22 GMT+1 Philip Joseph <philjo@writeme.com>
* contrib/rdd_ads/ads1.c
+ Added adsCreate function for creating ads tables. It also supports
adt tables with short names.
20000212-02:30 GMT+1 Victor Szakats <info@szelvesz.hu>
* include/gtapi.h
+ NOTE: added about incompatibilities between Harbour and CA-Cl*pper

View File

@@ -620,7 +620,66 @@ static ERRCODE adsClose( ADSAREAP pArea )
return SUPER_CLOSE( (AREAP)pArea );
}
#define adsCreate NULL
//#define adsCreate NULL
static ERRCODE adsCreate( ADSAREAP pArea, LPDBOPENINFO pCreateInfo)
{
ADSHANDLE hTable;
UNSIGNED32 uRetVal;
UNSIGNED8 *ucfieldDefs;
UNSIGNED8 ucBuffer[MAX_STR_LEN+1], ucField[HARBOUR_MAX_RDD_FIELDNAME_LENGTH+1];
USHORT uiCount, uiLen;
LPFIELD pField;
HB_TRACE(HB_TR_DEBUG, ("adsCreate(%p, %p)", pArea, pCreateInfo));
uiLen = (pArea->uiFieldCount * 22) + 1;
ucfieldDefs = (UNSIGNED8 *) hb_xgrab( uiLen );
ucfieldDefs[0]='\0';
pField = pArea->lpFields;
for( uiCount = 0; uiCount < pArea->uiFieldCount; uiCount++ )
{
switch ( pField->uiType )
{
case 'D' :
case 'L' :
case 'M' :
if(strlen((( PHB_DYNS ) pField->sym )->pSymbol->szName) > HARBOUR_MAX_RDD_FIELDNAME_LENGTH )
{
ucField[0]='\0';
strncat(ucField, (( PHB_DYNS ) pField->sym )->pSymbol->szName,
HARBOUR_MAX_RDD_FIELDNAME_LENGTH);
sprintf(ucBuffer,"%s,%c;", ucField, pField->uiType );
}
else
sprintf(ucBuffer,"%s,%c;", ( ( PHB_DYNS ) pField->sym )->pSymbol->szName,
pField->uiType );
break;
default :
if(strlen((( PHB_DYNS ) pField->sym )->pSymbol->szName) > HARBOUR_MAX_RDD_FIELDNAME_LENGTH )
{
ucField[0]='\0';
strncat(ucField, (( PHB_DYNS ) pField->sym )->pSymbol->szName,
HARBOUR_MAX_RDD_FIELDNAME_LENGTH);
sprintf(ucBuffer,"%s,%c,%d,%d;", ucField, pField->uiType, pField->uiLen, pField->uiDec );
}
else
sprintf(ucBuffer,"%s,%c,%d,%d;", (( PHB_DYNS ) pField->sym )->pSymbol->szName,
pField->uiType, pField->uiLen, pField->uiDec );
break;
}
strcat(ucfieldDefs, ucBuffer);
pField++;
}
pArea->lpDataInfo->hFile = FS_ERROR;
uRetVal = AdsCreateTable( 0, pCreateInfo->abName, NULL, adsFileType, adsCharType,
adsLockType, adsRights, ADS_DEFAULT, ucfieldDefs, &hTable);
hb_xfree(ucfieldDefs);
if( uRetVal != AE_SUCCESS )
return FAILURE;
AdsCloseTable(hTable);
return SUCCESS;
}
static ERRCODE adsInfo( ADSAREAP pArea, USHORT uiIndex, PHB_ITEM pItem )
{