From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 139EE43496 for ; Mon, 13 Jun 2022 19:00:57 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 13DE668B515; Mon, 13 Jun 2022 22:00:55 +0300 (EEST) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04olkn2016.outbound.protection.outlook.com [40.92.46.16]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CDFBD68AD28 for ; Mon, 13 Jun 2022 22:00:48 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J2iDMtF3V4lI26qGyEBWIs8q1fZ7A1eUugG2BHDaSXk+sFyRx4oeBn+Qn1ctBj6GeUtxh1FACBc/Yb2qthOo3WHTIzElqcTn46TQF54rZQPIU6hgJMx3eSNFE0TwGY9H3DQNyI5Q2DVWqeOw2iW1utdSLiZ5ebSyEwXuLzyoRZaabDZJetNtqtczOPPdRztJQCL8zIKbE6yRibOBdo0M0Pi5PZJ74ROI8xzDsdI59fEmPMgS7+Nr6wb0MZ7NwwcrteRwUcqzxb23tNT/BUHp3y5ZlEfcefQfkHqSiWEj+C+XgPO8XBnxCyyD5TmlNVnZK5Pi8nUTGZ6AI5pj0RqsXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Nj+bTMOdiSGrjGKcIaQEgg+IvMKIL3udBiiHCEbwTNc=; b=M5Lta9Bl/d5Dpjmml4Grtmui/L3CKYqPpDCSVoEDih+oTwVlm9AigDrxJ+WLI9DfRbJhmTOTeWM3JLRB1ZfBRzBL97dVSPS7zdtkYWZRxmvc3A+IS+aIc1UKyIXSuesyra0bH5c6GiJjYxW8m5nbRc0YdrdP+IlAiGXdV9E4hg1r6oHK+iJVBcnyj9I7OyDE1M51wzqVlJn6QXVVuNAdgWOUD2LgNROmM8aq+t5jrqV/KRiZ1auEMrexwxWUdCmA5OPduYyjxpYqWIMKZH6d6vxPKTuICSuEcy2RQa0rBF4WITZ8oQkWq1nNhTW4zhHU6lzrroSxl+ZvkTemhCV8XA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Nj+bTMOdiSGrjGKcIaQEgg+IvMKIL3udBiiHCEbwTNc=; b=TKtjDTXioOV/iS+gdCX67sKfAeLc2SK0AJIMJlbMUxJnMdhgYShXXxV5yVHC5QdfeNHnab0g6q0pLTMnixSWNWONI48dnoB15ieRES7Dg/fOHSq2rhC2pCFJxdqRTGGx6PmwADL8fSZjSL9E1BJsiX1/RAKOiEPMqvWakiz7IbYoRWwgsORBnx0erYK/4Qzp1T7trafjmto8jbyOzLRfLgZ5oYnOLOgTbL1FRIFizK7VS/V67IAOTWFINIqyhDXVEvgC5qwMT8l+akzAo5bFJn6njLbafAaF8ZJ3RCB569aFWVm98MxZe+Ji+JXwe5MKmlOWympPJLBz5hAtV8GZEw== Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM (2603:10b6:8:b::20) by SJ1P223MB0409.NAMP223.PROD.OUTLOOK.COM (2603:10b6:a03:48c::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.18; Mon, 13 Jun 2022 19:00:45 +0000 Received: from DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::f144:21f9:cdb1:5c8a]) by DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM ([fe80::f144:21f9:cdb1:5c8a%9]) with mapi id 15.20.5332.021; Mon, 13 Jun 2022 19:00:45 +0000 From: Soft Works To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] [PATCH v14 4/5] libavformat: Remove MAX_PATH limit and use UTF-8 version of getenv() Thread-Index: AQHYf0J4/HS9JaG/JUO4k628ixaVQ61NkYpwgAAeJwCAAAE0EA== Date: Mon, 13 Jun 2022 19:00:45 +0000 Message-ID: References: <20220613162626.11541-1-nil-admirari@mailo.com> <20220613162626.11541-4-nil-admirari@mailo.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-tmn: [aw8qHnWcBfM3nrmK5dIEf9oHXd2V94ag] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d1fd4ebd-2ed0-47e2-d74f-08da4d6f057b x-ms-traffictypediagnostic: SJ1P223MB0409:EE_ x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: SUlnEcr8M0Isc3PSSwmelyEPdC/DgzM3oofZ3S+Qecw11nzc6dR3ZgWSQdunc1EMd54mPv64eG3jFEDsd2V9j+qay4UmTCPKtQn20e0/gowMx6YzhnqSka7WHL8lHmH7yt34GFr7U4IBHbtg9yonH/t4lfnJbaTaeDNDEvRPwkgaX2EBsyfZmW0QuxzFLxFFN11OG5umz7TN0cI90xtzlFba4a9GZ8Ea8LkvdSrWcKDSd5ZNXulSViU4rDSzoMRCftQCbyTCQpyfWOP61nkuh3n0YOiFQnnHU0AddESXbk0PwiLpM4YSLPYfKiZ0Pe0zpP1E6uu3MJ2g6pdKjd+gjaUNV3nBv88S11DIHbIFlODLUSOM4GOMQZNz5qlFVEbHDqTqy5mf76aJVswA2uqVQEi6R5a2tvJyWV4tSqKE0k0o3DhIQ5965P7AQsPIOP61ew23cVgWIC4QDpaE/cvzjmrk6q7UadCB77oe9PpvN2RF2cT7V2axLalWwONcNvko9iPdLNOl6hhR0mjFDSCVYkSidTjP3T2vvrr2AUW+mEF/s2KnJOvaeNg5sWv64pD/Nmw7+3RpIhpW/P3D+CCWqA== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?aWZvOHpOeHc5eE9lcHR2SFczdm9RVzJFc3ovRWNUWWpKVGJGV3dSUkpNSmlN?= =?utf-8?B?L2Uya0Y5R1RuRmsxMzNIZ051dFNrR0p0UFB4NHNMQklicXR3RWRnUmpodTht?= =?utf-8?B?M2tSUUkwVkllbXpLK3hZVXlLRHNpSWtNb05HVk04NW10dkNuTVFUSHRLYnpY?= =?utf-8?B?QU5oeDdndTVHdkFQZ0tjb0tNVCtKV29sanNaWFJISFZubFdzbFBwMnhlcVNM?= =?utf-8?B?V2dFRWdkV1V1MmppVERvcGNGcnJJbHdXREdLdFpUUHZvVFV4WkMvNlFuQlhO?= =?utf-8?B?R3ZPOTU0aDRlNmVKMkoza1hXR1ExMUtJZEFWV0lEeTJWeGVSRHFNVEUxS0xM?= =?utf-8?B?d1FBUkpPMnY5UC9jT0p6ejJLaHFmUEs3NTBSdGVxV1hhWEREWTJycVIwN0xw?= =?utf-8?B?ay8rNnIwQmI4WFBlOGlDdGtEYjNTNXRpMk5TcWlycEFBM1MrWHVpUG50eldJ?= =?utf-8?B?WCs0ZHlPcUdVSkNucDJFN3hHVWJMRTB3czIxZXNSNlVMcTNOSGROR1BIZUky?= =?utf-8?B?em95QkhUZEZEcmc5NkNGUnFIR0JuTE5RUjlBT1djTzd4Vk5IbG85cUNGOG5I?= =?utf-8?B?eDFBektTak84a2U5QXlSSFdDUCtDMU1RcWZhNjVaaFk3dDZBRURINnZ3eExH?= =?utf-8?B?VWJBTkxsV3BzWVA5d2JaQUZOOVhzRjRsNGord1BWYmkwalU1UG9QYzVFUXcz?= =?utf-8?B?YmoxUENvVVFMLzBjKzNqWUFEMFlsSmpDMzBIOENtNWZhT1l1c0E4K2hLTUJE?= =?utf-8?B?RDNVRFRvcU52WFlJUXJwVExNNXJrbElQZysvV2F6Tmlpc04zaHFGTjh1TXEy?= =?utf-8?B?K0lacEprS3RJbVJ3eFBBRGFjVTlQNFF4WjR4eHZuTFpaWVRxZGdTc2hiRytq?= =?utf-8?B?VGczOXRQckVIZDB5WkNIUzVMQ2liVEN3SDExaEpMNmgyZHFPU052UHpZOVEv?= =?utf-8?B?eUx5Q3o1bnBlQ2FaT0RtNUVjU3VEVkp5U3AzUVhGeWQ4dVBtMlpuYUNjRDdO?= =?utf-8?B?QkwzM0tsSDk4eHV6RkwxNEtFL2R3L2NmVDQxUlE4bWV0YjBPN2YrWUpGcnVU?= =?utf-8?B?cjJEYVVyb1pkS2JOSzZGYkhGMkFLdWlkZUFUdE52bDYxUURaSU5qeTRiZFJ4?= =?utf-8?B?cDRhbm5hZkozclVPRXhTSkRTM1RrTEllaTl2Y2lYNHk1L0J6bFRvZFZyZTdT?= =?utf-8?B?OE9rZHVNajZOU0RDcm84VVd3UnpTUjY2L0kzeldmMnNDWEF4VGtNdlZHeXhj?= =?utf-8?B?MkJnR1FoZEF3OEVUZmlLREVXWUJudWJnT1NJRUZZcGhlUHp3bGdCTlJNamZ4?= =?utf-8?B?TXZ6aFFOLzIzVGJML1FCaW8zbnVkSFN4VDRRc3lOU1ljUTlad1JnVERKSlly?= =?utf-8?B?OThDeUJKM1pCVzEvLyt4VTRRWlRFRUtVZ3p5bXJDVVNYZ3Jkak13aHptN3lN?= =?utf-8?B?RzVOMjF5MXBlLzk5ZFZla2oyV1VVaC8yT3ppbmxuWVkrMHlLbXVCOHVRdEpD?= =?utf-8?B?OElpSEFQOW1ERDRkaHJDVFZBZ25NdEhvYXozZmVkYXBkcDhiQ2JlaFpLbXUy?= =?utf-8?B?cGE1SEdid3BDVUZiakhNWWtTb2Y0Yi9WK09YYU5RZnBZMm9aRjUyWVhQYmp3?= =?utf-8?B?YzNNQldzbFFoaHo4Uk5vbXkrL29FcXI2RVAyYVBMbVRiNGVhYmdYU2hwY3hq?= =?utf-8?B?MWQ2TVZ3cG9wM1phWC9wTmxYYzRjMXVwdGNqeGRiQ2ZZYVJzbmtHcHBQaTlr?= =?utf-8?B?N0tOYjQ4MllrYWE0QVRpK1NiR1o2STdwN0MvbkZPWTh4OHMrZzFKZ0M0cEVy?= =?utf-8?B?ZEZUdk5EUUVlem92UURHdFBLczFDQ3htd2xxQXhGS2Y2amZpTktlTWxkWThs?= =?utf-8?B?WDFRRG1pZDFBeEp5U084RUMrUmtZTUV0eU41Y1VwcWY0S1JLNG1HTDEyeWh3?= =?utf-8?Q?D8TEswpAGAM=3D?= MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-1ff67.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: d1fd4ebd-2ed0-47e2-d74f-08da4d6f057b X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jun 2022 19:00:45.4900 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1P223MB0409 Subject: Re: [FFmpeg-devel] [PATCH v14 4/5] libavformat: Remove MAX_PATH limit and use UTF-8 version of getenv() 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: > -----Original Message----- > From: ffmpeg-devel On Behalf Of > Hendrik Leppkes > Sent: Monday, June 13, 2022 8:55 PM > To: FFmpeg development discussions and patches devel@ffmpeg.org> > Subject: Re: [FFmpeg-devel] [PATCH v14 4/5] libavformat: Remove > MAX_PATH limit and use UTF-8 version of getenv() > > On Mon, Jun 13, 2022 at 7:47 PM Soft Works > wrote: > > > > > > > > > -----Original Message----- > > > From: ffmpeg-devel On Behalf Of > Nil > > > Admirari > > > Sent: Monday, June 13, 2022 6:26 PM > > > To: ffmpeg-devel@ffmpeg.org > > > Subject: [FFmpeg-devel] [PATCH v14 4/5] libavformat: Remove > MAX_PATH > > > limit and use UTF-8 version of getenv() > > > > > > 1. getenv() is replaced with getenv_utf8() across libavformat. > > > 2. New versions of AviSynth+ are now called with UTF-8 filenames. > > > 3. Old versions of AviSynth are still using ANSI strings, > > > but MAX_PATH limit on filename is removed. > > > --- > > > libavformat/avisynth.c | 39 +++++++++++++++++++++++++++------ > ---- > > > -- > > > libavformat/http.c | 20 +++++++++++++------- > > > libavformat/ipfsgateway.c | 35 +++++++++++++++++++++++---------- > -- > > > libavformat/tls.c | 11 +++++++++-- > > > 4 files changed, 72 insertions(+), 33 deletions(-) > > > > > > diff --git a/libavformat/avisynth.c b/libavformat/avisynth.c > > > index 8ba2bdead2..a97d12b6b6 100644 > > > --- a/libavformat/avisynth.c > > > +++ b/libavformat/avisynth.c > > > @@ -34,6 +34,7 @@ > > > /* Platform-specific directives. */ > > > #ifdef _WIN32 > > > #include "compat/w32dlfcn.h" > > > + #include "libavutil/wchar_filename.h" > > > #undef EXTERN_C > > > #define AVISYNTH_LIB "avisynth" > > > #else > > > @@ -56,6 +57,7 @@ typedef struct AviSynthLibrary { > > > #define AVSC_DECLARE_FUNC(name) name ## _func name > > > AVSC_DECLARE_FUNC(avs_bit_blt); > > > AVSC_DECLARE_FUNC(avs_clip_get_error); > > > + AVSC_DECLARE_FUNC(avs_check_version); > > > AVSC_DECLARE_FUNC(avs_create_script_environment); > > > AVSC_DECLARE_FUNC(avs_delete_script_environment); > > > AVSC_DECLARE_FUNC(avs_get_audio); > > > @@ -137,6 +139,7 @@ static av_cold int > avisynth_load_library(void) > > > > > > LOAD_AVS_FUNC(avs_bit_blt, 0); > > > LOAD_AVS_FUNC(avs_clip_get_error, 0); > > > + LOAD_AVS_FUNC(avs_check_version, 0); > > > LOAD_AVS_FUNC(avs_create_script_environment, 0); > > > LOAD_AVS_FUNC(avs_delete_script_environment, 0); > > > LOAD_AVS_FUNC(avs_get_audio, 0); > > > @@ -807,26 +810,38 @@ static int > > > avisynth_create_stream(AVFormatContext *s) > > > static int avisynth_open_file(AVFormatContext *s) > > > { > > > AviSynthContext *avs = s->priv_data; > > > - AVS_Value arg, val; > > > + AVS_Value val; > > > int ret; > > > -#ifdef _WIN32 > > > - char filename_ansi[MAX_PATH * 4]; > > > - wchar_t filename_wc[MAX_PATH * 4]; > > > -#endif > > > > > > if (ret = avisynth_context_create(s)) > > > return ret; > > > > > > + if (!avs_library.avs_check_version(avs->env, 7)) { > > > > I like the version check. I don't know about all the derivatives > > of AviSynth, but I assume you have checked that it's valid for > > the common ones (or at least the original non-Plus variant)? > > > > > + AVS_Value args[] = { > > > + avs_new_value_string(s->url), > > > + avs_new_value_bool(1) // filename is in UTF-8 > > > + }; > > > + val = avs_library.avs_invoke(avs->env, "Import", > > > + avs_new_value_array(args, > 2), > > > 0); > > > + } else { > > > + AVS_Value arg; > > > #ifdef _WIN32 > > > - /* Convert UTF-8 to ANSI code page */ > > > - MultiByteToWideChar(CP_UTF8, 0, s->url, -1, filename_wc, > > > MAX_PATH * 4); > > > - WideCharToMultiByte(CP_THREAD_ACP, 0, filename_wc, -1, > > > filename_ansi, > > > - MAX_PATH * 4, NULL, NULL); > > > - arg = avs_new_value_string(filename_ansi); > > > + char *filename_ansi; > > > + /* Convert UTF-8 to ANSI code page */ > > > + if (utf8toansi(s->url, &filename_ansi)) { > > > > Two ideas came to my mind how this could be done better. > > What's actually needed here is not a string conversion, we need > > a valid and usable filename, and the function could be more > > something like "get_ansi_filename()". > > > > The first thing that this function could do is to convert the > > the filename to ANSI and right back to UTF-8, then compare the > > UTF-8 result with the original UTF-8 string. When both are equal, > > we know that the conversion is safe, otherwise we know that it > > won't work. > > > > Then, we can use the win32 API GetShortFileName(). Which returns > > file and directory names in 8.3 notation which (IIRC) contains > > only letters which are valid in the ANSI code page. > > > > This seems unrelated to this patch, which is about removing the > MAX_PATH limit. The code previously converted UTF-8 to ANSI, and > still > does so now, just without the MAX_PATH limit. > Further improvements tangential to this topic can, and should, be > applied independently, and not hold up this patch in discussion-hell > for longer than necessary. It was meant as a suggestion not as an objection. I'm fine with this patch, just to be clear. softworkz _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".