[REBOL] Re: Problems with 'call
From: tomc:cs:uoregon at: 20-Apr-2006 14:59
Hi Tim,
I duplicated your examples on RH Linux & solaris
I think it should be ramboed
Tim Johnson wrote:
> I'm picking up this topic again:
> there are features to 'call on linux that are downright baffling, and if
> I were to use it in an application, rather strange to me.
> Let's look at some examples:
>
>>> res: call "ls *.r"
> user.r ;; okay
> == 0 ;; exit code of 0 is correct
> ;; now let's introduce a legitimate call that has unsuccessful results
> res: call "ls *.cpp"
> ls: *.cpp: No such file or directory
> == 0 ;; hmmm! now let's do the same from the shell.
> [tim-linus tim]$ ls *.cpp
> ls: *.cpp: No such file or directory
> [tim-linus tim]$ echo $?
> 1
> ;; NOTE the differences in the exit code.
>
> Now let's 'buffer' the output
>>> buffer: copy ""
> == ""
> res: call/output "ls *.r" buffer
> == 214 ;; say what?
>>> buffer
> == "user.r^/" ;; good
>
> ;; now the following is definitely unsettling, because it disables the
> ;; programmer's ability to gracefully handle errors:
>>> clear buffer
> == ""
>>> res: call/output "ls *.cpp" buffer
> ;; Hoy moly, prints to stdout
> ls: *.cpp: No such file or directory
> == 214 ;; again exit code is inconsistant with shell command
>>> buffer
> == "" ;; and nothing in the buffer
> ;; Trying another refinement
> res: call/error "ls *.cpp" buffer
> == 214
>>> buffer
> == "ls: *.cpp: No such file or directory^/"
> ;; now that's a bit better, at least we've captured the error message.
>
> ;; but I'm still baffled about the anomalies in the exit codes.
> ;; BTW: using the /info refinement returns the same exit code as
> ;; an attribute
>
> Just curious. Does anyone think that this should be treated as a bug?
> Otherwise, I could wrap this in a function that could handle some of
> these inconsistancies.
>
> tim
>
--
... nice weather eh tomc-cs.uoregon.edu