+2010-01-27 Pascal Obry <obry@adacore.com>
+
+ * g-awk.adb: ensure that an AWK session is reusable.
+
2010-01-27 Vasiliy Fofanov <fofanov@adacore.com>
* g-regist.adb (For_Every_Key): Fix previous change.
-- --
-- B o d y --
-- --
--- Copyright (C) 2000-2008, AdaCore --
+-- Copyright (C) 2000-2010, AdaCore --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- We release the session data only if it is not the default session
if Session.Data /= Get_Def then
+ -- Release separators
+
+ Free (Session.Data.Separators);
+
Free (Session.Data);
-- Since we have closed the current session, set it to point now to
procedure Current_Line (S : Separator; Session : Session_Type) is
Line : constant String := To_String (Session.Data.Current_Line);
Fields : Field_Table.Instance renames Session.Data.Fields;
+ Seps : constant Maps.Character_Set := Maps.To_Set (S.Separators);
- Start : Natural;
- Stop : Natural;
-
- Seps : constant Maps.Character_Set := Maps.To_Set (S.Separators);
+ Start : Natural;
+ Stop : Natural;
begin
-- First field start here
-- Look for next separator
Stop := Fixed.Index
- (Source => Line (Start .. Line'Last),
- Set => Seps);
+ (Source => Line (Start .. Line'Last),
+ Set => Seps);
exit when Stop = 0;
if Start = 0 then
Start := Stop + 1;
end if;
+
else
Start := Stop + 1;
end if;
Text_IO.Close (Session.Data.Current_File);
end if;
- -- Release separators
-
- Free (Session.Data.Separators);
-
-- Release Filters table
for F in 1 .. Pattern_Action_Table.Last (Filters) loop