The open() system call in f8 really broken...

Chip Coldwell coldwell at redhat.com
Thu Aug 16 22:29:12 UTC 2007


On Thu, 16 Aug 2007, Jakub Jelinek wrote:

> On Thu, Aug 16, 2007 at 04:18:50PM -0500, Eric Sandeen wrote:
> > Hmm is that what killed my e2sfprogs build?  This looks like a bug in
> > the check:
> > 
> > 
> >    195  memset(data, 0, sizeof(struct test_private_data));
> >    196  data->magic = EXT2_ET_MAGIC_TEST_IO_CHANNEL;
> >    197  if (test_io_backing_manager) {
> >    198          retval = test_io_backing_manager->open(name, flags,
> >    199                                                 &data->real);
> >    200             if (retval)
> >    201                     goto cleanup;
> >    202  } else
> >    203             data->real = 0;
> > 
> > test_io.c: In function 'test_open':
> > test_io.c:198: error: expected identifier before '(' token
> 
> This has been mentioned here several times already in other threads.

Yup.  One of those was mine (emacs).

> In this case you are not calling open(1), but some function pointer.
> And therefore it is undesirable to let it be expanded as function-like
> macro (which POSIX allows).

POSIX allows all sorts of things that one shouldn't do. This change is 
going to break a lot of existing code.  I hope it's for a real benefit.
"open" has to be the single most overloaded word in programming.  I 
personally don't think we should mess with it.

Chip

-- 
Charles M. "Chip" Coldwell
Senior Software Engineer
Red Hat, Inc
978-392-2426




More information about the Fedora-maintainers mailing list