On Fri, 2005-05-20 at 00:42 +0200, Maarten Lankhorst wrote:
m3h, v4l driver for vfwcapture.. please leave the ERR notice on initialisation intact, thank you :)
I think you've overusing ERR(). ERR() should be called to signal an internal error such as inconsistent state, not something that the function is designed to handle.
+ capBox->grab_buf = CoTaskMemAlloc(sizeof(struct video_mmap) * capBox->buffers); + if(!capBox->grab_buf) { + ERR("Out of memory?\n"); + munmap(capBox->pmap, capBox->gb_buffers.size); + return E_OUTOFMEMORY; + }
The function knows how to deal with this condition gracefully, just get rid of the ERR().
+ if (!capBox->grab_data) + { + ERR("%p: Out of memory?\n", capBox); + return E_OUTOFMEMORY; + }
Ditto. Also the code is more clear if you just do: if (!capBox->grab_data) return E_OUTOFMEMORY;
+ if (!capBox) { + ERR("Out of memory\n"); + return E_OUTOFMEMORY; + }
Ditto.
+ if (stat (device, &st) == -1) { + ERR("%s: %s\n", device, strerror(errno)); + CoTaskMemFree(capBox); + return E_FAIL; + }
Why is this a ERR()?
+ + if (!S_ISCHR (st.st_mode)) { + ERR("%s: Not a device\n", device); + CoTaskMemFree(capBox); + return E_FAIL; + }
And why this?
+ + capBox->fd = open(device, O_RDWR | O_NONBLOCK); + if (capBox->fd == -1) { + ERR("%s: Failed to open: %s\n", device, strerror(errno)); + CoTaskMemFree(capBox); + return E_FAIL; + }
This is a TRACE or WARN at most.
+ ERR("Tinkerer detected? Thou shalt not define HAVE_V4L2\n"); + CoTaskMemFree(capBox); + close(capBox->fd); + return E_FAIL;
This is a FIXME. And so on... -- Dimi Paun <dimi(a)lattica.com> Lattica, Inc.