From 9ce5047b17c0741cc0e10e047fce3361f6a8df87 Mon Sep 17 00:00:00 2001 From: Olivier Blin Date: Mon, 21 Jun 2004 07:43:07 +0000 Subject: workaround the fact that stat() fails on large files (like DVD ISO images) --- mdk-stage1/directory.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'mdk-stage1/directory.c') diff --git a/mdk-stage1/directory.c b/mdk-stage1/directory.c index 00c6bb872..658a209c6 100644 --- a/mdk-stage1/directory.c +++ b/mdk-stage1/directory.c @@ -126,7 +126,12 @@ enum return_type try_with_directory(char *directory, char *method_live, char *me } #endif - if (!stat(location_full, &statbuf) && !S_ISDIR(statbuf.st_mode)) { + /* warning, stat() fails on large files (like DVD ISO images) */ + if (!stat(location_full, &statbuf) && S_ISDIR(statbuf.st_mode)) { + log_message("assuming %s is a mirror tree", location_full); + symlink(location_full, IMAGE_LOCATION); + add_to_env("METHOD", method_live); + } else { log_message("%s exists and is not a directory, assuming this is an ISO image", location_full); if (lomount(location_full, IMAGE_LOCATION, &loopdev, 0)) { stg1_error_message("Could not mount file %s as an ISO image of the " DISTRIB_NAME " Distribution.", location_full); @@ -134,10 +139,6 @@ enum return_type try_with_directory(char *directory, char *method_live, char *me } add_to_env("ISOPATH", location_full); add_to_env("METHOD", method_iso); - } else { - log_message("assuming %s is a mirror tree", location_full); - symlink(location_full, IMAGE_LOCATION); - add_to_env("METHOD", method_live); } #ifndef MANDRAKE_MOVE if (IS_SPECIAL_STAGE2 || ramdisk_possible()) { -- cgit v1.2.1