[PATCH 3/6] Implement log_errno() function and use it for printing errno error mesages.

Stefano Sabatini stefano.sabatini-lala
Sat Apr 24 16:31:05 CEST 2010


Increase consistency.
---
 libavdevice/v4l2.c |   29 ++++++++++++++++++-----------
 1 files changed, 18 insertions(+), 11 deletions(-)

diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c
index e2510d6..0ece623 100644
--- a/libavdevice/v4l2.c
+++ b/libavdevice/v4l2.c
@@ -149,6 +149,15 @@ static struct fmt_map fmt_conversion_table[] = {
     },
 };
 
+static void log_errno(void *log_ctx, const char *fmt, ...)
+{
+    va_list vl;
+    va_start(vl, fmt);
+    av_vlog(log_ctx, AV_LOG_ERROR, fmt, vl);
+    av_log(log_ctx, AV_LOG_ERROR, ": %s\n", strerror(errno));
+    va_end(vl);
+}
+
 static int device_open(AVFormatContext *ctx, uint32_t *capabilities)
 {
     struct v4l2_capability cap;
@@ -161,8 +170,7 @@ static int device_open(AVFormatContext *ctx, uint32_t *capabilities)
     }
     fd = open(ctx->filename, flags, 0);
     if (fd < 0) {
-        av_log(ctx, AV_LOG_ERROR, "Cannot open video device %s : %s\n",
-                 ctx->filename, strerror(errno));
+        log_errno(ctx, "Cannot open video device %s", ctx->filename);
 
         return AVERROR(errno);
     }
@@ -177,8 +185,7 @@ static int device_open(AVFormatContext *ctx, uint32_t *capabilities)
         return AVERROR(errno);
     }
     if (res < 0) {
-        av_log(ctx, AV_LOG_ERROR, "ioctl(VIDIOC_QUERYCAP): %s\n",
-                 strerror(errno));
+        log_errno(ctx, "ioctl(VIDIOC_QUERYCAP)");
         close(fd);
 
         return AVERROR(errno);
@@ -296,7 +303,7 @@ static int mmap_init(AVFormatContext *ctx)
         if (errno == EINVAL) {
             av_log(ctx, AV_LOG_ERROR, "Device does not support mmap\n");
         } else {
-            av_log(ctx, AV_LOG_ERROR, "ioctl(VIDIOC_REQBUFS)\n");
+            log_errno(ctx, "ioctl(VIDIOC_REQBUFS)");
         }
 
         return AVERROR(errno);
@@ -331,7 +338,7 @@ static int mmap_init(AVFormatContext *ctx)
         buf.index = i;
         res = ioctl (s->fd, VIDIOC_QUERYBUF, &buf);
         if (res < 0) {
-            av_log(ctx, AV_LOG_ERROR, "ioctl(VIDIOC_QUERYBUF)\n");
+            log_errno(ctx, "ioctl(VIDIOC_QUERYBUF)");
 
             return AVERROR(errno);
         }
@@ -345,7 +352,7 @@ static int mmap_init(AVFormatContext *ctx)
         s->buf_start[i] = mmap (NULL, buf.length,
                         PROT_READ | PROT_WRITE, MAP_SHARED, s->fd, buf.m.offset);
         if (s->buf_start[i] == MAP_FAILED) {
-            av_log(ctx, AV_LOG_ERROR, "mmap: %s\n", strerror(errno));
+            log_errno(ctx, "mmap");
 
             return AVERROR(errno);
         }
@@ -378,7 +385,7 @@ static void mmap_release_buffer(AVPacket *pkt)
 
     res = ioctl (fd, VIDIOC_QBUF, &buf);
     if (res < 0) {
-        av_log(NULL, AV_LOG_ERROR, "ioctl(VIDIOC_QBUF)\n");
+        log_errno(NULL, "ioctl(VIDIOC_QBUF)");
     }
     pkt->data = NULL;
     pkt->size = 0;
@@ -403,7 +410,7 @@ static int mmap_read_frame(AVFormatContext *ctx, AVPacket *pkt)
 
             return AVERROR(EAGAIN);
         }
-        av_log(ctx, AV_LOG_ERROR, "ioctl(VIDIOC_DQBUF): %s\n", strerror(errno));
+        log_errno(ctx, "ioctl(VIDIOC_DQBUF)");
 
         return AVERROR(errno);
     }
@@ -457,7 +464,7 @@ static int mmap_start(AVFormatContext *ctx)
 
         res = ioctl (s->fd, VIDIOC_QBUF, &buf);
         if (res < 0) {
-            av_log(ctx, AV_LOG_ERROR, "ioctl(VIDIOC_QBUF): %s\n", strerror(errno));
+            log_errno(ctx, "ioctl(VIDIOC_QBUF)");
 
             return AVERROR(errno);
         }
@@ -466,7 +473,7 @@ static int mmap_start(AVFormatContext *ctx)
     type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
     res = ioctl (s->fd, VIDIOC_STREAMON, &type);
     if (res < 0) {
-        av_log(ctx, AV_LOG_ERROR, "ioctl(VIDIOC_STREAMON): %s\n", strerror(errno));
+        log_errno(ctx, "ioctl(VIDIOC_STREAMON)");
 
         return AVERROR(errno);
     }
-- 
1.7.0


--nFreZHaLTZJo0R7j
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="0004-Make-log_errno-use-av_strerror-rather-than-strerror-.patch"




More information about the ffmpeg-devel mailing list