[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: gEDA-user: gnetlist quitting after execl call
John,
Ah much improved. I tried using system* but now I don't seem to be
getting my command line arguments. For example both
(system* "/sw/share/gEDA/scheme/subfunction" (string-append " --m="
(number->string m) " --w="
(number->string w)
" --l=" (number->string l) " --type=nmos"
) )
and
(system* "/sw/share/gEDA/scheme/subfunction" " --m="
(number->string m) " --w="
(number->string w)
" --l=" (number->string l) " --type=nmos"
)
run my C++ program and return with guile continuing, but my program
sees no signs of the command line arguments. The following code barfs
out
(system* (string-append "/sw/share/gEDA/scheme/subfunction" " --m="
(number->string m) " --w="
(number->string w)
" --l=" (number->string l) " --type=nmos"
) )
with
1: 0* [magic-new "small_amplifier"]
In /sw/share/gEDA/scheme/gnet-magic-new.scm:
816: 1 [magic:write-top-cell "small_amplifier"]
799: 2 (let* ((port (open-output-file #))) (display "magic
" port) ...)
802: 3* [magic:components #<output: small_amplifier.mag 12> ("OUT"
"VSS" "VCC" ...)]
781: 4 (if (not #) (begin # #))
...
782: 5 (begin (let # # # ...) (magic:components port #))
783: 6* (let ((pattern #) (package #)) (display "use " port) ...)
788: 7* [magic:write-component "M3"]
762: 8 (let* ((device #)) (cond (# #) (# #) (else #)))
...
654: 9 [system* "/sw/share/gEDA/scheme/subfunction --m=1 --w=30 --l=5
--type=pmos"]
Any suggestions?
Oliver
__________________________________________________________________
From: John Doty <jpd@xxxxxxxxx>
To: gEDA user mailing list <geda-user@xxxxxxxxxxxxxx>
Sent: Mon, September 6, 2010 12:22:31 PM
Subject: Re: gEDA-user: gnetlist quitting after execl call
On Sep 6, 2010, at 1:08 PM, Oliver King-Smith wrote:
> I am extending gnetlist and I dislike scheme. To work around this I
> wrote a little program in C++ to do the heavy lifting and I am
trying
> to call it from my scheme extension to gnetlist.
> I wrote the following function in scheme:
> (define magic:write_nmos_fet
> (lambda (w l m)
> (display (string-append "in write_nmos_fet " (number->string w)
> "\n") )
>
> (execl "/sw/share/gEDA/scheme/subfunction" " --m="
(number->string
There's your problem: (execl) is not like a call. It replaces the
current process, so it should never return unless something goes wrong.
Like execl() in libc.
You probably want (system) or (system*).
> m)
> " --w=" (number->string w) " --l=" (number->string l) "
> --type=nmos" )
> (display "Finished C call\n" )
> ))
> This works and calls my C++ program (called subfunction right now).
> The C++ program runs without problems and produces the expected
> output. My problem is nothing seems to run in my scheme program
after
> calling subfunction. For example the line:
> (display "Finished C call\n" )
> does not run. Nothing else appears to run after this. However
there
> are no error messages.
> Does anyone have any suggestions as to why this might be?
> Is there a better way to be calling external programs from gnetlist?
> Oliver
>
>
> _______________________________________________
> geda-user mailing list
> [1]geda-user@xxxxxxxxxxxxxx
> [2]http://www.seul.org/cgi-bin/mailman/listinfo/geda-user
John Doty Noqsi Aerospace, Ltd.
[3]http://www.noqsi.com/
[4]jpd@xxxxxxxxx
_______________________________________________
geda-user mailing list
[5]geda-user@xxxxxxxxxxxxxx
[6]http://www.seul.org/cgi-bin/mailman/listinfo/geda-user
References
1. mailto:geda-user@xxxxxxxxxxxxxx
2. http://www.seul.org/cgi-bin/mailman/listinfo/geda-user
3. http://www.noqsi.com/
4. mailto:jpd@xxxxxxxxx
5. mailto:geda-user@xxxxxxxxxxxxxx
6. http://www.seul.org/cgi-bin/mailman/listinfo/geda-user
_______________________________________________
geda-user mailing list
geda-user@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-user