staticlong __filesizebits(conststruct statfs& s) { switch (s.f_type) { case JFFS2_SUPER_MAGIC: case MSDOS_SUPER_MAGIC: case NCP_SUPER_MAGIC: return32;
} // There won't be any new 32-bit file systems. return64;
}
staticlong __link_max(conststruct statfs& s) { // These constant values were taken from kernel headers. // They're not available in uapi headers. switch (s.f_type) { case EXT2_SUPER_MAGIC: return32000; case MINIX_SUPER_MAGIC: return250; case MINIX2_SUPER_MAGIC: return65530; case REISERFS_SUPER_MAGIC: return0xffff - 1000; case UFS_MAGIC: return32000;
} return LINK_MAX;
}
staticlong __2_symlinks(conststruct statfs& s) { switch (s.f_type) { case ADFS_SUPER_MAGIC: case BFS_MAGIC: case CRAMFS_MAGIC: case EFS_SUPER_MAGIC: case MSDOS_SUPER_MAGIC: case QNX4_SUPER_MAGIC: return0;
} return1;
}
staticlong __pathconf(conststruct statfs& s, int name) { switch (name) { case _PC_FILESIZEBITS: return __filesizebits(s);
case _PC_LINK_MAX: return __link_max(s);
case _PC_MAX_CANON: return MAX_CANON;
case _PC_MAX_INPUT: return MAX_INPUT;
case _PC_NAME_MAX: return s.f_namelen;
case _PC_PATH_MAX: return PATH_MAX;
case _PC_PIPE_BUF: return PIPE_BUF;
case _PC_2_SYMLINKS: return __2_symlinks(s);
case _PC_ALLOC_SIZE_MIN: /* fall through */ case _PC_REC_XFER_ALIGN: return s.f_frsize;
case _PC_REC_MIN_XFER_SIZE: return s.f_bsize;
case _PC_CHOWN_RESTRICTED: return _POSIX_CHOWN_RESTRICTED;
case _PC_NO_TRUNC: return _POSIX_NO_TRUNC;
case _PC_VDISABLE: return _POSIX_VDISABLE;
case _PC_ASYNC_IO: case _PC_PRIO_IO: case _PC_REC_INCR_XFER_SIZE: case _PC_REC_MAX_XFER_SIZE: case _PC_SYMLINK_MAX: case _PC_SYNC_IO: // No API to answer these: the caller will have to "try it and see". // This differs from the next case in not setting errno to EINVAL, // since we did understand the question --- we just don't have a // good answer. return -1;
default:
errno = EINVAL; return -1;
}
}
long pathconf(constchar* path, int name) { struct statfs sb; if (statfs(path, &sb) == -1) { return -1;
} return __pathconf(sb, name);
}
long fpathconf(int fd, int name) { struct statfs sb; if (fstatfs(fd, &sb) == -1) { return -1;
} return __pathconf(sb, name);
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-28)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.