Fix crash in GB18030 encoder
[platform/upstream/glibc.git] / dirent / list.c
1 /* Copyright (C) 1991, 1993, 1997, 1998, 2000 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3
4    The GNU C Library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Lesser General Public
6    License as published by the Free Software Foundation; either
7    version 2.1 of the License, or (at your option) any later version.
8
9    The GNU C Library is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    Lesser General Public License for more details.
13
14    You should have received a copy of the GNU Lesser General Public
15    License along with the GNU C Library; if not, write to the Free
16    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17    02111-1307 USA.  */
18
19 #include <errno.h>
20 #include <stddef.h>
21 #include <stdio.h>
22 #include <stdlib.h>
23 #include <dirent.h>
24
25
26 static int
27 test (const char *name)
28 {
29   DIR *dirp;
30   struct dirent *entp;
31   int retval = 0;
32
33   puts (name);
34
35   dirp = opendir (name);
36   if (dirp == NULL)
37     {
38       perror ("opendir");
39       return 1;
40     }
41
42   errno = 0;
43   while ((entp = readdir (dirp)) != NULL)
44     printf ("%s\tfile number %lu\n",
45             entp->d_name, (unsigned long int) entp->d_fileno);
46
47   if (errno)
48     {
49       perror ("readdir");
50       retval = 1;
51     }
52
53   if (closedir (dirp) < 0)
54     {
55       perror ("closedir");
56       retval = 1;
57     }
58
59   return retval;
60 }
61
62 int
63 main (int argc, char **argv)
64 {
65   int retval = 0;
66   --argc;
67   ++argv;
68
69   if (argc == 0)
70     retval = test (".");
71   else
72     while (argc-- > 0)
73       retval |= test (*argv++);
74
75   return retval;
76 }