>>You can create a temp dbc and then in step 1 "copy ... to {tablename} database {temp dbc}", so step 3 becomes unnecessary and you don't lose long field names.
>
>I dont use dbc and long names.
>
>This maintenande program also fixes dbf and fpt corruption if original dbf
>cannot opened and recovers data from dbf/fpt as much as possible using low level read and write.
>Code from Les Pinter book is used for this.
>
>This code works only with fox2x dbf files. If switching to new table stucture,
>this repairing routine stops working: if founds that table is not dbf file and creates
>new empty file destroying all data in all tables.
>I dont have code which can repair/fix dbc/vfp dbf files automatically like
>Pinter routine does for fox2 files.
I wrote something of the kind long ago, but it needs to know the table structure in advance, i.e. it's generated code, so it can do its thing even when table header is overwritten. It was up to date with table structures as of VFP6 or so - so it's not handling nulls, variable length types, blobs and autoincrement fields. Also not sure if it handled memos when blocksize was zero.
Though I could have written those as well, never did because I didn't need to (was in the US at the time and the SMB2 bug wasn't invented yet).