Hi

We use Metakit to store miscellaneous information for our programe. It works on 
windows, 
macosx and linux.
It happens that when the database is created on the windows network, we have 
some problem 
with the windows application (we use metakit-2.4.9.6).

Below you will find a program that creates a file, adds rows, and retrieves 
information.

The Find function doesn't return anything and a manuel search also gives no 
result. In our 
main program, the Find() function remains in an infinite loop.
It works fine with other plateform combinations : from windows client to simple 
windows 
sharing, from macosx client to windows file server and from macosx client to 
macosx apple share 
file server.

Thanks for any suggestion about this.

PS: our windows file server is a macosx with Samba. we compile with visual 
studio 2005

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <mk4.h>


void main(int argc, char **argv)
{
   char dbpath[100]="";
   printf("Choose a db destination :\n\n");
   printf("1 -  Local\n");
   printf("2 -  Network : Windows file server\n");
   printf("3 -  Network : Windows sharing\n\n");

   switch (getche())
   {
     case '1':
       strcpy(dbpath,"c:\\zdrop\\metakit_tutorial.db");
       break;
     case '2':
       strcpy(dbpath,"\\\\Noe\\Developpement\\metakit_tutorial.db");
       break;
     case '3':
       strcpy(dbpath,"\\\\Ordiludovic\\partageArticque\\metakit_tutorial.db");
       break;
     default:
       break;
   }
   printf("\n");
   if (strlen(dbpath)>0)
   {
     fflush(stdin);
     FILE *fp=NULL;
     // remove if present
     if ((fp=fopen(dbpath,"r"))!=NULL)
     {
       fclose(fp);
       unlink(dbpath);
     }
     // create db
     c4_Storage database(dbpath, true);
     // add datas
     c4_View maps=database.GetAs("maps[mid:S,mwidth:I,mheight:I,mpath:S]");
     c4_StringProp mid("mid"),mpath("mpath");
     c4_IntProp mwidth("mwidth"),mheight("mheight");
     c4_Row maprow;
     mid(maprow)="A";
     mwidth(maprow)=10;
     mheight(maprow)=10;
     mpath(maprow)="/home/MapA.vxf";
     maps.Add(maprow);
     mid(maprow)="B";
     mwidth(maprow)=20;
     mheight(maprow)=20;
     mpath(maprow)="/home/MapB.vxf";
     maps.Add(maprow);
     mid(maprow)="C";
     mwidth(maprow)=30;
     mheight(maprow)=30;
     mpath(maprow)="/home/MapC.vxf";
     maps.Add(maprow);
     // save
     database.Commit();

     // add more datas
     c4_View datas=database.GetAs("datas[did:S,dmapid:S,dpath:S]");
     // add data
     c4_StringProp did("did"),dmapid("dmapid"),dpath("dpath");
     c4_Row  datarow;
     did(datarow)="1";
     dmapid(datarow)="A";
     dpath(datarow)="/home/A1.txt";
     datas.Add(datarow);
     did(datarow)="2";
     dmapid(datarow)="A";
     dpath(datarow)="/home/A2.txt";
     datas.Add(datarow);
     did(datarow)="3";
     dmapid(datarow)="B";
     dpath(datarow)="/home/B1.txt";
     datas.Add(datarow);
     did(datarow)="4";
     dmapid(datarow)="B";
     dpath(datarow)="/home/B2.txt";
     datas.Add(datarow);
     did(datarow)="5";
     dmapid(datarow)="C";
     dpath(datarow)="/home/C1.txt";
     datas.Add(datarow);
     // save
     database.Commit();
     // Find data
     long idxsearch=-1;
     c4_Row findrow;
     dmapid(findrow)="B";
     while(1)
     {
       idxsearch=datas.Find(findrow,idxsearch+1);
       if (idxsearch>=0)
         printf("DATA %s has dmapid=%s\n",
           (const char*)dpath(datas[idxsearch]),
           (const char*)dmapid(datas[idxsearch]));
       else
         break;
     }
     // manuel search
     c4_Row strrow;
     const char*strdata;
     const char*expr="ome/B";
     for (int idx=0;idx<datas.GetSize();idx++)
     {
       strdata=(const char*)dpath(datas[idx]);
       if (strstr(strdata,expr)!=NULL)
         printf("map %s has the string '%s' in the path\n",strdata,expr);
     }


   }
   printf("Test over\n");
   getch();
}


-- 
Florent Lejeune
Développeur
 
Articque
Moulin des Roches
37230 Fondettes
France
web = http://www.articque.com
tel: +33 02 47 49 90 49
fax: +33 02 47 49 91 49 
_____________________________________________
Metakit mailing list  -  Metakit@equi4.com
http://www.equi4.com/mailman/listinfo/metakit

Reply via email to