From f88ed911c297279d789636b21b097159603fdf7a Mon Sep 17 00:00:00 2001 From: retropikzel Date: Sun, 14 Dec 2025 08:13:36 +0200 Subject: [PATCH] Make pstk use libraries instead of (foreign c) directly --- retropikzel/pstk.scm | 21 +++++++++------------ retropikzel/pstk.sld | 5 +++-- retropikzel/pstk/test.scm | 3 --- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/retropikzel/pstk.scm b/retropikzel/pstk.scm index 7f534a2..0e386cc 100644 --- a/retropikzel/pstk.scm +++ b/retropikzel/pstk.scm @@ -1,10 +1,11 @@ -(define-c-library libc - '("stdlib.h" "stdio.h" "unistd.h") - libc-name - '((additional-versions ("0" "6")))) +(define (temp-name) + (string-append "pstk-" + (number->string (random-integer 1000)) + "-" + (number->string (random-integer 1000)) + "-" + (number->string (random-integer 1000)))) -(define-c-procedure c-tempnam libc 'tempnam 'pointer '(pointer pointer)) -(define-c-procedure c-system libc 'system 'int '(pointer)) (define wish-display pipe-write-string) (define wish-read (lambda (pipe) (let ((result (pipe-read pipe))) @@ -17,11 +18,7 @@ (define wish-flush (lambda () #t)) ; No need to do anything (define wish-read-line pipe-read-line) (define (run-program program) - (let* ((temp-prefix (string->c-utf8 "npcmd")) - (temp-name (lambda () - (c-utf8->string (c-tempnam (make-c-null) - temp-prefix)))) - (input-path (temp-name)) + (let* ((input-path (temp-name)) (output-path (temp-name)) (shell-command (string-append program " < " @@ -33,7 +30,7 @@ " & "))) (create-pipe input-path 0777) (create-pipe output-path 0777) - (c-system (string->c-utf8 shell-command)) + (system shell-command) (list (open-input-pipe input-path) (open-output-pipe output-path)))) diff --git a/retropikzel/pstk.sld b/retropikzel/pstk.sld index d9f8171..25261f0 100644 --- a/retropikzel/pstk.sld +++ b/retropikzel/pstk.sld @@ -106,8 +106,9 @@ (scheme file) (scheme write) (scheme process-context) - (foreign c) - (retropikzel named-pipes)) + (retropikzel named-pipes) + (retropikzel system) + (srfi 27)) (export tk-eval tk-id->widget tk-var diff --git a/retropikzel/pstk/test.scm b/retropikzel/pstk/test.scm index 7588065..b3f77c1 100644 --- a/retropikzel/pstk/test.scm +++ b/retropikzel/pstk/test.scm @@ -1,6 +1,3 @@ -(import (scheme base) - (scheme write) - (retropikzel pstk)) (let ((tk (tk-start))) (tk/pack (tk 'create-widget