diff options
author | Aaron Plattner <aplattner@nvidia.com> | 2014-08-06 07:43:15 -0700 |
---|---|---|
committer | Aaron Plattner <aplattner@nvidia.com> | 2014-08-06 07:43:15 -0700 |
commit | f15421e12307422e3f870a42330124d49ce7b94d (patch) | |
tree | 06f5328a916cdc3b2d2b5afb4f5d78e1e0e2831f | |
parent | 55d05b67db79bc990db62556e154ccadfc07cfd7 (diff) |
343.13343.13
-rw-r--r-- | backup.c | 49 | ||||
-rw-r--r-- | backup.h | 1 | ||||
-rw-r--r-- | common-utils/gen-manpage-opts-helper.c | 21 | ||||
-rw-r--r-- | files.c | 24 | ||||
-rw-r--r-- | files.h | 4 | ||||
-rw-r--r-- | install-from-cwd.c | 2 | ||||
-rw-r--r-- | kernel.c | 14 | ||||
-rw-r--r-- | nvLegacy.h | 281 | ||||
-rw-r--r-- | nvidia-installer.c | 14 | ||||
-rw-r--r-- | nvidia-installer.h | 1 | ||||
-rw-r--r-- | version.mk | 2 |
11 files changed, 385 insertions, 28 deletions
@@ -149,7 +149,7 @@ int init_backup(Options *op, Package *p) /* create the backup directory, with perms only for owner */ - if (!mkdir_with_log(op, BACKUP_DIRECTORY, BACKUP_DIRECTORY_PERMS, FALSE)) { + if (!mkdir_recursive(op, BACKUP_DIRECTORY, BACKUP_DIRECTORY_PERMS, FALSE)) { return FALSE; } @@ -507,7 +507,7 @@ int log_mkdir(Options *op, const char *dirs) * the existence of BACKUP_DIRECTORY */ if (!directory_exists(op, BACKUP_DIRECTORY) && - !mkdir_with_log(op, BACKUP_DIRECTORY, BACKUP_DIRECTORY_PERMS, FALSE)) { + !mkdir_recursive(op, BACKUP_DIRECTORY, BACKUP_DIRECTORY_PERMS, FALSE)) { return FALSE; } @@ -1414,6 +1414,51 @@ int uninstall_existing_driver(Options *op, const int interactive) /* + * run_existing_uninstaller() - attempt to run `nvidia-uninstall` if it + * exists; if it does not exist or fails, fall back to normal uninstallation. + */ +int run_existing_uninstaller(Options *op) +{ + char *uninstaller = find_system_util("nvidia-uninstall"); + + if (uninstaller) { + /* Run the uninstaller non-interactively, and explicitly log to the + * uninstall log location: older installers may not do so implicitly. */ + char *uninstall_cmd = nvstrcat(uninstaller, " -s --log-file-name=" + DEFAULT_UNINSTALL_LOG_FILE_NAME, NULL); + char *data; + int ret; + + ui_log(op, "Uninstalling the previous installation with %s.", + uninstaller); + + ret = run_command(op, uninstall_cmd, &data, FALSE, 0, TRUE); + + nvfree(uninstall_cmd); + + /* if nvidia-uninstall succeeded, return early; otherwise, fall back to + * uninstalling via the backup log file. */ + if (ret == 0) { + nvfree(data); + return TRUE; + } else { + ui_log(op, "%s failed; see %s for more details.", uninstaller, + DEFAULT_UNINSTALL_LOG_FILE_NAME); + if (data && strlen(data)) { + ui_log(op, "The output from %s was:\n%s", uninstaller, data); + } + nvfree(data); + } + + nvfree(uninstaller); + } + + return uninstall_existing_driver(op, FALSE); +} + + + +/* * report_driver_information() - report basic information about the * currently installed driver. */ @@ -33,6 +33,7 @@ int log_install_file (Options*, const char*); int log_create_symlink (Options*, const char*, const char*); int check_for_existing_driver (Options*, Package*); int uninstall_existing_driver (Options*, const int); +int run_existing_uninstaller (Options*); int report_driver_information (Options*); int get_installed_driver_version_and_descr(Options *, char **, char **); diff --git a/common-utils/gen-manpage-opts-helper.c b/common-utils/gen-manpage-opts-helper.c index c05ef38..84bac62 100644 --- a/common-utils/gen-manpage-opts-helper.c +++ b/common-utils/gen-manpage-opts-helper.c @@ -90,7 +90,9 @@ static void print_option(const NVGetoptOption *o) * '&' : toggles italics on and off * '^' : toggles bold on and off * '-' : is backslashified: "\-" + * '\n': resets the first character flag * '.' : must not be the first character of a line + * '\'': must not be the first character of a line * * Trailing whitespace is omitted when italics or bold is on */ @@ -110,8 +112,8 @@ static void print_option(const NVGetoptOption *o) printf("\n.I "); } omitWhiteSpace = italics; + firstchar = italics; italics = !italics; - firstchar = TRUE; break; case '^': if (bold) { @@ -120,8 +122,8 @@ static void print_option(const NVGetoptOption *o) printf("\n.B "); } omitWhiteSpace = bold; + firstchar = bold; bold = !bold; - firstchar = TRUE; break; case '-': printf("\\-"); @@ -134,6 +136,11 @@ static void print_option(const NVGetoptOption *o) firstchar = FALSE; } break; + case '\n': + printf("\n"); + omitWhiteSpace = FALSE; + firstchar = TRUE; + break; case '.': if (firstchar) { fprintf(stderr, "Error: *roff can't start a line with '.' " @@ -144,6 +151,16 @@ static void print_option(const NVGetoptOption *o) exit(1); } /* fall through */ + case '\'': + if (firstchar) { + fprintf(stderr, "Error: *roff can't start a line with '\''. " + "If you started a line with '\'' in the description " + "of the '%s' option, please add some text at the " + "beginning of the sentence, so that a valid manpage " + "can be generated.\n", o->name); + exit(1); + } + /* fall through */ default: printf("%c", *s); omitWhiteSpace = FALSE; @@ -1220,7 +1220,7 @@ int confirm_path(Options *op, const char *path) if (ui_multiple_choice(op, choices, 2, 0, "The directory '%s' does not " "exist; would you like to create it, or would you " "prefer to abort installation?", path) == 0) { - if (mkdir_recursive(op, path, 0755)) { + if (mkdir_with_log(op, path, 0755)) { return TRUE; } else { return FALSE; @@ -1237,12 +1237,12 @@ int confirm_path(Options *op, const char *path) /* - * mkdir_with_log() - create the path specified, also creating parent + * mkdir_recursive() - create the path specified, also creating parent * directories as needed; this is equivalent to `mkdir -p`. Log created * directories if the "log" parameter is set. */ -int mkdir_with_log(Options *op, const char *path, const mode_t mode, int log) +int mkdir_recursive(Options *op, const char *path, const mode_t mode, int log) { char *c, *tmp, ch, *list, *tmplist; @@ -1284,19 +1284,19 @@ int mkdir_with_log(Options *op, const char *path, const mode_t mode, int log) free(tmp); return TRUE; -} /* mkdir_with_log */ +} /* - * mkdir_recursive() - Wrap mkdir_with_log() to create the path specified + * mkdir_with_log() - Wrap mkdir_recursive() to create the path specified * with any needed parent directories. */ -int mkdir_recursive(Options *op, const char *path, const mode_t mode) +int mkdir_with_log(Options *op, const char *path, const mode_t mode) { - return mkdir_with_log(op, path, mode, TRUE); -} /* mkdir_recursive() */ + return mkdir_recursive(op, path, mode, TRUE); +} @@ -1397,7 +1397,7 @@ int install_file(Options *op, const char *srcfile, dirc = nvstrdup(dstfile); dname = dirname(dirc); - if (!mkdir_recursive(op, dname, 0755)) { + if (!mkdir_with_log(op, dname, 0755)) { free(dirc); return FALSE; } @@ -1423,7 +1423,7 @@ int install_symlink(Options *op, const char *linkname, const char *dstfile) dirc = nvstrdup(dstfile); dname = dirname(dirc); - if (!mkdir_recursive(op, dname, 0755)) { + if (!mkdir_with_log(op, dname, 0755)) { free(dirc); return FALSE; } @@ -1509,7 +1509,7 @@ char *make_tmpdir(Options *op) remove_directory(op, tmpdir); } - if (!mkdir_recursive(op, tmpdir, 0655)) { + if (!mkdir_recursive(op, tmpdir, 0655, FALSE)) { return NULL; } @@ -1692,7 +1692,7 @@ int pack_precompiled_files(Options *op, Package *p, int num_files, /* make sure the precompiled_kernel_interface_directory exists */ - mkdir_recursive(op, p->precompiled_kernel_interface_directory, 0755); + mkdir_recursive(op, p->precompiled_kernel_interface_directory, 0755, FALSE); /* use the time in the output string... should be fairly unique */ @@ -43,8 +43,8 @@ int mode_string_to_mode(Options *op, char *s, mode_t *mode); char *mode_to_permission_string(mode_t mode); int directory_exists(Options *op, const char *dir); int confirm_path(Options *op, const char *path); -int mkdir_with_log(Options *op, const char *path, const mode_t mode, int log); -int mkdir_recursive(Options *op, const char *path, const mode_t mode); +int mkdir_recursive(Options *op, const char *path, const mode_t mode, int log); +int mkdir_with_log(Options *op, const char *path, const mode_t mode); char *get_symlink_target(Options *op, const char *filename); char *get_resolved_symlink_target(Options *op, const char *filename); int install_file(Options *op, const char *srcfile, diff --git a/install-from-cwd.c b/install-from-cwd.c index c107014..523cb57 100644 --- a/install-from-cwd.c +++ b/install-from-cwd.c @@ -260,7 +260,7 @@ int install_from_cwd(Options *op) */ if (!op->kernel_module_only) { - if (!uninstall_existing_driver(op, FALSE)) goto failed; + if (!run_existing_uninstaller(op)) goto failed; } /* @@ -152,7 +152,7 @@ int determine_kernel_module_installation_path(Options *op) } } - if (!mkdir_recursive(op, op->kernel_module_installation_path, 0755)) + if (!mkdir_with_log(op, op->kernel_module_installation_path, 0755)) return FALSE; ui_expert(op, "Kernel module installation path: %s", @@ -1050,7 +1050,7 @@ int build_kernel_interface(Options *op, Package *p, uvmdir = nvstrcat(tmpdir, "/" UVM_SUBDIR, NULL); if (op->install_uvm) { - if (!mkdir_recursive(op, uvmdir, 0655)) { + if (!mkdir_recursive(op, uvmdir, 0655, FALSE)) { ui_error(op, "Unable to create a temporary subdirectory for the " "Unified Memory kernel module build."); goto failed; @@ -1478,6 +1478,7 @@ int test_kernel_module(Options *op, Package *p) if (fd >= 0) { if (read(fd, &old_loglevel, 1) == 1) { new_loglevel = '2'; /* KERN_CRIT */ + lseek(fd, 0, SEEK_SET); write(fd, &new_loglevel, 1); } } else { @@ -1600,12 +1601,15 @@ test_exit: nvfree(data); if (fd >= 0) { - if (new_loglevel != 0) + if (new_loglevel != 0) { + lseek(fd, 0, SEEK_SET); write(fd, &old_loglevel, 1); + } close(fd); } else { - if (new_loglevel != 0) + if (new_loglevel != 0) { sysctl(name, 2, NULL, 0, &old_loglevel, len); + } } /* @@ -1811,7 +1815,7 @@ PrecompiledInfo *find_precompiled_kernel_interface(Options *op, Package *p) /* make sure the target directory exists */ - if (!mkdir_recursive(op, p->kernel_module_build_directory, 0755)) + if (!mkdir_recursive(op, p->kernel_module_build_directory, 0755, FALSE)) goto failed; memset(search_filelist, 0, sizeof(search_filelist)); @@ -39,6 +39,7 @@ typedef struct _LEGACY_STRINGS { * This table describes how we should refer to legacy branches. */ static const LEGACY_STRINGS LegacyStrings[] = { + { 5, "340.xx" }, { 4, "304.xx" }, { 3, "173.14.xx" }, { 2, "96.43.xx" }, @@ -155,6 +156,12 @@ static const LEGACY_INFO LegacyList[] = { { 0x018A, 2, "Quadro NVS 280 SD" }, { 0x018B, 2, "Quadro4 380 XGL" }, { 0x018C, 2, "Quadro NVS 50 PCI" }, + { 0x0191, 5, "GeForce 8800 GTX" }, + { 0x0193, 5, "GeForce 8800 GTS" }, + { 0x0194, 5, "GeForce 8800 Ultra" }, + { 0x0197, 5, "Tesla C870" }, + { 0x019D, 5, "Quadro FX 5600" }, + { 0x019E, 5, "Quadro FX 4600" }, { 0x01A0, 2, "GeForce2 Integrated GPU" }, { 0x01D0, 4, "GeForce 7350 LE" }, { 0x01D1, 4, "GeForce 7300 LE" }, @@ -274,16 +281,288 @@ static const LEGACY_INFO LegacyList[] = { { 0x03D2, 4, "GeForce 6100 nForce 400" }, { 0x03D5, 4, "GeForce 6100 nForce 420" }, { 0x03D6, 4, "GeForce 7025 / nForce 630a" }, + { 0x0400, 5, "GeForce 8600 GTS" }, + { 0x0401, 5, "GeForce 8600 GT" }, + { 0x0402, 5, "GeForce 8600 GT" }, + { 0x0403, 5, "GeForce 8600 GS" }, + { 0x0404, 5, "GeForce 8400 GS" }, + { 0x0405, 5, "GeForce 9500M GS" }, + { 0x0406, 5, "GeForce 8300 GS" }, + { 0x0407, 5, "GeForce 8600M GT" }, + { 0x0408, 5, "GeForce 9650M GS" }, + { 0x0409, 5, "GeForce 8700M GT" }, + { 0x040A, 5, "Quadro FX 370" }, + { 0x040B, 5, "Quadro NVS 320M" }, + { 0x040C, 5, "Quadro FX 570M" }, + { 0x040D, 5, "Quadro FX 1600M" }, + { 0x040E, 5, "Quadro FX 570" }, + { 0x040F, 5, "Quadro FX 1700" }, + { 0x0410, 5, "GeForce GT 330" }, + { 0x0420, 5, "GeForce 8400 SE" }, + { 0x0421, 5, "GeForce 8500 GT" }, + { 0x0422, 5, "GeForce 8400 GS" }, + { 0x0423, 5, "GeForce 8300 GS" }, + { 0x0424, 5, "GeForce 8400 GS" }, + { 0x0425, 5, "GeForce 8600M GS" }, + { 0x0426, 5, "GeForce 8400M GT" }, + { 0x0427, 5, "GeForce 8400M GS" }, + { 0x0428, 5, "GeForce 8400M G" }, + { 0x0429, 5, "Quadro NVS 140M" }, + { 0x042A, 5, "Quadro NVS 130M" }, + { 0x042B, 5, "Quadro NVS 135M" }, + { 0x042C, 5, "GeForce 9400 GT" }, + { 0x042D, 5, "Quadro FX 360M" }, + { 0x042E, 5, "GeForce 9300M G" }, + { 0x042F, 5, "Quadro NVS 290" }, { 0x0531, 4, "GeForce 7150M / nForce 630M" }, { 0x0533, 4, "GeForce 7000M / nForce 610M" }, { 0x053A, 4, "GeForce 7050 PV / nForce 630a" }, { 0x053B, 4, "GeForce 7050 PV / nForce 630a" }, { 0x053E, 4, "GeForce 7025 / nForce 630a" }, + { 0x05E0, 5, "GeForce GTX 295" }, + { 0x05E1, 5, "GeForce GTX 280" }, + { 0x05E2, 5, "GeForce GTX 260" }, + { 0x05E3, 5, "GeForce GTX 285" }, + { 0x05E6, 5, "GeForce GTX 275" }, + { 0x05E7, 5, "Tesla C1060" }, + { 0x05E7, 5, "Tesla T10 Processor" }, + { 0x05E7, 5, "Tesla T10 Processor" }, + { 0x05E7, 5, "Tesla M1060" }, + { 0x05E7, 5, "Tesla M1060" }, + { 0x05E7, 5, "Tesla M1060" }, + { 0x05EA, 5, "GeForce GTX 260" }, + { 0x05EB, 5, "GeForce GTX 295" }, + { 0x05ED, 5, "Quadroplex 2200 D2" }, + { 0x05F8, 5, "Quadroplex 2200 S4" }, + { 0x05F9, 5, "Quadro CX" }, + { 0x05FD, 5, "Quadro FX 5800" }, + { 0x05FE, 5, "Quadro FX 4800" }, + { 0x05FF, 5, "Quadro FX 3800" }, + { 0x0600, 5, "GeForce 8800 GTS 512" }, + { 0x0601, 5, "GeForce 9800 GT" }, + { 0x0602, 5, "GeForce 8800 GT" }, + { 0x0603, 5, "GeForce GT 230" }, + { 0x0604, 5, "GeForce 9800 GX2" }, + { 0x0605, 5, "GeForce 9800 GT" }, + { 0x0606, 5, "GeForce 8800 GS" }, + { 0x0607, 5, "GeForce GTS 240" }, + { 0x0608, 5, "GeForce 9800M GTX" }, + { 0x0609, 5, "GeForce 8800M GTS" }, + { 0x0609, 5, "GeForce 8800 GS" }, + { 0x060A, 5, "GeForce GTX 280M" }, + { 0x060B, 5, "GeForce 9800M GT" }, + { 0x060C, 5, "GeForce 8800M GTX" }, + { 0x060D, 5, "GeForce 8800 GS" }, + { 0x060F, 5, "GeForce GTX 285M" }, + { 0x0610, 5, "GeForce 9600 GSO" }, + { 0x0611, 5, "GeForce 8800 GT" }, + { 0x0612, 5, "GeForce 9800 GTX/9800 GTX+" }, + { 0x0613, 5, "GeForce 9800 GTX+" }, + { 0x0614, 5, "GeForce 9800 GT" }, + { 0x0615, 5, "GeForce GTS 250" }, + { 0x0617, 5, "GeForce 9800M GTX" }, + { 0x0618, 5, "GeForce GTX 260M" }, + { 0x0619, 5, "Quadro FX 4700 X2" }, + { 0x061A, 5, "Quadro FX 3700" }, + { 0x061B, 5, "Quadro VX 200" }, + { 0x061C, 5, "Quadro FX 3600M" }, + { 0x061D, 5, "Quadro FX 2800M" }, + { 0x061E, 5, "Quadro FX 3700M" }, + { 0x061F, 5, "Quadro FX 3800M" }, + { 0x0621, 5, "GeForce GT 230" }, + { 0x0622, 5, "GeForce 9600 GT" }, + { 0x0623, 5, "GeForce 9600 GS" }, + { 0x0625, 5, "GeForce 9600 GSO 512" }, + { 0x0626, 5, "GeForce GT 130" }, + { 0x0627, 5, "GeForce GT 140" }, + { 0x0628, 5, "GeForce 9800M GTS" }, + { 0x062A, 5, "GeForce 9700M GTS" }, + { 0x062B, 5, "GeForce 9800M GS" }, + { 0x062C, 5, "GeForce 9800M GTS" }, + { 0x062D, 5, "GeForce 9600 GT" }, + { 0x062E, 5, "GeForce 9600 GT" }, + { 0x062E, 5, "GeForce GT 130" }, + { 0x0630, 5, "GeForce 9700 S" }, + { 0x0631, 5, "GeForce GTS 160M" }, + { 0x0632, 5, "GeForce GTS 150M" }, + { 0x0635, 5, "GeForce 9600 GSO" }, + { 0x0637, 5, "GeForce 9600 GT" }, + { 0x0638, 5, "Quadro FX 1800" }, + { 0x063A, 5, "Quadro FX 2700M" }, + { 0x0640, 5, "GeForce 9500 GT" }, + { 0x0641, 5, "GeForce 9400 GT" }, + { 0x0643, 5, "GeForce 9500 GT" }, + { 0x0644, 5, "GeForce 9500 GS" }, + { 0x0645, 5, "GeForce 9500 GS" }, + { 0x0646, 5, "GeForce GT 120" }, + { 0x0647, 5, "GeForce 9600M GT" }, + { 0x0648, 5, "GeForce 9600M GS" }, + { 0x0649, 5, "GeForce 9600M GT" }, + { 0x0649, 5, "GeForce GT 220M" }, + { 0x064A, 5, "GeForce 9700M GT" }, + { 0x064B, 5, "GeForce 9500M G" }, + { 0x064C, 5, "GeForce 9650M GT" }, + { 0x0651, 5, "GeForce G 110M" }, + { 0x0652, 5, "GeForce GT 130M" }, + { 0x0652, 5, "GeForce GT 240M LE" }, + { 0x0653, 5, "GeForce GT 120M" }, + { 0x0654, 5, "GeForce GT 220M" }, + { 0x0654, 5, "GeForce GT 320M" }, + { 0x0654, 5, "GeForce GT 320M" }, + { 0x0655, 5, "GeForce GT 120" }, + { 0x0656, 5, "GeForce GT 120" }, + { 0x0658, 5, "Quadro FX 380" }, + { 0x0659, 5, "Quadro FX 580" }, + { 0x065A, 5, "Quadro FX 1700M" }, + { 0x065B, 5, "GeForce 9400 GT" }, + { 0x065C, 5, "Quadro FX 770M" }, + { 0x06E0, 5, "GeForce 9300 GE" }, + { 0x06E1, 5, "GeForce 9300 GS" }, + { 0x06E2, 5, "GeForce 8400" }, + { 0x06E3, 5, "GeForce 8400 SE" }, + { 0x06E4, 5, "GeForce 8400 GS" }, + { 0x06E5, 5, "GeForce 9300M GS" }, + { 0x06E6, 5, "GeForce G100" }, + { 0x06E7, 5, "GeForce 9300 SE" }, + { 0x06E8, 5, "GeForce 9200M GS" }, + { 0x06E8, 5, "GeForce 9200M GE" }, + { 0x06E9, 5, "GeForce 9300M GS" }, + { 0x06EA, 5, "Quadro NVS 150M" }, + { 0x06EB, 5, "Quadro NVS 160M" }, + { 0x06EC, 5, "GeForce G 105M" }, + { 0x06EF, 5, "GeForce G 103M" }, + { 0x06F1, 5, "GeForce G105M" }, + { 0x06F8, 5, "Quadro NVS 420" }, + { 0x06F9, 5, "Quadro FX 370 LP" }, + { 0x06F9, 5, "Quadro FX 370 Low Profile" }, + { 0x06FA, 5, "Quadro NVS 450" }, + { 0x06FB, 5, "Quadro FX 370M" }, + { 0x06FD, 5, "Quadro NVS 295" }, + { 0x06FF, 5, "HICx16 + Graphics" }, + { 0x06FF, 5, "HICx8 + Graphics" }, { 0x07E0, 4, "GeForce 7150 / nForce 630i" }, { 0x07E1, 4, "GeForce 7100 / nForce 630i" }, { 0x07E2, 4, "GeForce 7050 / nForce 630i" }, { 0x07E3, 4, "GeForce 7050 / nForce 610i" }, - { 0x07E5, 4, "GeForce 7050 / nForce 620i" } + { 0x07E5, 4, "GeForce 7050 / nForce 620i" }, + { 0x0840, 5, "GeForce 8200M" }, + { 0x0844, 5, "GeForce 9100M G" }, + { 0x0845, 5, "GeForce 8200M G" }, + { 0x0846, 5, "GeForce 9200" }, + { 0x0847, 5, "GeForce 9100" }, + { 0x0848, 5, "GeForce 8300" }, + { 0x0849, 5, "GeForce 8200" }, + { 0x084A, 5, "nForce 730a" }, + { 0x084B, 5, "GeForce 9200" }, + { 0x084C, 5, "nForce 980a/780a SLI" }, + { 0x084D, 5, "nForce 750a SLI" }, + { 0x084F, 5, "GeForce 8100 / nForce 720a" }, + { 0x0860, 5, "GeForce 9400" }, + { 0x0861, 5, "GeForce 9400" }, + { 0x0862, 5, "GeForce 9400M G" }, + { 0x0863, 5, "GeForce 9400M" }, + { 0x0864, 5, "GeForce 9300" }, + { 0x0865, 5, "ION" }, + { 0x0866, 5, "GeForce 9400M G" }, + { 0x0866, 5, "GeForce 9400M" }, + { 0x0867, 5, "GeForce 9400" }, + { 0x0868, 5, "nForce 760i SLI" }, + { 0x0869, 5, "GeForce 9400" }, + { 0x086A, 5, "GeForce 9400" }, + { 0x086C, 5, "GeForce 9300 / nForce 730i" }, + { 0x086D, 5, "GeForce 9200" }, + { 0x086E, 5, "GeForce 9100M G" }, + { 0x086F, 5, "GeForce 8200M G" }, + { 0x0870, 5, "GeForce 9400M" }, + { 0x0871, 5, "GeForce 9200" }, + { 0x0872, 5, "GeForce G102M" }, + { 0x0872, 5, "GeForce G205M" }, + { 0x0873, 5, "GeForce G102M" }, + { 0x0873, 5, "GeForce G205M" }, + { 0x0874, 5, "ION" }, + { 0x0876, 5, "ION" }, + { 0x087A, 5, "GeForce 9400" }, + { 0x087D, 5, "ION" }, + { 0x087E, 5, "ION LE" }, + { 0x087F, 5, "ION LE" }, + { 0x08A0, 5, "GeForce 320M" }, + { 0x08A2, 5, "GeForce 320M" }, + { 0x08A3, 5, "GeForce 320M" }, + { 0x08A4, 5, "GeForce 320M" }, + { 0x08A5, 5, "GeForce 320M" }, + { 0x0A20, 5, "GeForce GT 220" }, + { 0x0A22, 5, "GeForce 315" }, + { 0x0A23, 5, "GeForce 210" }, + { 0x0A26, 5, "GeForce 405" }, + { 0x0A27, 5, "GeForce 405" }, + { 0x0A28, 5, "GeForce GT 230M" }, + { 0x0A29, 5, "GeForce GT 330M" }, + { 0x0A2A, 5, "GeForce GT 230M" }, + { 0x0A2B, 5, "GeForce GT 330M" }, + { 0x0A2C, 5, "NVS 5100M" }, + { 0x0A2D, 5, "GeForce GT 320M" }, + { 0x0A32, 5, "GeForce GT 415" }, + { 0x0A34, 5, "GeForce GT 240M" }, + { 0x0A35, 5, "GeForce GT 325M" }, + { 0x0A38, 5, "Quadro 400" }, + { 0x0A3C, 5, "Quadro FX 880M" }, + { 0x0A60, 5, "GeForce G210" }, + { 0x0A62, 5, "GeForce 205" }, + { 0x0A63, 5, "GeForce 310" }, + { 0x0A64, 5, "Second Generation ION" }, + { 0x0A65, 5, "GeForce 210" }, + { 0x0A66, 5, "GeForce 310" }, + { 0x0A67, 5, "GeForce 315" }, + { 0x0A68, 5, "GeForce G105M" }, + { 0x0A69, 5, "GeForce G105M" }, + { 0x0A6A, 5, "NVS 2100M" }, + { 0x0A6C, 5, "NVS 3100M" }, + { 0x0A6E, 5, "GeForce 305M" }, + { 0x0A6E, 5, "Second Generation ION" }, + { 0x0A6F, 5, "Second Generation ION" }, + { 0x0A70, 5, "GeForce 310M" }, + { 0x0A70, 5, "Second Generation ION" }, + { 0x0A70, 5, "Second Generation ION" }, + { 0x0A71, 5, "GeForce 305M" }, + { 0x0A72, 5, "GeForce 310M" }, + { 0x0A73, 5, "GeForce 305M" }, + { 0x0A73, 5, "Second Generation ION" }, + { 0x0A73, 5, "Second Generation ION" }, + { 0x0A74, 5, "GeForce G210M" }, + { 0x0A74, 5, "GeForce G210" }, + { 0x0A75, 5, "GeForce 310M" }, + { 0x0A75, 5, "Second Generation ION" }, + { 0x0A76, 5, "Second Generation ION" }, + { 0x0A78, 5, "Quadro FX 380 LP" }, + { 0x0A7A, 5, "GeForce 315M" }, + { 0x0A7A, 5, "GeForce 405" }, + { 0x0A7A, 5, "GeForce 405M" }, + { 0x0A7A, 5, "GeForce 405M" }, + { 0x0A7A, 5, "GeForce 405" }, + { 0x0A7A, 5, "GeForce 405" }, + { 0x0A7A, 5, "GeForce 405" }, + { 0x0A7A, 5, "GeForce 405" }, + { 0x0A7A, 5, "GeForce 405" }, + { 0x0A7A, 5, "GeForce 405" }, + { 0x0A7A, 5, "GeForce 405" }, + { 0x0A7C, 5, "Quadro FX 380M" }, + { 0x0CA0, 5, "GeForce GT 330" }, + { 0x0CA2, 5, "GeForce GT 320" }, + { 0x0CA3, 5, "GeForce GT 240" }, + { 0x0CA4, 5, "GeForce GT 340" }, + { 0x0CA5, 5, "GeForce GT 220" }, + { 0x0CA7, 5, "GeForce GT 330" }, + { 0x0CA8, 5, "GeForce GTS 260M" }, + { 0x0CA9, 5, "GeForce GTS 250M" }, + { 0x0CAC, 5, "GeForce GT 220" }, + { 0x0CAF, 5, "GeForce GT 335M" }, + { 0x0CB0, 5, "GeForce GTS 350M" }, + { 0x0CB1, 5, "GeForce GTS 360M" }, + { 0x0CBC, 5, "Quadro FX 1800M" }, + { 0x10C0, 5, "GeForce 9300 GS" }, + { 0x10C3, 5, "GeForce 8400GS" }, + { 0x10C5, 5, "GeForce 405" }, + { 0x10D8, 5, "NVS 300" } }; #endif /* __NV_LEGACY_H */ diff --git a/nvidia-installer.c b/nvidia-installer.c index db336b0..2a45222 100644 --- a/nvidia-installer.c +++ b/nvidia-installer.c @@ -131,7 +131,6 @@ static Options *load_default_options(void) /* statically initialized strings */ op->proc_mount_point = DEFAULT_PROC_MOUNT_POINT; - op->log_file_name = DEFAULT_LOG_FILE_NAME; op->ftp_site = DEFAULT_FTP_SITE; op->tmpdir = get_tmpdir(op); @@ -498,7 +497,18 @@ static void parse_commandline(int argc, char *argv[], Options *op) if (!op->installer_prefix) { op->installer_prefix = op->utility_prefix; } - + + /* + * Set the default log file path. This is deferred until after the + * command line has been parsed so that the installer has a chance + * to determine whether it should be run in uninstall mode. + */ + + if (!op->log_file_name) { + op->log_file_name = op->uninstall ? DEFAULT_UNINSTALL_LOG_FILE_NAME : + DEFAULT_LOG_FILE_NAME; + } + return; fail: diff --git a/nvidia-installer.h b/nvidia-installer.h index e947c87..fdb1ddf 100644 --- a/nvidia-installer.h +++ b/nvidia-installer.h @@ -497,6 +497,7 @@ typedef struct __package { #define LICENSE_FILE "LICENSE" #define DEFAULT_LOG_FILE_NAME "/var/log/nvidia-installer.log" +#define DEFAULT_UNINSTALL_LOG_FILE_NAME "/var/log/nvidia-uninstall.log" #define NUM_TIMES_QUESTIONS_ASKED 3 @@ -1 +1 @@ -NVIDIA_VERSION = 340.24 +NVIDIA_VERSION = 343.13 |