Custom Query (1030 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (535 - 537 of 1030)

Ticket Resolution Summary Owner Reporter
#319 fixed RUN-PROGRAM and stream encodings Gary Byers Gary Byers
Description

Many standard programs (many GNU tools, including GCC) produce output in UTF-8 or some other non-empty encoding. CCL::MONITOR-EXTERNAL-PROCESS just interprets each octet it receives as a character-code; ideally, there should be some way of specifying how those octets encode characters.

Non-interactive input to external processes sometimes involves writing a lisp stream's contents to a temporary file and passing a descriptor to that file as the subprocess' standard input; similarly, there should be some way of ensuring that that input is encoded according to the external program's expectations.

How significant a problem this is may depend on how visible it is, which in turn depends on lots of factors ("locales", terminal/Emacs settings) outside of the lisp's control. It seems desirable that the lisp offer a way of doing (its part of) this right.

#318 fixed RUN-PROGRAM I/O limitations Gary Byers Gary Byers
Description
 (run-program ''prog'' args :output ''lisp-stream'' :error ''lisp-stream'')

doesn't work as expected. CCL::MONITOR-EXTERNAL-PROCESS only has the ability to watch output on a single file descriptor, and in this case it winds up watching the input side of a pipe used as the error descriptor by the external program, and output is lost.

Example:

(defun foo ()
  (with-output-to-string (out)
    (with-output-to-string (err)
      (run-program "ls" '("-l") :output out :error err)
      (format t "~& out = ~a" (get-output-stream-string out))
      (format t "~& err = ~a" (get-output-stream-string err))))
  nil)

Calling (FOO) produces the output:

out =
err =

which basically means "there was no error output, and we weren't watching standard output"

Even though this is apparently a litte obscure (I don't recall it ever having been reported), it's probably fair to call it 'major'.

Using :ERROR :OUTPUT provides a way of getting both standard and error output, but not a way of distinguishing between them.

#949 fixed RESTART-CASE with :TEST & :INTERACTIVE broken Greg Pfeil
Description

There seems to be some odd behavior in RESTART-CASE when a restart clause has both test and interactive expressions.

In the attached file, the only difference between TEST-BROKEN-RESTART and TEST-WORKING-RESTART is that the latter’s restart clause has no test expression.

./dx86cl64 --no-init
Welcome to Clozure Common Lisp Version 1.9-dev-r15272M-trunk  (DarwinX8664)!
? (load "~/broken-restart.lisp")
#P"/Users/greg/broken-restart.lisp"

This case behaves correctly – the test fails, so the restart is not offered.

? (test-broken-restart 'non-restartable-error)
> Error: Condition #<NON-RESTARTABLE-ERROR #x30200072ED8D>
1 > :r
>   Type (:C <n>) to invoke one of the following restarts:
0. Return to break level 1.
1. #<RESTART ABORT-BREAK #x7EBECD>
2. Return to toplevel.
3. #<RESTART ABORT-BREAK #x7EC5AD>
4. Reset this thread
5. Kill this thread
1 > :pop

This case fails – the test passes and the restart is offered, but when the restart is selected, rather than calling the interactive expression, some anonymous restart is used, and another error is signaled.

? (test-broken-restart 'restartable-error)
> Error: Condition #<RESTARTABLE-ERROR #x302000726B1D>
1 > :r
>   Type (:C <n>) to invoke one of the following restarts:
2. #<RESTART BROKEN #x7EC16D>
1 > :c 2
Invoking restart: NIL
432345564230164480 is not of type (OR SYMBOL FUNCTION), and can't be FUNCALLed or APPLYed
1 > :pop

This is the same as the previous case, but with the test expression removed. This time it works – the restart is selected, then it interactively asks for a value.

? (test-working-restart 'restartable-error)
> Error: Condition #<RESTARTABLE-ERROR #x302000721A6D>
1 > :r
>   Type (:C <n>) to invoke one of the following restarts:
2. #<RESTART WORKING #x7EC16D>
1 > :c 2
Invoking restart: #<RESTART WORKING #x7EC16D>
Enter a value: 5
5
? 
Batch Modify
Note: See TracBatchModify for help on using batch modify.
Note: See TracQuery for help on using queries.