[gtkada] Gate on 98
Greg Keene
keenehouse at yahoo.com
Mon Jan 22 18:05:40 CET 2001
Jeff,
I am having trouble getting source code generated
using Glade (with and without your new changes). Using
the new gate.csh I actually get farther than I did
before. The problem seems to be in the way the
file/directory names are generated. The first call to
dirname (when echoed), isn't right and things continue
from there.
I am using Glade 0.5.9/gnat 3.13p on top of Windows
98.
Any suggestions?
greg
--- Jeff Creem <jeff at thecreems.com> wrote:
> I almost hestiate to post this since it is not
> robust and does not include
> the normal error
> checking of the real gate, but while on travel last
> week away from my normal
> machine, I was
> stuck with my Windows 98 laptop and no ability to
> run gate..Looking at the
> situation it at first
> appeared that the problem was mostly caused by the
> way 95/98 handles return
> values / arguments
> v.s. the way NT does.. After fixing that a little, I
> found that for some
> reason, when gnatchop is called
> from the sh.exe that is included in the GtkAda for
> win32 it seems to be
> unable to parse the file.
>
> So, to solve these to issues, I have a really poorly
> written program to fix
> the argument parsing issue and
> a new gate script that runs as a tcsh script.
>
> All of this is released under the same GPL license
> conditions as the rest of
> the GtkAda components.
>
> Note that I was running gate from the command line
> not from Glade (it might
> work there too)....
> I am releasing this now as is since I do not think I
> will be working on it
> anymore (Installed Linux on
> the laptop instead)...
>
>
>
>
> So, first you need to get tcsh for win 32 from
>
> ftp://ftp.blarg.net/users/amol/tcsh/
>
> I just installed it in by bin area for GtkAda
> (probably a bad idea).
>
> Then, save you old gate.bat script and replace it
> with a file that contains
>
> @C:\GtkAda-1.3.10\bin\tcsh.exe
> "C:/GtkAda-1.3.10/bin"/gate.csh %1
>
>
>
> Next, save this source in a file called
> parseargs.adb compile/link it and
> stick the
> executable with your tcsh executable
>
> with Text_IO;
> with Ada.Command_Line;
> procedure ParseArgs is
> Last : INteger;
> Item : String (1 .. 1024);
>
> Current_Word : Integer := 0;
>
> type State_Type is
> (Await_Word_Start,
> Word_Started);
>
> State : State_Type := Await_Word_Start;
> THis_Is_The_WOrd : Boolean := False;
>
> begin
> Text_IO.Get_Line(
> Item => Item,
> Last => Last);
>
> for I in 1 .. Last loop
>
> case State is
> when Await_Word_Start =>
> if Item(I) /= ' ' then
> State := Word_Started;
> Current_Word := Current_Word + 1;
>
> This_Is_The_Word := Current_Word =
> Integer'Value(Ada.
> Command_Line.Argument(1));
>
>
> if This_Is_The_Word then
> Text_IO.Put(Item(I));
> end if;
>
> end if;
> when Word_Started =>
> if Item(I) = ' ' then
> State := Await_Word_Start;
> elsif This_Is_The_Word then
> Text_IO.Put(Item(I));
> end if;
> end case;
> end loop;
>
>
> end ParseArgs;
>
>
> Finally, here is a partially finished gate.csh
> script that sort of works (at
> least you can get source
> code out)..Save this a gate.csh
>
>
> #
> # This script is a front end to the gate executable
> that build
> # the Ada source code from the GLADE XML. The script
> handles all
> # error handling processing as well as the
> reconciliation of the
> # newly generated files with any hand edited files
> that already exist.
> #
>
>
> #
> # Check that at least one parameter has been
> specified and
> # pop-up an error dialog if not.
> #
> if ( $# == 0) then
> echo "Usage: gate project-file" | gdialog error
> justify_left
> exit 1
> endif
>
> #
> # Determine the directory that contains the project
> file.
> #
> set dir=`dirname $1|sed -e 's$\\\\$/$g'`
>
> #
> # Strip off the portion that contains just the
> filename of
> # the XML file.
> #
> set file=`cd $dir; `$cwd/`basename $1`
> cd $dir
> set dir=$cwd
>
> #
> # Call the Gate executable and ask it to specify the
> # names for the main program (based on the input
> file) and
> # the directory for source code and pixmaps.
> #
> set info=`gate-in.exe -p -s -x $file`
> echo "Info is:" $info
> echo "File is:" $file
>
> #
> # Check that the return code from gate did not say
> that it
> # could not parse the file.
> #if [ $? != 0 ]; then
> # echo "Couldn't parse $file. Exiting." | gdialog
> error justify_left
> # exit 1
> #fi
>
> #
> # Now, check the returned parameters from the call
> to the gate
> # executable program and set the project directory,
> source
> # directory and pixmap directory variables.
> #
> set prj=`echo $info | parseargs 1`
> if ("$prj" == "<no_name>") then
> set prj=default
> endif
>
> set srcdir=`echo $info | parseargs 2`
> set psrcdir=$srcdir
>
> if ( "$srcdir" == "<no_name>" ) then
> set srcdir=.
> set psrcdir="the current directory"
> endif
>
>
>
> set pixdir=`echo $info | parseargs 3`
>
> echo $pixdir
>
>
>
=== message truncated ===
__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - Buy the things you want at great prices.
http://auctions.yahoo.com/
More information about the gtkada
mailing list