Skip to content

feat: add dvd+rw-format support for DVD RW erase#352

Merged
deepin-bot[bot] merged 1 commit into
linuxdeepin:release/snipefrom
Johnson-zs:release/snipe
Jul 16, 2026
Merged

feat: add dvd+rw-format support for DVD RW erase#352
deepin-bot[bot] merged 1 commit into
linuxdeepin:release/snipefrom
Johnson-zs:release/snipe

Conversation

@Johnson-zs

Copy link
Copy Markdown
Contributor
  1. Added new DVDRwFormatEngine class to handle DVD RW erasure using
    dvd+rw-tools
  2. Modified control files to add dvd+rw-tools as a dependency
  3. Updated DOpticalDiscManager to detect DVD±RW media and use new engine
    when available
  4. Implemented progress parsing for dvd+rw-format's special output
    format
  5. Added fallback to xorriso when dvd+rw-format is not available

Log: Added support for DVD±RW erasure using dvd+rw-format tool

Influence:

  1. Test DVD+RW and DVD-RW erasure with dvd+rw-tools installed
  2. Verify fallback to xorriso when dvd+rw-tools is missing
  3. Check progress reporting during erase operations
  4. Test with different DVD RW media types
  5. Verify no regression in CD/DVD non-RW erase functionality

feat: 添加对DVD RW擦除的dvd+rw-format支持

  1. 新增DVDRwFormatEngine类用于通过dvd+rw-tools处理DVD RW擦除
  2. 修改控制文件添加dvd+rw-tools作为依赖项
  3. 更新DOpticalDiscManager以检测DVD±RW介质并在可用时使用新引擎
  4. 实现针对dvd+rw-format特殊输出格式的进度解析
  5. 添加当dvd+rw-format不可用时回退到xorriso的处理

Log: 新增使用dvd+rw-format工具进行DVD±RW擦除的支持

Influence:

  1. 测试dvd+rw-tools安装时的DVD+RW和DVD-RW擦除功能
  2. 验证dvd+rw-tools缺失时回退到xorriso的功能
  3. 检查擦除过程中的进度报告
  4. 使用不同类型的DVD RW介质进行测试
  5. 验证普通CD/DVD非RW擦除功能无回归

1. Added new DVDRwFormatEngine class to handle DVD RW erasure using
dvd+rw-tools
2. Modified control files to add dvd+rw-tools as a dependency
3. Updated DOpticalDiscManager to detect DVD±RW media and use new engine
when available
4. Implemented progress parsing for dvd+rw-format's special output
format
5. Added fallback to xorriso when dvd+rw-format is not available

Log: Added support for DVD±RW erasure using dvd+rw-format tool

Influence:
1. Test DVD+RW and DVD-RW erasure with dvd+rw-tools installed
2. Verify fallback to xorriso when dvd+rw-tools is missing
3. Check progress reporting during erase operations
4. Test with different DVD RW media types
5. Verify no regression in CD/DVD non-RW erase functionality

feat: 添加对DVD RW擦除的dvd+rw-format支持

1. 新增DVDRwFormatEngine类用于通过dvd+rw-tools处理DVD RW擦除
2. 修改控制文件添加dvd+rw-tools作为依赖项
3. 更新DOpticalDiscManager以检测DVD±RW介质并在可用时使用新引擎
4. 实现针对dvd+rw-format特殊输出格式的进度解析
5. 添加当dvd+rw-format不可用时回退到xorriso的处理

Log: 新增使用dvd+rw-format工具进行DVD±RW擦除的支持

Influence:
1. 测试dvd+rw-tools安装时的DVD+RW和DVD-RW擦除功能
2. 验证dvd+rw-tools缺失时回退到xorriso的功能
3. 检查擦除过程中的进度报告
4. 使用不同类型的DVD RW介质进行测试
5. 验证普通CD/DVD非RW擦除功能无回归

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @Johnson-zs, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@deepin-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: Johnson-zs

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@github-actions

Copy link
Copy Markdown
  • 检测到debian目录文件有变更: debian/control.in

@deepin-ci-robot

Copy link
Copy Markdown

deepin pr auto review

★ 总体评分:95分

■ 【总体评价】

代码实现了DVD±RW光盘擦除功能的优化,通过优先调用外部dvd+rw-format工具提升了兼容性
逻辑正确且具备降级机制,设备路径校验有效防范了安全风险,因缓冲区截断逻辑存在轻微瑕疵扣5分

■ 【详细分析】

  • 1.语法逻辑(基本正确)✓

DOpticalDiscManager::erase 函数中,新增的介质类型判断和引擎分发逻辑清晰,降级到 xorriso 的处理合理。DVDRwFormatEngine::doErase 中使用 QProcess 启动外部进程并轮询读取输出的实现正确,退出状态检查完整。
潜在问题:在 DVDRwFormatEngine::doErase 的缓冲区截断逻辑中,buffer = buffer.right(512); 可能会将一个完整的百分比字符串(如 10.0%)截断为 0.0%,导致下一次拼接时正则表达式匹配到错误的进度值。
建议:移除缓冲区截断逻辑,光盘擦除过程的输出量极小,不会造成内存问题;或改为按行截断,保留最后一个完整行。

  • 2.代码质量(良好)✓

命名规范符合Qt风格,注释非常详尽,准确解释了 dvd+rw-format 的底层输出机制和相位切换逻辑,有助于后续维护。信号槽连接使用了 Qt::DirectConnection 确保进度实时反馈。
潜在问题:无
建议:保持当前的注释风格,对复杂的底层交互逻辑进行说明。

  • 3.代码性能(无性能问题)✓

轮询间隔设置为 200ms,对于光盘擦除这种耗时操作而言非常合理,既保证了进度更新的及时性,又不会造成CPU占用过高。正则表达式使用 static const 保证了只编译一次。
潜在问题:无
建议:无需修改。

  • 4.代码安全(存在0个安全漏洞)✓

漏洞对比统计:新增漏洞 0 个,减少漏洞 0 个,持平 0 个
总体风险描述:代码未发现安全漏洞。在 DVDRwFormatEngine::doErase 中,对传入的设备路径进行了严格的 QDir::cleanPath 清理和 /dev/sr 前缀校验,有效防止了路径遍历。外部命令启动使用 QStringList 传参,避免了命令注入风险。

  • 建议:继续保持当前的参数化传递方式和路径校验逻辑,确保外部进程调用的安全性。

■ 【改进建议代码示例】

// 优化缓冲区截断逻辑,避免截断完整的进度字符串
while (proc.state() == QProcess::Running) {
    proc.waitForReadyRead(pollInterval);

    if (proc.bytesAvailable() > 0) {
        buffer += proc.readAllStandardOutput();
        parseProgress(buffer, totalPhases);
        // 移除可能截断完整百分比字符串的截断逻辑
        // 光盘擦除输出量极小,无需截断缓冲区
    }
}

// 读取进程退出后管道中的剩余数据
if (proc.bytesAvailable() > 0) {
    buffer += proc.readAllStandardOutput();
    parseProgress(buffer, totalPhases);
}

@Johnson-zs

Copy link
Copy Markdown
Contributor Author

/forcemerge

@deepin-bot

deepin-bot Bot commented Jul 16, 2026

Copy link
Copy Markdown

This pr force merged! (status: blocked)

@deepin-bot
deepin-bot Bot merged commit a18cf1a into linuxdeepin:release/snipe Jul 16, 2026
20 of 23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants