Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-developers-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin-developers AT sourceware DOT cygnus DOT com From: Chris Faylor Date: Mon, 3 Apr 2000 13:35:46 -0400 To: cygwin-developers AT sourceware DOT cygnus DOT com Subject: Re: Permission denied with makeinfo from texinfo-4.0 Message-ID: <20000403133546.C1678@cygnus.com> Reply-To: cygwin-developers AT sourceware DOT cygnus DOT com Mail-Followup-To: cgf AT cygnus DOT com, cygwin-developers AT sourceware DOT cygnus DOT com References: <20000402204634 DOT D23469 AT cygnus DOT com> <200004030110 DOT UAA11749 AT hp2 DOT xraylith DOT wisc DOT edu> <20000402212045 DOT A24086 AT cygnus DOT com> <20000402221700 DOT A25094 AT cygnus DOT com> <38E89EB5 DOT 65FC1A41 AT vinschen DOT de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.1.8i In-Reply-To: <38E89EB5.65FC1A41@vinschen.de>; from corinna@vinschen.de on Mon, Apr 03, 2000 at 03:37:57PM +0200 Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id NAA24003 On Mon, Apr 03, 2000 at 03:37:57PM +0200, Corinna Vinschen wrote: >=== SNIP === >#include etcetera... >... >int >main(int argc, char** argv) >{ > int fd; > char buf1[64000]; > ssize_t bytes; > > if ((fd = open (argv[1] ? argv[1] : argv[0], O_RDONLY)) < 0) > return 0; > lseek (fd, (off_t) 0, SEEK_END); > bytes = read (fd, buf1 + 64000, 40000); > printf ("read: %d, err: %d, %s\n", bytes, errno, strerror(errno)); > close (fd); > return 0; >} >=== SNAP === > >and the message is > >read: -1, err: 14, Bad address <=== EFAULT! > >as it's currently under cygwin, too, and it _is_ an UNIX-style error. >This is documented in the linux read(2) man page as well. > >So, if this behaviour is the same in a "reference os", where is >the problem??? Well, uhm, I have no copy of POSIX, obviously... That's not quite the same thing. The behavior as I understand it is something like this: #include etcetera... ... int main(int argc, char** argv) { int fd; char buf1[64000]; ssize_t bytes; if ((fd = open (argv[1] ? argv[1] : argv[0], O_RDONLY)) < 0) return 0; lseek (fd, (off_t) -2, SEEK_END); bytes = read (fd, buf1 + (64000 - 2), 40000); printf ("read: %d, err: %d, %s\n", bytes, errno, strerror(errno)); close (fd); return 0; } This supposedly works on UNIX and fails on Cygwin. cgf