lp spool path #15

Open
opened 2026-09-08 17:41:21 +01:00 by gronod · 0 comments
Owner

Summary

buildLpArgs + Foundation Process exec. Never -o raw. Never a shell string.

Spec refs

docs/11-print-macos.md build_lp_args.

Scope

In: argv builder + spawn lp.
Out: Quartz path.

Implementation notes

lp -d <queue> -t "ICCery Target - <file>"
   -o AP_ColorMatchingMode=AP_ApplicationColorMatching
   -o AP.ColorMatchingMode=AP_ApplicationColorMatching
   … captured cups_options …
   … media_type if absent …
   … driver bypass if no bypass key yet (NOT gated on a checkbox) …
   … orientation-requested=3|4 …
   … PageSize if absent …
   <tiff>

Last argv is the TIFF path.
Captured options win over later defaults (record added keys lowercase).
Port v0.8.5 golden vectors.

Rewrite invariants

Never -o raw on macOS. Both AP_* always present.

Dependencies

Blocks-on: 14.
Unblocks: 17, 29.

Test

  • CI/mock: argv goldens — both AP_* present; captured wins; last arg TIFF; ; rejected.
  • Hardware: one unmanaged page vs a ColorSync-managed control.

Acceptance criteria

  • Goldens pass.
  • No /bin/sh -c invocation.
## Summary `buildLpArgs` + Foundation Process exec. Never `-o raw`. Never a shell string. ## Spec refs docs/11-print-macos.md `build_lp_args`. ## Scope In: argv builder + spawn `lp`. Out: Quartz path. ## Implementation notes ``` lp -d <queue> -t "ICCery Target - <file>" -o AP_ColorMatchingMode=AP_ApplicationColorMatching -o AP.ColorMatchingMode=AP_ApplicationColorMatching … captured cups_options … … media_type if absent … … driver bypass if no bypass key yet (NOT gated on a checkbox) … … orientation-requested=3|4 … … PageSize if absent … <tiff> ``` Last argv is the TIFF path. Captured options win over later defaults (record added keys lowercase). Port v0.8.5 golden vectors. ## Rewrite invariants Never `-o raw` on macOS. Both AP_* always present. ## Dependencies Blocks-on: 14. Unblocks: 17, 29. ## Test - CI/mock: argv goldens — both AP_* present; captured wins; last arg TIFF; `;` rejected. - Hardware: one unmanaged page vs a ColorSync-managed control. ## Acceptance criteria - [ ] Goldens pass. - [ ] No `/bin/sh -c` invocation.
gronod added this to the M3 — macOS unmanaged printing (lp) milestone 2026-09-08 17:41:21 +01:00
gronod added the
Priority
High
2
Project/ICCery-v2Feature/Backend
labels 2026-09-08 17:41:21 +01:00
gronod reopened this issue 2026-09-09 10:08:37 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gronod/iccery-v2-mac#15