X-Git-Url: http://git.ipfire.org/?p=ipfire-2.x.git;a=blobdiff_plain;f=src%2Finstaller%2Fmain.c;h=01a9cc61c0a0311589ebda1b0947f0e50ed42c33;hp=9262a400c7b45a4276eef15c12096926306ffc5a;hb=3e1145e1a0b1a08bf61d6c4962eeae48e3d0c355;hpb=8f6e429843317243f412486813533c610c186673 diff --git a/src/installer/main.c b/src/installer/main.c index 9262a400c7..01a9cc61c0 100644 --- a/src/installer/main.c +++ b/src/installer/main.c @@ -25,7 +25,7 @@ #define INST_FILECOUNT 21000 #define LICENSE_FILE "/cdrom/COPYING" -#define SOURCE_TEMPFILE "/tmp/downloaded-image.iso" +#define SOURCE_TEMPFILE "/tmp/downloads/image.iso" extern char url[STRING_SIZE]; @@ -412,7 +412,13 @@ int main(int argc, char *argv[]) { setlocale(LC_ALL, language); } - char* helpline = center_string(_("/ between elements | selects | next screen"), screen_cols); + // Set helpline + char* helpline = NULL; + if (config.unattended) + helpline = center_string(_("Unattended mode"), screen_cols); + else + helpline = center_string(_("/ between elements | selects | next screen"), screen_cols); + newtPushHelpLine(helpline); if (!config.unattended) { @@ -496,7 +502,7 @@ int main(int argc, char *argv[]) { FILE* f = fopen(SOURCE_TEMPFILE, "r"); if (f) { - sourcedrive = SOURCE_TEMPFILE; + sourcedrive = strdup(SOURCE_TEMPFILE); fclose(f); } else { char reason[STRING_SIZE] = "-"; @@ -843,6 +849,18 @@ int main(int argc, char *argv[]) { // Umount source drive and eject hw_umount(SOURCE_MOUNT_PATH); + // Free downloaded ISO image + if (strcmp(sourcedrive, SOURCE_TEMPFILE) == 0) { + rc = unlink(sourcedrive); + if (rc) + fprintf(flog, "Could not free downloaded ISO image: %s\n", sourcedrive); + + // or eject real images + } else { + snprintf(commandstring, STRING_SIZE, "/usr/bin/eject %s", sourcedrive); + mysystem(logfile, commandstring); + } + // Download and execute the postinstall script if (*config.postinstall) { snprintf(commandstring, sizeof(commandstring), @@ -854,9 +872,6 @@ int main(int argc, char *argv[]) { } } - snprintf(commandstring, STRING_SIZE, "/usr/bin/eject %s", sourcedrive); - mysystem(logfile, commandstring); - if (!config.unattended) { snprintf(message, sizeof(message), _( "%s was successfully installed!\n\n" @@ -880,19 +895,28 @@ EXIT: newtFinished(); // Free resources - free(system_release); - free(roottext); - free(helpline); + if (system_release) + free(system_release); + + if (roottext) + free(roottext); + + if (helpline) + free(helpline); + + if (sourcedrive) + free(sourcedrive); - free(sourcedrive); - free(destination); + if (destination) + free(destination); hw_stop_all_raid_arrays(logfile); if (selected_disks) hw_free_disks(selected_disks); - hw_free(hw); + if (hw) + hw_free(hw); fcloseall();