Hi Alexander,

I still want to use `libcurl` in PicoLisp and want default signal
processing during long operations like  `curl_easy_perform`, so I can
i.e. terminate the script by Ctrl-C. I made this function (naming
convensions are not so good):

(de defsigint Prg
   (let action_size 160
      (buf defaction action_size
         (%@ "memset" NIL defaction 0 action_size)
         (buf oldaction action_size
            (%@ "sigaction" 'N 2 defaction oldaction)
            (run Prg)
            (%@ "sigaction" 'N 2 oldaction 0) ) ) ) )

This function sets SIGINT to default and then restores the original.

This code is non-portable and hacky so I decided to patch PicoLisp to
implement signal processing right way: make tools for saving,
restoring signal handlers and make them universal instead of
predefined set of signals. (I have an idea to make PicoLisp the only
scripting tool on my Linux.)

But I confused with the source code. I.e. I see `sighandler` func, I
see that it used only in `sigChk` func. So I can't get a picture of
how signal processing is working in PicoLisp.

Could you make some brief explanations of functions of signal
processing in PicoLisp please?
If I will make a patch with new signal processing will you accept such patch?

Regards, Constantine

-- 
UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe

Reply via email to