GNU Info

Info Node: (gawk.info)Rewind Function

(gawk.info)Rewind Function


Next: File Checking Prev: Filetrans Function Up: Data File Management
Enter node , (file) or (file)node

Rereading the Current File
--------------------------

   Another request for a new built-in function was for a `rewind'
function that would make it possible to reread the current file.  The
requesting user didn't want to have to use `getline' (Note: Explicit
Input with `getline'.)  inside a loop.

   However, as long as you are not in the `END' rule, it is quite easy
to arrange to immediately close the current input file and then start
over with it from the top.  For lack of a better name, we'll call it
`rewind':

     # rewind.awk --- rewind the current file and start over
     function rewind(    i)
     {
         # shift remaining arguments up
         for (i = ARGC; i > ARGIND; i--)
             ARGV[i] = ARGV[i-1]
     
         # make sure gawk knows to keep going
         ARGC++
     
         # make current file next to get done
         ARGV[ARGIND+1] = FILENAME
     
         # do it
         nextfile
     }

   This code relies on the `ARGIND' variable (Note: Built-in Variables
That Convey Information.), which is specific to `gawk'.  If
you are not using `gawk', you can use ideas presented in Note: Noting
Data File Boundaries, to either update `ARGIND' on
your own or modify this code as appropriate.

   The `rewind' function also relies on the `nextfile' keyword (Note:
Using `gawk''s `nextfile' Statement.).  Note:
Implementing `nextfile' as a Function, for a
function version of `nextfile'.


automatically generated by info2www version 1.2.2.9