gawk-diffs
[Top][All Lists]
Advanced

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

[gawk-diffs] [SCM] gawk branch, gawk-4.2-stable, updated. gawk-4.1.0-297


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, gawk-4.2-stable, updated. gawk-4.1.0-2976-gf006165
Date: Thu, 31 May 2018 05:57:21 -0400 (EDT)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, gawk-4.2-stable has been updated
       via  f006165d77037b99e205496d8b79cb80e9f280c0 (commit)
      from  17453df8b1ba435161b29ca7e8cf266d0fbaf4ac (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=f006165d77037b99e205496d8b79cb80e9f280c0

commit f006165d77037b99e205496d8b79cb80e9f280c0
Author: Arnold D. Robbins <address@hidden>
Date:   Thu May 31 12:57:02 2018 +0300

    Further fixes to extract.awk.

diff --git a/awklib/eg/prog/extract.awk b/awklib/eg/prog/extract.awk
index ff598e8..0e9bcca 100644
--- a/awklib/eg/prog/extract.awk
+++ b/awklib/eg/prog/extract.awk
@@ -30,7 +30,7 @@ BEGIN    { IGNORECASE = 1 }
     }
     if ($3 != curfile) {
         if (curfile != "")
-            filelist[curfile]++     # save to close later
+            filelist[curfile] = 1   # save to close later
         curfile = $3
     }
 
@@ -61,8 +61,9 @@ BEGIN    { IGNORECASE = 1 }
     }
 }
 END {
-    for (f in filelist)
-        close(filelist[f])
+    close(curfile)          # close the last one
+    for (f in filelist)     # close all the rest
+        close(f)
 }
 function unexpected_eof()
 {
diff --git a/awklib/extract.awk b/awklib/extract.awk
index 96fc949..0c20e29 100644
--- a/awklib/extract.awk
+++ b/awklib/extract.awk
@@ -30,7 +30,7 @@ BEGIN    { IGNORECASE = 1 }
     }
     if ($3 != curfile) {
         if (curfile != "")
-            filelist[curfile]++     # save to close later
+            filelist[curfile] = 1     # save to close later
         curfile = $3
     }
 
@@ -61,8 +61,9 @@ BEGIN    { IGNORECASE = 1 }
     }
 }
 END {
-    for (f in filelist)
-        close(filelist[f])
+    close(curfile)          # close the last one
+    for (f in filelist)     # close all the rest
+        close(f)
 }
 function unexpected_eof()
 {
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 0fa5c97..4b2fad9 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,9 @@
+2018-05-31         Arnold D. Robbins     <address@hidden>
+
+       * gawktexi.in (Extract Program): Additional bug fixes. Close
+       the last file processed, and use the index of the for loop
+       which is the filename as the argument to close()!
+
 2018-05-28         Bjarni Ingi Gislason  <address@hidden>
 
        * gawk.1: Change two-fonts macros to one-font macros for a
diff --git a/doc/gawk.info b/doc/gawk.info
index eb35cef..14d4a7e 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -19003,7 +19003,7 @@ back into a single line.  That line is then printed to 
the output file:
          }
          if ($3 != curfile) {
              if (curfile != "")
-                 filelist[curfile]++     # save to close later
+                 filelist[curfile] = 1   # save to close later
              curfile = $3
          }
 
@@ -19051,8 +19051,9 @@ after the other ended up getting clobbered.)  An 'END' 
rule then closes
 all the open files when processing is finished:
 
      END {
-         for (f in filelist)
-             close(filelist[f])
+         close(curfile)          # close the last one
+         for (f in filelist)     # close all the rest
+             close(f)
      }
 
    Finally, the function 'unexpected_eof()' prints an appropriate error
@@ -36371,241 +36372,241 @@ Ref: Labels Program-Footnote-1764674
 Node: Word Sorting764758
 Node: History Sorting768830
 Node: Extract Program770665
-Node: Simple Sed778716
-Node: Igawk Program781790
-Ref: Igawk Program-Footnote-1796121
-Ref: Igawk Program-Footnote-2796323
-Ref: Igawk Program-Footnote-3796445
-Node: Anagram Program796560
-Node: Signature Program799622
-Node: Programs Summary800869
-Node: Programs Exercises802083
-Ref: Programs Exercises-Footnote-1806212
-Node: Advanced Features806303
-Node: Nondecimal Data808293
-Node: Array Sorting809884
-Node: Controlling Array Traversal810584
-Ref: Controlling Array Traversal-Footnote-1818952
-Node: Array Sorting Functions819070
-Ref: Array Sorting Functions-Footnote-1824161
-Node: Two-way I/O824357
-Ref: Two-way I/O-Footnote-1830909
-Ref: Two-way I/O-Footnote-2831096
-Node: TCP/IP Networking831178
-Node: Profiling834296
-Ref: Profiling-Footnote-1842968
-Node: Advanced Features Summary843291
-Node: Internationalization845135
-Node: I18N and L10N846615
-Node: Explaining gettext847302
-Ref: Explaining gettext-Footnote-1853194
-Ref: Explaining gettext-Footnote-2853379
-Node: Programmer i18n853544
-Ref: Programmer i18n-Footnote-1858493
-Node: Translator i18n858542
-Node: String Extraction859336
-Ref: String Extraction-Footnote-1860468
-Node: Printf Ordering860554
-Ref: Printf Ordering-Footnote-1863340
-Node: I18N Portability863404
-Ref: I18N Portability-Footnote-1865860
-Node: I18N Example865923
-Ref: I18N Example-Footnote-1868729
-Node: Gawk I18N868802
-Node: I18N Summary869447
-Node: Debugger870788
-Node: Debugging871811
-Node: Debugging Concepts872252
-Node: Debugging Terms874061
-Node: Awk Debugging876636
-Node: Sample Debugging Session877542
-Node: Debugger Invocation878076
-Node: Finding The Bug879462
-Node: List of Debugger Commands885940
-Node: Breakpoint Control887273
-Node: Debugger Execution Control890967
-Node: Viewing And Changing Data894329
-Node: Execution Stack897703
-Node: Debugger Info899340
-Node: Miscellaneous Debugger Commands903411
-Node: Readline Support908473
-Node: Limitations909369
-Node: Debugging Summary911478
-Node: Arbitrary Precision Arithmetic912757
-Node: Computer Arithmetic914242
-Ref: table-numeric-ranges918008
-Ref: table-floating-point-ranges918501
-Ref: Computer Arithmetic-Footnote-1919159
-Node: Math Definitions919216
-Ref: table-ieee-formats922532
-Ref: Math Definitions-Footnote-1923135
-Node: MPFR features923240
-Node: FP Math Caution924958
-Ref: FP Math Caution-Footnote-1926030
-Node: Inexactness of computations926399
-Node: Inexact representation927359
-Node: Comparing FP Values928719
-Node: Errors accumulate929801
-Node: Getting Accuracy931234
-Node: Try To Round933944
-Node: Setting precision934843
-Ref: table-predefined-precision-strings935540
-Node: Setting the rounding mode937370
-Ref: table-gawk-rounding-modes937744
-Ref: Setting the rounding mode-Footnote-1941675
-Node: Arbitrary Precision Integers941854
-Ref: Arbitrary Precision Integers-Footnote-1945029
-Node: Checking for MPFR945178
-Node: POSIX Floating Point Problems946652
-Ref: POSIX Floating Point Problems-Footnote-1950523
-Node: Floating point summary950561
-Node: Dynamic Extensions952751
-Node: Extension Intro954304
-Node: Plugin License955570
-Node: Extension Mechanism Outline956367
-Ref: figure-load-extension956806
-Ref: figure-register-new-function958371
-Ref: figure-call-new-function959463
-Node: Extension API Description961525
-Node: Extension API Functions Introduction963167
-Node: General Data Types968707
-Ref: General Data Types-Footnote-1977068
-Node: Memory Allocation Functions977367
-Ref: Memory Allocation Functions-Footnote-1981577
-Node: Constructor Functions981676
-Node: Registration Functions985262
-Node: Extension Functions985947
-Node: Exit Callback Functions991162
-Node: Extension Version String992412
-Node: Input Parsers993075
-Node: Output Wrappers1005796
-Node: Two-way processors1010308
-Node: Printing Messages1012573
-Ref: Printing Messages-Footnote-11013744
-Node: Updating ERRNO1013897
-Node: Requesting Values1014636
-Ref: table-value-types-returned1015373
-Node: Accessing Parameters1016309
-Node: Symbol Table Access1017544
-Node: Symbol table by name1018056
-Node: Symbol table by cookie1019845
-Ref: Symbol table by cookie-Footnote-11024030
-Node: Cached values1024094
-Ref: Cached values-Footnote-11027630
-Node: Array Manipulation1027783
-Ref: Array Manipulation-Footnote-11028874
-Node: Array Data Types1028911
-Ref: Array Data Types-Footnote-11031569
-Node: Array Functions1031661
-Node: Flattening Arrays1036159
-Node: Creating Arrays1043135
-Node: Redirection API1047902
-Node: Extension API Variables1050735
-Node: Extension Versioning1051446
-Ref: gawk-api-version1051875
-Node: Extension GMP/MPFR Versioning1053606
-Node: Extension API Informational Variables1055234
-Node: Extension API Boilerplate1056307
-Node: Changes from API V11060281
-Node: Finding Extensions1061853
-Node: Extension Example1062412
-Node: Internal File Description1063210
-Node: Internal File Ops1067290
-Ref: Internal File Ops-Footnote-11078640
-Node: Using Internal File Ops1078780
-Ref: Using Internal File Ops-Footnote-11081163
-Node: Extension Samples1081437
-Node: Extension Sample File Functions1082966
-Node: Extension Sample Fnmatch1090615
-Node: Extension Sample Fork1092102
-Node: Extension Sample Inplace1093320
-Node: Extension Sample Ord1096537
-Node: Extension Sample Readdir1097373
-Ref: table-readdir-file-types1098262
-Node: Extension Sample Revout1099067
-Node: Extension Sample Rev2way1099656
-Node: Extension Sample Read write array1100396
-Node: Extension Sample Readfile1102338
-Node: Extension Sample Time1103433
-Node: Extension Sample API Tests1104781
-Node: gawkextlib1105273
-Node: Extension summary1108191
-Node: Extension Exercises1111893
-Node: Language History1113391
-Node: V7/SVR3.11115047
-Node: SVR41117199
-Node: POSIX1118633
-Node: BTL1120013
-Node: POSIX/GNU1120742
-Node: Feature History1126520
-Node: Common Extensions1142379
-Node: Ranges and Locales1143662
-Ref: Ranges and Locales-Footnote-11148278
-Ref: Ranges and Locales-Footnote-21148305
-Ref: Ranges and Locales-Footnote-31148540
-Node: Contributors1148761
-Node: History summary1154706
-Node: Installation1156086
-Node: Gawk Distribution1157030
-Node: Getting1157514
-Node: Extracting1158477
-Node: Distribution contents1160115
-Node: Unix Installation1166595
-Node: Quick Installation1167277
-Node: Shell Startup Files1169691
-Node: Additional Configuration Options1170780
-Node: Configuration Philosophy1173073
-Node: Non-Unix Installation1175442
-Node: PC Installation1175902
-Node: PC Binary Installation1176740
-Node: PC Compiling1177175
-Node: PC Using1178292
-Node: Cygwin1181507
-Node: MSYS1182606
-Node: VMS Installation1183107
-Node: VMS Compilation1183898
-Ref: VMS Compilation-Footnote-11185127
-Node: VMS Dynamic Extensions1185185
-Node: VMS Installation Details1186870
-Node: VMS Running1189123
-Node: VMS GNV1193402
-Node: VMS Old Gawk1194137
-Node: Bugs1194608
-Node: Bug address1195271
-Node: Usenet1198063
-Node: Maintainers1198840
-Node: Other Versions1200101
-Node: Installation summary1206863
-Node: Notes1208065
-Node: Compatibility Mode1208930
-Node: Additions1209712
-Node: Accessing The Source1210637
-Node: Adding Code1212074
-Node: New Ports1218293
-Node: Derived Files1222781
-Ref: Derived Files-Footnote-11228427
-Ref: Derived Files-Footnote-21228462
-Ref: Derived Files-Footnote-31229060
-Node: Future Extensions1229174
-Node: Implementation Limitations1229832
-Node: Extension Design1231015
-Node: Old Extension Problems1232169
-Ref: Old Extension Problems-Footnote-11233687
-Node: Extension New Mechanism Goals1233744
-Ref: Extension New Mechanism Goals-Footnote-11237108
-Node: Extension Other Design Decisions1237297
-Node: Extension Future Growth1239410
-Node: Old Extension Mechanism1240246
-Node: Notes summary1242009
-Node: Basic Concepts1243191
-Node: Basic High Level1243872
-Ref: figure-general-flow1244154
-Ref: figure-process-flow1244839
-Ref: Basic High Level-Footnote-11248140
-Node: Basic Data Typing1248325
-Node: Glossary1251653
-Node: Copying1283491
-Node: GNU Free Documentation License1321034
-Node: Index1346154
+Node: Simple Sed778785
+Node: Igawk Program781859
+Ref: Igawk Program-Footnote-1796190
+Ref: Igawk Program-Footnote-2796392
+Ref: Igawk Program-Footnote-3796514
+Node: Anagram Program796629
+Node: Signature Program799691
+Node: Programs Summary800938
+Node: Programs Exercises802152
+Ref: Programs Exercises-Footnote-1806281
+Node: Advanced Features806372
+Node: Nondecimal Data808362
+Node: Array Sorting809953
+Node: Controlling Array Traversal810653
+Ref: Controlling Array Traversal-Footnote-1819021
+Node: Array Sorting Functions819139
+Ref: Array Sorting Functions-Footnote-1824230
+Node: Two-way I/O824426
+Ref: Two-way I/O-Footnote-1830978
+Ref: Two-way I/O-Footnote-2831165
+Node: TCP/IP Networking831247
+Node: Profiling834365
+Ref: Profiling-Footnote-1843037
+Node: Advanced Features Summary843360
+Node: Internationalization845204
+Node: I18N and L10N846684
+Node: Explaining gettext847371
+Ref: Explaining gettext-Footnote-1853263
+Ref: Explaining gettext-Footnote-2853448
+Node: Programmer i18n853613
+Ref: Programmer i18n-Footnote-1858562
+Node: Translator i18n858611
+Node: String Extraction859405
+Ref: String Extraction-Footnote-1860537
+Node: Printf Ordering860623
+Ref: Printf Ordering-Footnote-1863409
+Node: I18N Portability863473
+Ref: I18N Portability-Footnote-1865929
+Node: I18N Example865992
+Ref: I18N Example-Footnote-1868798
+Node: Gawk I18N868871
+Node: I18N Summary869516
+Node: Debugger870857
+Node: Debugging871880
+Node: Debugging Concepts872321
+Node: Debugging Terms874130
+Node: Awk Debugging876705
+Node: Sample Debugging Session877611
+Node: Debugger Invocation878145
+Node: Finding The Bug879531
+Node: List of Debugger Commands886009
+Node: Breakpoint Control887342
+Node: Debugger Execution Control891036
+Node: Viewing And Changing Data894398
+Node: Execution Stack897772
+Node: Debugger Info899409
+Node: Miscellaneous Debugger Commands903480
+Node: Readline Support908542
+Node: Limitations909438
+Node: Debugging Summary911547
+Node: Arbitrary Precision Arithmetic912826
+Node: Computer Arithmetic914311
+Ref: table-numeric-ranges918077
+Ref: table-floating-point-ranges918570
+Ref: Computer Arithmetic-Footnote-1919228
+Node: Math Definitions919285
+Ref: table-ieee-formats922601
+Ref: Math Definitions-Footnote-1923204
+Node: MPFR features923309
+Node: FP Math Caution925027
+Ref: FP Math Caution-Footnote-1926099
+Node: Inexactness of computations926468
+Node: Inexact representation927428
+Node: Comparing FP Values928788
+Node: Errors accumulate929870
+Node: Getting Accuracy931303
+Node: Try To Round934013
+Node: Setting precision934912
+Ref: table-predefined-precision-strings935609
+Node: Setting the rounding mode937439
+Ref: table-gawk-rounding-modes937813
+Ref: Setting the rounding mode-Footnote-1941744
+Node: Arbitrary Precision Integers941923
+Ref: Arbitrary Precision Integers-Footnote-1945098
+Node: Checking for MPFR945247
+Node: POSIX Floating Point Problems946721
+Ref: POSIX Floating Point Problems-Footnote-1950592
+Node: Floating point summary950630
+Node: Dynamic Extensions952820
+Node: Extension Intro954373
+Node: Plugin License955639
+Node: Extension Mechanism Outline956436
+Ref: figure-load-extension956875
+Ref: figure-register-new-function958440
+Ref: figure-call-new-function959532
+Node: Extension API Description961594
+Node: Extension API Functions Introduction963236
+Node: General Data Types968776
+Ref: General Data Types-Footnote-1977137
+Node: Memory Allocation Functions977436
+Ref: Memory Allocation Functions-Footnote-1981646
+Node: Constructor Functions981745
+Node: Registration Functions985331
+Node: Extension Functions986016
+Node: Exit Callback Functions991231
+Node: Extension Version String992481
+Node: Input Parsers993144
+Node: Output Wrappers1005865
+Node: Two-way processors1010377
+Node: Printing Messages1012642
+Ref: Printing Messages-Footnote-11013813
+Node: Updating ERRNO1013966
+Node: Requesting Values1014705
+Ref: table-value-types-returned1015442
+Node: Accessing Parameters1016378
+Node: Symbol Table Access1017613
+Node: Symbol table by name1018125
+Node: Symbol table by cookie1019914
+Ref: Symbol table by cookie-Footnote-11024099
+Node: Cached values1024163
+Ref: Cached values-Footnote-11027699
+Node: Array Manipulation1027852
+Ref: Array Manipulation-Footnote-11028943
+Node: Array Data Types1028980
+Ref: Array Data Types-Footnote-11031638
+Node: Array Functions1031730
+Node: Flattening Arrays1036228
+Node: Creating Arrays1043204
+Node: Redirection API1047971
+Node: Extension API Variables1050804
+Node: Extension Versioning1051515
+Ref: gawk-api-version1051944
+Node: Extension GMP/MPFR Versioning1053675
+Node: Extension API Informational Variables1055303
+Node: Extension API Boilerplate1056376
+Node: Changes from API V11060350
+Node: Finding Extensions1061922
+Node: Extension Example1062481
+Node: Internal File Description1063279
+Node: Internal File Ops1067359
+Ref: Internal File Ops-Footnote-11078709
+Node: Using Internal File Ops1078849
+Ref: Using Internal File Ops-Footnote-11081232
+Node: Extension Samples1081506
+Node: Extension Sample File Functions1083035
+Node: Extension Sample Fnmatch1090684
+Node: Extension Sample Fork1092171
+Node: Extension Sample Inplace1093389
+Node: Extension Sample Ord1096606
+Node: Extension Sample Readdir1097442
+Ref: table-readdir-file-types1098331
+Node: Extension Sample Revout1099136
+Node: Extension Sample Rev2way1099725
+Node: Extension Sample Read write array1100465
+Node: Extension Sample Readfile1102407
+Node: Extension Sample Time1103502
+Node: Extension Sample API Tests1104850
+Node: gawkextlib1105342
+Node: Extension summary1108260
+Node: Extension Exercises1111962
+Node: Language History1113460
+Node: V7/SVR3.11115116
+Node: SVR41117268
+Node: POSIX1118702
+Node: BTL1120082
+Node: POSIX/GNU1120811
+Node: Feature History1126589
+Node: Common Extensions1142448
+Node: Ranges and Locales1143731
+Ref: Ranges and Locales-Footnote-11148347
+Ref: Ranges and Locales-Footnote-21148374
+Ref: Ranges and Locales-Footnote-31148609
+Node: Contributors1148830
+Node: History summary1154775
+Node: Installation1156155
+Node: Gawk Distribution1157099
+Node: Getting1157583
+Node: Extracting1158546
+Node: Distribution contents1160184
+Node: Unix Installation1166664
+Node: Quick Installation1167346
+Node: Shell Startup Files1169760
+Node: Additional Configuration Options1170849
+Node: Configuration Philosophy1173142
+Node: Non-Unix Installation1175511
+Node: PC Installation1175971
+Node: PC Binary Installation1176809
+Node: PC Compiling1177244
+Node: PC Using1178361
+Node: Cygwin1181576
+Node: MSYS1182675
+Node: VMS Installation1183176
+Node: VMS Compilation1183967
+Ref: VMS Compilation-Footnote-11185196
+Node: VMS Dynamic Extensions1185254
+Node: VMS Installation Details1186939
+Node: VMS Running1189192
+Node: VMS GNV1193471
+Node: VMS Old Gawk1194206
+Node: Bugs1194677
+Node: Bug address1195340
+Node: Usenet1198132
+Node: Maintainers1198909
+Node: Other Versions1200170
+Node: Installation summary1206932
+Node: Notes1208134
+Node: Compatibility Mode1208999
+Node: Additions1209781
+Node: Accessing The Source1210706
+Node: Adding Code1212143
+Node: New Ports1218362
+Node: Derived Files1222850
+Ref: Derived Files-Footnote-11228496
+Ref: Derived Files-Footnote-21228531
+Ref: Derived Files-Footnote-31229129
+Node: Future Extensions1229243
+Node: Implementation Limitations1229901
+Node: Extension Design1231084
+Node: Old Extension Problems1232238
+Ref: Old Extension Problems-Footnote-11233756
+Node: Extension New Mechanism Goals1233813
+Ref: Extension New Mechanism Goals-Footnote-11237177
+Node: Extension Other Design Decisions1237366
+Node: Extension Future Growth1239479
+Node: Old Extension Mechanism1240315
+Node: Notes summary1242078
+Node: Basic Concepts1243260
+Node: Basic High Level1243941
+Ref: figure-general-flow1244223
+Ref: figure-process-flow1244908
+Ref: Basic High Level-Footnote-11248209
+Node: Basic Data Typing1248394
+Node: Glossary1251722
+Node: Copying1283560
+Node: GNU Free Documentation License1321103
+Node: Index1346223
 
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 9a3c75f..0d4c49a 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -26728,7 +26728,7 @@ line.  That line is then printed to the output file:
     @}
     if ($3 != curfile) @{
         if (curfile != "")
-            filelist[curfile]++     # save to close later
+            filelist[curfile] = 1   # save to close later
         curfile = $3
     @}
 
@@ -26785,8 +26785,9 @@ is finished:
 @c file eg/prog/extract.awk
 @group
 END @{
-    for (f in filelist)
-        close(filelist[f])
+    close(curfile)          # close the last one
+    for (f in filelist)     # close all the rest
+        close(f)
 @}
 @end group
 @c endfile
diff --git a/doc/gawktexi.in b/doc/gawktexi.in
index c645a8e..e857747 100644
--- a/doc/gawktexi.in
+++ b/doc/gawktexi.in
@@ -25741,7 +25741,7 @@ line.  That line is then printed to the output file:
     @}
     if ($3 != curfile) @{
         if (curfile != "")
-            filelist[curfile]++     # save to close later
+            filelist[curfile] = 1   # save to close later
         curfile = $3
     @}
 
@@ -25798,8 +25798,9 @@ is finished:
 @c file eg/prog/extract.awk
 @group
 END @{
-    for (f in filelist)
-        close(filelist[f])
+    close(curfile)          # close the last one
+    for (f in filelist)     # close all the rest
+        close(f)
 @}
 @end group
 @c endfile

-----------------------------------------------------------------------

Summary of changes:
 awklib/eg/prog/extract.awk |   7 +-
 awklib/extract.awk         |   7 +-
 doc/ChangeLog              |   6 +
 doc/gawk.info              | 479 +++++++++++++++++++++++----------------------
 doc/gawk.texi              |   7 +-
 doc/gawktexi.in            |   7 +-
 6 files changed, 262 insertions(+), 251 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

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