Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com X-Authentication-Warning: localhost.localdomain: ronald owned process doing -bs Date: Tue, 8 Apr 2003 10:47:06 +0200 (CEST) From: Ronald Landheer-Cieslak X-X-Sender: ronald AT localhost DOT localdomain To: dmay AT tvi DOT edu cc: cygwin AT cygwin DOT com Subject: Re: Problem with database engine on Cygwin In-Reply-To: <200304072035.h37KZhkx025486@phys-nfs1.tvi.cc.nm.us> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII I've grepped your code for the usual binmode vs textmode problem - every fopen you call is in the "default" mode, which may be textmode. In textmode, \n will be translated to \r\n when saving, which will corrupt your (binary) files. Add a "b" to the open options in each fopen call - this will not disturb anything on any other platform, and probably fix your problem :) HTH rlc On Mon, 7 Apr 2003 dmay AT tvi DOT edu wrote: > Hi, all. > > I have written a database engine that I use for several administrative > projects for the organization that I work for. My goal is to provide cygwin > support for that system, but I have run into a problem that I have been unable > to resolve. The source for the engine is available at > > http://w3.tvi.edu/~dmay/dcdb.html > > The record deletion functionality for the system is similar to that in old > dBase III, where the records aren't actually deleted but merely marked as > deleted until a packing process occurs. The packing process is where I am > seeing the problem under cygwin. Basically, indexes are getting corrupted > during packing. The following are basically the steps that I use in packing a > table: > > - close the indexes associated with the table > - delete the indexes associated with the table > - create a copy of the table under a new name > - create indexes for the copy > - copy the undeleted records to the new table > - close and delete the original table > - close the new table > - rename the new table to the name the original table had > > All files are opened in binary mode. At first it looked like the problem > occurred because I tried to rename the table file while it was open. However, > I have changed the code to close the table before I try to rename it. It's > possible that I am trying to delete a file that is open for writing, but I've > tried multiple work-arounds to avoid that situation to no avail. > > I apologize that I can't get this down to a small snippet of code that clearly > displays the problem, but I am rather baffled by this and don't know where to > begin. This same code works as is under Linux and Solaris compiled with > gcc-2.9x.x, but fails under cygwin with gcc-3 or gcc-2. I tried stepping > through the code using gdb but the problem happens at some point and no error > is raised immediately as a result of it (unless I am not handling errors in > that part of the code correctly - always a possibility :o). I am assuming > that it is some windows file access rule that I am violating as it seems to > only effect windows. > > I have attached the output of 'cygcheck -s -v -r'. I didn't find anything in > the list archives that seemed to apply here. Also, I didn't see anything in > the FAQ that looks like it could be the problem. Any ideas on how to track > down and squash this problem would be greatly appreciated. > > Thanks in advance. > -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/