From patchwork Sat Apr 23 20:06:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nil Admirari X-Patchwork-Id: 35384 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b9e:b0:7d:cfb5:dc7c with SMTP id b30csp1086261pzh; Sat, 23 Apr 2022 13:07:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx0xk0LAbIeyNtgzo/C8G+qY+GTd/pqYcVoq/T5NmTJZOLfn/oDoFMChZJT6M1ddt2IiU0W X-Received: by 2002:a17:907:2d2a:b0:6f3:85a0:3987 with SMTP id gs42-20020a1709072d2a00b006f385a03987mr997894ejc.383.1650744473912; Sat, 23 Apr 2022 13:07:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650744473; cv=none; d=google.com; s=arc-20160816; b=Q6xvcDT4Th7LeRl1HgZkrKhO8nn4BzVC2brZHI4rOLMcLVpafwcRVCZ9WLjmcklDUN 4QZbE91RRrjCHdAywSuy3xjTlmBdXrw+qLX80lzKF+z6PHUbhA7uJP/MN8+uovCvmulI vBcI21ibm1E2D8fe72dGmlmKFQNg4VtU13lMFlQlncU49oIETYawCJt3RT7fxq8TyEiF MhB788XpfzycQpwWUOf/dSgEswKX9DZNlO1Wtk1ZwJYtNH7zHp2GFi8GHWkTSjjtsiQK v5u3IZZsir7gXcKPQbD2ntfpQYkJyloGBcLSe/UfhvRpDRTCGebTU+w5Z5iXn4MGkBBM BwIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=S10EnQOsIjb/nuT2A4RUfZXYU+QrCip1x9DKLZdCxmA=; b=eWKT9/N96DF2y63vJ7aGb9Y362s4dIJ5RgKhy1USvfQl1RRiy4gYODsOdnFqIMFmru LgPcJ8O+CMHGQ05nB0LgAY2mynLItKeJ3JT7vIj9MArZmTaDfBKSPR23YonO8RPNE5nO jIlyEj12n9IUJLDyqeWoe4OMZG3pJ5eSk6iLh8nJikdwlL2YKLWW7W1rLJ0gH8sI4YWG UhzkVIcD1t/WNWV6jW2Qv6ly5Iaf3kiX2LDjHcwnxw0yAi0M1PibsSjHxdlTI7PzC0ZE mR6uBwPpBeYugh91xBVTL8GVT4DSntTms6cFESaHMGBkyHbOh+bScNR4p8BDAu1sIQyh 54Kg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@mailo.com header.s=mailo header.b=ceRQcJyQ; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mailo.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id t22-20020a170906065600b006e893bdaefesi10206042ejb.884.2022.04.23.13.07.53; Sat, 23 Apr 2022 13:07:53 -0700 (PDT) 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; dkim=neutral (body hash did not verify) header.i=@mailo.com header.s=mailo header.b=ceRQcJyQ; 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mailo.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BA10C68B3CE; Sat, 23 Apr 2022 23:07:20 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from msg-1.mailo.com (msg-1.mailo.com [213.182.54.11]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 59B8868B315 for ; Sat, 23 Apr 2022 23:07:11 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mailo.com; s=mailo; t=1650744429; bh=t6smklZrgNMtUmHuzuyBy4kwDx5oFHVH8hZzOjXBKFw=; h=X-EA-Auth:From:To:Subject:Date:Message-Id:X-Mailer:In-Reply-To: References:MIME-Version:Content-Transfer-Encoding; b=ceRQcJyQ0A68zYWd31poe39Sp6p3KS8stYX6f5P4kODtqYRn4AlMrZ4fILCZZ89Lj /gKzwjL35E5vO+ntb7kaI/QxCMtiGaPBquHEoOYEFaIHQRugBzcKXF1FgMHOUeg1go FC4ekiaosrFNS7GeG+ExVqTsTtmw89tFDQw7pDBk= Received: by b-1.in.mailobj.net [192.168.90.11] with ESMTP via ip-206.mailobj.net [213.182.55.206] Sat, 23 Apr 2022 22:07:09 +0200 (CEST) X-EA-Auth: w1ZoZqcIlZD2h/qFVbiACcqjAsaMscb8RHwEfAI9moPPy0QCJQiSeyFCCrQiVOKp6LSf/jmFYJh+Q/b68HUteI1l8o7AWiQAzemTHF3wyRc= From: Nil Admirari To: ffmpeg-devel@ffmpeg.org Date: Sat, 23 Apr 2022 23:06:49 +0300 Message-Id: <20220423200651.36689-3-nil-admirari@mailo.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220423200651.36689-1-nil-admirari@mailo.com> References: <20220423200335.36487-1-nil-admirari@mailo.com> <20220423200651.36689-1-nil-admirari@mailo.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v10 4/6] fftools/cmdutils.c: Remove MAX_PATH limit X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: 15tY2Kxv7TGD --- fftools/cmdutils.c | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c index 5d7cdc3e..af070c19 100644 --- a/fftools/cmdutils.c +++ b/fftools/cmdutils.c @@ -37,6 +37,7 @@ #include "libswresample/swresample.h" #include "libavutil/avassert.h" #include "libavutil/avstring.h" +#include "libavutil/avutil.h" #include "libavutil/channel_layout.h" #include "libavutil/display.h" #include "libavutil/mathematics.h" @@ -50,6 +51,7 @@ #include "opt_common.h" #ifdef _WIN32 #include +#include "compat/w32dlfcn.h" #endif AVDictionary *sws_dict; @@ -812,6 +814,9 @@ FILE *get_preset_file(char *filename, size_t filename_size, { FILE *f = NULL; int i; +#if HAVE_GETMODULEHANDLE && defined(_WIN32) + char *datadir = NULL; +#endif const char *base[3] = { getenv("FFMPEG_DATADIR"), getenv("HOME"), FFMPEG_DATADIR, }; @@ -821,19 +826,31 @@ FILE *get_preset_file(char *filename, size_t filename_size, f = fopen(filename, "r"); } else { #if HAVE_GETMODULEHANDLE && defined(_WIN32) - char datadir[MAX_PATH], *ls; + wchar_t *datadir_w = get_module_filename(NULL); base[2] = NULL; - if (GetModuleFileNameA(GetModuleHandleA(NULL), datadir, sizeof(datadir) - 1)) + if (wchartoutf8(datadir_w, &datadir)) + datadir = NULL; + av_free(datadir_w); + + if (datadir) { - for (ls = datadir; ls < datadir + strlen(datadir); ls++) + char *ls; + for (ls = datadir; *ls; ls++) if (*ls == '\\') *ls = '/'; if (ls = strrchr(datadir, '/')) { - *ls = 0; - strncat(datadir, "/ffpresets", sizeof(datadir) - 1 - strlen(datadir)); - base[2] = datadir; + ptrdiff_t datadir_len = ls - datadir; + size_t desired_size = datadir_len + strlen("/ffpresets") + 1; + char *new_datadir = av_realloc_array( + datadir, desired_size, sizeof *datadir); + if (new_datadir) { + datadir = new_datadir; + datadir[datadir_len] = 0; + strncat(datadir, "/ffpresets", desired_size - 1 - datadir_len); + base[2] = datadir; + } } } #endif @@ -853,6 +870,9 @@ FILE *get_preset_file(char *filename, size_t filename_size, } } +#if HAVE_GETMODULEHANDLE && defined(_WIN32) + av_free(datadir); +#endif return f; }