Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com Message-ID: <3830060D.F521C1C6@agames.com> Date: Mon, 15 Nov 1999 05:09:33 -0800 From: "David O'Riva" Organization: Atari Games, Inc. X-Mailer: Mozilla 4.7 [en] (WinNT; I) X-Accept-Language: en MIME-Version: 1.0 To: cygwin AT sourceware DOT cygnus DOT com Subject: Re: [NOT FIXED] Symbolic links & RCS -- READ IT! Content-Type: multipart/mixed; boundary="------------F2D536FFA179C0C0A581940B" --------------F2D536FFA179C0C0A581940B Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Andre Oliveira da Costa wrote: > > Well, I'm sorry to say that this is _not_ great news -- I said "OK" too soon > =T The RCS tools I created did understand the symbolic links scheme of > Cygwin, but they show some strange behavior that makes it impossible to use > them. ci.exe is unable to check-in files if they don't exist on the RCS dir; > it complains about being unable to create the files on the RCS dir due to > permission problems, and aborts leaving some temporary files around in my > HD. > Yeah - I remember this from b19. Had to rebuild them myself about a week ago, so I took the time to work up a reasonable patch to the distribution (attached). This should work for b19 and b20/.1. Specific changes: fixed conf.sh to not bomb out during mmap_signal check fixed rcslex.c so that O_BINARY doesn't assume !(large_memory && has_mmap) fixed rcsedit.c in two places: readlink is still screwed on b20 (setup via conf.sh) renaming read-only files is wierd (setup via conf.sh) This patch fixes the ci bug and prevents the occasional truncation of stored revision files, and cause configure to run very smoothly. If you are still running b19, you may need to change "x=" to "x=.exe" in the makefile as per the "Package Report" (BTW, does someone want to post this patch there?) -- -dave _________________________ ------------/ David O'Riva \-------------- 408- | Staff Software Engineer | oriva@ 473-9413 | Atari Games, Inc. | agames.com \_________________________/ --------------F2D536FFA179C0C0A581940B Content-Type: text/plain; charset=us-ascii; name="rcs-5.7-cygwinb20.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="rcs-5.7-cygwinb20.patch" # patches rcs-5.7 to work with cygwin b19/20/20.1 # doesn't break the configure script for other systems # To apply: cd rcs-5.7 ; patch -p 1 -i rcs-5.7-cygwinb20.patch diff -r -c rcs-5.7/src/conf.sh rcs-5.7-good/src/conf.sh *** rcs-5.7/src/conf.sh Thu Jun 15 23:19:24 1995 --- rcs-5.7-good/src/conf.sh Fri Nov 12 14:33:59 1999 *************** *** 311,325 **** # We must do has_readlink next, because it might generate # #include directives that affect later definitions. ! $ech >&3 "$0: configuring has_readlink, readlink_isreg_errno $dots" cat >a.c <&3 "$0: configuring has_readlink, readlink_isreg_errno, bad_readlink_enoent $dots" cat >a.c <&3 $h, $readlink_isreg_errno cat <&3 $h, $readlink_isreg_errno, $bh cat <&3 $has_map_fd, $has_mmap, $has_madvise, $mmap_signal --- 1071,1077 ---- # when someone unexpectedly truncates a file # while RCS has it mmapped. rm -f a.e && cp a.c a.e && ! mmap_signal=`$aout a.e &3 $has_map_fd, $has_mmap, $has_madvise, $mmap_signal diff -r -c rcs-5.7/src/rcsedit.c rcs-5.7-good/src/rcsedit.c *** rcs-5.7/src/rcsedit.c Thu Jun 15 23:19:24 1995 --- rcs-5.7-good/src/rcsedit.c Fri Nov 12 14:35:39 1999 *************** *** 1279,1285 **** bufautoend(&bigbuf); errno = e; switch (e) { ! case readlink_isreg_errno: return 1; case ENOENT: return 0; default: return -1; } --- 1279,1300 ---- bufautoend(&bigbuf); errno = e; switch (e) { ! case readlink_isreg_errno: ! # if bad_readlink_enoent ! /* ! * Cygwin32 betas 19 & 20 report EINVAL if the ! * file doesn't exist, instead of ENOENT. ! * Make sure the file really does exist. ! */ ! { ! struct stat st; ! if ( stat(L->string, &st) == 0 ) ! /* File exists, but no symlink */ ! return 1; ! } ! # else ! return 1; ! # endif case ENOENT: return 0; default: return -1; } *************** *** 1595,1601 **** } # endif ! # if bad_a_rename /* * There's a short window of inconsistency * during which the lock file is writable. --- 1610,1616 ---- } # endif ! # if bad_a_rename || bad_nw_rename /* * There's a short window of inconsistency * during which the lock file is writable. *************** *** 1650,1656 **** } # endif ! # if bad_a_rename if (0 < set_mode && chmod(to, mode) != 0) return -1; # endif --- 1665,1671 ---- } # endif ! # if bad_a_rename || bad_nw_rename if (0 < set_mode && chmod(to, mode) != 0) return -1; # endif diff -r -c rcs-5.7/src/rcslex.c rcs-5.7-good/src/rcslex.c *** rcs-5.7/src/rcslex.c Thu Jun 15 23:19:24 1995 --- rcs-5.7-good/src/rcslex.c Fri Nov 12 11:56:47 1999 *************** *** 1113,1119 **** /* Open NAME for reading, yield its descriptor, and set *STATUS. */ { int fd = fdSafer(open(name, O_RDONLY ! # if OPEN_O_BINARY | (strchr(type,'b') ? OPEN_O_BINARY : 0) # endif )); --- 1113,1119 ---- /* Open NAME for reading, yield its descriptor, and set *STATUS. */ { int fd = fdSafer(open(name, O_RDONLY ! # if OPEN_O_BINARY && !(large_memory && maps_memory) | (strchr(type,'b') ? OPEN_O_BINARY : 0) # endif )); --------------F2D536FFA179C0C0A581940B Content-Type: text/plain; charset=us-ascii -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com --------------F2D536FFA179C0C0A581940B--