From patchwork Sun Feb 4 12:51:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dr Alan Barclay X-Patchwork-Id: 7505 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.150.1 with SMTP id c1csp1668498jai; Sun, 4 Feb 2018 04:52:10 -0800 (PST) X-Google-Smtp-Source: AH8x225DIXlR6514PpKIxa8vT61D76cQJ1uw4I/S+lRKpctnhtrNxJPHGLQyJjEPWTE+UUXIZiFi X-Received: by 10.28.17.17 with SMTP id 17mr36477672wmr.123.1517748730614; Sun, 04 Feb 2018 04:52:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517748730; cv=none; d=google.com; s=arc-20160816; b=frKSTPU6hLeuFseoWO+7SfLQ1zsJAzkbmTr7k8bU2AuvqONJNajQ4rEnm/mZUFpmmb j2oQbaqYtkFcq/gWahgSYSJ7qi+2abH8LqXbbkksC2jcjy0XMnVYHRclvC+rXfB2Tr7s eu21Vnid2cJlFRBKdi8Q9he3iktaNecsTP76cRiC+u8SY/MXJav9K/DMsXo0+ePGkyaZ qgVU1/VZE05P456vsLkbQs7H6PP4SNgCvYXd7yj4KofU1/VHqhr9DQGquofYCtAp7u2W Vq5d3mo39h/2VVMTWgwKwpWZWRfqmNFdMTFoQga/xKNT+iu+HLU07eUl/JwqQoYwbtLz vdfg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :content-language:in-reply-to:mime-version:user-agent:date :message-id:organization:from:references:to:delivered-to :arc-authentication-results; bh=taRsA3ls2EDVhB370Rvtxl7HRHIaw2iLbdB3nbNRQXk=; b=Nte59v2c5/+aDppFIVMeSmBmHBnG+wuc8ocFttrOFMDjxjNNzYRms/6myXkPJM28Wd 6LP46Z1Nqu5x1ge7lwz+6FTmccT++UX+YiFF6hpuG5z2cS1RzFfOrFVP+9aRtYBW8W+Z 8uPeqiBpDqsMyw2snkuOP+uckGSU9JWz7FXd5vlcXlg/YSxIIHmi7ski9h41hAS2/ZRf L96c4Ohc5yRuYyNNipLAheWh0tWCNKlByV66bBeKgAVXRkLpNF6IeSMHy5tc7XoMRAvu all1ZDGE3ZQvFuQFDk8JWeAyAWYDe3kvCieJquULt8ZaiqPOwmuMZmtmRpFD8LpSNfO/ QdrQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id v6si5232035wrc.248.2018.02.04.04.52.09; Sun, 04 Feb 2018 04:52:10 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6592C6898BF; Sun, 4 Feb 2018 14:52:00 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.17.13]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6570D689252 for ; Sun, 4 Feb 2018 14:51:54 +0200 (EET) Received: from [10.1.1.239] ([79.67.20.157]) by mrelayeu.kundenserver.de (mreue105 [212.227.15.183]) with ESMTPSA (Nemesis) id 0LbJdK-1fAY2s3YgE-00kv7U for ; Sun, 04 Feb 2018 13:52:00 +0100 To: ffmpeg-devel@ffmpeg.org References: <20171227014111.GY4926@michaelspb> <9483770e-4b2f-94ef-e18e-dfe358a55420@escribe.co.uk> <834b1299-267c-2010-aa2e-a23f3a458820@escribe.co.uk> From: "Dr. Alan Barclay" Organization: Electric Scribe Ltd. Message-ID: Date: Sun, 4 Feb 2018 12:51:59 +0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-GB X-Provags-ID: V03:K0:JQ5dziK/T6VlXHWgFnCiTBBeI4irTXUPk79b9o8iTWhusy1bmiZ V7b26JkaGoxTSPtKV5uF4o8giEP60RmWuHwx50QCdHTnEJX0J43liKj4dGpEp5XxDwtYzBq av/R2ftYdjv3MyQiPvT1pY7n7LHdsfW4HcA3iGVUau6yYl++AMmsEQi7lFgCWvb01ka45tz 4zpxZEgmRrltATADBHWjA== X-UI-Out-Filterresults: notjunk:1; V01:K0:gca5CgdJ840=:e0401s9AZZjPWvU9HqV0i6 cvdj04HiPkmzSefEBboXXGTB9bYYW1ttL+t+O2LTPkwCuIjnSOm6hJSUNYMIEvun0cpiZFgmr QoMJATu8RiuQk3jRj71gchaOyYnKalA4P0FpH2rJeAWqT7w31s9lhPRKe313YS0GGz7J54fWK qiuRW+9bS9BRHKldB/6sne7vJndXhNOS+YDy8PyA8K0UrBeRg27Bx/QNcHVjfjyjCLgJMntRh oDgt07RezlB+IgCp+UNRScjTadSgboCJAOWcCogx4A6osvONgl+dEm59TaY5iCNCvesxOklFB lZgGyLZLwjH4o8VQCKP0+jUYvQZ08+Hh035NXJic5wpK1mSeCk8h8VU4IL3xwVt399LWkm4ll aWoO1f3qsp1Cpmdt6YTzAeDJWbyq+wciQ0m+VACo/EeNif2jIxgHIKyPXyzNRm+gJZgIN2XDd gAX3t+TRPrXlFhbdFtvqMMSFgOYEFu6LieOimF9me7U5mQrU+1QZ8xHQxxsGcnpIZTggDVLAW pudrTbH2ee/YUgwvn/1A9YJJDdvcF/UgCsyr9SyX4rcszO7mnJJqg8RDID/eutHpzKh8Wb387 pOlyfrQY+swjGxNF/jo2YcW2XIub1CKOi3ujKLDmCoTS4MgM5zm6MFDv45/VOm+lm4gPNqXnF hjGxOmRbzZOK60j/P0s/urYPuYB/fgE3QoHhJfOQ/R7kEqDcL+ty+rIoNt8CEW5f5GO1K95xW l3DQOARhwbgK+Mvnj7momVKrPQGsjX+ySGGO8Q== Subject: Re: [FFmpeg-devel] [PATCH] Adding mkdir option for img2enc (4th attempt) X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" On 17/01/2018 11:15, Carl Eugen Hoyos wrote: > 2018-01-17 11:56 GMT+01:00 Dr. Alan Barclay : > >> Attached in a further patch - adding the error checks. > > Please merge this patch into your previous patch. Both patches updated. Alan. > And please avoid top-posting here, Carl Eugen > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index cc13c94e97..a51248ec02 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -225,39 +225,6 @@ typedef struct HLSContext { AVIOContext *sub_m3u8_out; } HLSContext; -static int mkdir_p(const char *path) { - int ret = 0; - char *temp = av_strdup(path); - char *pos = temp; - char tmp_ch = '\0'; - - if (!path || !temp) { - return -1; - } - - if (!strncmp(temp, "/", 1) || !strncmp(temp, "\\", 1)) { - pos++; - } else if (!strncmp(temp, "./", 2) || !strncmp(temp, ".\\", 2)) { - pos += 2; - } - - for ( ; *pos != '\0'; ++pos) { - if (*pos == '/' || *pos == '\\') { - tmp_ch = *pos; - *pos = '\0'; - ret = mkdir(temp, 0755); - *pos = tmp_ch; - } - } - - if ((*(pos - 1) != '/') || (*(pos - 1) != '\\')) { - ret = mkdir(temp, 0755); - } - - av_free(temp); - return ret; -} - static int hlsenc_io_open(AVFormatContext *s, AVIOContext **pb, char *filename, AVDictionary **options) { HLSContext *hls = s->priv_data; @@ -1504,7 +1471,7 @@ static int hls_start(AVFormatContext *s, VariantStream *vs) return AVERROR(ENOMEM); } dir = av_dirname(fn_copy); - if (mkdir_p(dir) == -1 && errno != EEXIST) { + if (ff_mkdir_p(dir) == -1 && errno != EEXIST) { av_log(oc, AV_LOG_ERROR, "Could not create directory %s with use_localtime_mkdir\n", dir); av_free(fn_copy); return AVERROR(errno); @@ -1730,7 +1697,7 @@ static int format_name(char *buf, int buf_len, int index) } dir = av_dirname(mod_buf_dup); - if (mkdir_p(dir) == -1 && errno != EEXIST) { + if (ff_mkdir_p(dir) == -1 && errno != EEXIST) { ret = AVERROR(errno); goto fail; } diff --git a/libavformat/internal.h b/libavformat/internal.h index 1e2a3e05a1..2e8fa85d08 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -703,4 +703,11 @@ int ff_unlock_avformat(void); */ void ff_format_set_url(AVFormatContext *s, char *url); +/** + * Make the specified directory. + * + * @param path path for directory + */ +int ff_mkdir_p(const char *path); + #endif /* AVFORMAT_INTERNAL_H */ diff --git a/libavformat/utils.c b/libavformat/utils.c index 28ea071409..11bacdf1b4 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -5658,3 +5658,36 @@ FF_DISABLE_DEPRECATION_WARNINGS FF_ENABLE_DEPRECATION_WARNINGS #endif } + +int ff_mkdir_p(const char *path) { + int ret = 0; + char *temp = av_strdup(path); + char *pos = temp; + char tmp_ch = '\0'; + + if (!path || !temp) { + return -1; + } + + if (!strncmp(temp, "/", 1) || !strncmp(temp, "\\", 1)) { + pos++; + } else if (!strncmp(temp, "./", 2) || !strncmp(temp, ".\\", 2)) { + pos += 2; + } + + for ( ; *pos != '\0'; ++pos) { + if (*pos == '/' || *pos == '\\') { + tmp_ch = *pos; + *pos = '\0'; + ret = mkdir(temp, 0755); + *pos = tmp_ch; + } + } + + if ((*(pos - 1) != '/') || (*(pos - 1) != '\\')) { + ret = mkdir(temp, 0755); + } + + av_free(temp); + return ret; +}