Change Version 2.19 (02.08.96) This program gives you the ability to search for different strings in files and to replace them with other string. The file could be binary or ascii. An example is if you change your harddisk and then most of the old path names also change. Normally you have to do this file for file by hand. With change it's much more easier! Only use change in a script with all (or all needed) files and the replacement is done. Change is programmed with MaxonC++ V3.00 (but mostly in C and not C++) and it's Public Domain. I give all rights of the program to the user, but the same way I give no guarantee that the program works well. Use it of your own risk! Since version 2.0 Change has a GUI. The elements of the GUI are the same like the Shell arguments! You can start Change with GUI from WB or from Shell without arguments. If you give arguments in the shell, Change will work with this arguments without opening a window! The program requires OS2.0 (V37) or any later version. The history of the program is in the source code -> source/Change/Change.c If you call Change with ?(»Change ?«) you get the following argument list: FROM/A,SSTRING/A,TO,RSTRING,FOUND/S,HEX/S,LENGTH/S,NOCHANGE/S,NOSIZE/S, OVERWRITE/S,PATH/S,POS=POSITION/K: Enter again a ? and you will get a better explanation. With »Version Change FULL« you get the actual version of this program. Thats useful for updating. Explanation of arguments: FROM the already existing file Change should work with > needed every time ! SSTRING is the string Change should search for > needed every time ! TO the file Change should write to if it's the same like FROM (or their is no TO) it will be overwritten! (only if there is enough memory to load it, else the name will get _ at the end) > needed every time (not with option NOCHANGE) RSTRING is the replacement for SSTRING > not needed, if not given an empty string is used FOUND gives you every tim SSTRING is found or changed a output (for example: String found at 32C). The number is the hexa- decimal code of the position. > not needed, of no use with NOCHANGE HEX gives you the posibility to enter the strings as hex numbers. (Some chars can't be entered with the keyboard - RETURN - 0A for example) > not needed LENGTH changes the length information of a BCPL string (first character contains length of string) > not needed, of no use with NOCHANGE and same length of of the strings, idiotic with a normal C-string (with 0 at end) NOCHANGE turn of the replacement, only search SSTRING like Search command in C:, Option FOUND automatical turned on > not needed, Options TO, LENGTH, OVERWRITE, PATH, RSTRING not useable NOSIZE scan case insensitiv > not needed OVERWRITE If RSTRING is longer than SSTRING the chars after RSSTRING will be replaced, if RSTRING is shorter, the rest will be filled with 0. This option is useful if you change strings in executable filles, because the length can't be changed > not needed, of no use with same length of the strings PATH Option to replace path names. It's like overwrite, but the filling or overwriting starts first, when a 0 is found after the replacement! > turned of with OVERWRITE or same length of strings POS see POSITION POSITION After POSITION you have to give a hex number of the position you want to change sstring. If there is no sstring at this position no replacement would be done. A position you can get before that with the option NOCHANGE > not needed, of no use with NOCHANGE If you give no keywords, the first string is FROM, the second SSTRING, the third TO and the fourth RSTRING. Change also works with a pattern. If there is a \? in the text (or a ? in HEX mode) at this position every char will be accepted! Important: \? is the pattern \\ means one \ \ and after this a hex number with 2 digits means the char given through the ascii-code(f.i. \57 is a W) (see the examples) If you enter strings with HEX option all chars of no use are ignored. Only (0..9 a..f A..F ?) will be recognized. This means you can enter slashes between the chars to make it better visible. 123a4b52349f009a is the same as 123a_4b52_349f_009a or 123a.4b52.349f.009a or 1-2-3-a-4-b-5-2-3-4-9-f-0-0-9-a. At the program start Change tells you the two strings it works with. Chars from 20 to 7E and from A1 to FF will be shown like given. . means a non printable char and _ means a pattern. At the end the program gives you a status report of the done work: String ... times found and ... times changed Examples: You want to search in the file SYS:Texts/S the name Intel: --> Change SYS:Texts/S Intel NOCHANGE With hex option it looks like this: --> Change SYS:Texts/S 496E74_656C NOCHANGE HEX If you want to change Intel to Motorola you must give me a destination (SYS:Texts/S2) and remove NOCHANGE: --> Change SYS:Texts/S Intel SYS:Texts/S2 Motorola With NOSIZE you can also scan for intel, InTeL, INTEL and other forms, FOUND shows you the position of the string: --> Change SYS:Texts/S Intel SYS:Texts/S2 Motorola NOSIZE FOUND Use the CD command before that, so the arguments will be shorter Befehl: --> CD SYS:Texts Change S Intel S2 Motorola NOSIZE FOUND If you want to replace wrong written word MoToRoLa or motorola with the capitalized version Motorola, use this (remember NOSIZE doesn't change the destination string): --> Change S motorola S2 Motorola NOSIZE If Intel should be replaced only at one position so use POSITION: --> Change S Intel S2 Motorola POSITION D3 NOSIZE Alternativly use POS: --> Change S Intel S2 Motorola POS D3 NOSIZE If the strings contain spaces use "": --> Change S "Intel is good" S2 "Motorola is better" You can also delete the SSTRING in the file: --> Change S Intel S2 "" or --> Change S Intel S2 If you want to replace words, which don't differ very much (Disk and Disc with discette) so use a Pattern: --> Change S Dis\? S2 discette or --> Change S 446973? S2 64697363_65747465 If you want to search for a \ so enter they every time twice. (6 instead of 3 ...) --> Change S \\ S2 / --> changes \ to / --> Change S \\\\ S2 // --> changes \\ to // --> Change S \\? S2 /? --> changes \? to /? (no pattern !) but rememeber: --> Change S \? S2 /? --> changes every char to /? If SSTRING is "" an error appears. Plans for the future: The pattern * for a variable number of chars or the standard Amiga patterns, like #, ~, (). Localisation and together with this german texts (The OS errors are already localized by the OS!). Comments, wishes, money (its Public Domain, but why not), greetings and bug reports to **************************************************************************** * snail-mail: * e-mail: * * Dirk Stoecker * stoecker@rcs.urz.tu-dresden.de * * Geschwister-Scholl-Str. 10 * phone: * * 01877 Bischofswerda * GERMANY 03594/706666 * * GERMANY * world wide web: * * * http://rcs.urz.tu-dresden.de/~stoecker/ * ****************************************************************************