1 /* GNU gettext - internationalization aids
2 Copyright (C) 1996, 1998, 2000-2002, 2006, 2015 Free Software
5 This file was written by Peter Miller <millerp@canb.auug.org.au>
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
33 static string_list_ty *directory /* = NULL */;
36 /* Append a directory to the end of the list of directories. */
38 dir_list_append (const char *s)
40 if (directory == NULL)
41 directory = string_list_alloc ();
42 string_list_append_unique (directory, s);
46 /* Return the nth directory, or NULL of n is out of range. */
50 /* The default value of the list consists of the single directory ".". */
51 if (directory == NULL)
52 dir_list_append (".");
54 if (n < 0 || n >= directory->nitems)
56 return directory->item[n];
60 /* Return the current list of directories, for later use with dir_list_restore.
61 Reset the list to empty. */
63 dir_list_save_reset ()
65 void *saved_value = directory;
72 /* Restore a previously saved list of directories. */
74 dir_list_restore (void *saved_value)
76 /* Don't free the contained strings, because they may have been returned
77 by dir_list_nth and may still be in use. */
78 if (directory != NULL)
80 if (directory->item != NULL)
81 free (directory->item);
85 directory = (string_list_ty *) saved_value;