2 Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc.
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2, or (at your option)
9 This program 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
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software Foundation,
16 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
23 #include "file-list.h"
36 /* A convenience macro. I don't like writing gettext() every time. */
37 #define _(str) gettext (str)
40 /* Read list of filenames from a file. */
42 read_names_from_file (const char *file_name
)
45 char *line_buf
= NULL
;
47 string_list_ty
*result
;
49 if (strcmp (file_name
, "-") == 0)
53 fp
= fopen (file_name
, "r");
55 error (EXIT_FAILURE
, errno
,
56 _("error while opening \"%s\" for reading"), file_name
);
59 result
= string_list_alloc ();
63 /* Read next line from file. */
64 int len
= getline (&line_buf
, &line_len
, fp
);
66 /* In case of an error leave loop. */
70 /* Remove trailing '\n' and trailing whitespace. */
71 if (len
> 0 && line_buf
[len
- 1] == '\n')
72 line_buf
[--len
] = '\0';
74 && (line_buf
[len
- 1] == ' '
75 || line_buf
[len
- 1] == '\t'
76 || line_buf
[len
- 1] == '\r'))
77 line_buf
[--len
] = '\0';
79 /* Test if we have to ignore the line. */
80 if (*line_buf
== '\0' || *line_buf
== '#')
83 string_list_append_unique (result
, line_buf
);
86 /* Free buffer allocated through getline. */
90 /* Close input stream. */