Sorry I must be missing something.
You say autofs is now treating the script as a file since it is not
executable but it is executable.
I don't quite understand the "if (st.st_mode & __S_IEXEC)" part of the
code above.
    

All I'm saying is that, for whatever reason, autofs is treating your
program map as a file map. Why I don't know.

The check (st.st_mode & __S_IEXEC) checks if the mode returned by the
stat(2) of the path in ap->argv[0] is executable by the owner of the file.

Ian

  
Can you please then just explain what
"if (st.st_mode & __S_IEXEC)" is testing for?

--
Smartmon System Monitoring
www.smartmon.com.au