1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
9 "Project-Id-Version: PACKAGE VERSION\n"
10 "POT-Creation-Date: 2013-09-28 04:06+0900\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
20 #: build/C/man3/closedir.3:31
26 #: build/C/man3/closedir.3:31
32 #: build/C/man3/closedir.3:31 build/C/man3/dirfd.3:25 build/C/man2/getdents.2:30 build/C/man3/getdirentries.3:27 build/C/man3/opendir.3:32 build/C/man2/readdir.2:30 build/C/man3/readdir.3:36 build/C/man3/rewinddir.3:31 build/C/man3/scandir.3:36 build/C/man3/scandirat.3:25 build/C/man3/seekdir.3:31 build/C/man3/telldir.3:30
34 msgid "Linux Programmer's Manual"
38 #: build/C/man3/closedir.3:32 build/C/man3/dirfd.3:26 build/C/man2/getdents.2:31 build/C/man3/getdirentries.3:28 build/C/man3/opendir.3:33 build/C/man2/readdir.2:31 build/C/man3/readdir.3:37 build/C/man3/rewinddir.3:32 build/C/man3/scandir.3:37 build/C/man3/scandirat.3:26 build/C/man3/seekdir.3:32 build/C/man3/telldir.3:31
44 #: build/C/man3/closedir.3:34
45 msgid "closedir - close a directory"
49 #: build/C/man3/closedir.3:34 build/C/man3/dirfd.3:28 build/C/man2/getdents.2:33 build/C/man3/getdirentries.3:30 build/C/man3/opendir.3:35 build/C/man2/readdir.2:33 build/C/man3/readdir.3:39 build/C/man3/rewinddir.3:34 build/C/man3/scandir.3:39 build/C/man3/scandirat.3:28 build/C/man3/seekdir.3:35 build/C/man3/telldir.3:33
55 #: build/C/man3/closedir.3:37 build/C/man3/opendir.3:38 build/C/man3/rewinddir.3:37
57 msgid "B<#include E<lt>sys/types.hE<gt>>\n"
61 #: build/C/man3/closedir.3:39 build/C/man3/opendir.3:40 build/C/man3/readdir.3:42 build/C/man3/rewinddir.3:39 build/C/man3/scandir.3:42 build/C/man3/seekdir.3:38 build/C/man3/telldir.3:36
63 msgid "B<#include E<lt>dirent.hE<gt>>\n"
67 #: build/C/man3/closedir.3:41
69 msgid "B<int closedir(DIR *>I<dirp>B<);>\n"
73 #: build/C/man3/closedir.3:42 build/C/man3/dirfd.3:54 build/C/man2/getdents.2:41 build/C/man3/getdirentries.3:43 build/C/man3/opendir.3:63 build/C/man2/readdir.2:42 build/C/man3/readdir.3:61 build/C/man3/rewinddir.3:42 build/C/man3/scandir.3:65 build/C/man3/scandirat.3:44 build/C/man3/seekdir.3:49 build/C/man3/telldir.3:47
79 #: build/C/man3/closedir.3:55
81 "The B<closedir>() function closes the directory stream associated with "
82 "I<dirp>. A successful call to B<closedir>() also closes the underlying "
83 "file descriptor associated with I<dirp>. The directory stream descriptor "
84 "I<dirp> is not available after this call."
88 #: build/C/man3/closedir.3:55 build/C/man3/dirfd.3:69 build/C/man2/getdents.2:142 build/C/man3/getdirentries.3:56 build/C/man3/opendir.3:83 build/C/man2/readdir.2:91 build/C/man3/readdir.3:119 build/C/man3/rewinddir.3:49 build/C/man3/scandir.3:92 build/C/man3/scandirat.3:78 build/C/man3/seekdir.3:60 build/C/man3/telldir.3:52
94 #: build/C/man3/closedir.3:62
96 "The B<closedir>() function returns 0 on success. On error, -1 is returned, "
97 "and I<errno> is set appropriately."
101 #: build/C/man3/closedir.3:62 build/C/man3/dirfd.3:74 build/C/man2/getdents.2:148 build/C/man3/getdirentries.3:62 build/C/man3/opendir.3:92 build/C/man2/readdir.2:97 build/C/man3/readdir.3:143 build/C/man3/scandir.3:108 build/C/man3/scandirat.3:85 build/C/man3/telldir.3:60
107 #: build/C/man3/closedir.3:63 build/C/man2/getdents.2:149 build/C/man3/opendir.3:96 build/C/man2/readdir.2:98 build/C/man3/readdir.3:144 build/C/man3/scandirat.3:92 build/C/man3/telldir.3:61
113 #: build/C/man3/closedir.3:67 build/C/man3/readdir.3:147 build/C/man3/telldir.3:64
114 msgid "Invalid directory stream descriptor I<dirp>."
118 #: build/C/man3/closedir.3:67 build/C/man3/dirfd.3:92 build/C/man2/getdents.2:165 build/C/man3/getdirentries.3:64 build/C/man3/opendir.3:118 build/C/man2/readdir.2:114 build/C/man3/readdir.3:156 build/C/man3/rewinddir.3:58 build/C/man3/scandir.3:121 build/C/man3/scandirat.3:105 build/C/man3/seekdir.3:69 build/C/man3/telldir.3:69
120 msgid "CONFORMING TO"
124 #: build/C/man3/closedir.3:69
125 msgid "SVr4, POSIX.1-2001, 4.3BSD."
129 #: build/C/man3/closedir.3:69 build/C/man3/dirfd.3:104 build/C/man2/getdents.2:282 build/C/man3/getdirentries.3:72 build/C/man3/opendir.3:140 build/C/man2/readdir.2:127 build/C/man3/readdir.3:265 build/C/man3/rewinddir.3:60 build/C/man3/scandir.3:177 build/C/man3/scandirat.3:112 build/C/man3/seekdir.3:83 build/C/man3/telldir.3:95
135 #: build/C/man3/closedir.3:77
137 "B<close>(2), B<opendir>(3), B<readdir>(3), B<rewinddir>(3), B<scandir>(3), "
138 "B<seekdir>(3), B<telldir>(3)"
142 #: build/C/man3/closedir.3:77 build/C/man3/dirfd.3:113 build/C/man2/getdents.2:285 build/C/man3/getdirentries.3:75 build/C/man3/opendir.3:149 build/C/man2/readdir.2:130 build/C/man3/readdir.3:277 build/C/man3/rewinddir.3:67 build/C/man3/scandir.3:189 build/C/man3/scandirat.3:116 build/C/man3/seekdir.3:91 build/C/man3/telldir.3:102
148 #: build/C/man3/closedir.3:84 build/C/man3/dirfd.3:120 build/C/man2/getdents.2:292 build/C/man3/getdirentries.3:82 build/C/man3/opendir.3:156 build/C/man2/readdir.2:137 build/C/man3/readdir.3:284 build/C/man3/rewinddir.3:74 build/C/man3/scandir.3:196 build/C/man3/scandirat.3:123 build/C/man3/seekdir.3:98 build/C/man3/telldir.3:109
150 "This page is part of release 3.54 of the Linux I<man-pages> project. A "
151 "description of the project, and information about reporting bugs, can be "
152 "found at \\%http://www.kernel.org/doc/man-pages/."
156 #: build/C/man3/dirfd.3:25
162 #: build/C/man3/dirfd.3:25
168 #: build/C/man3/dirfd.3:25 build/C/man2/getdents.2:30 build/C/man2/readdir.2:30 build/C/man3/scandirat.3:25
174 #: build/C/man3/dirfd.3:28
175 msgid "dirfd - get directory stream file descriptor"
179 #: build/C/man3/dirfd.3:30
180 msgid "B<#include E<lt>sys/types.hE<gt>>"
184 #: build/C/man3/dirfd.3:32 build/C/man3/getdirentries.3:32
185 msgid "B<#include E<lt>dirent.hE<gt>>"
189 #: build/C/man3/dirfd.3:34
190 msgid "B<int dirfd(DIR *>I<dirp>B<);>"
194 #: build/C/man3/dirfd.3:38 build/C/man3/getdirentries.3:39 build/C/man3/opendir.3:48 build/C/man3/readdir.3:52 build/C/man3/scandir.3:57 build/C/man3/seekdir.3:45 build/C/man3/telldir.3:43
195 msgid "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
199 #: build/C/man3/dirfd.3:41
204 #: build/C/man3/dirfd.3:46
205 msgid "_BSD_SOURCE || _SVID_SOURCE"
209 #: build/C/man3/dirfd.3:48
210 msgid "|| /* Since glibc 2.10: */"
214 #: build/C/man3/dirfd.3:50
215 msgid "(_POSIX_C_SOURCE\\ E<gt>=\\ 200809L || _XOPEN_SOURCE\\ E<gt>=\\ 700)"
219 #: build/C/man3/dirfd.3:59
221 "The function B<dirfd>() returns the file descriptor associated with the "
222 "directory stream I<dirp>."
226 #: build/C/man3/dirfd.3:69
228 "This descriptor is the one used internally by the directory stream. As a "
229 "result, it is useful only for functions which do not depend on or alter the "
230 "file position, such as B<fstat>(2) and B<fchdir>(2). It will be "
231 "automatically closed when B<closedir>(3) is called."
235 #: build/C/man3/dirfd.3:74
237 "On success, a nonnegative file descriptor is returned. On error, -1 is "
238 "returned, and I<errno> is set to indicate the cause of the error."
243 #: build/C/man3/dirfd.3:79
245 "POSIX.1-2008 specifies two errors, neither of which is returned by the "
246 "current implementation."
250 #: build/C/man3/dirfd.3:79 build/C/man2/getdents.2:156 build/C/man2/readdir.2:105
256 #: build/C/man3/dirfd.3:83
257 msgid "I<dirp> does not refer to a valid directory stream."
261 #: build/C/man3/dirfd.3:83
267 #: build/C/man3/dirfd.3:87
269 "The implementation does not support the association of a file descriptor "
274 #: build/C/man3/dirfd.3:87 build/C/man3/readdir.3:147 build/C/man3/rewinddir.3:53 build/C/man3/seekdir.3:64 build/C/man3/telldir.3:64
280 #: build/C/man3/dirfd.3:88 build/C/man3/readdir.3:148 build/C/man3/rewinddir.3:54 build/C/man3/seekdir.3:65 build/C/man3/telldir.3:65
282 msgid "Multithreading (see pthreads(7))"
286 #: build/C/man3/dirfd.3:92
287 msgid "The B<dirfd>() function is thread-safe."
290 #. It is present in libc5 (since 5.1.2) and in glibc2.
292 #: build/C/man3/dirfd.3:96
294 "POSIX.1-2008. This function was a BSD extension, present in 4.3BSD-Reno, "
299 #: build/C/man3/dirfd.3:96 build/C/man2/getdents.2:168 build/C/man3/opendir.3:123 build/C/man2/readdir.2:116 build/C/man3/readdir.3:158 build/C/man3/scandirat.3:107 build/C/man3/seekdir.3:71 build/C/man3/telldir.3:71
305 #: build/C/man3/dirfd.3:104
307 "The prototype for B<dirfd>() is available only if B<_BSD_SOURCE> or "
308 "B<_SVID_SOURCE> is defined."
312 #: build/C/man3/dirfd.3:113
314 "B<open>(2), B<closedir>(3), B<opendir>(3), B<readdir>(3), B<rewinddir>(3), "
315 "B<scandir>(3), B<seekdir>(3), B<telldir>(3)"
319 #: build/C/man2/getdents.2:30
325 #: build/C/man2/getdents.2:30
331 #: build/C/man2/getdents.2:33
332 msgid "getdents - get directory entries"
336 #: build/C/man2/getdents.2:37
339 "B<int getdents(unsigned int >I<fd>B<, struct linux_dirent *>I<dirp>B<,>\n"
340 "B< unsigned int >I<count>B<);>\n"
344 #: build/C/man2/getdents.2:41 build/C/man2/readdir.2:42
345 msgid "I<Note>: There is no glibc wrapper for this system call; see NOTES."
349 #: build/C/man2/getdents.2:47
351 "This is not the function you are interested in. Look at B<readdir>(3) for "
352 "the POSIX conforming C library interface. This page documents the bare "
353 "kernel system call interface."
357 #: build/C/man2/getdents.2:60
359 "The system call B<getdents>() reads several I<linux_dirent> structures from "
360 "the directory referred to by the open file descriptor I<fd> into the buffer "
361 "pointed to by I<dirp>. The argument I<count> specifies the size of that "
366 #: build/C/man2/getdents.2:64
367 msgid "The I<linux_dirent> structure is declared as follows:"
371 #: build/C/man2/getdents.2:79
374 "struct linux_dirent {\n"
375 " unsigned long d_ino; /* Inode number */\n"
376 " unsigned long d_off; /* Offset to next I<linux_dirent> */\n"
377 " unsigned short d_reclen; /* Length of this I<linux_dirent> */\n"
378 " char d_name[]; /* Filename (null-terminated) */\n"
379 " /* length is actually (d_reclen - 2 -\n"
380 " offsetof(struct linux_dirent, d_name)) */\n"
382 " char pad; // Zero padding byte\n"
383 " char d_type; // File type (only since Linux\n"
384 " // 2.6.4); offset is (d_reclen - 1)\n"
389 #: build/C/man2/getdents.2:81
395 #: build/C/man2/getdents.2:94
397 "I<d_ino> is an inode number. I<d_off> is the distance from the start of the "
398 "directory to the start of the next I<linux_dirent>. I<d_reclen> is the size "
399 "of this entire I<linux_dirent>. I<d_name> is a null-terminated filename."
403 #: build/C/man2/getdents.2:99
405 "I<d_type> is a byte at the end of the structure that indicates the file "
406 "type. It contains one of the following values (defined in "
407 "I<E<lt>dirent.hE<gt>>):"
411 #: build/C/man2/getdents.2:99 build/C/man3/readdir.3:200
417 #: build/C/man2/getdents.2:102 build/C/man3/readdir.3:203
418 msgid "This is a block device."
422 #: build/C/man2/getdents.2:102 build/C/man3/readdir.3:203
428 #: build/C/man2/getdents.2:105 build/C/man3/readdir.3:206
429 msgid "This is a character device."
433 #: build/C/man2/getdents.2:105 build/C/man3/readdir.3:206
439 #: build/C/man2/getdents.2:108 build/C/man3/readdir.3:209
440 msgid "This is a directory."
444 #: build/C/man2/getdents.2:108 build/C/man3/readdir.3:209
450 #: build/C/man2/getdents.2:111 build/C/man3/readdir.3:212
451 msgid "This is a named pipe (FIFO)."
455 #: build/C/man2/getdents.2:111 build/C/man3/readdir.3:212
461 #: build/C/man2/getdents.2:114 build/C/man3/readdir.3:215
462 msgid "This is a symbolic link."
466 #: build/C/man2/getdents.2:114 build/C/man3/readdir.3:215
472 #: build/C/man2/getdents.2:117 build/C/man3/readdir.3:218
473 msgid "This is a regular file."
477 #: build/C/man2/getdents.2:117 build/C/man3/readdir.3:218
483 #: build/C/man2/getdents.2:120 build/C/man3/readdir.3:221
484 msgid "This is a UNIX domain socket."
488 #: build/C/man2/getdents.2:120 build/C/man3/readdir.3:221
490 msgid "B<DT_UNKNOWN>"
493 #. The glibc manual says that on some systems this is the only
496 #: build/C/man2/getdents.2:123 build/C/man3/readdir.3:226
497 msgid "The file type is unknown."
501 #: build/C/man2/getdents.2:133
503 "The I<d_type> field is implemented since Linux 2.6.4. It occupies a space "
504 "that was previously a zero-filled padding byte in the I<linux_dirent> "
505 "structure. Thus, on kernels before 2.6.3, attempting to access this field "
506 "always provides the value 0 (B<DT_UNKNOWN>)."
510 #. The same sentence is in getdents.2
512 #: build/C/man2/getdents.2:142 build/C/man3/readdir.3:240
514 "Currently, only some filesystems (among them: Btrfs, ext2, ext3, and ext4) "
515 "have full support for returning the file type in I<d_type>. All "
516 "applications must properly handle a return of B<DT_UNKNOWN>."
520 #: build/C/man2/getdents.2:148
522 "On success, the number of bytes read is returned. On end of directory, 0 is "
523 "returned. On error, -1 is returned, and I<errno> is set appropriately."
527 #: build/C/man2/getdents.2:153 build/C/man2/readdir.2:102
528 msgid "Invalid file descriptor I<fd>."
532 #: build/C/man2/getdents.2:153 build/C/man2/readdir.2:102
538 #: build/C/man2/getdents.2:156 build/C/man2/readdir.2:105
539 msgid "Argument points outside the calling process's address space."
543 #: build/C/man2/getdents.2:159 build/C/man2/readdir.2:108
544 msgid "Result buffer is too small."
548 #: build/C/man2/getdents.2:159 build/C/man3/opendir.3:106 build/C/man2/readdir.2:108 build/C/man3/scandir.3:109
554 #: build/C/man2/getdents.2:162 build/C/man2/readdir.2:111
555 msgid "No such directory."
559 #: build/C/man2/getdents.2:162 build/C/man3/opendir.3:112 build/C/man2/readdir.2:111 build/C/man3/scandir.3:115 build/C/man3/scandirat.3:96
565 #: build/C/man2/getdents.2:165 build/C/man2/readdir.2:114
566 msgid "File descriptor does not refer to a directory."
569 #. SVr4 documents additional ENOLINK, EIO error conditions.
571 #: build/C/man2/getdents.2:168
576 #: build/C/man2/getdents.2:177
578 "Glibc does not provide a wrapper for this system call; call it using "
579 "B<syscall>(2). You will need to define the I<linux_dirent> structure "
580 "yourself. However, you probably want to use B<readdir>(3) instead."
584 #: build/C/man2/getdents.2:180
585 msgid "This call supersedes B<readdir>(2)."
589 #: build/C/man2/getdents.2:193
591 "The original Linux B<getdents>() system call did not handle large "
592 "filesystems and large file offsets. Consequently, Linux 2.4 added "
593 "B<getdents64>(), with wider types for the I<d_ino> and I<d_off> fields "
594 "employed in the I<linux_dirent> structure."
598 #: build/C/man2/getdents.2:193 build/C/man3/scandir.3:153
603 #. FIXME: This program uses the older getdents() system call
604 #. and the structure with smaller field widths.
606 #: build/C/man2/getdents.2:200
608 "The program below demonstrates the use of B<getdents>(). The following "
609 "output shows an example of what we see when running this program on an ext2 "
614 #: build/C/man2/getdents.2:213
617 "$B< ./a.out /testfs/>\n"
618 "--------------- nread=120 ---------------\n"
619 "i-node# file type d_reclen d_off d_name\n"
620 " 2 directory 16 12 .\n"
621 " 2 directory 16 24 ..\n"
622 " 11 directory 24 44 lost+found\n"
623 " 12 regular 16 56 a\n"
624 " 228929 directory 16 68 sub\n"
625 " 16353 directory 16 80 sub2\n"
626 " 130817 directory 16 4096 sub3\n"
630 #: build/C/man2/getdents.2:215
632 msgid "Program source"
636 #: build/C/man2/getdents.2:226
639 "#define _GNU_SOURCE\n"
640 "#include E<lt>dirent.hE<gt> /* Defines DT_* constants */\n"
641 "#include E<lt>fcntl.hE<gt>\n"
642 "#include E<lt>stdio.hE<gt>\n"
643 "#include E<lt>unistd.hE<gt>\n"
644 "#include E<lt>stdlib.hE<gt>\n"
645 "#include E<lt>sys/stat.hE<gt>\n"
646 "#include E<lt>sys/syscall.hE<gt>\n"
650 #: build/C/man2/getdents.2:229
653 "#define handle_error(msg) \\e\n"
654 " do { perror(msg); exit(EXIT_FAILURE); } while (0)\n"
658 #: build/C/man2/getdents.2:236
661 "struct linux_dirent {\n"
664 " unsigned short d_reclen;\n"
670 #: build/C/man2/getdents.2:238
672 msgid "#define BUF_SIZE 1024\n"
676 #: build/C/man2/getdents.2:247
680 "main(int argc, char *argv[])\n"
683 " char buf[BUF_SIZE];\n"
684 " struct linux_dirent *d;\n"
690 #: build/C/man2/getdents.2:251
693 " fd = open(argc E<gt> 1 ? argv[1] : \".\", O_RDONLY | O_DIRECTORY);\n"
695 " handle_error(\"open\");\n"
699 #: build/C/man2/getdents.2:256
703 " nread = syscall(SYS_getdents, fd, buf, BUF_SIZE);\n"
704 " if (nread == -1)\n"
705 " handle_error(\"getdents\");\n"
709 #: build/C/man2/getdents.2:259
717 #: build/C/man2/getdents.2:278
720 " printf(\"--------------- nread=%d ---------------\\en\", nread);\n"
721 " printf(\"i-node# file type d_reclen d_off d_name\\en\");\n"
722 " for (bpos = 0; bpos E<lt> nread;) {\n"
723 " d = (struct linux_dirent *) (buf + bpos);\n"
724 " printf(\"%8ld \", d-E<gt>d_ino);\n"
725 " d_type = *(buf + bpos + d-E<gt>d_reclen - 1);\n"
726 " printf(\"%-10s \", (d_type == DT_REG) ? \"regular\" :\n"
727 " (d_type == DT_DIR) ? \"directory\" :\n"
728 " (d_type == DT_FIFO) ? \"FIFO\" :\n"
729 " (d_type == DT_SOCK) ? \"socket\" :\n"
730 " (d_type == DT_LNK) ? \"symlink\" :\n"
731 " (d_type == DT_BLK) ? \"block dev\" :\n"
732 " (d_type == DT_CHR) ? \"char dev\" : "
734 " printf(\"%4d %10lld %s\\en\", d-E<gt>d_reclen,\n"
735 " (long long) d-E<gt>d_off, d-E<gt>d_name);\n"
736 " bpos += d-E<gt>d_reclen;\n"
742 #: build/C/man2/getdents.2:281
745 " exit(EXIT_SUCCESS);\n"
750 #: build/C/man2/getdents.2:285
751 msgid "B<readdir>(2), B<readdir>(3)"
755 #: build/C/man3/getdirentries.3:27
757 msgid "GETDIRENTRIES"
761 #: build/C/man3/getdirentries.3:27
767 #: build/C/man3/getdirentries.3:27 build/C/man3/opendir.3:32 build/C/man3/scandir.3:36
773 #: build/C/man3/getdirentries.3:30
774 msgid "getdirentries - get directory entries in a filesystem-independent format"
778 #: build/C/man3/getdirentries.3:35
780 "B<ssize_t getdirentries(int >I<fd>B<, char *>I<buf>B<, size_t >I<nbytes> B<, "
781 "off_t *>I<basep>B<);>"
785 #: build/C/man3/getdirentries.3:43
786 msgid "B<getdirentries>(): _BSD_SOURCE || _SVID_SOURCE"
790 #: build/C/man3/getdirentries.3:56
792 "Read directory entries from the directory specified by I<fd> into I<buf>. "
793 "At most I<nbytes> are read. Reading starts at offset I<*basep>, and "
794 "I<*basep> is updated with the new position after reading."
798 #: build/C/man3/getdirentries.3:62
800 "B<getdirentries>() returns the number of bytes read or zero when at the end "
801 "of the directory. If an error occurs, -1 is returned, and I<errno> is set "
806 #: build/C/man3/getdirentries.3:64
807 msgid "See the Linux library source code for details."
811 #: build/C/man3/getdirentries.3:72
813 "Not in POSIX.1-2001. Present on the BSDs, and a few other systems. Use "
814 "B<opendir>(3) and B<readdir>(3) instead."
818 #: build/C/man3/getdirentries.3:75
819 msgid "B<lseek>(2), B<open>(2)"
823 #: build/C/man3/opendir.3:32
829 #: build/C/man3/opendir.3:32
835 #: build/C/man3/opendir.3:35
836 msgid "opendir, fdopendir - open a directory"
840 #: build/C/man3/opendir.3:43
843 "B<DIR *opendir(const char *>I<name>B<);>\n"
844 "B<DIR *fdopendir(int >I<fd>B<);>\n"
848 #: build/C/man3/opendir.3:51
849 msgid "B<fdopendir>():"
853 #: build/C/man3/opendir.3:54
855 msgid "Since glibc 2.10:"
859 #: build/C/man3/opendir.3:57
860 msgid "_XOPEN_SOURCE\\ E<gt>=\\ 700 || _POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
864 #: build/C/man3/opendir.3:57
866 msgid "Before glibc 2.10:"
870 #: build/C/man3/opendir.3:60
875 #: build/C/man3/opendir.3:69
877 "The B<opendir>() function opens a directory stream corresponding to the "
878 "directory I<name>, and returns a pointer to the directory stream. The "
879 "stream is positioned at the first entry in the directory."
883 #: build/C/man3/opendir.3:83
885 "The B<fdopendir>() function is like B<opendir>(), but returns a directory "
886 "stream for the directory referred to by the open file descriptor I<fd>. "
887 "After a successful call to B<fdopendir>(), I<fd> is used internally by the "
888 "implementation, and should not otherwise be used by the application."
892 #: build/C/man3/opendir.3:92
894 "The B<opendir>() and B<fdopendir>() functions return a pointer to the "
895 "directory stream. On error, NULL is returned, and I<errno> is set "
900 #: build/C/man3/opendir.3:93
906 #: build/C/man3/opendir.3:96
907 msgid "Permission denied."
911 #: build/C/man3/opendir.3:100
912 msgid "I<fd> is not a valid file descriptor opened for reading."
916 #: build/C/man3/opendir.3:100
922 #: build/C/man3/opendir.3:103
923 msgid "Too many file descriptors in use by process."
927 #: build/C/man3/opendir.3:103
933 #: build/C/man3/opendir.3:106
934 msgid "Too many files are currently open in the system."
938 #: build/C/man3/opendir.3:109
939 msgid "Directory does not exist, or I<name> is an empty string."
943 #: build/C/man3/opendir.3:109 build/C/man3/scandir.3:112
949 #: build/C/man3/opendir.3:112 build/C/man3/scandir.3:115
950 msgid "Insufficient memory to complete the operation."
954 #: build/C/man3/opendir.3:115
955 msgid "I<name> is not a directory."
959 #: build/C/man3/opendir.3:115 build/C/man3/scandir.3:118 build/C/man3/scandirat.3:102
965 #: build/C/man3/opendir.3:118
966 msgid "B<fdopendir>() is available in glibc since version 2.4."
970 #: build/C/man3/opendir.3:123
972 "B<opendir>() is present on SVr4, 4.3BSD, and specified in POSIX.1-2001. "
973 "B<fdopendir>() is specified in POSIX.1-2008."
977 #: build/C/man3/opendir.3:126
979 "The underlying file descriptor of the directory stream can be obtained using "
984 #: build/C/man3/opendir.3:140
986 "The B<opendir>() function sets the close-on-exec flag for the file "
987 "descriptor underlying the I<DIR *>. The B<fdopendir>() function leaves the "
988 "setting of the close-on-exec flag unchanged for the file descriptor, I<fd>. "
989 "POSIX.1-200x leaves it unspecified whether a successful call to "
990 "B<fdopendir>() will set the close-on-exec flag for the file descriptor, "
995 #: build/C/man3/opendir.3:149
997 "B<open>(2), B<closedir>(3), B<dirfd>(3), B<readdir>(3), B<rewinddir>(3), "
998 "B<scandir>(3), B<seekdir>(3), B<telldir>(3)"
1002 #: build/C/man2/readdir.2:30 build/C/man3/readdir.3:36
1008 #: build/C/man2/readdir.2:30 build/C/man3/readdir.3:36
1014 #: build/C/man2/readdir.2:33
1015 msgid "readdir - read directory entry"
1019 #: build/C/man2/readdir.2:38
1022 "B<int readdir(unsigned int >I<fd>B<, struct old_linux_dirent *>I<dirp>B<,>\n"
1023 "B< unsigned int >I<count>B<);>\n"
1027 #: build/C/man2/readdir.2:50
1029 "This is not the function you are interested in. Look at B<readdir>(3) for "
1030 "the POSIX conforming C library interface. This page documents the bare "
1031 "kernel system call interface, which is superseded by B<getdents>(2)."
1035 #: build/C/man2/readdir.2:64
1037 "B<readdir>() reads one I<old_linux_dirent> structure from the directory "
1038 "referred to by the file descriptor I<fd> into the buffer pointed to by "
1039 "I<dirp>. The argument I<count> is ignored; at most one I<old_linux_dirent> "
1040 "structure is read."
1044 #: build/C/man2/readdir.2:68
1045 msgid "The I<old_linux_dirent> structure is declared as follows:"
1049 #: build/C/man2/readdir.2:77
1052 "struct old_linux_dirent {\n"
1053 " long d_ino; /* inode number */\n"
1054 " off_t d_off; /* offset to this I<old_linux_dirent> */\n"
1055 " unsigned short d_reclen; /* length of this I<d_name> */\n"
1056 " char d_name[NAME_MAX+1]; /* filename (null-terminated) */\n"
1061 #: build/C/man2/readdir.2:91
1063 "I<d_ino> is an inode number. I<d_off> is the distance from the start of the "
1064 "directory to this I<old_linux_dirent>. I<d_reclen> is the size of "
1065 "I<d_name>, not counting the terminating null byte (\\(aq\\e0\\(aq). "
1066 "I<d_name> is a null-terminated filename."
1070 #: build/C/man2/readdir.2:97
1072 "On success, 1 is returned. On end of directory, 0 is returned. On error, "
1073 "-1 is returned, and I<errno> is set appropriately."
1077 #: build/C/man2/readdir.2:116
1078 msgid "This system call is Linux-specific."
1082 #: build/C/man2/readdir.2:125
1084 "Glibc does not provide a wrapper for this system call; call it using "
1085 "B<syscall>(2). You will need to define the I<old_linux_dirent> structure "
1086 "yourself. However, probably you should use B<readdir>(3) instead."
1090 #: build/C/man2/readdir.2:127
1091 msgid "This system call does not exist on x86-64."
1095 #: build/C/man2/readdir.2:130
1096 msgid "B<getdents>(2), B<readdir>(3)"
1100 #: build/C/man3/readdir.3:39
1101 msgid "readdir, readdir_r - read a directory"
1105 #: build/C/man3/readdir.3:44
1107 msgid "B<struct dirent *readdir(DIR *>I<dirp>B<);>\n"
1111 #: build/C/man3/readdir.3:47
1114 "B<int readdir_r(DIR *>I<dirp>B<, struct dirent *>I<entry>B<, struct dirent "
1115 "**>I<result>B<);>\n"
1119 #: build/C/man3/readdir.3:56
1120 msgid "B<readdir_r>():"
1124 #: build/C/man3/readdir.3:59
1126 "_POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE "
1131 #: build/C/man3/readdir.3:69
1133 "The B<readdir>() function returns a pointer to a I<dirent> structure "
1134 "representing the next directory entry in the directory stream pointed to by "
1135 "I<dirp>. It returns NULL on reaching the end of the directory stream or if "
1136 "an error occurred."
1140 #: build/C/man3/readdir.3:73
1141 msgid "On Linux, the I<dirent> structure is defined as follows:"
1145 #: build/C/man3/readdir.3:84
1149 " ino_t d_ino; /* inode number */\n"
1150 " off_t d_off; /* not an offset; see NOTES */\n"
1151 " unsigned short d_reclen; /* length of this record */\n"
1152 " unsigned char d_type; /* type of file; not supported\n"
1153 " by all filesystem types */\n"
1154 " char d_name[256]; /* filename */\n"
1159 #: build/C/man3/readdir.3:98
1161 "The only fields in the I<dirent> structure that are mandated by POSIX.1 are: "
1162 "I<d_name>[], of unspecified size, with at most B<NAME_MAX> characters "
1163 "preceding the terminating null byte (\\(aq\\e0\\(aq); and (as an XSI "
1164 "extension) I<d_ino>. The other fields are unstandardized, and not present "
1165 "on all systems; see NOTES below for some further details."
1169 #: build/C/man3/readdir.3:104
1171 "The data returned by B<readdir>() may be overwritten by subsequent calls to "
1172 "B<readdir>() for the same directory stream."
1176 #: build/C/man3/readdir.3:119
1178 "The B<readdir_r>() function is a reentrant version of B<readdir>(). It "
1179 "reads the next directory entry from the directory stream I<dirp>, and "
1180 "returns it in the caller-allocated buffer pointed to by I<entry>. (See "
1181 "NOTES for information on allocating this buffer.) A pointer to the returned "
1182 "item is placed in I<*result>; if the end of the directory stream was "
1183 "encountered, then NULL is instead returned in I<*result>."
1187 #: build/C/man3/readdir.3:134
1189 "On success, B<readdir>() returns a pointer to a I<dirent> structure. (This "
1190 "structure may be statically allocated; do not attempt to B<free>(3) it.) "
1191 "If the end of the directory stream is reached, NULL is returned and I<errno> "
1192 "is not changed. If an error occurs, NULL is returned and I<errno> is set "
1197 #: build/C/man3/readdir.3:143
1199 "The B<readdir_r>() function returns 0 on success. On error, it returns a "
1200 "positive error number (listed under ERRORS). If the end of the directory "
1201 "stream is reached, B<readdir_r>() returns 0, and returns NULL in "
1206 #: build/C/man3/readdir.3:152
1207 msgid "The B<readdir>() function is not thread-safe."
1211 #: build/C/man3/readdir.3:156
1212 msgid "The B<readdir_r>() function is thread-safe."
1216 #: build/C/man3/readdir.3:158 build/C/man3/rewinddir.3:60
1217 msgid "SVr4, 4.3BSD, POSIX.1-2001."
1221 #: build/C/man3/readdir.3:174
1223 "Only the fields I<d_name> and I<d_ino> are specified in POSIX.1-2001. The "
1224 "remaining fields are available on many, but not all systems. Under glibc, "
1225 "programs can check for the availability of the fields not defined in POSIX.1 "
1226 "by testing whether the macros B<_DIRENT_HAVE_D_NAMLEN>, "
1227 "B<_DIRENT_HAVE_D_RECLEN>, B<_DIRENT_HAVE_D_OFF>, or B<_DIRENT_HAVE_D_TYPE> "
1231 #. https://lwn.net/Articles/544298/
1233 #: build/C/man3/readdir.3:187
1235 "The value returned in I<d_off> is the same as would be returned by calling "
1236 "B<telldir>(3) at the current position in the directory stream. Be aware "
1237 "that despite its type and name, the I<d_off> field is seldom any kind of "
1238 "directory offset on modern filesystems. Applications should treat this "
1239 "field as an opaque value, making no assumptions about its contents; see also "
1244 #: build/C/man3/readdir.3:200
1246 "Other than Linux, the I<d_type> field is available mainly only on BSD "
1247 "systems. This field makes it possible to avoid the expense of calling "
1248 "B<lstat>(2) if further actions depend on the type of the file. If the "
1249 "B<_BSD_SOURCE> feature test macro is defined, then glibc defines the "
1250 "following macro constants for the value returned in I<d_type>:"
1254 #: build/C/man3/readdir.3:231
1256 "If the file type could not be determined, the value B<DT_UNKNOWN> is "
1257 "returned in I<d_type>."
1261 #: build/C/man3/readdir.3:250
1263 "Since POSIX.1 does not specify the size of the I<d_name> field, and other "
1264 "nonstandard fields may precede that field within the I<dirent> structure, "
1265 "portable applications that use B<readdir_r>() should allocate the buffer "
1266 "whose address is passed in I<entry> as follows:"
1270 #: build/C/man3/readdir.3:258
1273 "name_max = pathconf(dirpath, _PC_NAME_MAX);\n"
1274 "if (name_max == -1) /* Limit not defined, or error */\n"
1275 " name_max = 255; /* Take a guess */\n"
1276 "len = offsetof(struct dirent, d_name) + name_max + 1;\n"
1277 "entryp = malloc(len);\n"
1281 #: build/C/man3/readdir.3:265
1282 msgid "(POSIX.1 requires that I<d_name> is the last field in a I<struct dirent>.)"
1286 #: build/C/man3/readdir.3:277
1288 "B<getdents>(2), B<read>(2), B<closedir>(3), B<dirfd>(3), B<ftw>(3), "
1289 "B<offsetof>(3), B<opendir>(3), B<rewinddir>(3), B<scandir>(3), "
1290 "B<seekdir>(3), B<telldir>(3)"
1294 #: build/C/man3/rewinddir.3:31
1300 #: build/C/man3/rewinddir.3:31 build/C/man3/telldir.3:30
1306 #: build/C/man3/rewinddir.3:34
1307 msgid "rewinddir - reset directory stream"
1311 #: build/C/man3/rewinddir.3:41
1313 msgid "B<void rewinddir(DIR *>I<dirp>B<);>\n"
1317 #: build/C/man3/rewinddir.3:49
1319 "The B<rewinddir>() function resets the position of the directory stream "
1320 "I<dirp> to the beginning of the directory."
1324 #: build/C/man3/rewinddir.3:53
1325 msgid "The B<rewinddir>() function returns no value."
1329 #: build/C/man3/rewinddir.3:58
1330 msgid "The B<rewinddir>() function is thread-safe."
1334 #: build/C/man3/rewinddir.3:67
1336 "B<closedir>(3), B<opendir>(3), B<readdir>(3), B<scandir>(3), B<seekdir>(3), "
1341 #: build/C/man3/scandir.3:36
1347 #: build/C/man3/scandir.3:36
1353 #: build/C/man3/scandir.3:39
1354 msgid "scandir, alphasort, versionsort - scan a directory for matching entries"
1358 #: build/C/man3/scandir.3:44
1360 msgid "B<int scandir(const char *>I<dirp>B<, struct dirent ***>I<namelist>B<,>\n"
1364 #: build/C/man3/scandir.3:47 build/C/man3/scandirat.3:42
1367 "B<int (*>I<filter>B<)(const struct dirent *),>\n"
1368 "B<int (*>I<compar>B<)(const struct dirent **, const struct dirent **));>\n"
1372 #: build/C/man3/scandir.3:50
1374 msgid "B<int alphasort(const void *>I<a>B<, const void *>I<b>B<);>\n"
1378 #: build/C/man3/scandir.3:52
1380 msgid "B<int versionsort(const void *>I<a>B<, const void *>I<b>B<);>\n"
1384 #: build/C/man3/scandir.3:62
1385 msgid "B<scandir>(), B<alphasort>(): _BSD_SOURCE || _SVID_SOURCE"
1389 #: build/C/man3/scandir.3:65
1390 msgid "B<versionsort>(): _GNU_SOURCE"
1394 #: build/C/man3/scandir.3:80
1396 "The B<scandir>() function scans the directory I<dirp>, calling I<filter>() "
1397 "on each directory entry. Entries for which I<filter>() returns nonzero are "
1398 "stored in strings allocated via B<malloc>(3), sorted using B<qsort>(3) with "
1399 "the comparison function I<compar>(), and collected in array I<namelist> "
1400 "which is allocated via B<malloc>(3). If I<filter> is NULL, all entries are "
1405 #: build/C/man3/scandir.3:92
1407 "The B<alphasort>() and B<versionsort>() functions can be used as the "
1408 "comparison function I<compar>(). The former sorts directory entries using "
1409 "B<strcoll>(3), the latter using B<strverscmp>(3) on the strings "
1410 "I<(*a)-E<gt>d_name> and I<(*b)-E<gt>d_name>."
1414 #: build/C/man3/scandir.3:100
1416 "The B<scandir>() function returns the number of directory entries "
1417 "selected. On error, -1 is returned, with I<errno> set to indicate the cause "
1422 #: build/C/man3/scandir.3:108
1424 "The B<alphasort>() and B<versionsort>() functions return an integer less "
1425 "than, equal to, or greater than zero if the first argument is considered to "
1426 "be respectively less than, equal to, or greater than the second."
1430 #: build/C/man3/scandir.3:112
1431 msgid "The path in I<dirp> does not exist."
1435 #: build/C/man3/scandir.3:118
1436 msgid "The path in I<dirp> is not a directory."
1440 #: build/C/man3/scandir.3:121
1441 msgid "B<versionsort>() was added to glibc in version 2.1."
1445 #: build/C/man3/scandir.3:128
1447 "B<alphasort>() and B<scandir>() are specified in POSIX.1-2008, and are "
1448 "widely available. B<versionsort>() is a GNU extension."
1452 #: build/C/man3/scandir.3:135
1454 "The functions B<scandir>() and B<alphasort>() are from 4.3BSD, and have "
1455 "been available under Linux since libc4. Libc4 and libc5 use the more "
1460 #: build/C/man3/scandir.3:139
1463 " int alphasort(const struct dirent ** a,\n"
1464 " const struct dirent **b);\n"
1468 #: build/C/man3/scandir.3:142
1469 msgid "but glibc 2.0 returns to the imprecise BSD prototype."
1473 #: build/C/man3/scandir.3:146
1475 "The function B<versionsort>() is a GNU extension, available since glibc "
1480 #: build/C/man3/scandir.3:153
1482 "Since glibc 2.1, B<alphasort>() calls B<strcoll>(3); earlier it used "
1487 #: build/C/man3/scandir.3:158
1490 "#define _SVID_SOURCE\n"
1491 "/* print files in current directory in reverse order */\n"
1492 "#include E<lt>dirent.hE<gt>\n"
1496 #: build/C/man3/scandir.3:164
1502 " struct dirent **namelist;\n"
1507 #: build/C/man3/scandir.3:176
1510 " n = scandir(\".\", &namelist, NULL, alphasort);\n"
1512 " perror(\"scandir\");\n"
1515 " printf(\"%s\\en\", namelist[n]-E<gt>d_name);\n"
1516 " free(namelist[n]);\n"
1518 " free(namelist);\n"
1524 #: build/C/man3/scandir.3:189
1526 "B<closedir>(3), B<fnmatch>(3), B<opendir>(3), B<readdir>(3), "
1527 "B<rewinddir>(3), B<scandirat>(3), B<seekdir>(3), B<strcmp>(3), "
1528 "B<strcoll>(3), B<strverscmp>(3), B<telldir>(3)"
1532 #: build/C/man3/scandirat.3:25
1538 #: build/C/man3/scandirat.3:25
1544 #: build/C/man3/scandirat.3:28
1545 msgid "scandirat - scan a directory relative to a directory file descriptor"
1549 #: build/C/man3/scandirat.3:31
1551 msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
1555 #: build/C/man3/scandirat.3:34
1558 "B<#include E<lt>fcntl.hE<gt>> /* Definition of AT_* constants */\n"
1559 "B<#include E<lt>dirent.hE<gt>>\n"
1563 #: build/C/man3/scandirat.3:38
1565 "B<int scandirat(int >I<dirfd>B<, const char *>I<dirp>B<,> B<struct dirent "
1566 "***>I<namelist>B<,>"
1570 #: build/C/man3/scandirat.3:50
1572 "The B<scandirat>() system call operates in exactly the same way as "
1573 "B<scandir>(3), except for the differences described in this manual page."
1577 #: build/C/man3/scandirat.3:60
1579 "If the pathname given in I<dirp> is relative, then it is interpreted "
1580 "relative to the directory referred to by the file descriptor I<dirfd> "
1581 "(rather than relative to the current working directory of the calling "
1582 "process, as is done by B<scandir>(3) for a relative pathname)."
1586 #: build/C/man3/scandirat.3:72
1588 "If I<dirp> is relative and I<dirfd> is the special value B<AT_FDCWD>, then "
1589 "I<dirp> is interpreted relative to the current working directory of the "
1590 "calling process (like B<scandir>(3))."
1594 #: build/C/man3/scandirat.3:78
1595 msgid "If I<dirp> is absolute, then I<dirfd> is ignored."
1599 #: build/C/man3/scandirat.3:85
1601 "On success, B<scandirat>() returns the number of directory entries "
1602 "selected. On error, -1 is returned and I<errno> is set to indicate the "
1607 #: build/C/man3/scandirat.3:92
1609 "The same errors that occur for B<scandir>(3) can also occur for "
1610 "B<scandirat>(). The following additional errors can occur for "
1615 #: build/C/man3/scandirat.3:96
1616 msgid "I<dirfd> is not a valid file descriptor."
1620 #: build/C/man3/scandirat.3:102
1622 "I<dirp> is a relative path and I<dirfd> is a file descriptor referring to a "
1623 "file other than a directory."
1627 #: build/C/man3/scandirat.3:105
1628 msgid "B<scandirat>() was added to glibc in version 2.15."
1632 #: build/C/man3/scandirat.3:107
1633 msgid "This function is a GNU extension."
1637 #: build/C/man3/scandirat.3:112
1638 msgid "See B<openat>(2) for an explanation of the need for B<scandirat>()."
1642 #: build/C/man3/scandirat.3:116
1643 msgid "B<openat>(2), B<scandir>(3), B<path_resolution>(7)"
1647 #: build/C/man3/seekdir.3:31
1653 #: build/C/man3/seekdir.3:31
1659 #: build/C/man3/seekdir.3:35
1661 "seekdir - set the position of the next readdir() call in the directory "
1666 #: build/C/man3/seekdir.3:40
1668 msgid "B<void seekdir(DIR *>I<dirp>B<, long >I<loc>B<);>\n"
1672 #: build/C/man3/seekdir.3:49
1673 msgid "B<seekdir>(): _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE"
1677 #: build/C/man3/seekdir.3:60
1679 "The B<seekdir>() function sets the location in the directory stream from "
1680 "which the next B<readdir>(2) call will start. The I<loc> argument should "
1681 "be a value returned by a previous call to B<telldir>(3)."
1685 #: build/C/man3/seekdir.3:64
1686 msgid "The B<seekdir>() function returns no value."
1690 #: build/C/man3/seekdir.3:69
1691 msgid "The B<seekdir>() function is thread-safe."
1695 #: build/C/man3/seekdir.3:71 build/C/man3/telldir.3:71
1696 msgid "4.3BSD, POSIX.1-2001."
1700 #: build/C/man3/seekdir.3:83
1702 "In glibc up to version 2.1.1, the type of the I<loc> argument was I<off_t>. "
1703 "POSIX.1-2001 specifies I<long>, and this is the type used since glibc "
1704 "2.1.2. See B<telldir>(3) for information on why you should be careful in "
1705 "making any assumptions about the value in this argument."
1709 #: build/C/man3/seekdir.3:91
1711 "B<lseek>(2), B<closedir>(3), B<opendir>(3), B<readdir>(3), B<rewinddir>(3), "
1712 "B<scandir>(3), B<telldir>(3)"
1716 #: build/C/man3/telldir.3:30
1722 #: build/C/man3/telldir.3:33
1723 msgid "telldir - return current location in directory stream"
1727 #: build/C/man3/telldir.3:38
1729 msgid "B<long telldir(DIR *>I<dirp>B<);>\n"
1733 #: build/C/man3/telldir.3:47
1734 msgid "B<telldir>(): _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE"
1738 #: build/C/man3/telldir.3:52
1740 "The B<telldir>() function returns the current location associated with the "
1741 "directory stream I<dirp>."
1745 #: build/C/man3/telldir.3:60
1747 "On success, the B<telldir>() function returns the current location in the "
1748 "directory stream. On error, -1 is returned, and I<errno> is set "
1753 #: build/C/man3/telldir.3:69
1754 msgid "The B<telldir>() function is thread-safe."
1758 #: build/C/man3/telldir.3:79
1760 "In glibc up to version 2.1.1, the return type of B<telldir>() was "
1761 "I<off_t>. POSIX.1-2001 specifies I<long>, and this is the type used since "
1765 #. https://lwn.net/Articles/544298/
1767 #: build/C/man3/telldir.3:95
1769 "In early filesystems, the value returned by B<telldir>() was a simple file "
1770 "offset within a directory. Modern filesystems use tree or hash structures, "
1771 "rather than flat tables, to represent directories. On such filesystems, the "
1772 "value returned by B<telldir>() (and used internally by B<readdir>(3)) is a "
1773 "\"cookie\" that is used by the implementation to derive a position within a "
1774 "directory. Application programs should treat this strictly as an opaque "
1775 "value, making I<no> assumptions about its contents."
1779 #: build/C/man3/telldir.3:102
1781 "B<closedir>(3), B<opendir>(3), B<readdir>(3), B<rewinddir>(3), "
1782 "B<scandir>(3), B<seekdir>(3)"