fpathconf.c raw

   1  #include <unistd.h>
   2  #include <limits.h>
   3  #include <errno.h>
   4  
   5  long fpathconf(int fd, int name)
   6  {
   7  	static const short values[] = {
   8  		[_PC_LINK_MAX] = _POSIX_LINK_MAX,
   9  		[_PC_MAX_CANON] = _POSIX_MAX_CANON,
  10  		[_PC_MAX_INPUT] = _POSIX_MAX_INPUT,
  11  		[_PC_NAME_MAX] = NAME_MAX,
  12  		[_PC_PATH_MAX] = PATH_MAX,
  13  		[_PC_PIPE_BUF] = PIPE_BUF,
  14  		[_PC_CHOWN_RESTRICTED] = 1,
  15  		[_PC_NO_TRUNC] = 1,
  16  		[_PC_VDISABLE] = 0,
  17  		[_PC_SYNC_IO] = 1,
  18  		[_PC_ASYNC_IO] = -1,
  19  		[_PC_PRIO_IO] = -1,
  20  		[_PC_SOCK_MAXBUF] = -1,
  21  		[_PC_FILESIZEBITS] = FILESIZEBITS,
  22  		[_PC_REC_INCR_XFER_SIZE] = 4096,
  23  		[_PC_REC_MAX_XFER_SIZE] = 4096,
  24  		[_PC_REC_MIN_XFER_SIZE] = 4096,
  25  		[_PC_REC_XFER_ALIGN] = 4096,
  26  		[_PC_ALLOC_SIZE_MIN] = 4096,
  27  		[_PC_SYMLINK_MAX] = -1,
  28  		[_PC_2_SYMLINKS] = 1
  29  	};
  30  	if (name >= sizeof(values)/sizeof(values[0])) {
  31  		errno = EINVAL;
  32  		return -1;
  33  	}
  34  	return values[name];
  35  }
  36