From: <per...@us...> - 2016-05-10 03:26:12
|
Revision: 1737 http://sourceforge.net/p/freedos/svn/1737 Author: perditionc Date: 2016-05-10 03:26:11 +0000 (Tue, 10 May 2016) Log Message: ----------- Update sys with kernel config version view and handle readonly kernel better. Modified Paths: -------------- kernel/trunk/sys/fdkrncfg.c Modified: kernel/trunk/sys/fdkrncfg.c =================================================================== --- kernel/trunk/sys/fdkrncfg.c 2016-02-06 03:39:24 UTC (rev 1736) +++ kernel/trunk/sys/fdkrncfg.c 2016-05-10 03:26:11 UTC (rev 1737) @@ -13,9 +13,7 @@ * merged into SYS by tom ehlert * ***************************************************************************/ -/* This source compiled & tested with Borland C/C++ 3.1 + TC 2.01*/ - -char VERSION[] = "v1.00"; +char VERSION[] = "v1.02"; char PROGRAM[] = "SYS CONFIG"; char KERNEL[] = "KERNEL.SYS"; @@ -123,6 +121,10 @@ exit(1); } + /* check if config settings old UPX header and adjust */ + if (cfg->ConfigSize == 19) + cfg->ConfigSize = 14; /* ignore 'nused87654321' */ + return 1; } @@ -148,38 +150,51 @@ { /* print known options and current value - only if available */ + /* show kernel version if available, read only, no option to modify */ + if (cfg->ConfigSize >= 20) + { + printf + ("%s kernel %s (build %d.%d OEM:%02X)\n", + (cfg->Version_OemID == 0xFD)?"FreeDOS":"DOS-C", + cfg->Version_Release?"SVN":"Release", + cfg->Version_Major, + cfg->Version_Revision, + cfg->Version_OemID + ); + } + if (cfg->ConfigSize >= 1) { printf - ("DLASORT=0x%02X Sort disks by drive order: *0=no, 1=yes\n", + ("DLASORT=0x%02X Sort disks by drive order: *0=no, 1=yes\n", cfg->DLASortByDriveNo); } if (cfg->ConfigSize >= 2) { printf - ("SHOWDRIVEASSIGNMENT=0x%02X Show how drives assigned: *1=yes 0=no\n", + ("SHOWDRIVEASSIGNMENT=0x%02X Show how drives assigned: *1=yes 0=no\n", cfg->InitDiskShowDriveAssignment); } if (cfg->ConfigSize >= 3) { printf - ("SKIPCONFIGSECONDS=%-3d time to wait for F5/F8 : *2 sec (skip < 0)\n", + ("SKIPCONFIGSECONDS=%-3d time to wait for F5/F8: *2 sec (skip < 0)\n", cfg->SkipConfigSeconds); } if (cfg->ConfigSize >= 4) { printf - ("FORCELBA=0x%02X Always use LBA if possible: *0=no, 1=yes\n", + ("FORCELBA=0x%02X Always use LBA if possible: *0=no, 1=yes\n", cfg->ForceLBA); } if (cfg->ConfigSize >= 5) { printf - ("GLOBALENABLELBASUPPORT=0x%02X Enable LBA support: *1=yes, 0=no\n", + ("GLOBALENABLELBASUPPORT=0x%02X Enable LBA support: *1=yes, 0=no\n", cfg->GlobalEnableLBAsupport); } @@ -348,6 +363,7 @@ char *kfilename = KERNEL; int kfile; int updates = 0; /* flag used to indicate if we need to update kernel */ + int readonly = 0; /* flag indicates kernel was opened read-only */ int argstart, i; char *cptr; char *argptr; @@ -355,7 +371,7 @@ printf("FreeDOS Kernel Configuration %s\n", VERSION); /* 1st go through and just process arguments (help/filename/etc) */ - for (i = 2; i < argc; i++) + for (i = 1; i < argc; i++) { argptr = argv[i]; @@ -376,6 +392,10 @@ exit(1); } } + else if (memicmp(argptr, "CONFIG", 6) == 0) + { + /* ignore */ + } } argstart = 2; @@ -400,8 +420,15 @@ kfile = open(kfilename, O_RDWR | O_BINARY); if (kfile < 0) - printf("Error: unable to open kernel file <%s>\n", kfilename), exit(1); + { + /* attempt to open read only to allow viewing options */ + kfile = open(kfilename, O_RDONLY | O_BINARY); + readonly = 1; + if (kfile < 0) + printf("Error: unable to open kernel file <%s>\n", kfilename), exit(1); + } + /* now that we know the filename (default or given) get config info */ readConfigSettings(kfile, kfilename, &cfg); @@ -454,8 +481,16 @@ } } + /* warn user if attempt to modify read-only file */ + if (updates && readonly) + { + printf("Kernel %s opened read-only, changes ignored!\n", kfilename); + /* reload current settings, ignore newly requested ones */ + readConfigSettings(kfile, kfilename, &cfg); + } + /* write out new config values if modified */ - if (updates) + if (updates && !readonly) { /* update it */ if (writeConfigSettings(kfile, &cfg)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |