octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Second time's a charm


From: Sebastien Loisel
Subject: Re: Second time's a charm
Date: Thu, 16 Feb 2006 18:47:54 +0100

David,

Only in windows could this happen. It appears that the cout and cerr that my Octave GUI program sees are *not the same* as the cout and cerr that liboctave sees. I have absolutely no idea why this is. I've linked a "console version" of Octave GUI to see if it would help, no go. I'm able to grab the octave_stdout, but when I grab cerr and cout, it's only grabbed inside my code, and not inside liboctave. Ergo, they're different symbols.

I can't fix this without help. If you don't know how to fix it, I'll go trolling on Windows C++ forums somewhere.

While we could rename cerr to octave_stderr everywhere, maybe this function would solve the problem too:

ostream &get_liboctave_cerr() { return cerr; }

(making sure of course it's not inline otherwise I'll get the wrong symbol.)

In fact, would you mind testing that last idea?

Cheers,

Sébastien Loisel

On 2/16/06, David Bateman <address@hidden> wrote:
Sebastien,

Ok, I took a really quick look at this.

* Firstly have you tried starting octave-gui.exe in an rxvt?  The output
you are trying to capture is echoed in the rxvt terminal rather than
your application.
* Commands such as "ls" that use a system call open a cmd.exe window
briefly when they probably shouldn't. This will happen for many commands
including most notably "help" as it makes a system call to texinfo..
* The readline line completion in octave allows you to start typing then
do upper-arrow to get the previous commands that started with the same
characters.
* You don't appear to be using the octave history file, this is
important as it allows use of the history between sessions. To address
this and the above point, why not use the function
std::string gnu_readline (const std::string&, bool) from src/input.cc in
octave. You might also be able to use other parts of the command_editor
class to get the output right, though you might need to set
command_editor::terminal_cols correctly. Check liboctave/cmd-edit.h
* You don't respect the PS1 variable for the prompt in the GUI.

I still haven't looked at the bug with octave_init yet, so the above is
just first impressions.. Looks good and extremely rapid progress..

Cheers
David

Sebastien Loisel wrote:

> David,
>
> Ok, now I've autoconfiscated octave-gui and you should be able to
> build it. If you have QT4.1 problems though, you're going to have to
> sort those out... :-/ Over here, everything compiles and the
> mainwindow comes up so it's now at the same state as it was
> pre-autoconfiscation (octave still doesn't init right.)
>
> The tarball is here:
> http://www.math.mcgill.ca/loisel/octave-gui-beta.tar.gz
>
> I strongly advise everyone but David to stay away from this.
>
> Building is standard, but it's in maintainer mode. Here's what I do.
>
> 1) Fire up an appropriate shell. I've got "shell.bat" and
> "shell-x64.bat" (for Windows XP x64) in that directory for that
> purpose. It's basically the setup from your octave.bat, then it starts
> sh.exe from mingw.
>
> 2) cd to the octave-gui-0.4 directory.
>
> 3)
> $ aclocal
> $ autoconf
> $ automake
> $ ./configure
> $ make
>
> 4) ./octave-gui
>
> After a 5 second pause (or so), a window will pop up.
>
> I haven't tested, but I don't think stdout/stderr work. So if you're
> going to debug, you have to use some other way. To help you out, I've
> declared the following global variable:
>
> string david_output;
>
> If you stick anything in there, it'll appear in the mainwindow when
> the mainwindow first appears. Otherwise I think you can open files and
> stuff. Right now, as an example, it prints the return code of
> octave_main, which is 1.
>
> Cheers,
>
> Sebastien Loisel
>


--
David Bateman                                address@hidden
Motorola Labs - Paris                        +33 1 69 35 48 04 (Ph)
Parc Les Algorithmes, Commune de St Aubin    +33 6 72 01 06 33 (Mob)
91193 Gif-Sur-Yvette FRANCE                  +33 1 69 35 77 01 (Fax)

The information contained in this communication has been classified as:

[x] General Business Information
[ ] Motorola Internal Use Only
[ ] Motorola Confidential Proprietary



reply via email to

[Prev in Thread] Current Thread [Next in Thread]