home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / OS2XLSP1.ZIP / ENV.LSP < prev    next >
Text File  |  1988-07-19  |  2KB  |  52 lines

  1. ; env.lsp
  2. ; Andrew Schulman 17-Feb-1988
  3. ; revised 15-Mar-1988
  4.  
  5. (define dosgetenv (getprocaddr doscalls "DOSGETENV"))
  6. (define envseg 0)
  7. (define cmdline 0)
  8. (call dosgetenv (addr envseg) (addr cmdline))
  9. (format stdout "Envseg ~A  Cmdline ~A~%~%" envseg cmdline)          
  10.  
  11. (define (print-strings seg off)
  12.     (do
  13.         ((len 1) (s ""))                            ; init
  14.         ((= 0 len))                                 ; test
  15.         (setf s (peek (mk-fp seg off) 0))           ; body
  16.         (if
  17.             (>
  18.                 (setf len (length (setf s (peek (mk-fp seg off) 0))))
  19.                 0)
  20.             (format stdout "~A~%" s))
  21.         (setf off (+ 1 len off))))
  22.  
  23. (print-strings envseg cmdline)
  24.  
  25. (terpri)
  26.  
  27. (print-strings envseg 0)
  28.  
  29. (terpri)
  30.  
  31. ;;; note: individual values can be retrieved with DOSSCANENV
  32. ;;; DOSSCANENV located in DOSCALL1.DLL
  33. (define (env-test)
  34.     (let
  35.         ((dosscanenv (register "DOSCALL1" "DOSSCANENV"))
  36.          (env-ptr 0))
  37.     (princ "This is a test of the DOSSCANENV function\n")
  38.     (princ "Please enter the name of an environment variable: ")
  39.     (define var-name (read))
  40.     (if 
  41.         (zerop 
  42.             (call dosscanenv (addr (symbol-name var-name)) (addr env-ptr)))
  43.         ; if okay
  44.         (set var-name (peek env-ptr 0))
  45.         ; if not okay
  46.         (set var-name nil))
  47.     (format stdout
  48.         "Created XLISP variable ~A with value \"~A\"~%" var-name
  49.             (eval var-name))))
  50.         
  51. (env-test)
  52.