summaryrefslogtreecommitdiffstats
path: root/sbin
diff options
context:
space:
mode:
authorjdp <jdp@FreeBSD.org>1996-11-08 02:12:40 +0000
committerjdp <jdp@FreeBSD.org>1996-11-08 02:12:40 +0000
commit81bba450d55e3806a87ae828093ee8d8328ccb96 (patch)
tree668267392978a9e1d7d59b57199a48165adcaeb4 /sbin
parent844872c49d9d0345297131bbe6554d7e0d84f90c (diff)
downloadFreeBSD-src-81bba450d55e3806a87ae828093ee8d8328ccb96.zip
FreeBSD-src-81bba450d55e3806a87ae828093ee8d8328ccb96.tar.gz
Fixed a bug in the handling of the directories in the search path
that is stored in the hints file. If that search path contained a non-existent directory (one, say, that had been removed), and "ldconfig -m /a/perfectly/good/directory" was run, ldconfig returned an error status without printing an error message. This caused some confusing bombs when installing ports, in particular. I changed it so that non-existent directories from the stored search path are silently ignored. Only non-existent directories named explicitly on the command line are treated as errors. Also, a diagnostic is printed if and only if an error status is returned. In an unrelated fix, ldconfig now silently ignores any directories named on the command line when the "-r" option is given. Formerly, these directories incorrectly made their way into the "search directories" line of the listing. It really should be an error to specify directories together with "-r", but I don't have time to fix the manual page in that way right now. 2.2 Candidate.
Diffstat (limited to 'sbin')
-rw-r--r--sbin/ldconfig/ldconfig.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/sbin/ldconfig/ldconfig.c b/sbin/ldconfig/ldconfig.c
index 87cbfaf..1189d6d 100644
--- a/sbin/ldconfig/ldconfig.c
+++ b/sbin/ldconfig/ldconfig.c
@@ -27,7 +27,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $Id: ldconfig.c,v 1.14 1996/10/01 01:31:51 peter Exp $
+ * $Id: ldconfig.c,v 1.15 1996/10/10 23:14:23 jdp Exp $
*/
#include <sys/param.h>
@@ -136,8 +136,15 @@ char *argv[];
if (!nostd && !merge)
std_search_path();
- for (i = optind; i < argc; i++)
- add_search_path(argv[i]);
+ if (!justread) { /* Add any directories from the command line */
+ for (i = optind; i < argc; i++) {
+ if (access(argv[i], F_OK) == -1) { /* Doesn't exist */
+ warn("%s", argv[i]);
+ rval = -1;
+ } else
+ add_search_path(argv[i]);
+ }
+ }
for (i = 0; i < n_search_dirs; i++) {
char *cp = concat(dir_list, *dir_list?":":"", search_dirs[i]);
@@ -169,8 +176,9 @@ int silent;
int dewey[MAXDEWEY], ndewey;
if ((dd = opendir(dir)) == NULL) {
- if (!silent || errno != ENOENT)
- warn("%s", dir);
+ if (silent && errno == ENOENT) /* Ignore the error */
+ return 0;
+ warn("%s", dir);
return -1;
}
OpenPOWER on IntegriCloud