Why is the "file" concept in standard hosted C so generic?
Every hosted implementation that I know of has some way of representing the following concepts. Are there implementations in use that don't? If not, why doesn't C require standard APIs for them so that more portable code can be used?

 - Creating a directory
 - Creating a file or directory in a directory, with some notion of a directory separator character
 - Absolute paths
 - Relative paths
 - Current working directory
 - Home directory
 - Deleting an empty directory
 - Some form of file metadata/attributes
 - File moving (can be implemented as copy + remove, but usually the OS has a more efficient/atomic way e.g. inodes)
Why is the "file" concept in standard hosted C so generic?
===

Every hosted implementation that I know of has some way of representing the following concepts. Are there implementations in use that don't? If not, why doesn't C require standard APIs for them so that more portable code can be used?

 - Creating a directory
 - Creating a file or directory in a directory, with some notion of a directory separator character
 - Absolute paths
 - Relative paths
 - Current working directory
 - Home directory
 - Deleting an empty directory
 - Some form of file metadata/attributes
 - File moving (can be implemented as copy + remove, but usually the OS has a more efficient/atomic way e.g. inodes)