Patch level :10.0 nuovo CD

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :sistemato problema conversione con file aventi nomi lunghi (chiave con nome lungo di conseguenza e scrittura dei gen sputtanata)


git-svn-id: svn://10.65.10.50/trunk@17563 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2008-11-05 16:33:58 +00:00
parent fecd62abff
commit 7d477f0e05

View File

@ -488,9 +488,9 @@ HIDDEN void do_key(const char *fname, RecDes *r, TAG4INFO *tag_info, int n_keys)
xvt_str_make_upper(tiname); xvt_str_make_upper(tiname);
for (i=0; ((i < MaxKeys) && (i < n_keys)); i++) for (i=0; ((i < MaxKeys) && (i < n_keys)); i++)
{ {
tag_info[i].name=(char *)u4alloc(9); tag_info[i].name=(char *)u4alloc(_MAX_FNAME);
tag_info[i].expression=(char *)u4alloc(256); tag_info[i].expression=(char *)u4alloc(256);
tag_info[i].filter=(char*)u4alloc(20); tag_info[i].filter=(char*)u4alloc(32);
tag_info[i].descending=0; tag_info[i].descending=0;
if (r->Ky[i].DupKeys) if (r->Ky[i].DupKeys)
tag_info[i].unique=0; tag_info[i].unique=0;
@ -498,7 +498,6 @@ HIDDEN void do_key(const char *fname, RecDes *r, TAG4INFO *tag_info, int n_keys)
tag_info[i].unique= i == 0 ? e4unique : r4unique_continue; tag_info[i].unique= i == 0 ? e4unique : r4unique_continue;
strcpy((char *)tag_info[i].filter,".NOT. DELETED()"); /* Not available for DBIII and CLIPPER */ strcpy((char *)tag_info[i].filter,".NOT. DELETED()"); /* Not available for DBIII and CLIPPER */
strcpy((char *)tag_info[i].name,tiname) ; strcpy((char *)tag_info[i].name,tiname) ;
if (strlen(tiname) < 8)
strcat((char *)tag_info[i].name," "); strcat((char *)tag_info[i].name," ");
tag_info[i].name[strlen(tag_info[i].name)-1] = '0' + i + 1; tag_info[i].name[strlen(tag_info[i].name)-1] = '0' + i + 1;
for (j=0; j < r->Ky[i].NkFields; j++) for (j=0; j < r->Ky[i].NkFields; j++)
@ -544,8 +543,8 @@ HIDDEN void do_key(const char *fname, RecDes *r, TAG4INFO *tag_info, int n_keys)
case _longzerofld: case _longzerofld:
{ {
char ts[8]; char ts[8];
strcat((char *)tag_info[i].expression,",");
sprintf(ts,"%d",r->Fd[nf].Len); sprintf(ts,"%d",r->Fd[nf].Len);
strcat((char *)tag_info[i].expression,",");
strcat((char *)tag_info[i].expression,ts); strcat((char *)tag_info[i].expression,ts);
strcat((char *)tag_info[i].expression,",0)"); strcat((char *)tag_info[i].expression,",0)");
} }
@ -805,14 +804,16 @@ int DB_build(const char * filename, RecDes *r)
FIELD4INFO field_info[MaxFields+1]; /* Numero di campi in un record */ FIELD4INFO field_info[MaxFields+1]; /* Numero di campi in un record */
TAG4INFO tag_info[MaxKeys+1]; /* Numero di chiavi in un file */ TAG4INFO tag_info[MaxKeys+1]; /* Numero di chiavi in un file */
DATA4 *dbuilded; DATA4 *dbuilded = NULL;
int rt=0,i; int rt=0,i;
const char *ff = find_slash_backslash(filename); const char *ff = find_slash_backslash(filename);
memset(field_info, 0, sizeof(field_info));
memset(tag_info, 0, sizeof(tag_info));
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); field_info[i].name = (char*)u4alloc(16); // In realtà basterebbero 12
strcpy(field_info[i].name,r->Fd[i].Name); strcpy(field_info[i].name,r->Fd[i].Name);
field_info[i].len = r->Fd[i].Len; field_info[i].len = r->Fd[i].Len;
field_info[i].dec = r->Fd[i].Dec; field_info[i].dec = r->Fd[i].Dec;
@ -858,7 +859,9 @@ int DB_build(const char * filename, RecDes *r)
rt=code_base.errorCode; rt=code_base.errorCode;
else else
rt=d4close(dbuilded); rt=d4close(dbuilded);
if (u4switch() & 2 || u4switch() & 8) /* Rebuild filename.cgp for CLIPPER AND DBIII only */
/* Non abbiamo mai usato e spariamo mai useremo questo genere di files!!!!
if (u4switch() & 2 || u4switch() & 8) //Rebuild filename.cgp for CLIPPER AND DBIII only
{ {
FILE* fp; FILE* fp;
char xx[81]; char xx[81];
@ -872,7 +875,7 @@ int DB_build(const char * filename, RecDes *r)
fprintf(fp,"%s\n",tag_info[j].name); fprintf(fp,"%s\n",tag_info[j].name);
fclose(fp); fclose(fp);
} }
} }*/
if (rt!=0) if (rt!=0)
rt=code_base.errorCode; rt=code_base.errorCode;
for (i=0; ((i < MaxFields) && (i < r->NFields)); i++) for (i=0; ((i < MaxFields) && (i < r->NFields)); i++)