From patchwork Mon May 23 11:29:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 34725 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:9992:b0:82:461d:f3b with SMTP id ve18csp1859654pzb; Mon, 23 May 2022 04:29:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxKppPo0XOmSSdVta16tgOfyD3grfwYuPm3c9kvfSn84oL3YGkbEOtARH6jwvWC6guUHhEN X-Received: by 2002:a17:906:c142:b0:6f5:2632:adb7 with SMTP id dp2-20020a170906c14200b006f52632adb7mr19540070ejc.637.1653305384511; Mon, 23 May 2022 04:29:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1653305384; cv=none; d=google.com; s=arc-20160816; b=YNo0Gbx3kPnzjIpvVvBk6mjEfTll3XGnATmWddWO41kytOSmwOE6B5OIZgb8eOjOkq z0xWZl6VVpRfnajPIzIatI7JZ7eKxkcWqDVkoM0b4Wbe+dZGjC6BMlTk0EOogLvuxehf mrsp9pxphINkioQpZmn5ZuwIBVWzVzfuNgLnHzdYQZaKVQphIH4tNDjyL9V0eJ9+qn3L rW6Jdf3TKhwNs14wjXUhC1+SKcD53xFG+Zs3z6bXvfN1AK3IOlQw/Qy3PUctvz89Su3f T7fqGaPqnRRF5iYFwWGaAE0LutOHcOQJ0jAjNg0c8bftV4F8J/r9iqTOSIT81KPzaUYZ r61g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:to:mime-version:fcc:date:from:references :in-reply-to:message-id:dkim-signature:delivered-to; bh=p7gkAQ4m18AdgojAi1xnO66EyJBcbWWMyRNrvQQWiYc=; b=VfV1siJX/riB0IG3z5Vwmy5rQOvhOynZfwdXr3N5jeeIP8qGVtTNn36uiS44Zp6+20 T97BsFGWaXmnTdf4e84sO5e5XX3Ps8ZPm8C7bmmgPy+ihmLL6A1yMb8d90UXpXspB7XF ++jNE9/Ggj+4BNGP7+hqQH7Gu6nK+sMAsBT545bJjntkEVkvOpDCr3uw0LowwojVVbJ4 cQ9P3C+eBVrkw3JH1nSc6INNzm8dS+g0ZyH2aF/X4byBbjOFd23G3Ek7y1B9WfGGAMrW 57XF/ageX5E0xKS/V9w+DcnaigPagiG9Bjqac17UoeeQEsaKuvroOYuRSsFG4YEUzlG9 YKNQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=AvtfU9jx; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id b15-20020aa7dc0f000000b0042ac1e18567si12702382edu.157.2022.05.23.04.29.43; Mon, 23 May 2022 04:29:44 -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=@gmail.com header.s=20210112 header.b=AvtfU9jx; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 40AE168B4B5; Mon, 23 May 2022 14:29:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f174.google.com (mail-pg1-f174.google.com [209.85.215.174]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DEC676802B5 for ; Mon, 23 May 2022 14:29:33 +0300 (EEST) Received: by mail-pg1-f174.google.com with SMTP id q76so13408116pgq.10 for ; Mon, 23 May 2022 04:29:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:in-reply-to:references:from:date:subject:fcc :content-transfer-encoding:mime-version:to:cc; bh=h/3+lsL0CKXrJEYG6o2hOlO6AFGVK0ZNfcu9yGZYbUk=; b=AvtfU9jxQYr9QuMtw5ujO7+WS56FuUfuLKsyUyGA+gGPpgDt21DjZJDnMYqWLG7TDA pgd//BpXqTH7VVyF2RnCTJ94AEfnl9FRTgppzeJrvdtKRvQsl0d0CWIvWUU88odiISMs vWetxH8sv20e65VCJlBRp4/cCQXxXDy72LjEr66Lo2u9fn96cxmTNouKAPAig7K/3OZF p7wuGDxa58Lf9w4l6LfruOZk4lUQlJ2UXvfNTMhyUmDprmPk45LhcmH76m2k8Pups4p+ kH3APSQQtpmP7xw6Fj3PtjINAJ4CjI6M9pkbK3E3yd4HR81LQ6nXUcG5t01LbdPmqsOn TxuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:in-reply-to:references:from:date :subject:fcc:content-transfer-encoding:mime-version:to:cc; bh=h/3+lsL0CKXrJEYG6o2hOlO6AFGVK0ZNfcu9yGZYbUk=; b=ubOavPne+Vw7nLuTAkvABAOE9j6Oo1AMbhpzwMEwSRF/MAUc+El5go5saO8Pe3XZtU IQ3rkyItQJPSlswE9o8hahBwPpdkRBbxFFLRdCKMF9xlpgQC/dtlRFFUuQxSMLDdPbrm 9foGZt+aDAWR6fCXxL5evWYDtlaElgW3ixvtK3AUH8OEmRIDDBGngtgcl4JPUYiCp8Gr F71lJFbVmqU7a173s+nFPgddEmC0rdKcL+zyMMOUzq/kvqLcA7QF9olzIFeiCzT+T2qh 3tukzE6a8+0F6uhoaSMnt61iCUqPyggAUmM+CEkHtnVqtNJvydOLOvM/P3W4eg7s9ZY2 u5Eg== X-Gm-Message-State: AOAM531tTQPItUo8n5PobgpZwsvO6xg5dU7PQYJJ0YCkHRt5B1b4JL39 69ENlrpfJVFHx3TG9hWHyNExQQe4KXw1Eg== X-Received: by 2002:a05:6a00:1305:b0:512:ebab:3b20 with SMTP id j5-20020a056a00130500b00512ebab3b20mr23377597pfu.82.1653305372255; Mon, 23 May 2022 04:29:32 -0700 (PDT) Received: from [127.0.0.1] (master.gitmailbox.com. [34.83.118.50]) by smtp.gmail.com with ESMTPSA id c8-20020a170902c2c800b0015e8d4eb2ccsm4801170pla.278.2022.05.23.04.29.31 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 May 2022 04:29:31 -0700 (PDT) Message-Id: In-Reply-To: References: From: ffmpegagent Date: Mon, 23 May 2022 11:29:29 +0000 Fcc: Sent MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH v4 0/2] Support long file names on Windows 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 Cc: softworkz Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: DVv2Xg8sHSS2 This patchset adds support for long file and directory paths on Windows. The implementation follows the same logic that .NET is using internally, with the only exception that it doesn't expand short path components in 8.3 format. .NET does this as the same function is also used for other purposes, but in our case, that's not required. Short (8.3) paths are working as well with the extended path prefix, even when longer than 260. Successfully tested: * Regular paths wth drive letter * Regular UNC paths * Long paths wth drive letter * Long paths wth drive letter and forward slashes * Long UNC paths * Prefixed paths wth drive letter * Prefixed UNC paths I have kept the individual functions separate on purpose, to make it easy to compare with the .NET impl. (compilers should inlinie those anyway) v2 * wchar_filename: Improve comments and function documentation * os_support: adjust defines to use win32_stat v3 * removed length check in path_is_extended() * added path_is_device_path() check in add_extended_prefix() * add_extended_prefix(): clarified doc and add checks * clarified string allocation length calculation * replaced 260 with MAX_PATH * removed redundant checks after normalization v4 * rebased. no changes softworkz (2): avutil/wchar_filename,file_open: Support long file names on Windows avformat/os_support: Support long file names on Windows libavformat/os_support.h | 26 ++++-- libavutil/file_open.c | 2 +- libavutil/wchar_filename.h | 166 +++++++++++++++++++++++++++++++++++++ 3 files changed, 188 insertions(+), 6 deletions(-) base-commit: 6076dbcb55d0c9b6693d1acad12a63f7268301aa Published-As: https://github.com/ffstaging/FFmpeg/releases/tag/pr-ffstaging-28%2Fsoftworkz%2Fsubmit_long_filenames-v4 Fetch-It-Via: git fetch https://github.com/ffstaging/FFmpeg pr-ffstaging-28/softworkz/submit_long_filenames-v4 Pull-Request: https://github.com/ffstaging/FFmpeg/pull/28 Range-diff vs v3: 1: ce70f7b021 = 1: 13118dc1fa avutil/wchar_filename,file_open: Support long file names on Windows 2: a5268800a4 = 2: 252ed89499 avformat/os_support: Support long file names on Windows