From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id AAF334EEB7 for ; Fri, 13 Jun 2025 17:20:46 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id ACB4068CB09; Fri, 13 Jun 2025 20:20:26 +0300 (EEST) Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 40F8668CB2A for ; Fri, 13 Jun 2025 20:20:20 +0300 (EEST) Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-23636167afeso24342755ad.3 for ; Fri, 13 Jun 2025 10:20:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749835218; x=1750440018; darn=ffmpeg.org; h=cc:to:mime-version:content-transfer-encoding:fcc:subject:date :references:in-reply-to:message-id:from:from:to:cc:subject:date :message-id:reply-to; bh=+J8Kkjnqtv/o8JDsKOaBpTz1pe1kaKkBhbfR0N2mkwM=; b=kCQVPCo5KNP07NAJeQpmm2XPRzp19PfhlGJCs1DPyvaz6lY2ZezL8EVjEnWcjh3wOA 4kmsWphbbhHArG+Vzgkgmb2wpV/0FwB0JX5s9SjJrpwj21NujUHPmUnor1lObXltDAjK iR+qQMWFrk6d3lTXlURnpGa0/lxIpT3KUcvCn15MyZWb2lm1GIuxIDdUszXfkeYPxOBj gdXzYqADArugpu5IOokjc4HA4FHfNX2e31BUKTuh5O0W6Ylsq2vbmwh0FIBjnlJSzMlr 9zQ+gQv73XbK3WdnvdKel6JJ1V0v4zJoeHKimWpA/2pXvALwnJyQ/xUu6NzVkIoCmA4v raiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749835218; x=1750440018; h=cc:to:mime-version:content-transfer-encoding:fcc:subject:date :references:in-reply-to:message-id:from:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+J8Kkjnqtv/o8JDsKOaBpTz1pe1kaKkBhbfR0N2mkwM=; b=qcHa3kE8yjWFJ8V/CWvqFTnt78CbW9DELRl3pBosOd8di/rApEDjuPt0Z5gmeb5UrW Z1ag71pwuK2WWh4CHDynhWeHqtEkU8feZ+iP1Co2KBagrxN9rCX9jsgtqE0VuWRkRYSj 7D013xfjqLk/cQeSSgtUec//cDqNFum7IUBa/rd2WUe/vZUk0m+DlgdbWiuim0ApUMGy W12GwmsJ/ABqVefXTEMolDJzgg0GzEFAoug/SCYPGmfnMk08b+NIHDzMYAEce459XUf/ /qPtJg0cyACYPepZLgv4wEkS68usFrgPNC37uaq6jPmMi6FauwyyWenkHcOCxwvXF4On mreQ== X-Gm-Message-State: AOJu0YwfQzH02HR5OZcVD95Cyut4luXOe6irv5fLX1qJyGEyV1jlvZCB ZhS9amaUL/oETcPA8gDYOWB+tFqUeu4h+5OA4EYGEFCJp1d/qvXr0olLWr7oZg== X-Gm-Gg: ASbGncu5gIzCpvc0TID1rGkcsrYhHuaxqgATf/TmefYImhPBxX68pvs5GuUanllNXX3 qeVt5QAv3ZWrp4UlMdHMJYegORv6TcQDHlTXtorLs4TpYmhLX9IcAl0ptElCkNIeMYCkwdRVN/E fTKV18YQmL/utdgwiP+QFdREB/RMQW0szSpFgoGP21QAoAqKdof0iSCZlK1u78uzLis2k7QKMvZ p1r6r6TsPbQ+QVc9M1XzHfrCAVogWFDc0AdcD/Ipxmm4V9oGlI8KUU7WdZextfmBnMwP+xHGJel WUQ/D+hElN0fiANksLrOQbM8XQSlnooy82Ckp9e8X0U7ye/bEedSL3qErQtWiYjM9c7egcmbney E4lIj X-Google-Smtp-Source: AGHT+IEbctSZPqofTX+ZVgs1JS9pwgdCqnByAe4bhDtC4r8nglfubgiNCHGudr23iKsSqehRdZmF8A== X-Received: by 2002:a17:903:46cb:b0:234:dd3f:80fd with SMTP id d9443c01a7336-2366b316c17mr4445895ad.2.1749835218399; Fri, 13 Jun 2025 10:20:18 -0700 (PDT) Received: from [127.0.0.1] (master.gitmailbox.com. [34.83.118.50]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2365decb864sm17002245ad.213.2025.06.13.10.20.17 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 13 Jun 2025 10:20:18 -0700 (PDT) From: softworkz X-Google-Original-From: softworkz Message-Id: <99dfda242076be814b80d9adb0722e860f95cf6a.1749835195.git.ffmpegagent@gmail.com> In-Reply-To: References: Date: Fri, 13 Jun 2025 17:19:55 +0000 Fcc: Sent MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH 3/3] avformat/hlsenc: Fix path handling for 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 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: From: softworkz Signed-off-by: softworkz --- libavformat/hlsenc.c | 43 ++++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c index f81385d0b4..ba1e74e999 100644 --- a/libavformat/hlsenc.c +++ b/libavformat/hlsenc.c @@ -329,6 +329,23 @@ static int hlsenc_io_close(AVFormatContext *s, AVIOContext **pb, char *filename) return ret; } +static int get_last_separator_pos(const char *path) +{ + if (!path || *path == '\0') + return -1; + + char *p = strrchr(path, '/'); +#if HAVE_DOS_PATHS + char *q = strrchr(path, '\\'); + p = FFMAX(p, q); +#endif + + if (!p) + return -1; + + return p - path; +} + static void set_http_options(AVFormatContext *s, AVDictionary **options, HLSContext *c) { int http_base_proto = ff_is_http_proto(s->url); @@ -1408,14 +1425,10 @@ static int hls_rename_temp_file(AVFormatContext *s, AVFormatContext *oc) static const char* get_relative_url(const char *master_url, const char *media_url) { - const char *p = strrchr(master_url, '/'); - size_t base_len = 0; - - if (!p) p = strrchr(master_url, '\\'); + int pos = get_last_separator_pos(master_url); - if (p) { - base_len = p - master_url; - if (av_strncasecmp(master_url, media_url, base_len)) { + if (pos >= 0) { + if (av_strncasecmp(master_url, media_url, pos)) { av_log(NULL, AV_LOG_WARNING, "Unable to find relative url\n"); return NULL; } @@ -1423,7 +1436,7 @@ static const char* get_relative_url(const char *master_url, const char *media_ur return media_url; } - return media_url + base_len + 1; + return media_url + pos + 1; } static int64_t get_stream_bit_rate(AVStream *stream) @@ -3151,13 +3164,13 @@ static int hls_init(AVFormatContext *s) vs->fmp4_init_filename = expanded; } - p = strrchr(vs->m3u8_name, '/'); - if (p) { - char tmp = *(++p); - *p = '\0'; - vs->base_output_dirname = av_asprintf("%s%s", vs->m3u8_name, - vs->fmp4_init_filename); - *p = tmp; + int pos = get_last_separator_pos(vs->m3u8_name); + if (pos >= 0) { + AVBPrint buf; + av_bprint_init(&buf, 0, AV_BPRINT_SIZE_UNLIMITED); + av_bprint_append_data(&buf, vs->m3u8_name, pos + 1); + av_bprintf(&buf, "%s", vs->fmp4_init_filename); + av_bprint_finalize(&buf, &vs->base_output_dirname); } else { vs->base_output_dirname = av_strdup(vs->fmp4_init_filename); } -- ffmpeg-codebot _______________________________________________ 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".