
    㧭 祣     짮⥫,  ⮣
஠㥬 ࠬ  ப.
। ᫥  ࠡ:

᫨ ࠬ஢ ,    뢮  ࠭  ଠ  
䠩,   ᠬ ࠧࠥ.

/s                   - ࠢ  .
/		     - ࠢ ᮤন .
/f:condition         - 䨫஢    ᫮.
		           ,   ⮫쪮  ᫨  ࠢ
		       ᮤন, ⮬ ⨬ ࠬ஬ ⮬⮬
		       㤥  ࠬ /c.
/o:field,field,field - ⠭   ⠪  冷   ᥩ  
		       ࠢ. ࠧ㬥   , ⮫쪮
		       ᫨  ࠢ   ᮤন,  ⮬  ⨬
		       ࠬ஬ ⮬⮬ 㤥  ࠬ /c.

 ⮬ ᪠  ணࠬ ਬ , ਢ .
⠪   -  main()  ⮢       ⠯   㦤  
쭥襩 ࠡ⪥,  ᫥騥  蠣  ᮡ⢥  -樨
ணࠬ:
	StructInfo(), 
	CmpStruct()
	CmpContent().

       䠪,  ࠬ ।
   ப,        ᯮ짮  ᨬ <>|  
 ᫮  䨫. ⮬   짮⥫    
{};,      室 .

⠭ 䨫 :

set_filter(d1, &argv[use_filter][3], NULL);

 ࠬ  - 㪠⥫   ,  ன -  ࠦ 䨫,
⨩ -   㭪樨   NULL. 㭪     ᠭ 
void __stdcall  FCallBack(); 
           㣮 -  ᮢ  ண-,
業  ..

⠭ 浪 ᥩ ⮦   뢠 ᮡ ஡:

SortBase(d1, &argv[use_order][3], NULL);

  ࠬ -  㪠⥫   ,  ன  -   ࠧ
묨   窮   ⮩,  ⨩ -   㭪樨   NULL.
㭪 ⮣  ⨯.


#include "dbf.h"

struct	DBF	*d1, *d2;

int	cmp_struct=0;
int	cmp_content=0;
int	use_order=0;
int	use_filter=0;

void	help();
void	error(char *s);
void	StructInfo();
void	CmpStruct();
void	CmpContent();

int
main(int argc, char *argv[])
{
 int	i;

 if (argc<3) help();

 d1=OpenBase(argv[1]);
 d2=OpenBase(argv[2]);
 if (!d1 || !d2) error("Open error...");

 for(i=3;i<argc;i++)
 {
  if (!stricmp (argv[i], "/s"   ))   cmp_struct =1;
  if (!stricmp (argv[i], "/c"   ))   cmp_content=1;
  if (!strnicmp(argv[i], "/o:",3)) { cmp_content=1; use_order=i;  }
  if (!strnicmp(argv[i], "/f:",3)) { cmp_content=1; use_filter=i; }
 } 

 StructInfo();
 if (cmp_struct)  CmpStruct();

 if (use_filter)
 {
  char	*t;
  int	j;
  t=&argv[use_filter][3];
  j=lstrlen(t);
  for (i=0;i<j;i++)
  {
   if (t[i]=='}') t[i]='>';
   if (t[i]=='{') t[i]='<';
   if (t[i]==';') t[i]='|';
  }

  set_filter(d1, &argv[use_filter][3], NULL);
  set_filter(d2, &argv[use_filter][3], NULL);
 }

 if (use_order)
 {
  SortBase(d1, &argv[use_order][3], NULL);
  SortBase(d2, &argv[use_order][3], NULL);
 }

 if (cmp_content) CmpContent();

 CloseBase(d1);
 CloseBase(d2);

 return 0;
}


void
StructInfo()
{
}

void
CmpStruct()
{
}

void
CmpContent()
{
}

void
help()
{
 puts("DBF File Compare. Version 1.00 Copyright (c) Sergey Chehuta, 2001\n"
      "Use:\n"
      "\tDFC <file1.dbf> <file2.dbf> [switches]\n"
      "Switches:\n"
      "\t/s - compare structure\n"
      "\t/c - compare content\n"
      "\t/f:condition...      - set filter\n"
      "\t/o:field1,field2,... - order of records for comparison\n"
     );
 exit(0);
}

void
error(char *s)
{
 puts(s);
 exit(1);
}
