public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
* RE: [NOT FIXED] Symbolic links & RCS -- READ IT!
@ 1999-11-15 10:30 Kazuhiro Fujieda
  1999-11-30 23:39 ` Kazuhiro Fujieda
  0 siblings, 1 reply; 10+ messages in thread
From: Kazuhiro Fujieda @ 1999-11-15 10:30 UTC (permalink / raw)
  To: cygwin

From: "Andre Oliveira da Costa" <costa at cade dot com dot br> 
Date: Fri, 12 Nov 1999 12:05:37 -0200 

> 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.

This is caused by a bug in readlink() of Cygwin B20.1. I fixed
it in the 19991013 snapshot. Please try the latest snapshot of
cygwin1.dll.
____
  | AIST      Kazuhiro Fujieda <fujieda@jaist.ac.jp>
  | HOKURIKU  School of Information Science
o_/ 1990      Japan Advanced Institute of Science and Technology

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com

^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [NOT FIXED] Symbolic links & RCS -- READ IT!
  1999-11-15 10:30 [NOT FIXED] Symbolic links & RCS -- READ IT! Kazuhiro Fujieda
@ 1999-11-30 23:39 ` Kazuhiro Fujieda
  0 siblings, 0 replies; 10+ messages in thread
From: Kazuhiro Fujieda @ 1999-11-30 23:39 UTC (permalink / raw)
  To: cygwin

From: "Andre Oliveira da Costa" <costa at cade dot com dot br> 
Date: Fri, 12 Nov 1999 12:05:37 -0200 

> 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.

This is caused by a bug in readlink() of Cygwin B20.1. I fixed
it in the 19991013 snapshot. Please try the latest snapshot of
cygwin1.dll.
____
  | AIST      Kazuhiro Fujieda <fujieda@jaist.ac.jp>
  | HOKURIKU  School of Information Science
o_/ 1990      Japan Advanced Institute of Science and Technology

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [NOT FIXED] Symbolic links & RCS -- READ IT!
  1999-11-15  9:52 ` David O'Riva
@ 1999-11-30 23:39   ` David O'Riva
  0 siblings, 0 replies; 10+ messages in thread
From: David O'Riva @ 1999-11-30 23:39 UTC (permalink / raw)
  To: cygwin; +Cc: Andre Oliveira da Costa, rogers

Well, shoot.

The patch I just put up has a problem - bad_nw_rename wasn't configuring
at all.  This revised patch takes care of that and is a bit clearer
about what the problem is (utime(UNWRITEABLEFILE,struct utime) fails).

Sigh...  This one actually passes all my tests, and should be everything
the previous one was supposed to be. ;-)

-- 
-dave        _________________________
------------/      David O'Riva       \--------------
408-        | Staff Software Engineer | oriva@
 473-9413   |    Atari Games, Inc.    |   agames.com
            \_________________________/

#  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.patchb

diff -rc rcs-5.7/src/conf.sh rcs-5.7-good/src/conf.sh
*** rcs-5.7/src/conf.sh	Mon Nov 15 07:17:49 1999
--- rcs-5.7-good/src/conf.sh	Mon Nov 15 08:49:40 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 <<EOF
  #include "$A_H"
  static char b[7];
  int
! main() {
  	if (readlink("a.sym2",b,7) == 6  &&  strcmp(b,"a.sym1") == 0  &&
  		readlink("a.c",b,7) == -1  &&  errno != ENOENT
  	) {
  		if (errno == EINVAL)
  			printf("EINVAL\n");
  		else
--- 311,338 ----
  # 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, bad_readlink_enoent $dots"
  cat >a.c <<EOF
  #include "$A_H"
  static char b[7];
  int
! main(argc, argv) int argc; char **argv; {
  	if (readlink("a.sym2",b,7) == 6  &&  strcmp(b,"a.sym1") == 0  &&
  		readlink("a.c",b,7) == -1  &&  errno != ENOENT
  	) {
+ 		/*
+ 		* test for readlink returning same errno for
+ 		* regular files and non-existent files
+ 		*/
+ 		if (1 < argc) {
+ 			int e=errno;
+ 			readlink("a.sym3",b,7);
+ 			if( errno==e )
+ 				printf( "1\n" );
+ 			else
+ 				printf( "0\n" );
+ 			exitmain(ferror(stdout) || fclose(stdout)!=0);
+ 		}
  		if (errno == EINVAL)
  			printf("EINVAL\n");
  		else
***************
*** 335,343 ****
  then h=1
  else h=0
  fi
! echo >&3 $h, $readlink_isreg_errno
  cat <<EOF
  #define has_readlink $h /* Does readlink() work?  */
  #define readlink_isreg_errno $readlink_isreg_errno /* errno after readlink on regular file */
  
  #if has_readlink && !defined(MAXSYMLINKS)
--- 348,361 ----
  then h=1
  else h=0
  fi
! case $h in
! 1) bh=`$aout t`;;
! *) bh=0;;
! esac
! echo >&3 $h, $readlink_isreg_errno, $bh
  cat <<EOF
  #define has_readlink $h /* Does readlink() work?  */
+ #define bad_readlink_enoent $bh /* Does readlink() return ENOENT correctly?  */
  #define readlink_isreg_errno $readlink_isreg_errno /* errno after readlink on regular file */
  
  #if has_readlink && !defined(MAXSYMLINKS)
***************
*** 1053,1059 ****
  		# 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 <a.e` || exit
  	esac
  esac
  echo >&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 <a.e` || mmap_signal=
  	esac
  esac
  echo >&3 $has_map_fd, $has_mmap, $has_madvise, $mmap_signal
***************
*** 1103,1108 ****
--- 1121,1151 ----
  echo "#define bad_a_rename $a /* Does rename(A,B) fail if A is unwritable?  */"
  echo "#define bad_b_rename $b /* Does rename(A,B) fail if B is unwritable?  */"
  echo "#define bad_NFS_rename 0 /* Can rename(A,B) falsely report success?  */"
+ 
+ $ech >&3 "$0: configuring bad_nw_utime $dots"
+ cat >a.c <<EOF
+ #include "$A_H"
+ int main() {
+ 	static struct utimbuf amtime; /* static so unused fields are zero */
+ 	static time_t t;
+ 	time(&t);
+ 	amtime.actime = t;
+ 	amtime.modtime = t;
+ 	exitmain(utime("a.a",&amtime) != 0); }
+ EOF
+ if $CL a.c $L >&2
+ then
+ 	rm -f a.a &&
+ 	echo a >a.a && chmod -w a.a || exit
+ 	if $aout
+ 	then a=0
+ 	else a=1
+ 	fi
+ 	rm -f a.a || exit
+ else a=0
+ fi
+ echo >&3 $a
+ echo "#define bad_nw_utime $a /* Does utime() work on unwriteable files?  */"
  
  $ech >&3 "$0: configuring void, VOID $dots"
  cat >a.c <<EOF
diff -rc rcs-5.7/src/rcsedit.c rcs-5.7-good/src/rcsedit.c
*** rcs-5.7/src/rcsedit.c	Mon Nov 15 07:17:49 1999
--- rcs-5.7-good/src/rcsedit.c	Mon Nov 15 07:51:40 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,1617 ----
  	    }
  #	endif
  
! 	if ( bad_a_rename || (bad_nw_utime && mtime!=-1) )
! 	{
  		/*
  		* There's a short window of inconsistency
  		* during which the lock file is writable.
***************
*** 1603,1609 ****
  		mode_while_renaming = mode|S_IWUSR;
  		if (mode != mode_while_renaming)
  		    set_mode = 1;
! #	endif
  
  #	if has_fchmod
  	    if (0<set_mode  &&  fchmod(fileno(*fromp),mode_while_renaming) == 0)
--- 1619,1625 ----
  		mode_while_renaming = mode|S_IWUSR;
  		if (mode != mode_while_renaming)
  		    set_mode = 1;
! 	}
  
  #	if has_fchmod
  	    if (0<set_mode  &&  fchmod(fileno(*fromp),mode_while_renaming) == 0)
***************
*** 1616,1621 ****
--- 1632,1647 ----
  
  	if (setmtime(from, mtime) != 0)
  		return -1;
+ 
+ 	/*
+ 	* if rename unwriteable works but utime unwriteable doesn't, we can
+ 	* change the mode back now.  Otherwise wait until after rename.
+ 	*/
+ 	if ( !bad_a_rename && (bad_nw_utime && mtime!=-1) )
+ 	{
+ 	    if (0 < set_mode  &&  chmod(from, mode) != 0)
+ 		return -1;
+ 	}
  
  #	if !has_rename || bad_b_rename
  		/*
diff -rc rcs-5.7/src/rcslex.c rcs-5.7-good/src/rcslex.c
*** rcs-5.7/src/rcslex.c	Mon Nov 15 07:17:49 1999
--- 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
  	));

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [NOT FIXED] Symbolic links & RCS -- READ IT!
  1999-11-15  5:09 David O'Riva
  1999-11-15  9:52 ` David O'Riva
@ 1999-11-30 23:39 ` David O'Riva
  1 sibling, 0 replies; 10+ messages in thread
From: David O'Riva @ 1999-11-30 23:39 UTC (permalink / raw)
  To: cygwin

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
            \_________________________/

#  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 <<EOF
  #include "$A_H"
  static char b[7];
  int
! main() {
  	if (readlink("a.sym2",b,7) == 6  &&  strcmp(b,"a.sym1") == 0  &&
  		readlink("a.c",b,7) == -1  &&  errno != ENOENT
  	) {
  		if (errno == EINVAL)
  			printf("EINVAL\n");
  		else
--- 311,338 ----
  # 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, bad_readlink_enoent $dots"
  cat >a.c <<EOF
  #include "$A_H"
  static char b[7];
  int
! main(argc, argv) int argc; char **argv; {
  	if (readlink("a.sym2",b,7) == 6  &&  strcmp(b,"a.sym1") == 0  &&
  		readlink("a.c",b,7) == -1  &&  errno != ENOENT
  	) {
+ 		/*
+ 		* test for readlink returning same errno for
+ 		* regular files and non-existent files
+ 		*/
+ 		if (1 < argc) {
+ 			int e=errno;
+ 			readlink("a.sym3",b,7);
+ 			if( errno==e )
+ 				printf( "1\n" );
+ 			else
+ 				printf( "0\n" );
+ 			exitmain(ferror(stdout) || fclose(stdout)!=0);
+ 		}
  		if (errno == EINVAL)
  			printf("EINVAL\n");
  		else
***************
*** 335,343 ****
  then h=1
  else h=0
  fi
! echo >&3 $h, $readlink_isreg_errno
  cat <<EOF
  #define has_readlink $h /* Does readlink() work?  */
  #define readlink_isreg_errno $readlink_isreg_errno /* errno after readlink on regular file */
  
  #if has_readlink && !defined(MAXSYMLINKS)
--- 348,361 ----
  then h=1
  else h=0
  fi
! case $h in
! 1) bh=`$aout t`;;
! *) bh=0;;
! esac
! echo >&3 $h, $readlink_isreg_errno, $bh
  cat <<EOF
  #define has_readlink $h /* Does readlink() work?  */
+ #define bad_readlink_enoent $bh /* Does readlink() return ENOENT correctly?  */
  #define readlink_isreg_errno $readlink_isreg_errno /* errno after readlink on regular file */
  
  #if has_readlink && !defined(MAXSYMLINKS)
***************
*** 1053,1059 ****
  		# 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 <a.e` || exit
  	esac
  esac
  echo >&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 <a.e` || mmap_signal=
  	esac
  esac
  echo >&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
  	));


^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [NOT FIXED] Symbolic links & RCS -- READ IT!
  1999-11-12  6:06 ` Andre Oliveira da Costa
@ 1999-11-30 23:39   ` Andre Oliveira da Costa
  0 siblings, 0 replies; 10+ messages in thread
From: Andre Oliveira da Costa @ 1999-11-30 23:39 UTC (permalink / raw)
  To: Eran Leshem; +Cc: Cygwin

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 3323 bytes --]

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.

I've been in touch with some people off-list, trying to solve this problem
(Michael Weiser < mailto:michael@weiser.saale-net.de > and Erwin Achermann
< mailto:acherman@inf.ethz.ch >, which appear on the "GNUWin32 Package Report"
document on the RCS section, have been very responsive to my requests for
help, and for this I'm very thankful to them), but have made little progress
so far. I understood that all my mounts must be binary in order for RCS to
work, but even that didn't solve my problem completely -- ci.exe doesn't
complain anymore, but it doesn't create the files either (if someone's
interested in error outputs, they are reproduced at the end of this message)

The conclusion is: it is definitely NOT an easy task to build the RCS suite
using Cygwin -- even following the instructions contained on the "GNUWin32
Package Report" (GW32PR). I'm just stating that so that people know that the
GW32PR needs some updating.

But, all my (and other people's) effort has not been in vain: digging the
mailing list archives, I found a reference to a precompiled RCS suite for
b20
( http://www.delorie.com/archives/browse.cgi?p=cygwin/1999/07/27/15:24:31 ). I
have just downloaded it (from
http://paddington.ic.uva.nl/public/rcs-5.7-cygwin-b20-bin.tar.bz2 ), and the
basic tests (check-in, rcsdiff, rlog) all did well. Looks like this is it,
but after making some wrong assumptions last time, I'd rather be more
cautious this time... I strongly encourage you to give this package a try,
and let me know if you have any troubles.

To all the people at Cygwin, and the many contributors, keep the great work
=)

Best regards,

Costa
--
André Oliveira da Costa
(costa@cade.com.br)

> -----Original Message-----
> From: Eran Leshem [ mailto:eranl@mercury.co.il ]
> Sent: Friday, November 12, 1999 10:57 AM
> To: Andr? Oliveira da Costa
> Subject: RE: [FIXED] Symbolic links & RCS
>
>
> This is great news! I'd like that too. Can you please make it available
> somehow? Send it to me in email?
>
> Thanks.
>
> 		Eran Leshem

===================================
To the curious, some output of my tries with the RCS suite I compiled
myself:

[ /cade/Weather\ Channel/src ] rlog genhtml.c
rlog: RCS/genhtml.c,v:1: unexpected end of file
rlog aborted

[ /cade/Weather\ Channel/src ] ls -l RCS
total 6
-rw-r--r--   1 544      everyone    11099 Nov 12 09:29 genhtml._
-r--r--r--   1 544      everyone        0 Nov 12 09:29 genhtml.c,v

[ /cade/Weather\ Channel/src ] ls -l *genhtml.c*
-rw-r--r--   1 544      everyone        0 Nov 12 10:10 ,genhtml.c,
-rw-r--r--   1 544      everyone    10906 Nov 12 10:10 genhtml.c

[ /cade/Weather\ Channel/src ] mount
Device           Directory           Type        Flags
C:               /                   native      text=binary



--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [NOT FIXED] Symbolic links & RCS -- READ IT!
  1999-11-15  6:38 Earnie Boyd
@ 1999-11-30 23:39 ` Earnie Boyd
  0 siblings, 0 replies; 10+ messages in thread
From: Earnie Boyd @ 1999-11-30 23:39 UTC (permalink / raw)
  To: David O'Riva, cygwin

--- David O'Riva <oriva@agames.com> wrote:
> 
> 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.
> 

I would like to add that the current version of CVS compiles OOB with Cygwin
without headaches.

=====
Earnie Boyd < mailto:earnie_boyd@yahoo.com >
Cygwin Newbies, please visit
< http://www.freeyellow.com/members5/gw32/index.html >
__________________________________________________
Do You Yahoo!?
Bid and sell for free at http://auctions.yahoo.com

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [NOT FIXED] Symbolic links & RCS -- READ IT!
  1999-11-15  5:09 David O'Riva
@ 1999-11-15  9:52 ` David O'Riva
  1999-11-30 23:39   ` David O'Riva
  1999-11-30 23:39 ` David O'Riva
  1 sibling, 1 reply; 10+ messages in thread
From: David O'Riva @ 1999-11-15  9:52 UTC (permalink / raw)
  To: cygwin; +Cc: Andre Oliveira da Costa, rogers

Well, shoot.

The patch I just put up has a problem - bad_nw_rename wasn't configuring
at all.  This revised patch takes care of that and is a bit clearer
about what the problem is (utime(UNWRITEABLEFILE,struct utime) fails).

Sigh...  This one actually passes all my tests, and should be everything
the previous one was supposed to be. ;-)

-- 
-dave        _________________________
------------/      David O'Riva       \--------------
408-        | Staff Software Engineer | oriva@
 473-9413   |    Atari Games, Inc.    |   agames.com
            \_________________________/

#  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.patchb

diff -rc rcs-5.7/src/conf.sh rcs-5.7-good/src/conf.sh
*** rcs-5.7/src/conf.sh	Mon Nov 15 07:17:49 1999
--- rcs-5.7-good/src/conf.sh	Mon Nov 15 08:49:40 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 <<EOF
  #include "$A_H"
  static char b[7];
  int
! main() {
  	if (readlink("a.sym2",b,7) == 6  &&  strcmp(b,"a.sym1") == 0  &&
  		readlink("a.c",b,7) == -1  &&  errno != ENOENT
  	) {
  		if (errno == EINVAL)
  			printf("EINVAL\n");
  		else
--- 311,338 ----
  # 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, bad_readlink_enoent $dots"
  cat >a.c <<EOF
  #include "$A_H"
  static char b[7];
  int
! main(argc, argv) int argc; char **argv; {
  	if (readlink("a.sym2",b,7) == 6  &&  strcmp(b,"a.sym1") == 0  &&
  		readlink("a.c",b,7) == -1  &&  errno != ENOENT
  	) {
+ 		/*
+ 		* test for readlink returning same errno for
+ 		* regular files and non-existent files
+ 		*/
+ 		if (1 < argc) {
+ 			int e=errno;
+ 			readlink("a.sym3",b,7);
+ 			if( errno==e )
+ 				printf( "1\n" );
+ 			else
+ 				printf( "0\n" );
+ 			exitmain(ferror(stdout) || fclose(stdout)!=0);
+ 		}
  		if (errno == EINVAL)
  			printf("EINVAL\n");
  		else
***************
*** 335,343 ****
  then h=1
  else h=0
  fi
! echo >&3 $h, $readlink_isreg_errno
  cat <<EOF
  #define has_readlink $h /* Does readlink() work?  */
  #define readlink_isreg_errno $readlink_isreg_errno /* errno after readlink on regular file */
  
  #if has_readlink && !defined(MAXSYMLINKS)
--- 348,361 ----
  then h=1
  else h=0
  fi
! case $h in
! 1) bh=`$aout t`;;
! *) bh=0;;
! esac
! echo >&3 $h, $readlink_isreg_errno, $bh
  cat <<EOF
  #define has_readlink $h /* Does readlink() work?  */
+ #define bad_readlink_enoent $bh /* Does readlink() return ENOENT correctly?  */
  #define readlink_isreg_errno $readlink_isreg_errno /* errno after readlink on regular file */
  
  #if has_readlink && !defined(MAXSYMLINKS)
***************
*** 1053,1059 ****
  		# 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 <a.e` || exit
  	esac
  esac
  echo >&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 <a.e` || mmap_signal=
  	esac
  esac
  echo >&3 $has_map_fd, $has_mmap, $has_madvise, $mmap_signal
***************
*** 1103,1108 ****
--- 1121,1151 ----
  echo "#define bad_a_rename $a /* Does rename(A,B) fail if A is unwritable?  */"
  echo "#define bad_b_rename $b /* Does rename(A,B) fail if B is unwritable?  */"
  echo "#define bad_NFS_rename 0 /* Can rename(A,B) falsely report success?  */"
+ 
+ $ech >&3 "$0: configuring bad_nw_utime $dots"
+ cat >a.c <<EOF
+ #include "$A_H"
+ int main() {
+ 	static struct utimbuf amtime; /* static so unused fields are zero */
+ 	static time_t t;
+ 	time(&t);
+ 	amtime.actime = t;
+ 	amtime.modtime = t;
+ 	exitmain(utime("a.a",&amtime) != 0); }
+ EOF
+ if $CL a.c $L >&2
+ then
+ 	rm -f a.a &&
+ 	echo a >a.a && chmod -w a.a || exit
+ 	if $aout
+ 	then a=0
+ 	else a=1
+ 	fi
+ 	rm -f a.a || exit
+ else a=0
+ fi
+ echo >&3 $a
+ echo "#define bad_nw_utime $a /* Does utime() work on unwriteable files?  */"
  
  $ech >&3 "$0: configuring void, VOID $dots"
  cat >a.c <<EOF
diff -rc rcs-5.7/src/rcsedit.c rcs-5.7-good/src/rcsedit.c
*** rcs-5.7/src/rcsedit.c	Mon Nov 15 07:17:49 1999
--- rcs-5.7-good/src/rcsedit.c	Mon Nov 15 07:51:40 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,1617 ----
  	    }
  #	endif
  
! 	if ( bad_a_rename || (bad_nw_utime && mtime!=-1) )
! 	{
  		/*
  		* There's a short window of inconsistency
  		* during which the lock file is writable.
***************
*** 1603,1609 ****
  		mode_while_renaming = mode|S_IWUSR;
  		if (mode != mode_while_renaming)
  		    set_mode = 1;
! #	endif
  
  #	if has_fchmod
  	    if (0<set_mode  &&  fchmod(fileno(*fromp),mode_while_renaming) == 0)
--- 1619,1625 ----
  		mode_while_renaming = mode|S_IWUSR;
  		if (mode != mode_while_renaming)
  		    set_mode = 1;
! 	}
  
  #	if has_fchmod
  	    if (0<set_mode  &&  fchmod(fileno(*fromp),mode_while_renaming) == 0)
***************
*** 1616,1621 ****
--- 1632,1647 ----
  
  	if (setmtime(from, mtime) != 0)
  		return -1;
+ 
+ 	/*
+ 	* if rename unwriteable works but utime unwriteable doesn't, we can
+ 	* change the mode back now.  Otherwise wait until after rename.
+ 	*/
+ 	if ( !bad_a_rename && (bad_nw_utime && mtime!=-1) )
+ 	{
+ 	    if (0 < set_mode  &&  chmod(from, mode) != 0)
+ 		return -1;
+ 	}
  
  #	if !has_rename || bad_b_rename
  		/*
diff -rc rcs-5.7/src/rcslex.c rcs-5.7-good/src/rcslex.c
*** rcs-5.7/src/rcslex.c	Mon Nov 15 07:17:49 1999
--- 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
  	));

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [NOT FIXED] Symbolic links & RCS -- READ IT!
@ 1999-11-15  6:38 Earnie Boyd
  1999-11-30 23:39 ` Earnie Boyd
  0 siblings, 1 reply; 10+ messages in thread
From: Earnie Boyd @ 1999-11-15  6:38 UTC (permalink / raw)
  To: David O'Riva, cygwin

--- David O'Riva <oriva@agames.com> wrote:
> 
> 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.
> 

I would like to add that the current version of CVS compiles OOB with Cygwin
without headaches.

=====
Earnie Boyd < mailto:earnie_boyd@yahoo.com >
Cygwin Newbies, please visit
< http://www.freeyellow.com/members5/gw32/index.html >
__________________________________________________
Do You Yahoo!?
Bid and sell for free at http://auctions.yahoo.com

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [NOT FIXED] Symbolic links & RCS -- READ IT!
@ 1999-11-15  5:09 David O'Riva
  1999-11-15  9:52 ` David O'Riva
  1999-11-30 23:39 ` David O'Riva
  0 siblings, 2 replies; 10+ messages in thread
From: David O'Riva @ 1999-11-15  5:09 UTC (permalink / raw)
  To: cygwin

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
            \_________________________/

#  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 <<EOF
  #include "$A_H"
  static char b[7];
  int
! main() {
  	if (readlink("a.sym2",b,7) == 6  &&  strcmp(b,"a.sym1") == 0  &&
  		readlink("a.c",b,7) == -1  &&  errno != ENOENT
  	) {
  		if (errno == EINVAL)
  			printf("EINVAL\n");
  		else
--- 311,338 ----
  # 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, bad_readlink_enoent $dots"
  cat >a.c <<EOF
  #include "$A_H"
  static char b[7];
  int
! main(argc, argv) int argc; char **argv; {
  	if (readlink("a.sym2",b,7) == 6  &&  strcmp(b,"a.sym1") == 0  &&
  		readlink("a.c",b,7) == -1  &&  errno != ENOENT
  	) {
+ 		/*
+ 		* test for readlink returning same errno for
+ 		* regular files and non-existent files
+ 		*/
+ 		if (1 < argc) {
+ 			int e=errno;
+ 			readlink("a.sym3",b,7);
+ 			if( errno==e )
+ 				printf( "1\n" );
+ 			else
+ 				printf( "0\n" );
+ 			exitmain(ferror(stdout) || fclose(stdout)!=0);
+ 		}
  		if (errno == EINVAL)
  			printf("EINVAL\n");
  		else
***************
*** 335,343 ****
  then h=1
  else h=0
  fi
! echo >&3 $h, $readlink_isreg_errno
  cat <<EOF
  #define has_readlink $h /* Does readlink() work?  */
  #define readlink_isreg_errno $readlink_isreg_errno /* errno after readlink on regular file */
  
  #if has_readlink && !defined(MAXSYMLINKS)
--- 348,361 ----
  then h=1
  else h=0
  fi
! case $h in
! 1) bh=`$aout t`;;
! *) bh=0;;
! esac
! echo >&3 $h, $readlink_isreg_errno, $bh
  cat <<EOF
  #define has_readlink $h /* Does readlink() work?  */
+ #define bad_readlink_enoent $bh /* Does readlink() return ENOENT correctly?  */
  #define readlink_isreg_errno $readlink_isreg_errno /* errno after readlink on regular file */
  
  #if has_readlink && !defined(MAXSYMLINKS)
***************
*** 1053,1059 ****
  		# 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 <a.e` || exit
  	esac
  esac
  echo >&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 <a.e` || mmap_signal=
  	esac
  esac
  echo >&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
  	));


^ permalink raw reply	[flat|nested] 10+ messages in thread

* RE: [NOT FIXED] Symbolic links & RCS -- READ IT!
       [not found] <2DF4B08BBEB1D111AE20006008CB4EAE36FB47@gomez.mercury.co.il>
@ 1999-11-12  6:06 ` Andre Oliveira da Costa
  1999-11-30 23:39   ` Andre Oliveira da Costa
  0 siblings, 1 reply; 10+ messages in thread
From: Andre Oliveira da Costa @ 1999-11-12  6:06 UTC (permalink / raw)
  To: Eran Leshem; +Cc: Cygwin

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 3323 bytes --]

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.

I've been in touch with some people off-list, trying to solve this problem
(Michael Weiser < mailto:michael@weiser.saale-net.de > and Erwin Achermann
< mailto:acherman@inf.ethz.ch >, which appear on the "GNUWin32 Package Report"
document on the RCS section, have been very responsive to my requests for
help, and for this I'm very thankful to them), but have made little progress
so far. I understood that all my mounts must be binary in order for RCS to
work, but even that didn't solve my problem completely -- ci.exe doesn't
complain anymore, but it doesn't create the files either (if someone's
interested in error outputs, they are reproduced at the end of this message)

The conclusion is: it is definitely NOT an easy task to build the RCS suite
using Cygwin -- even following the instructions contained on the "GNUWin32
Package Report" (GW32PR). I'm just stating that so that people know that the
GW32PR needs some updating.

But, all my (and other people's) effort has not been in vain: digging the
mailing list archives, I found a reference to a precompiled RCS suite for
b20
( http://www.delorie.com/archives/browse.cgi?p=cygwin/1999/07/27/15:24:31 ). I
have just downloaded it (from
http://paddington.ic.uva.nl/public/rcs-5.7-cygwin-b20-bin.tar.bz2 ), and the
basic tests (check-in, rcsdiff, rlog) all did well. Looks like this is it,
but after making some wrong assumptions last time, I'd rather be more
cautious this time... I strongly encourage you to give this package a try,
and let me know if you have any troubles.

To all the people at Cygwin, and the many contributors, keep the great work
=)

Best regards,

Costa
--
André Oliveira da Costa
(costa@cade.com.br)

> -----Original Message-----
> From: Eran Leshem [ mailto:eranl@mercury.co.il ]
> Sent: Friday, November 12, 1999 10:57 AM
> To: Andr? Oliveira da Costa
> Subject: RE: [FIXED] Symbolic links & RCS
>
>
> This is great news! I'd like that too. Can you please make it available
> somehow? Send it to me in email?
>
> Thanks.
>
> 		Eran Leshem

===================================
To the curious, some output of my tries with the RCS suite I compiled
myself:

[ /cade/Weather\ Channel/src ] rlog genhtml.c
rlog: RCS/genhtml.c,v:1: unexpected end of file
rlog aborted

[ /cade/Weather\ Channel/src ] ls -l RCS
total 6
-rw-r--r--   1 544      everyone    11099 Nov 12 09:29 genhtml._
-r--r--r--   1 544      everyone        0 Nov 12 09:29 genhtml.c,v

[ /cade/Weather\ Channel/src ] ls -l *genhtml.c*
-rw-r--r--   1 544      everyone        0 Nov 12 10:10 ,genhtml.c,
-rw-r--r--   1 544      everyone    10906 Nov 12 10:10 genhtml.c

[ /cade/Weather\ Channel/src ] mount
Device           Directory           Type        Flags
C:               /                   native      text=binary



--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~1999-11-30 23:39 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-11-15 10:30 [NOT FIXED] Symbolic links & RCS -- READ IT! Kazuhiro Fujieda
1999-11-30 23:39 ` Kazuhiro Fujieda
  -- strict thread matches above, loose matches on Subject: below --
1999-11-15  6:38 Earnie Boyd
1999-11-30 23:39 ` Earnie Boyd
1999-11-15  5:09 David O'Riva
1999-11-15  9:52 ` David O'Riva
1999-11-30 23:39   ` David O'Riva
1999-11-30 23:39 ` David O'Riva
     [not found] <2DF4B08BBEB1D111AE20006008CB4EAE36FB47@gomez.mercury.co.il>
1999-11-12  6:06 ` Andre Oliveira da Costa
1999-11-30 23:39   ` Andre Oliveira da Costa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).