[{"id":11349,"web_url":"https://patchwork.libcamera.org/comment/11349/","msgid":"<787ae50a-e985-e31f-a30a-7d5d027f7794@ideasonboard.com>","date":"2020-07-12T19:51:41","subject":"Re: [libcamera-devel] [PATCH 4/4] libcamera: file: Create the file\n\ton open() if it doesn't exist","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Laurent,\n\nOn 12/07/2020 15:44, Laurent Pinchart wrote:\n> When a file is opened in WriteOnly or ReadWrite mode, create it if it\n> doesn't exist.\n> \n\nIndeed, this solved my issue when using this series before.\n\nThanks!\n\nReviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  src/libcamera/file.cpp | 9 ++++++---\n>  1 file changed, 6 insertions(+), 3 deletions(-)\n> \n> diff --git a/src/libcamera/file.cpp b/src/libcamera/file.cpp\n> index 8bd109090919..77701666e438 100644\n> --- a/src/libcamera/file.cpp\n> +++ b/src/libcamera/file.cpp\n> @@ -148,8 +148,9 @@ bool File::exists() const\n>   * \\param[in] mode The open mode\n>   *\n>   * This function opens the file specified by fileName() in \\a mode. If the file\n> - * doesn't exist and the mode is WriteOnly or ReadWrite, this\n> - * function will attempt to create the file.\n> + * doesn't exist and the mode is WriteOnly or ReadWrite, this function will\n> + * attempt to create the file with initial permissions set to 0666 (modified by\n> + * the process' umask).\n>   *\n>   * The error() status is updated.\n>   *\n> @@ -163,8 +164,10 @@ bool File::open(File::OpenMode mode)\n>  \t}\n>  \n>  \tint flags = (mode & ReadWrite) - 1;\n> +\tif (mode & WriteOnly)\n\nThis looks a bit awkward, as it's actually WriteOnly or ReadWrite (i.e.\nit's not 'Write .. Only') because we know the bit will be set in both\ncases ... but that is detailed above in the function comment anyway, so\nthis is fine, and I'm sure if anyone was looking they'd figure out it\nworks for RW files too :)\n\nIn otherwords, it's only the use of the word 'only' in the enum that's\nawkward, but not something worthy of a change of the enum.\n\n\n> +\t\tflags |= O_CREAT;\n>  \n> -\tfd_ = ::open(name_.c_str(), flags);\n> +\tfd_ = ::open(name_.c_str(), flags, 0666);\n>  \tif (fd_ < 0) {\n>  \t\terror_ = -errno;\n>  \t\treturn false;\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id C8174BD790\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 12 Jul 2020 19:51:46 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 5EDB0605A7;\n\tSun, 12 Jul 2020 21:51:46 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 740426055B\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 12 Jul 2020 21:51:45 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id D03D324A;\n\tSun, 12 Jul 2020 21:51:44 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"tkddAQP5\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1594583505;\n\tbh=W60E6sh3Tm+wvkcDSlesNWj2B8DNLkvoxRYTh68Uvak=;\n\th=Reply-To:Subject:To:References:From:Date:In-Reply-To:From;\n\tb=tkddAQP5F6QLN0WJ40mU1+Y0e1g0gbVK1+YpZWMJqrzVFoxZdfsMfTjtd0JwY5mwr\n\tCXYuE4SkXGylccNZZWotX5nScuAJM2TjSzqMtg45+O89L65RHJwPNq/xt7eLV5PlJp\n\tMmAitq2+EqfBJ3F/Q0sVRnbFpRLQ7HXGbVZ9qSJ4=","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>,\n\tlibcamera-devel@lists.libcamera.org","References":"<20200712144419.21457-1-laurent.pinchart@ideasonboard.com>\n\t<20200712144419.21457-4-laurent.pinchart@ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tWZw01QYHU/GUV/zHJSFk","Organization":"Ideas on Board","Message-ID":"<787ae50a-e985-e31f-a30a-7d5d027f7794@ideasonboard.com>","Date":"Sun, 12 Jul 2020 20:51:41 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.8.0","MIME-Version":"1.0","In-Reply-To":"<20200712144419.21457-4-laurent.pinchart@ideasonboard.com>","Content-Language":"en-GB","Subject":"Re: [libcamera-devel] [PATCH 4/4] libcamera: file: Create the file\n\ton open() if it doesn't exist","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Reply-To":"kieran.bingham@ideasonboard.com","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":11354,"web_url":"https://patchwork.libcamera.org/comment/11354/","msgid":"<20200713065841.GH1498036@oden.dyn.berto.se>","date":"2020-07-13T06:58:41","subject":"Re: [libcamera-devel] [PATCH 4/4] libcamera: file: Create the file\n\ton open() if it doesn't exist","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Laurent,\n\nThanks for your patch.\n\nOn 2020-07-12 17:44:19 +0300, Laurent Pinchart wrote:\n> When a file is opened in WriteOnly or ReadWrite mode, create it if it\n> doesn't exist.\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  src/libcamera/file.cpp | 9 ++++++---\n>  1 file changed, 6 insertions(+), 3 deletions(-)\n> \n> diff --git a/src/libcamera/file.cpp b/src/libcamera/file.cpp\n> index 8bd109090919..77701666e438 100644\n> --- a/src/libcamera/file.cpp\n> +++ b/src/libcamera/file.cpp\n> @@ -148,8 +148,9 @@ bool File::exists() const\n>   * \\param[in] mode The open mode\n>   *\n>   * This function opens the file specified by fileName() in \\a mode. If the file\n> - * doesn't exist and the mode is WriteOnly or ReadWrite, this\n> - * function will attempt to create the file.\n> + * doesn't exist and the mode is WriteOnly or ReadWrite, this function will\n> + * attempt to create the file with initial permissions set to 0666 (modified by\n> + * the process' umask).\n>   *\n>   * The error() status is updated.\n>   *\n> @@ -163,8 +164,10 @@ bool File::open(File::OpenMode mode)\n>  \t}\n>  \n>  \tint flags = (mode & ReadWrite) - 1;\n> +\tif (mode & WriteOnly)\n> +\t\tflags |= O_CREAT;\n>  \n> -\tfd_ = ::open(name_.c_str(), flags);\n> +\tfd_ = ::open(name_.c_str(), flags, 0666);\n>  \tif (fd_ < 0) {\n>  \t\terror_ = -errno;\n>  \t\treturn false;\n> -- \n> Regards,\n> \n> Laurent Pinchart\n> \n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 3ED8CBD792\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 13 Jul 2020 06:58:43 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 0FF62605AF;\n\tMon, 13 Jul 2020 08:58:43 +0200 (CEST)","from mail-lj1-x241.google.com (mail-lj1-x241.google.com\n\t[IPv6:2a00:1450:4864:20::241])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 65E11605AB\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 13 Jul 2020 08:58:42 +0200 (CEST)","by mail-lj1-x241.google.com with SMTP id q4so15696141lji.2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 12 Jul 2020 23:58:42 -0700 (PDT)","from localhost (h-209-203.A463.priv.bahnhof.se. [155.4.209.203])\n\tby smtp.gmail.com with ESMTPSA id\n\tx5sm3892940ljm.132.2020.07.12.23.58.41\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tSun, 12 Jul 2020 23:58:41 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=ragnatech-se.20150623.gappssmtp.com\n\theader.i=@ragnatech-se.20150623.gappssmtp.com\n\theader.b=\"f/Or9/4z\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to;\n\tbh=HzJ4t2ppLaceZ6rIJKJTXClggRjarNR1qzRcNhecc8k=;\n\tb=f/Or9/4zMg+5YI8drBXzCJRWcvr1c6pMsUPdowBdCEjdQKLPfuBD9iNBmon4dzoxd9\n\tamqe/w7kxdFB9ZL44Olu3s6sMZBKdbhjg2RvizSajZEhWvGG2NW0760TpOkv2vjlhOZm\n\teFPZFiSOPSnV1T8TTOZ5CYdSF+SqwZhJys+047bjUig2RLdp3KElTOHih9lG87aiEpSB\n\tHwF33Zcrnr9wPjiDe9OPc1svzxRtXJ0SgkRYqPL5KOiZH0TVZqmgQsHP1lFuRuV+hhTB\n\tDWWig2kfO8TZKSB+YCovCZSUfhc8XCn5XHih6iBmoeW3LNBa9CgVybsEmBlY01ARbly/\n\t4c+w==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to;\n\tbh=HzJ4t2ppLaceZ6rIJKJTXClggRjarNR1qzRcNhecc8k=;\n\tb=oiu88zZA2Qn7R/F7DRrCkfTLHbVFevsNZI8xMDLE8uQ3i5ngwg+MmVf/VM+/0R/J0+\n\tmpxWtWOek7bIwZXRQFtCklBEz2T5b2wRfdMEjwKrp92dZt2CAhRsklJEalLngXVZOIQ6\n\tjJSYGmkZpTaf9bytbdnfEvKtfa3eAlC4QPdW/EOo1Y5MfkmI9S/xxymODq3O3RGEmtqV\n\tpRrJNFpIBW1ySlva+3omzjR97P+HfMIbO/ofZUn7qBVHzRu8igp9W8xGW1dvvJlP3OHM\n\tZaQ+wdpYJS2wIurs7IcANEY+qLb8RgvzQw0a50o/jATQvYPY0Ru/tMemWD4Antoo/Tzc\n\tIeQQ==","X-Gm-Message-State":"AOAM530DXsPRC37fi68Mtzc2nRHWm5Hjz2GdJTGSSlaadvSALWXJ7BTy\n\txV4eCpDsLt8cWP5oPA3a8xJtOTdfUc0=","X-Google-Smtp-Source":"ABdhPJwEqimVg11TUqjP2JD4n6OSMBPEIafdPGLJ6lAS8Ovk745r0AV7wnGTb7123VEKHbKEpakYmg==","X-Received":"by 2002:a2e:9b06:: with SMTP id u6mr38892177lji.24.1594623521826;\n\tSun, 12 Jul 2020 23:58:41 -0700 (PDT)","Date":"Mon, 13 Jul 2020 08:58:41 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Message-ID":"<20200713065841.GH1498036@oden.dyn.berto.se>","References":"<20200712144419.21457-1-laurent.pinchart@ideasonboard.com>\n\t<20200712144419.21457-4-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200712144419.21457-4-laurent.pinchart@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH 4/4] libcamera: file: Create the file\n\ton open() if it doesn't exist","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"iso-8859-1\"","Content-Transfer-Encoding":"quoted-printable","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":11367,"web_url":"https://patchwork.libcamera.org/comment/11367/","msgid":"<20200713115741.GB6272@pendragon.ideasonboard.com>","date":"2020-07-13T11:57:41","subject":"Re: [libcamera-devel] [PATCH 4/4] libcamera: file: Create the file\n\ton open() if it doesn't exist","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Kieran,\n\nOn Sun, Jul 12, 2020 at 08:51:41PM +0100, Kieran Bingham wrote:\n> Hi Laurent,\n> \n> On 12/07/2020 15:44, Laurent Pinchart wrote:\n> > When a file is opened in WriteOnly or ReadWrite mode, create it if it\n> > doesn't exist.\n> \n> Indeed, this solved my issue when using this series before.\n> \n> Thanks!\n> \n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> \n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > ---\n> >  src/libcamera/file.cpp | 9 ++++++---\n> >  1 file changed, 6 insertions(+), 3 deletions(-)\n> > \n> > diff --git a/src/libcamera/file.cpp b/src/libcamera/file.cpp\n> > index 8bd109090919..77701666e438 100644\n> > --- a/src/libcamera/file.cpp\n> > +++ b/src/libcamera/file.cpp\n> > @@ -148,8 +148,9 @@ bool File::exists() const\n> >   * \\param[in] mode The open mode\n> >   *\n> >   * This function opens the file specified by fileName() in \\a mode. If the file\n> > - * doesn't exist and the mode is WriteOnly or ReadWrite, this\n> > - * function will attempt to create the file.\n> > + * doesn't exist and the mode is WriteOnly or ReadWrite, this function will\n> > + * attempt to create the file with initial permissions set to 0666 (modified by\n> > + * the process' umask).\n> >   *\n> >   * The error() status is updated.\n> >   *\n> > @@ -163,8 +164,10 @@ bool File::open(File::OpenMode mode)\n> >  \t}\n> >  \n> >  \tint flags = (mode & ReadWrite) - 1;\n> > +\tif (mode & WriteOnly)\n> \n> This looks a bit awkward, as it's actually WriteOnly or ReadWrite (i.e.\n> it's not 'Write .. Only') because we know the bit will be set in both\n> cases ... but that is detailed above in the function comment anyway, so\n> this is fine, and I'm sure if anyone was looking they'd figure out it\n> works for RW files too :)\n> \n> In otherwords, it's only the use of the word 'only' in the enum that's\n> awkward, but not something worthy of a change of the enum.\n\nShould we instead have File::OpenMode::Read and File::OpenMode::Write,\nand left the user combine those ? If I had been creating this from\nscratch that's likely what I would have done, but ReadOnly, WriteOnly\nand ReadWrite are established terms.\n\n> > +\t\tflags |= O_CREAT;\n> >  \n> > -\tfd_ = ::open(name_.c_str(), flags);\n> > +\tfd_ = ::open(name_.c_str(), flags, 0666);\n> >  \tif (fd_ < 0) {\n> >  \t\terror_ = -errno;\n> >  \t\treturn false;\n> >","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id CF828BD790\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 13 Jul 2020 11:57:48 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 9CB2B60710;\n\tMon, 13 Jul 2020 13:57:48 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id CE08260553\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 13 Jul 2020 13:57:47 +0200 (CEST)","from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 61F61C9;\n\tMon, 13 Jul 2020 13:57:47 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"K/DNFxng\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1594641467;\n\tbh=eEK6v8do1eS2UZk92oPawfMQFsYngZbDCE7EHHIGd8A=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=K/DNFxngPoDLCdk8lk34siibq0UcjZcvtr3f3lFodnbUOIi/kqjTyJYHYmgjR46w/\n\t4VY1p/hDuu3oGqLG0+xykG7yQD4xhR7kbaF/jbyShgOxwXxP+X6V1AQF/CD+/f/h9h\n\tL4P7bekhyEdkZ/g9pgV5qn1JXPKBPZ9itaL4oHSc=","Date":"Mon, 13 Jul 2020 14:57:41 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Message-ID":"<20200713115741.GB6272@pendragon.ideasonboard.com>","References":"<20200712144419.21457-1-laurent.pinchart@ideasonboard.com>\n\t<20200712144419.21457-4-laurent.pinchart@ideasonboard.com>\n\t<787ae50a-e985-e31f-a30a-7d5d027f7794@ideasonboard.com>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<787ae50a-e985-e31f-a30a-7d5d027f7794@ideasonboard.com>","Subject":"Re: [libcamera-devel] [PATCH 4/4] libcamera: file: Create the file\n\ton open() if it doesn't exist","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":11372,"web_url":"https://patchwork.libcamera.org/comment/11372/","msgid":"<6fcdfade-dae7-34e4-2a25-ada1fc467b99@ideasonboard.com>","date":"2020-07-13T13:11:51","subject":"Re: [libcamera-devel] [PATCH 4/4] libcamera: file: Create the file\n\ton open() if it doesn't exist","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"On 13/07/2020 12:57, Laurent Pinchart wrote:\n> Hi Kieran,\n> \n> On Sun, Jul 12, 2020 at 08:51:41PM +0100, Kieran Bingham wrote:\n>> Hi Laurent,\n>>\n>> On 12/07/2020 15:44, Laurent Pinchart wrote:\n>>> When a file is opened in WriteOnly or ReadWrite mode, create it if it\n>>> doesn't exist.\n>>\n>> Indeed, this solved my issue when using this series before.\n>>\n>> Thanks!\n>>\n>> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n>>\n>>> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>>> ---\n>>>  src/libcamera/file.cpp | 9 ++++++---\n>>>  1 file changed, 6 insertions(+), 3 deletions(-)\n>>>\n>>> diff --git a/src/libcamera/file.cpp b/src/libcamera/file.cpp\n>>> index 8bd109090919..77701666e438 100644\n>>> --- a/src/libcamera/file.cpp\n>>> +++ b/src/libcamera/file.cpp\n>>> @@ -148,8 +148,9 @@ bool File::exists() const\n>>>   * \\param[in] mode The open mode\n>>>   *\n>>>   * This function opens the file specified by fileName() in \\a mode. If the file\n>>> - * doesn't exist and the mode is WriteOnly or ReadWrite, this\n>>> - * function will attempt to create the file.\n>>> + * doesn't exist and the mode is WriteOnly or ReadWrite, this function will\n>>> + * attempt to create the file with initial permissions set to 0666 (modified by\n>>> + * the process' umask).\n>>>   *\n>>>   * The error() status is updated.\n>>>   *\n>>> @@ -163,8 +164,10 @@ bool File::open(File::OpenMode mode)\n>>>  \t}\n>>>  \n>>>  \tint flags = (mode & ReadWrite) - 1;\n>>> +\tif (mode & WriteOnly)\n>>\n>> This looks a bit awkward, as it's actually WriteOnly or ReadWrite (i.e.\n>> it's not 'Write .. Only') because we know the bit will be set in both\n>> cases ... but that is detailed above in the function comment anyway, so\n>> this is fine, and I'm sure if anyone was looking they'd figure out it\n>> works for RW files too :)\n>>\n>> In otherwords, it's only the use of the word 'only' in the enum that's\n>> awkward, but not something worthy of a change of the enum.\n> \n> Should we instead have File::OpenMode::Read and File::OpenMode::Write,\n> and left the user combine those ? If I had been creating this from\n> scratch that's likely what I would have done, but ReadOnly, WriteOnly\n> and ReadWrite are established terms.\n\nI don't think it matters now, and as I said this doesn't warrant\nchanging the enum now.\n\nIt works, it's commented, ship it ;-)\n\n--\nKieran\n\n>>> +\t\tflags |= O_CREAT;\n>>>  \n>>> -\tfd_ = ::open(name_.c_str(), flags);\n>>> +\tfd_ = ::open(name_.c_str(), flags, 0666);\n>>>  \tif (fd_ < 0) {\n>>>  \t\terror_ = -errno;\n>>>  \t\treturn false;\n>>>\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 6199FBD790\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 13 Jul 2020 13:11:59 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C969360726;\n\tMon, 13 Jul 2020 15:11:58 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 35EEA6057E\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 13 Jul 2020 15:11:57 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 8261FC9;\n\tMon, 13 Jul 2020 15:11:56 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"CeiyZ+r/\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1594645916;\n\tbh=+ymIC6BMzdguDDbcn84QqrZ8aYWBYGp/XgSrQ8B8ETs=;\n\th=Reply-To:Subject:To:Cc:References:From:Date:In-Reply-To:From;\n\tb=CeiyZ+r/XJabkENTyxpqScSIbSKIayGEWauZdYgs8siTEkatXgQc8hzJRx6pJi+2u\n\tW1YjCqhFw3IHA1biyHjmorbC1jIL4kjK7VpjZ3Mor9U96/2kEdUaYjmw7ID/Oxggvz\n\tPyOXnyd3U7VvT7yjYQ7ggEmeTBtItdHoBn7EG11M=","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","References":"<20200712144419.21457-1-laurent.pinchart@ideasonboard.com>\n\t<20200712144419.21457-4-laurent.pinchart@ideasonboard.com>\n\t<787ae50a-e985-e31f-a30a-7d5d027f7794@ideasonboard.com>\n\t<20200713115741.GB6272@pendragon.ideasonboard.com>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tWZw01QYHU/GUV/zHJSFk","Organization":"Ideas on Board","Message-ID":"<6fcdfade-dae7-34e4-2a25-ada1fc467b99@ideasonboard.com>","Date":"Mon, 13 Jul 2020 14:11:51 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101\n\tThunderbird/68.8.0","MIME-Version":"1.0","In-Reply-To":"<20200713115741.GB6272@pendragon.ideasonboard.com>","Content-Language":"en-GB","Subject":"Re: [libcamera-devel] [PATCH 4/4] libcamera: file: Create the file\n\ton open() if it doesn't exist","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Reply-To":"kieran.bingham@ideasonboard.com","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]