gawk: Extension Sample Fnmatch

 
 16.7.2 Interface to 'fnmatch()'
 -------------------------------
 
 This extension provides an interface to the C library 'fnmatch()'
 function.  The usage is:
 
 '@load "fnmatch"'
      This is how you load the extension.
 
 'result = fnmatch(pattern, string, flags)'
      The return value is zero on success, 'FNM_NOMATCH' if the string
      did not match the pattern, or a different nonzero value if an error
      occurred.
 
    In addition to the 'fnmatch()' function, the 'fnmatch' extension adds
 one constant ('FNM_NOMATCH'), and an array of flag values named 'FNM'.
 
    The arguments to 'fnmatch()' are:
 
 'pattern'
      The file name wildcard to match
 
 'string'
      The file name string
 
 'flag'
      Either zero, or the bitwise OR of one or more of the flags in the
      'FNM' array
 
    The flags are as follows:
 
 Array element      Corresponding flag defined by 'fnmatch()'
 --------------------------------------------------------------------------
 'FNM["CASEFOLD"]'  'FNM_CASEFOLD'
 'FNM["FILE_NAME"]' 'FNM_FILE_NAME'
 'FNM["LEADING_DIR"]''FNM_LEADING_DIR'
 'FNM["NOESCAPE"]'  'FNM_NOESCAPE'
 'FNM["PATHNAME"]'  'FNM_PATHNAME'
 'FNM["PERIOD"]'    'FNM_PERIOD'
 
    Here is an example:
 
      @load "fnmatch"
      ...
      flags = or(FNM["PERIOD"], FNM["NOESCAPE"])
      if (fnmatch("*.a", "foo.c", flags) == FNM_NOMATCH)
          print "no match"