Re: New man page: scandirat(3)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Mar 18, 2012 at 10:47 AM, Mark R Bannister
<mark@xxxxxxxxxxxxxxxxxxxxx> wrote:
> Hi Michael,
>
> I've made the changes you suggested.  New page inline below.

Thanks for the revisions, Mark! I've added this page for 3.38.

Cheers,

Michael


> .\" Hey Emacs! This file is -*- nroff -*- source.
> .\"
> .\" Copyright (c) 2012, Mark R. Bannister <cambridge@xxxxxxxxxxxxxxxxxxxxx>
>
> .\"        based on text in mkfifoat.3 Copyright (c) 2006, Michael Kerrisk
> .\"
> .\" This is free documentation; you can redistribute it and/or
> .\" modify it under the terms of the GNU General Public License as
> .\" published by the Free Software Foundation; either version 2 of
> .\" the License, or (at your option) any later version.
> .\"
> .\" The GNU General Public License's references to "object code"
> .\" and "executables" are to be interpreted as the output of any
> .\" document formatting or typesetting system, including
> .\" intermediate and printed output.
> .\"
> .\" This manual is distributed in the hope that it will be useful,
> .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
> .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> .\" GNU General Public License for more details.
> .\"
> .\" You should have received a copy of the GNU General Public
> .\" License along with this manual; if not, write to the Free
> .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
> .\" USA.
> .\"
> .TH SCANDIRAT 3 2012-03-17 "Linux" "Linux Programmer's Manual"
>
> .SH NAME
> scandirat \- scan a directory relative to a directory file descriptor
> .SH SYNOPSIS
> .nf
> .BR "#define _GNU_SOURCE" "         /* See feature_test_macros(7) */"
>
> .BR "#include <fcntl.h>" "          /* Definition of AT_* constants */"
>
> .B #include <dirent.h>
> .sp
> .fi
> .BI "int scandirat(int " dirfd ", const char *" dirp ","
>
> .BI "struct dirent ***" namelist ,
> .nf
> .RS
> .BI "int (*" filter ")(const struct dirent *),"
> .BI "int (*" compar ")(const struct dirent **, const struct dirent **));"
> .RE
> .fi
> .SH DESCRIPTION
> The
> .BR scandirat ()
> system call operates in exactly the same way as
> .BR scandir (3),
> except for the differences described in this manual page.
>
> If the pathname given in
> .I dirp
> is relative, then it is interpreted relative to the directory
> referred to by the file descriptor
> .I dirfd
> (rather than relative to the current working directory of
> the calling process, as is done by
> .BR scandir (3)
> for a relative pathname).
>
> If
> .I dirp
> is relative and
> .I dirfd
> is the special value
> .BR AT_FDCWD ,
> then
> .I dirp
> is interpreted relative to the current working
> directory of the calling process (like
> .BR scandir (3)).
>
> If
> .I dirp
> is absolute, then
> .I dirfd
> is ignored.
> .SH "RETURN VALUE"
> On success,
> .BR scandirat ()
> returns the number of directory entries selected.
> On error, \-1 is returned and
> .I errno
> is set to indicate the error.
> .SH ERRORS
> The same errors that occur for
> .BR scandir (3)
> can also occur for
> .BR scandirat ().
> The following additional errors can occur for
> .BR scandirat ():
> .TP
> .B EBADF
> .I dirfd
> is not a valid file descriptor.
> .TP
> .B ENOTDIR
> .I dirp
> is a relative path and
> .I dirfd
> is a file descriptor referring to a file other than a directory.
> .SH VERSIONS
> .BR scandirat ()
> was added to glibc in version 2.15.
> .SH "CONFORMING TO"
> This function is a GNU extension.
>
> .SH NOTES
> See
> .BR openat (2)
> for an explanation of the need for
> .BR scandirat ().
> .SH "SEE ALSO"
> .BR openat (2),
> .BR scandir (3),
> .BR path_resolution (7)
>
>
>
> On 05/03/2012 19:15, Michael Kerrisk (man-pages) wrote:
>>
>> HI Mark,
>>
>> On Wed, Nov 16, 2011 at 2:09 AM, Mark R Bannister
>> <mark@xxxxxxxxxxxxxxxxxxxxx>  wrote:
>>>
>>> Hi,
>>>
>>> I've written a man page for scandirat(3) that is new
>>> to glibc 2.15.  The man page is based on the text
>>> used in mkfifoat(3) which was very similar.  I am
>>> happy for this man page to be distributed under
>>> the terms of the GNU General Public License
>>> version 3 or later.
>>
>> Although http://www.kernel.org/doc/man-pages/licenses.html#gpl
>> mentions v3 and v2, I see that no existing page uses v3. I'd like to
>> avoid v3 for pragmatic reasons:
>>
>> * The GPL is a license primarily designed for code, which is why I
>> prefer the "verbatim" license
>> (http://www.kernel.org/doc/man-pages/licenses.html#verbatim).
>>
>> * I'd like to avoid further licensing proliferation in man-pages.
>>
>> Would you consider relicensing under either the verbatim license or GPLv2?
>>
>>> The information in the man page was checked against the source code for
>>> glibc 2.15.
>>>
>>> I include the patch inline below, and also as an attachment.
>>
>> Thanks. Some comments below. Could you review and send me a new draft
>> please.
>>
>>> Best regards,
>>> Mark Bannister.
>>>
>>> .\" Hey Emacs! This file is -*- nroff -*- source.
>>> .\"
>>> .\" Copyright (c) 2011, Mark R.
>>> Bannister<cambridge@xxxxxxxxxxxxxxxxxxxxx>
>>> .\"        based on text in mkfifoat.3 Copyright (c) 2006, Michael
>>> Kerrisk
>>> .\"
>>> .\" This is free documentation; you can redistribute it and/or
>>> .\" modify it under the terms of the GNU General Public License as
>>> .\" published by the Free Software Foundation; either version 3 of
>>> .\" the License, or (at your option) any later version.
>>> .\"
>>> .\" The GNU General Public License's references to "object code"
>>> .\" and "executables" are to be interpreted as the output of any
>>> .\" document formatting or typesetting system, including
>>> .\" intermediate and printed output.
>>> .\"
>>> .\" This manual is distributed in the hope that it will be useful,
>>> .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>> .\" GNU General Public License for more details.
>>> .\"
>>> .\" You should have received a copy of the GNU General Public
>>> .\" License along with this manual; if not, write to the Free
>>> .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
>>> 02111,
>>> .\" USA.
>>> .\"
>>> .TH SCANDIRAT 3 2011-11-15 "Linux" "Linux Programmer's Manual"
>>> .SH NAME
>>> scandirat \- scan a directory relative to a directory file descriptor
>>> .SH SYNOPSIS
>>> .nf
>>> .B #include<fcntl.h>             /* Definition of AT_* constants */
>>> .B #include<dirent.h>
>>> .sp
>>> .fi
>>> .BI "int scandir(int " dirfd ", const char *" dirp ","
>>
>> scandirat
>>
>>> .BI "struct dirent ***" namelist ,
>>> .nf
>>> .RS
>>> .BI "int (*" filter ")(const struct dirent *),"
>>> .BI "int (*" compar ")(const struct dirent **, const struct dirent **));"
>>> .RE
>>> .fi
>>
>> Need to document feature test macro requirements. _GNU_SOURCE, I think
>>
>>> .SH DESCRIPTION
>>> The
>>> .BR scandirat ()
>>> system call operates in exactly the same way as
>>> .BR scandir (3),
>>> except for the differences described in this manual page.
>>>
>>> If the pathname given in
>>> .I dirp
>>> is relative, then it is interpreted relative to the directory
>>> referred to by the file descriptor
>>> .I dirfd
>>> (rather than relative to the current working directory of
>>> the calling process, as is done by
>>> .BR scandir (3)
>>> for a relative pathname).
>>>
>>> If
>>> .I dirp
>>> is relative and
>>> .I dirfd
>>> is the special value
>>> .BR AT_FDCWD ,
>>> then
>>> .I dirp
>>> is interpreted relative to the current working
>>> directory of the calling process (like
>>> .BR scandir (3)).
>>>
>>> If
>>> .I dirp
>>> is absolute, then
>>> .I dirfd
>>> is ignored.
>>> .SH "RETURN VALUE"
>>> On success,
>>> .BR scandirat ()
>>> returns the number of directory entries selected.
>>> On error, \-1 is returned and
>>> .I errno
>>> is set to indicate the error.
>>> .SH ERRORS
>>> The same errors that occur for
>>> .BR scandir (3)
>>> can also occur for
>>> .BR scandirat ().
>>> The following additional errors can occur for
>>> .BR scandirat ():
>>> .TP
>>> .B EBADF
>>> .I dirfd
>>> is not a valid file descriptor.
>>> .TP
>>> .B ENOTDIR
>>> .I dirp
>>> is a relative path and
>>> .I dirfd
>>> is a file descriptor referring to a file other than a directory.
>>> .SH VERSIONS
>>> .BR scandirat ()
>>> was added to glibc in version 2.15.
>>> .SH "CONFORMING TO"
>>> This system call is non-standard but is proposed for inclusion in a
>>> future revision of POSIX.1.
>>
>> I haven't checked this. Can you provide some details confirming that
>> this is on the schedule for POSIX.1?
>>
>>
>>> .SH NOTES
>>> See
>>> .BR openat (2)
>>> for an explanation of the need for
>>> .BR scandirat ().
>>> .SH "SEE ALSO"
>>> .BR openat (2),
>>> .BR scandir (3),
>>> .BR path_resolution (7).
>>
>> No dot at end of SEE ALSO list.
>>
>> Cheers,
>>
>> Michael
>>
>>
>



-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Author of "The Linux Programming Interface"; http://man7.org/tlpi/
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux