[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