Description of problem: While 'man major' | 'man minor' is giving me impression it should return 'int' (signed) value, the header file: /usr/include/sys/sysmacros.h is convincing me, I should expect unsigned value: extern unsigned int gnu_dev_major (unsigned long long int __dev) __THROW __attribute_const__; extern unsigned int gnu_dev_minor (unsigned long long int __dev) __THROW __attribute_const__; # define major(dev) gnu_dev_major (dev) # define minor(dev) gnu_dev_minor (dev) Is there any good reason to have this incompatibility? (Well the gcc is giving sign warning - and I think we should probably follow the common UNIX definition here ?) Version-Release number of selected component (if applicable): glibc-headers-2.14.90-15.2.x86_64 How reproducible: Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info:
The man pages are incorrect and need to be updated. major/minor were never part of the POSIX specification. In the past they were actually macros and thus took on the types based on the context in which the macros were used and the usual C promotions. glibc has chosen to more strictly define major/minor which allows programmers to better predict its behavior. Changing component to man-pages.
Will be fixed in upstream man-pages-3.41.
As Michael wrote, this bug was fixed in: man-pages-3.41-1.fc18 http://koji.fedoraproject.org/koji/buildinfo?buildID=319380