Modificati commenti da C++ a C. Corretta DB_seek e DB_rewrite.

git-svn-id: svn://10.65.10.50/trunk@1555 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1995-07-05 07:57:55 +00:00
parent ae730cd65f
commit e1bca3bd19

View File

@ -37,7 +37,7 @@
#include <codeb.h>
#include <rectypes.h>
#include <progind.h>
#define MAXLEN 128 // Lunghezza massima chiave
#define MAXLEN 128 /* Lunghezza massima chiave */
extern char* CUpString(char *);
@ -111,7 +111,7 @@ int DB_open(const char *filename,int mode)
int i,found;
if (mode) code_base.exclusive=1;
// cerca il primo posto libero nel vettore dbdata
/* cerca il primo posto libero nel vettore dbdata */
found=-1;
for(i=0;i<CB4FILES;i++) {
if(dbdata[i]==(DATA4 *) 0) {
@ -119,7 +119,7 @@ int DB_open(const char *filename,int mode)
break;
}
}
// se non ci sono posti liberi torna -1
/* se non ci sono posti liberi torna -1 */
if(found==-1) return(found);
code_base.error_code=0;
dbdata[found]=d4open(&code_base,(char*)filename);
@ -172,10 +172,10 @@ int DB_reclen(int handle)
int DB_keylen(int handle)
{
TAG4 *t;
if (dbdata[handle]==0) return(-1);
if ((t=d4tag_default(dbdata[handle]))== NULL) return (-1);
return(strlen(t4key(t)));
return(expr4key_len(t->expr));
}
/*-------------------------------------------------------------------------
@ -206,7 +206,7 @@ int DB_tagselect(int handle,int index_no)
int i;
if(dbdata[handle]==0) return(-1);
// si posiziona sul primo indice
/* si posiziona sul primo indice */
tt=d4tag_next(dbdata[handle],NULL);
if(tt==NULL) return(-1);
for(i=1;i<index_no;i++) {
@ -219,7 +219,7 @@ int DB_tagselect(int handle,int index_no)
/*-------------------------------------------------------------------------
torna il nuemero dell'indice selezionato
torna il numero dell'indice selezionato
torna -1 se errore
--------------------------------------------------------------------------*/
int DB_tagget(int handle)
@ -228,7 +228,7 @@ int DB_tagget(int handle)
int i;
if(dbdata[handle]==0) return(-1);
// si posiziona sul primo indice
/* si posiziona sul primo indice */
tt=d4tag_selected(dbdata[handle]);
if(tt==NULL) return(-1);
@ -325,11 +325,9 @@ int DB_seek(int handle,char *key)
return rc;
tt = d4tag_selected(dbdata[handle]);
len = expr4key_len(tt->expr);
k = strdup(t4key(tt));
while (--len >= 0 && k[len] == ' ')
k[len] = '\0';
rc = strcmp(key, k);
free(k);
k = t4key(tt);
while (len > 0 && k[len-1] == ' ') len--;
rc = strncmp(key, k, len);
if (rc == 0)
return 0;
else
@ -367,7 +365,7 @@ int DB_go(int handle,long int recno)
}
/*-------------------------------------------------------------------------
cancella il record attuale
cancella il record attuale. Non cancella le chiavi.
--------------------------------------------------------------------------*/
int DB_delete(int handle)
{
@ -397,13 +395,13 @@ int DB_delkey(int handle, char* key, long recno)
INDEX4* i;
TAG4* t;
int rt=0;
char fn[32];
char fn[64];
if(dbdata[handle]==0) return(-1);
t=d4tag_default(dbdata[handle]);
if (u4switch() & 2 || u4switch() & 8) // Clipper & DBIII
u4name_piece(fn,32,dbdata[handle]->file.name,0,0);
if (u4switch() & 2 || u4switch() & 8) /* Clipper & DBIII */
u4name_piece(fn,64,dbdata[handle]->file.name,0,0);
else
strcpy(fn,dbdata[handle]->file.name);
if ((i=d4index(dbdata[handle],fn)) == NULL)
@ -424,7 +422,7 @@ int DB_rewrite(int handle)
if(dbdata[handle]==0) return(-1);
rt=d4write(dbdata[handle],d4recno(dbdata[handle]));
if (rt==r4success)
DB_unlock(handle);
rt=DB_unlock(handle);
return (rt);
}
@ -467,7 +465,7 @@ HIDDEN int is_inkey(RecDes *r, int numfield)
HIDDEN void do_key(char *fname, RecDes *r, TAG4INFO *tag_info)
{
int i,j;
char tiname[9]; // Tag name, max 8 characters long!
char tiname[9]; /* Tag name, max 8 characters long! */
strcpy(tiname,fname);
CUpString(tiname);
@ -481,7 +479,7 @@ HIDDEN void do_key(char *fname, RecDes *r, TAG4INFO *tag_info)
tag_info[i].unique=0;
else
tag_info[i].unique=e4unique;
strcpy(tag_info[i].filter,""); // Not available for DBIII and CLIPPER
strcpy(tag_info[i].filter,""); /* Not available for DBIII and CLIPPER */
strcpy(tag_info[i].name,tiname) ;
if (strlen(tiname) < 8)
strcat(tag_info[i].name," ");
@ -489,15 +487,15 @@ HIDDEN void do_key(char *fname, RecDes *r, TAG4INFO *tag_info)
for (j=0; j < r->Ky[i].NkFields; j++)
{
int nf= r->Ky[i].FieldSeq[j];
if (nf > MaxFields) // When Upper field is specified
if (nf > MaxFields) /* When Upper field is specified */
{
nf -= MaxFields;
strcat(tag_info[i].expression,"UPPER(");
}
if (r->Ky[i].FromCh[j] != 255) // When partial field is specified
if (r->Ky[i].FromCh[j] != 255) /* When partial field is specified */
strcat(tag_info[i].expression,"SUBSTR(");
switch (r->Fd[nf].TypeF) // When numeric field in key is specified
switch (r->Fd[nf].TypeF) /* When numeric field in key is specified */
{
case _intfld:
case _longfld:
@ -511,16 +509,16 @@ HIDDEN void do_key(char *fname, RecDes *r, TAG4INFO *tag_info)
strcat(tag_info[i].expression,"DTOS(");
break;
case _boolfld:
strcat(tag_info[i].expression,"IIF("); // Logical fields are in key too...
strcat(tag_info[i].expression,"IIF("); /* Logical fields are in key too.. */
break;
default: // It's a non sense to keep _realfld in key...
break; // however it's possible to have it...
} // Le chiavi composte da campi data non necessitano di funzioni di traduzione.
default: /* It's a non sense to keep _realfld in key... */
break; /* however it's possible to have it... */
} /* Le chiavi composte da campi data non necessitano di funzioni di traduzione. */
strcat(tag_info[i].expression,r->Fd[nf].Name); // Append field name
strcat(tag_info[i].expression,r->Fd[nf].Name); /* Append field name */
if (r->Ky[i].FromCh[j] != 255) // If partial field was specified
{ // add parameters to SUBSTR
if (r->Ky[i].FromCh[j] != 255) /* If partial field was specified */
{ /* add parameters to SUBSTR */
char ts[8];
strcat(tag_info[i].expression,",");
@ -532,11 +530,11 @@ HIDDEN void do_key(char *fname, RecDes *r, TAG4INFO *tag_info)
strcat(tag_info[i].expression,")");
}
switch (r->Fd[nf].TypeF) // If numeric field was specified
{ // add parameters to STR
switch (r->Fd[nf].TypeF) /* If numeric field was specified */
{ /* add parameters to STR */
case _intfld:
case _longfld:
case _realfld: // Questo tipo di campo(real) non ha senso in un a chiave...
case _realfld: /* Questo tipo di campo(real) non ha senso in un a chiave... */
case _wordfld:
case _intzerofld:
case _longzerofld:
@ -548,17 +546,17 @@ HIDDEN void do_key(char *fname, RecDes *r, TAG4INFO *tag_info)
strcat(tag_info[i].expression,",0)");
}
break;
case _boolfld: // Orgssbb... Che culo.
case _boolfld:
strcat(tag_info[i].expression,",\"T\",\"F\")");
break;
default:
break;
}
// Close parentheses if UPPER or DTOS operators were used:
/* Close parentheses if UPPER or DTOS operators were used: */
if (r->Ky[i].FieldSeq[j] > MaxFields || (r->Fd[nf].TypeF == _datefld))
strcat(tag_info[i].expression,")");
// If there's another field in key adds "+" operator:
/* If there's another field in key adds "+" operator: */
if (j < (r->Ky[i].NkFields-1))
strcat(tag_info[i].expression,"+");
}
@ -577,10 +575,12 @@ int DB_packfile(short vis, const char * filename, long eod)
{
int rt=0,handle;
// if(dbdata[handle]==0) return(-1);
// codebase.auto_open = 0 cosi' non apre gli indici
/*
if(dbdata[handle]==0) return(-1);
codebase.auto_open = 0 cosi' non apre gli indici
*/
code_base.auto_open = 0;
handle=DB_open(filename,1); // Exclusive mode open!
handle=DB_open(filename,1); /* Exclusive mode open! */
if (handle > -1)
{
char s[81];
@ -625,9 +625,9 @@ int DB_packindex(short vis, const char * filename, RecDes *r, long *peod)
strcpy(s,"Ricostruzione indici file : ");
strcat(s,filename);
// codebase.auto_open = 0 cosi' non apre gli indici
/* codebase.auto_open = 0 cosi' non apre gli indici */
code_base.auto_open=0 ;
handle=DB_open(filename,1); // Exclusive mode open
handle=DB_open(filename,1); /* Exclusive mode open */
if (handle > -1)
{
int i;
@ -643,7 +643,7 @@ int DB_packindex(short vis, const char * filename, RecDes *r, long *peod)
else
ff++;
do_key(ff,r,tags);
if (u4switch() &2 || u4switch() & 8) // Clipper and DBIII
if (u4switch() &2 || u4switch() & 8) /* Clipper and DBIII */
{
rt = (int)i4create(dbdata[handle],(char*)filename,tags);
#ifndef FOXPRO
@ -666,7 +666,7 @@ int DB_packindex(short vis, const char * filename, RecDes *r, long *peod)
}
}
}
if (u4switch() & 1 || u4switch() & 4) // FOXPRO and DBIV
if (u4switch() & 1 || u4switch() & 4) /* FOXPRO and DBIV */
{
rt = (int)i4create(dbdata[handle],NULL,tags);
#ifndef FOXPRO
@ -700,14 +700,14 @@ int DB_packindex(short vis, const char * filename, RecDes *r, long *peod)
int DB_build(const char * filename, RecDes *r)
{
FIELD4INFO field_info[MaxFields+1]; // Numero di campi in un record
TAG4INFO tag_info[MaxKeys+1]; // Numero di chiavi in un file
FIELD4INFO field_info[MaxFields+1]; /* Numero di campi in un record */
TAG4INFO tag_info[MaxKeys+1]; /* Numero di chiavi in un file */
DATA4 *dbuilded;
int rt=0,i;
char *ff = find_slash_backslash((char *)filename);
for (i=0; ((i<r->NFields) && (i<MaxFields)); i++) // Construct field_info
for (i=0; ((i<r->NFields) && (i<MaxFields)); i++) /* Construct field_info */
{
field_info[i].name = (char*)u4alloc(12);
strcpy(field_info[i].name,r->Fd[i].Name);
@ -717,7 +717,7 @@ int DB_build(const char * filename, RecDes *r)
{
case _intfld:
case _longfld:
case _realfld: // It's a non sense to keep this in key!
case _realfld: /* It's a non sense to keep this in key! */
case _wordfld:
case _intzerofld:
case _longzerofld:
@ -746,11 +746,11 @@ int DB_build(const char * filename, RecDes *r)
ff++;
do_key(ff,r,tag_info);
if ((dbuilded=d4create(&code_base, (char *)filename, field_info, tag_info))==0) // deve solo creare il file dati vuoto
if ((dbuilded=d4create(&code_base, (char *)filename, field_info, tag_info))==0) /* deve solo creare il file dati vuoto */
rt=code_base.error_code;
else
rt=d4close(dbuilded);
if (u4switch() & 2 || u4switch() & 8) // Rebuild filename.cgp for CLIPPER AND DBIII only
if (u4switch() & 2 || u4switch() & 8) /* Rebuild filename.cgp for CLIPPER AND DBIII only */
{
FILE* fp;
char xx[81];
@ -857,7 +857,7 @@ char* DB_index_getkey(int handle)
if ((t=d4tag_default(dbdata[handle]))==NULL) return(NULL);
klen=expr4key_len(t->expr);
if (klen > (MAXLEN-1)) klen=MAXLEN-1;
memcpy(key,t4key(t),klen); // t4key non restituisce una null terminated string
memcpy(key,t4key(t),klen); /* t4key non restituisce una null terminated string */
key[klen]='\0';
return(key);
}
@ -923,11 +923,11 @@ long DB_getconf()
long DB_changed(int handle)
{
INDEX4 *i;
char fn[32];
char fn[64];
if(dbdata[handle]==0) return(-1);
if (u4switch() & 2 || u4switch() & 8) // Clipper & DBIII
u4name_piece(fn,32,dbdata[handle]->file.name,0,0);
if (u4switch() & 2 || u4switch() & 8) /* Clipper & DBIII */
u4name_piece(fn,64,dbdata[handle]->file.name,0,0);
else
strcpy(fn,dbdata[handle]->file.name);
i=d4index(dbdata[handle],fn);