[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