Changeset 369 in xtideuniversalbios for trunk/Serial_Server/win32
- Timestamp:
- Mar 29, 2012, 9:29:28 AM (13 years ago)
- google:author:
- gregli@hotmail.com
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Serial_Server/win32/Win32.cpp
r338 r369 17 17 #include "../library/flatimage.h" 18 18 19 void usage(void) 20 { 21 char *usageStrings[] = { 22 "SerDrive - XTIDE Universal BIOS Serial Drive Server", 23 "Version 2.0.0 Beta1, Built " __DATE__, 24 "", 25 "SerDrive is released under the GNU GPL v2. SerDrive comes with ABSOLUTELY", 26 "NO WARRANTY. This is free software, and you are welcome to redistribute it", 27 "under certain conditions. See LICENSE.TXT (included with this distribution)", 28 "for more details, or visit http://www.gnu.org/licenses/gpl-2.0.html.", 29 "", 30 "Usage: SerDrive [options] imagefile [[slave-options] slave-imagefile]", 31 "", 32 " -g [cyl:head:sect] Geometry in cylinders, sectors per cylinder, and heads", 33 " -g also implies CHS addressing mode (default is LBA28)", 34 "", 35 " -n [megabytes] Create new disk with given size or use -g geometry", 36 " Maximum size is " USAGE_MAXSECTORS, 37 " Floppy images can also be created, such as \"360K\"", 38 " (default is a 32 MB disk, with CHS geometry 65:16:63)", 39 "", 40 " -p [pipename] Named Pipe mode for emulators", 41 " (must begin with \"\\\\\", default is \"" PIPENAME "\")", 42 "", 43 " -c COMPortNumber COM Port to use (default is first found)", 44 " Available COM ports on this system are:", 45 "COM ", 46 "", 47 " -b BaudRate Baud rate to use on the COM port, with client machine", 48 " rate multiplier in effect:", 49 " None: 2400, 4800, 9600, 28.8K, 57.6K, 115.2K", 50 " 2x: 4800, 9600, 19200, 57.6K, 115.2K, 230.4K", 51 " 4x: 9600, 19200, 38400, 115.2K, 230.4K, 460.8K", 52 " and for completeness: 76.8K, 153.6K", 53 " (default is 9600, 115.2K when in named pipe mode)", 54 "", 55 " -t Disable timeout, useful for long delays when debugging", 56 "", 57 " -r Read Only disk, do not allow writes", 58 "", 59 " -v [level] Reporting level 1-6, with increasing information", 60 "", 61 "On the client computer, a serial port can be configured for use as a hard disk", 62 "with xtidecfg.com. Or one can hold down the ALT key at the end of the normal", 63 "IDE hard disk scan and the XTIDE Universal BIOS will scan COM1-7, at each of", 64 "the six speeds given above for BaudRate. Note that hardware rate multipliers", 65 "must be taken into account on the server end, but are invisible on the client.", 66 "", 67 "Floppy images may also be used. Image size must be exactly the same size", 68 "as a 2.88MB, 1.44MB, 1.2MB, 720KB, 360KB, 320KB, 180KB, or 160KB disk.", 69 "Floppy images must be the last disks discovered by the BIOS, and only", 70 "two floppy drives are supported by the BIOS at a time.", 71 NULL }; 72 73 for( int t = 0; usageStrings[t]; t++ ) 74 { 75 if( !strncmp( usageStrings[t], "COM", 3 ) ) 19 char *bannerStrings[] = { 20 "SerDrive - XTIDE Universal BIOS Serial Drive Server", 21 "Copyright (C) 2012 by XTIDE Universal BIOS Team", 22 "Released under GNU GPL v2, with ABSOLUTELY NO WARRANTY", 23 "Version 2.0.0 Beta1, Built " __DATE__, 24 "", 25 NULL }; 26 27 char *usageStrings[] = { 28 "This is free software, and you are welcome to redistribute it under certain", 29 "conditions. For more license details, see the LICENSE.TXT file included with", 30 "this distribution, visit the XTIDE Universal BIOS wiki (address below), or", 31 "http://www.gnu.org/licenses/gpl-2.0.html", 32 "", 33 "Visit the wiki on http://code.google.com/p/xtideuniversalbios for detailed", 34 "serial drive usage directions.", 35 "", 36 "Usage: SerDrive [options] imagefile [[slave-options] slave-imagefile]", 37 "", 38 " -g [cyl:head:sect] Geometry in cylinders, sectors per cylinder, and heads", 39 " -g also implies CHS addressing mode (default is LBA28)", 40 "", 41 " -n [megabytes] Create new disk with given size or use -g geometry", 42 " Maximum size is " USAGE_MAXSECTORS, 43 " Floppy images can also be created, such as \"360K\"", 44 " (default is a 32 MB disk, with CHS geometry 65:16:63)", 45 "", 46 " -p [pipename] Named Pipe mode for emulators", 47 " (must begin with \"\\\\\", default is \"" PIPENAME "\")", 48 "", 49 " -c COMPortNumber COM Port to use (default is first found)", 50 " Available COM ports on this system are:", 51 "COM ", 52 "", 53 " -b BaudRate Baud rate to use on the COM port, with client machine", 54 " rate multiplier in effect:", 55 " None: 2400, 4800, 9600, 28.8K, 57.6K, 115.2K", 56 " 2x: 4800, 9600, 19200, 57.6K, 115.2K, 230.4K", 57 " 4x: 9600, 19200, 38400, 115.2K, 230.4K, 460.8K", 58 " and for completeness: 76.8K, 153.6K", 59 " (default is 9600, 115.2K when in named pipe mode)", 60 "", 61 " -t Disable timeout, useful for long delays when debugging", 62 "", 63 " -r Read Only disk, do not allow writes", 64 "", 65 " -v [level] Reporting level 1-6, with increasing information", 66 "", 67 "On the client computer, a serial port can be configured for use as a hard disk", 68 "with xtidecfg.com. Or one can hold down the ALT key at the end of the normal", 69 "IDE hard disk scan and the XTIDE Universal BIOS will scan COM1-7, at each of", 70 "the six speeds given above for BaudRate. Note that hardware rate multipliers", 71 "must be taken into account on the server end, but are invisible on the client.", 72 "", 73 "Floppy images may also be used. Image size must be exactly the same size", 74 "as a 2.88MB, 1.44MB, 1.2MB, 720KB, 360KB, 320KB, 180KB, or 160KB disk.", 75 "Floppy images must be the last disks discovered by the BIOS, and only", 76 "two floppy drives are supported by the BIOS at a time.", 77 NULL }; 78 79 void usagePrint( char *strings[] ) 80 { 81 for( int t = 0; strings[t]; t++ ) 82 { 83 if( !strncmp( strings[t], "COM", 3 ) ) 76 84 { 77 85 char logbuff[ 1024 ]; 78 86 79 87 SerialAccess::EnumerateCOMPorts( logbuff, 1024 ); 80 fprintf( stderr, "%s%s\n", usageStrings[t]+3, logbuff );88 fprintf( stderr, "%s%s\n", strings[t]+3, logbuff ); 81 89 } 82 90 else 83 fprintf( stderr, "%s\n", usageStrings[t] );84 } 85 86 exit( 1 ); 87 }91 fprintf( stderr, "%s\n", strings[t] ); 92 } 93 } 94 95 #define usage() { usagePrint( usageStrings ); exit(1); } 88 96 89 97 int verbose = 0; … … 115 123 Image *images[2] = { NULL, NULL }; 116 124 125 usagePrint( bannerStrings ); 126 117 127 for( int t = 1; t < argc; t++ ) 118 128 { 129 char *next = (t+1 < argc ? argv[t+1] : NULL ); 130 119 131 if( argv[t][0] == '/' || argv[t][0] == '-' ) 120 132 { … … 128 140 { 129 141 case 'c': case 'C': 130 a = atol( argv[++t] ); 142 if( !next ) 143 usage(); 144 t++; 145 a = atol( next ); 131 146 if( a < 1 ) 132 147 usage(); … … 135 150 break; 136 151 case 'v': case 'V': 137 if( atol(argv[t+1]) != 0 ) 138 verbose = atol(argv[++t]); 152 if( next && atol(next) != 0 ) 153 { 154 t++; 155 verbose = atol(next); 156 } 139 157 else 140 158 verbose = 1; … … 144 162 break; 145 163 case 'p': case 'P': 146 if( argv[t+1][0] == '\\' && argv[t+1][1] == '\\' ) 147 ComPort = argv[++t]; 164 if( next && next[0] == '\\' && next[1] == '\\' ) 165 { 166 t++; 167 ComPort = next; 168 } 148 169 else 149 170 ComPort = PIPENAME; … … 152 173 break; 153 174 case 'g': case 'G': 154 if( atol(argv[t+1]) != 0 )175 if( next && atol(next) != 0 ) 155 176 { 156 if( !Image::parseGeometry( argv[++t], &cyl, &head, § ) ) 177 t++; 178 if( !Image::parseGeometry( next, &cyl, &head, § ) ) 157 179 usage(); 158 180 } … … 164 186 case 'n': case 'N': 165 187 createFile = 1; 166 if( atol(argv[t+1]) != 0 )188 if( next && atol(next) != 0 ) 167 189 { 168 double size = atof( argv[++t]);190 double size = atof(next); 169 191 struct floppyInfo *fi; 170 192 char *c; 193 194 t++; 171 195 172 196 size *= 2; … … 193 217 break; 194 218 case 'b': case 'B': 195 if( !(baudRate = baudRateMatchString( argv[++t] )) || !baudRate->rate ) 196 log( -2, "Unknown Baud Rate \"%s\"", argv[t] ); 219 if( !next ) 220 usage(); 221 t++; 222 if( !(baudRate = baudRateMatchString( next )) || !baudRate->rate ) 223 log( -2, "Unknown Baud Rate \"%s\"", next ); 197 224 break; 198 225 default:
Note:
See TracChangeset
for help on using the changeset viewer.