├── AUTHORS ├── COPYING ├── ChangeLog ├── INSTALL ├── Makefile.am ├── Makefile.bc ├── Makefile.in ├── NEWS ├── README ├── aclocal.m4 ├── catgets.c ├── config-h.bc ├── config-h.ow ├── config.guess ├── config.h.in ├── config.sub ├── configure ├── configure.in ├── defines.c ├── defines.h ├── depcomp ├── dynarray.h ├── dynstr.c ├── dynstr.h ├── edlib.c ├── edlib.h ├── edlin-ja.htm ├── edlin-ja.txt ├── edlin.c ├── edlin.htm ├── edlin.lsm ├── edlin.tgt ├── edlin.wpj ├── install-sh ├── kit2msgs.c ├── kitten.c ├── kitten.h ├── kitten ├── edlin.da ├── edlin.de ├── edlin.en ├── edlin.eo ├── edlin.es ├── edlin.eu ├── edlin.fi ├── edlin.fr ├── edlin.is ├── edlin.it ├── edlin.ja ├── edlin.la ├── edlin.nl ├── edlin.no ├── edlin.pl ├── edlin.pt ├── edlin.sv └── edlin.tr ├── malloc.c ├── missing ├── mkinstalldirs ├── msgs-da.h ├── msgs-de.h ├── msgs-de2.h ├── msgs-en.h ├── msgs-eo.h ├── msgs-es.h ├── msgs-eu.h ├── msgs-fi.h ├── msgs-fr.h ├── msgs-is.h ├── msgs-it.h ├── msgs-ja.h ├── msgs-la.h ├── msgs-nl.h ├── msgs-no.h ├── msgs-pl.h ├── msgs-pt.h ├── msgs-sv.h ├── msgs-tr.h ├── msgs.h ├── msgscats.h ├── nl_types.h ├── ow.bat ├── realloc.c └── todo /AUTHORS: -------------------------------------------------------------------------------- 1 | Gregory Pietsch 2 | Jim Hall 3 | Michael Kallas 4 | Eric Auer 5 | Aitor SANTAMARIA_MERINO 6 | Roberto Mariottini 7 | Maurizio Spagni 8 | Bernd Blaauw 9 | Bart Oldeman 10 | Suzu Minashiro 11 | Dutra de Lacerda -------------------------------------------------------------------------------- /ChangeLog: -------------------------------------------------------------------------------- 1 | 2007-06-02 Gregory Pietsch 2 | * Fixed spelling mistakes -- grrr! 3 | * ow.bat - changed to reflect new version. 4 | * config-h.ow and config-h.bc - regenerated. 5 | * Version 2.10c released. 6 | 7 | 2007-05-29 Gregory Pietsch 8 | * kitten/edlin.eo - New file - A translation of the message strings 9 | into Esperanto. Thanks, rugxulo! 10 | * msgs-eo.h - New file - generated from kitten/edlin.eo. 11 | * ow.bat - changed to reflect new directory. 12 | * Version 2.10b released. 13 | 14 | 2007-05-28 Gregory Pietsch 15 | * dynarray.h - debugged. Grrrr.... 16 | * ow.bat - Replaced with new version. 17 | * Version 2.10a released. 18 | 19 | 2007-05-26 Gregory Pietsch 20 | * kitten/edlin.la -- New file - A translation into Latin. 21 | * msgs-la.h - New file - generated from kitten/edlin.la. 22 | * dynstr.c dynstr.h - New create/destroy functions added. 23 | * dynarray.h - Threw lots of #defines in there to placate 24 | the indent program. 25 | * Version 2.10 released. 26 | 27 | 2006-11-26 Gregory Pietsch 28 | * kit2msgs.c -- Added this little filter program. 29 | * kitten/edlin.da kitten/edlin.de kitten/edlin.es 30 | kitten/edlin.eu kitten/edlin.fi kitten/edlin.fr 31 | kitten/edlin.is kitten/edlin.it kitten/edlin.ja 32 | kitten/edlin.nl kitten/edlin.no kitten/edlin.pt 33 | kitten/edlin.sv -- Replaced with versions from 34 | the NLS project. 35 | * kitten/edlin.pl -- New file - A translation into 36 | Polish (from the NLS project). 37 | * msgs-pl.h -- New file. Generated with kit2msgs 38 | from kitten/edlin.pl. 39 | * msgs-da.h msgs-de.h msgs-es.h msgs-eu.h msgs-fi.h 40 | msgs-fr.h msgs-is.h msgs-it.h msgs-ja.h msgs-nl.h 41 | msgs-no.h msgs-pt.h msgs-sv.h -- Generated with 42 | kit2msgs from the respective kitten files. 43 | * ow.bat -- New file from . Intended as an 44 | aid to compiling under OpenWatcom. 45 | * config-h.bc config-h.ow -- Regenerated. 46 | * Version 2.9A released. 47 | 48 | 2006-10-15 Gregory Pietsch 49 | * edlib.c (insert_block) -- Fixed bug discovered by 50 | Joris van Rantwijk. 51 | * Version 2.9 released. 52 | 53 | 2005-11-15 Gregory Pietsch 54 | * msgs-pt.h kitten/edlin.pt -- Portuguese translations corrected. 55 | Thanks, Dutra de Lacerda ! 56 | 57 | 2005-10-27 Gregory Pietsch 58 | * kitten.c kitten.h kitten/edlin.da kitten/edlin.de 59 | kitten/edlin.en kitten/edlin.es kitten/edlin.eu 60 | kitten/edlin.fi kitten/edlin.fr kitten/edlin.is 61 | kitten/edlin.it kitten/edlin.ja kitten/edlin.nl 62 | kitten/edlin.no kitten/edlin.pt kitten/edlin.sv -- added. 63 | catgets.c nl_types.h -- added. 64 | msgscats.h -- added. 65 | edlin.c -- Modified to add message catalog initialization. 66 | All of this is to support message catalogs. This whole bit 67 | was inspired by Blair Campbell, who modified the 2.6 version 68 | in his own way to add message catalogs. 69 | * malloc.c realloc.c -- added. These are replacements for 70 | similarly-named functions in the standard library from 71 | the libit project. 72 | 73 | 2005-07-20 Gregory Pietsch 74 | * Changed the address for the Free Software Foundation in the 75 | source files. 76 | * COPYING : Got latest version from Free Software Foundation. 77 | * dynarray.h dynstr.c : Fixed so that the program compiles cleanly 78 | with "gcc -Wall --pedantic". This involved adding a few 79 | parentheses and braces in a few places. 80 | * TODO : This file was missing from 2.5. Re-adding it ... grrr! 81 | * Version 2.6 released. 82 | 83 | 2005-04-30 Gregory Pietsch 84 | * dynarray.h : Added comments. 85 | * edlib.c : Added functions file_exists, make_bakfile. 86 | * Added checks for unistd.h, access, link, rename, and unlink 87 | to the configure script. 88 | * Version 2.5 released. 89 | 90 | 2005-01-16 Gregory Pietsch 91 | * Discovered Japanese files were missing from 2.3. Re-added them... 92 | grrr! 93 | * Added checks for the iskanji() function and the header 94 | to the configure script. 95 | * edlib.c : Modified to include a substitute iskanji() function. 96 | * Version 2.4 released. 97 | 98 | 2004-09-04 Gregory Pietsch 99 | * Added Japanese port (msgs-ja.h, edlin-ja.htm, edlin-ja.txt) 100 | based on work by . His work was based 101 | on version 2.1. 102 | * edlib.c : Modified to include SHIFT_JIS code from the 103 | Japanese port. 104 | * Version 2.3 released. 105 | 106 | 2004-08-09 Gregory Pietsch 107 | * Checked my msgs-de.h file against Eric Auer's msgs-de2.h 108 | and fixed an umlaut problem in msgs-de.h. 109 | * Version 2.2A released. 110 | 111 | 2004-05-09 Gregory Pietsch 112 | * Added Eric Auer's original umlaut-less msgs-de.h as msgs-de2.h. 113 | * Added support for decimal escape sequences. 114 | * Version 2.2 released. 115 | 116 | 2003-09-21 Gregory Pietsch 117 | * Added new version of dynstr.c and dynstr.h. 118 | * defines.h defines.c dynarray.h : added. 119 | * error.h error.c xmalloc.h xmalloc.c : dropped. 120 | * edlin.c edlib.c : modified. 121 | * Added patches from Bart Oldeman . 122 | * Version 2.1 released. 123 | 124 | 2003-08-23 Gregory Pietsch 125 | * Version 2.0C released. 126 | 127 | 2003-07-14 Gregory Pietsch 128 | * msgs-nl.h : Got fixed translation of the msgs.h file into 129 | Dutch from Bernd Blaauw . 130 | 131 | 2003-06-29 Gregory Pietsch 132 | * msgs-fi.h : New file -- draft translation of the msgs.h file 133 | into Finnish. 134 | * msgs-sv.h : New file -- draft translation of the msgs.h file 135 | into Swedish. 136 | * Version 2.0B released. 137 | 138 | 2003-06-22 Gregory Pietsch 139 | * msgs-pt.h : Fixed Portuguese draft. 140 | * msgs-eu.h : I asked for it, I got it: a translation of the 141 | msgs.h file into Basque! Thanks, Aitor Santamaria Merino! 142 | * msgs-de.h : Modified Eric Auer's translation to include umlauts. 143 | * TODO : For some reason, this file was missing from 2.0A. Added 144 | the status of the internationalization project. 145 | * msgs-da.h : New file -- draft translation of the msgs.h file 146 | into Danish. 147 | 148 | 2003-06-19 Gregory Pietsch 149 | * msgs-no.h : New translation of the msgs.h file into 150 | Norwegian. As usual, this is a draft. 151 | * msgs-is.h : New translation of the msgs.h file into 152 | Icelandic. As usual, this is a draft. 153 | * Version 2.0A released. 154 | 155 | 2003-06-18 Gregory Pietsch 156 | * msgs-it.h msgs-fr.h : Fixed these files based on 157 | e-mails from Maurizio Spagni , 158 | Roberto Mariottini , 159 | Salvo Isaja , and 160 | Achille Foulleul . Thanks 161 | everyone for the new translations! 162 | * msgs-pt.h : New translation of the message file into 163 | Portuguese. As usual, this is a draft. 164 | 165 | 2003-06-14 Gregory Pietsch 166 | * msgs-it.h : New translation of the message file into Italian. 167 | The usual caveats apply; the translation might not be any good, 168 | but who knows? 169 | * msgs-es.h : New translation from Aitor SANTAMARIA_MERINO 170 | . This replaces the "broken" Spanish 171 | translation. 172 | * Makefile.am : Added msgs-it.h into EXTRA_DIST area. 173 | * Version 2.0 released. 174 | 175 | 2003-06-13 Gregory Pietsch 176 | * msgs-es.h msgs-fr.h : New translations of the message file into 177 | Spanish and French, respectively. These translations are broken 178 | since my translating abilities aren't very good. Any volunteers? 179 | * Renamed program to edlin. 180 | * edlin.c : New file - renamed from edline.c. 181 | * edlin.htm : New file - renamed from edline.htm. 182 | * Makefile.am : Add msgs-es.h and msgs-fr.h into EXTRA_DIST area. 183 | * NEWS : Modified. 184 | 185 | 2003-06-09 Gregory Pietsch 186 | * msgs-de.h : New file from Eric Auer . Replaces 187 | the broken file I had. 188 | 189 | 2003-05-30 Gregory Pietsch 190 | * msgs.h : New file. 191 | * msgs-en.h : New file for internationalization. 192 | * msgs-de.h : New translation of the msgs.h file into German. 193 | * configure.in : version changed. 194 | * Makefile.am : Added new files. 195 | * edline.c edlib.c error.c : Minor alterations to outputted strings 196 | for internationalization. 197 | * New version: 1.4 released. 198 | 199 | 2003-05-13 Gregory Pietsch 200 | * edline.htm : New file for HTML HELP. 201 | * Makefile.am : Added edline.htm in EXTRA_DIST area. 202 | * New version: 1.3 released. 203 | 204 | 2003-05-10 Gregory Pietsch 205 | * dynstr.c (DSassigncstr): Added. 206 | * dynstr.c (DScopy): Dropped; use a combination of DScreate and an 207 | explicit DSassigncstr instead. 208 | * dynstr.h : Redid prototypes for dynstr.c functions with cproto and 209 | incorporated them here. 210 | * error.c: Added patch from Michael Kallas. 211 | 212 | 2003-04-29 Gregory Pietsch 213 | * configure.in : New test for memcpy() (HAVE_MEMCPY). 214 | * dynstr.c : New fallback implementations of memset(), bcmp(), 215 | bcopy(). 216 | * edlib.c : New fallback implementation of strchr(). 217 | * Makefile.am : include files config-h.bc, config-h.msc, Makefile.bc 218 | in EXTRA_DIST area. 219 | * New version: 1.2 released. 220 | 221 | 2003-03-05 Gregory Pietsch 222 | * Makefile.bc : New file from Jim Hall . 223 | * config-h.bc : New file. 224 | * dynstr.c dynstr.h : New files - renamed from dynstring.c and 225 | dynstring.h. 226 | * dynstring.c dynstring.h : Deleted. 227 | * NEWS : modified. 228 | * README : modified to include Borland C++ directions. 229 | * dynstr.c (HAVE_BCMP) : include fallback implementation of bcmp(). 230 | * dynstr.c (HAVE_BCOPY) : include fallback implementation of bcopy(). 231 | * config.h.in : regenerated. 232 | * config-h.msc config-h.bc : new defines for HAVE_BCMP, HAVE_BCOPY, 233 | HAVE_INDEX. 234 | * New version: 1.1 released. 235 | 236 | 2003-03-03 Gregory Pietsch 237 | * Initial entry. 238 | * AUTHORS COPYING ChangeLog INSTALL Makefile.am Makefile.in 239 | NEWS README aclocal.m4 config.h.in configure configure.in 240 | depcomp dynstring.c dynstring.h edlib.c edlib.h 241 | edline.c error.c error.h install-sh missing 242 | mkinstalldirs xmalloc.c xmalloc.h : New files. 243 | * TODO config-h.msc edline.dsw edline.dsp : New files. 244 | * Version 1.0 released. 245 | 246 | -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | Installation Instructions 2 | ************************* 3 | 4 | Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free 5 | Software Foundation, Inc. 6 | 7 | This file is free documentation; the Free Software Foundation gives 8 | unlimited permission to copy, distribute and modify it. 9 | 10 | Basic Installation 11 | ================== 12 | 13 | These are generic installation instructions. 14 | 15 | The `configure' shell script attempts to guess correct values for 16 | various system-dependent variables used during compilation. It uses 17 | those values to create a `Makefile' in each directory of the package. 18 | It may also create one or more `.h' files containing system-dependent 19 | definitions. Finally, it creates a shell script `config.status' that 20 | you can run in the future to recreate the current configuration, and a 21 | file `config.log' containing compiler output (useful mainly for 22 | debugging `configure'). 23 | 24 | It can also use an optional file (typically called `config.cache' 25 | and enabled with `--cache-file=config.cache' or simply `-C') that saves 26 | the results of its tests to speed up reconfiguring. (Caching is 27 | disabled by default to prevent problems with accidental use of stale 28 | cache files.) 29 | 30 | If you need to do unusual things to compile the package, please try 31 | to figure out how `configure' could check whether to do them, and mail 32 | diffs or instructions to the address given in the `README' so they can 33 | be considered for the next release. If you are using the cache, and at 34 | some point `config.cache' contains results you don't want to keep, you 35 | may remove or edit it. 36 | 37 | The file `configure.ac' (or `configure.in') is used to create 38 | `configure' by a program called `autoconf'. You only need 39 | `configure.ac' if you want to change it or regenerate `configure' using 40 | a newer version of `autoconf'. 41 | 42 | The simplest way to compile this package is: 43 | 44 | 1. `cd' to the directory containing the package's source code and type 45 | `./configure' to configure the package for your system. If you're 46 | using `csh' on an old version of System V, you might need to type 47 | `sh ./configure' instead to prevent `csh' from trying to execute 48 | `configure' itself. 49 | 50 | Running `configure' takes awhile. While running, it prints some 51 | messages telling which features it is checking for. 52 | 53 | 2. Type `make' to compile the package. 54 | 55 | 3. Optionally, type `make check' to run any self-tests that come with 56 | the package. 57 | 58 | 4. Type `make install' to install the programs and any data files and 59 | documentation. 60 | 61 | 5. You can remove the program binaries and object files from the 62 | source code directory by typing `make clean'. To also remove the 63 | files that `configure' created (so you can compile the package for 64 | a different kind of computer), type `make distclean'. There is 65 | also a `make maintainer-clean' target, but that is intended mainly 66 | for the package's developers. If you use it, you may have to get 67 | all sorts of other programs in order to regenerate files that came 68 | with the distribution. 69 | 70 | Compilers and Options 71 | ===================== 72 | 73 | Some systems require unusual options for compilation or linking that the 74 | `configure' script does not know about. Run `./configure --help' for 75 | details on some of the pertinent environment variables. 76 | 77 | You can give `configure' initial values for configuration parameters 78 | by setting variables in the command line or in the environment. Here 79 | is an example: 80 | 81 | ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix 82 | 83 | *Note Defining Variables::, for more details. 84 | 85 | Compiling For Multiple Architectures 86 | ==================================== 87 | 88 | You can compile the package for more than one kind of computer at the 89 | same time, by placing the object files for each architecture in their 90 | own directory. To do this, you must use a version of `make' that 91 | supports the `VPATH' variable, such as GNU `make'. `cd' to the 92 | directory where you want the object files and executables to go and run 93 | the `configure' script. `configure' automatically checks for the 94 | source code in the directory that `configure' is in and in `..'. 95 | 96 | If you have to use a `make' that does not support the `VPATH' 97 | variable, you have to compile the package for one architecture at a 98 | time in the source code directory. After you have installed the 99 | package for one architecture, use `make distclean' before reconfiguring 100 | for another architecture. 101 | 102 | Installation Names 103 | ================== 104 | 105 | By default, `make install' will install the package's files in 106 | `/usr/local/bin', `/usr/local/man', etc. You can specify an 107 | installation prefix other than `/usr/local' by giving `configure' the 108 | option `--prefix=PREFIX'. 109 | 110 | You can specify separate installation prefixes for 111 | architecture-specific files and architecture-independent files. If you 112 | give `configure' the option `--exec-prefix=PREFIX', the package will 113 | use PREFIX as the prefix for installing programs and libraries. 114 | Documentation and other data files will still use the regular prefix. 115 | 116 | In addition, if you use an unusual directory layout you can give 117 | options like `--bindir=DIR' to specify different values for particular 118 | kinds of files. Run `configure --help' for a list of the directories 119 | you can set and what kinds of files go in them. 120 | 121 | If the package supports it, you can cause programs to be installed 122 | with an extra prefix or suffix on their names by giving `configure' the 123 | option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. 124 | 125 | Optional Features 126 | ================= 127 | 128 | Some packages pay attention to `--enable-FEATURE' options to 129 | `configure', where FEATURE indicates an optional part of the package. 130 | They may also pay attention to `--with-PACKAGE' options, where PACKAGE 131 | is something like `gnu-as' or `x' (for the X Window System). The 132 | `README' should mention any `--enable-' and `--with-' options that the 133 | package recognizes. 134 | 135 | For packages that use the X Window System, `configure' can usually 136 | find the X include and library files automatically, but if it doesn't, 137 | you can use the `configure' options `--x-includes=DIR' and 138 | `--x-libraries=DIR' to specify their locations. 139 | 140 | Specifying the System Type 141 | ========================== 142 | 143 | There may be some features `configure' cannot figure out automatically, 144 | but needs to determine by the type of machine the package will run on. 145 | Usually, assuming the package is built to be run on the _same_ 146 | architectures, `configure' can figure that out, but if it prints a 147 | message saying it cannot guess the machine type, give it the 148 | `--build=TYPE' option. TYPE can either be a short name for the system 149 | type, such as `sun4', or a canonical name which has the form: 150 | 151 | CPU-COMPANY-SYSTEM 152 | 153 | where SYSTEM can have one of these forms: 154 | 155 | OS KERNEL-OS 156 | 157 | See the file `config.sub' for the possible values of each field. If 158 | `config.sub' isn't included in this package, then this package doesn't 159 | need to know the machine type. 160 | 161 | If you are _building_ compiler tools for cross-compiling, you should 162 | use the `--target=TYPE' option to select the type of system they will 163 | produce code for. 164 | 165 | If you want to _use_ a cross compiler, that generates code for a 166 | platform different from the build platform, you should specify the 167 | "host" platform (i.e., that on which the generated programs will 168 | eventually be run) with `--host=TYPE'. 169 | 170 | Sharing Defaults 171 | ================ 172 | 173 | If you want to set default values for `configure' scripts to share, you 174 | can create a site shell script called `config.site' that gives default 175 | values for variables like `CC', `cache_file', and `prefix'. 176 | `configure' looks for `PREFIX/share/config.site' if it exists, then 177 | `PREFIX/etc/config.site' if it exists. Or, you can set the 178 | `CONFIG_SITE' environment variable to the location of the site script. 179 | A warning: not all `configure' scripts look for a site script. 180 | 181 | Defining Variables 182 | ================== 183 | 184 | Variables not defined in a site shell script can be set in the 185 | environment passed to `configure'. However, some packages may run 186 | configure again during the build, and the customized values of these 187 | variables may be lost. In order to avoid this problem, you should set 188 | them in the `configure' command line, using `VAR=value'. For example: 189 | 190 | ./configure CC=/usr/local2/bin/gcc 191 | 192 | will cause the specified gcc to be used as the C compiler (unless it is 193 | overridden in the site shell script). 194 | 195 | `configure' Invocation 196 | ====================== 197 | 198 | `configure' recognizes the following options to control how it operates. 199 | 200 | `--help' 201 | `-h' 202 | Print a summary of the options to `configure', and exit. 203 | 204 | `--version' 205 | `-V' 206 | Print the version of Autoconf used to generate the `configure' 207 | script, and exit. 208 | 209 | `--cache-file=FILE' 210 | Enable the cache: use and save the results of the tests in FILE, 211 | traditionally `config.cache'. FILE defaults to `/dev/null' to 212 | disable caching. 213 | 214 | `--config-cache' 215 | `-C' 216 | Alias for `--cache-file=config.cache'. 217 | 218 | `--quiet' 219 | `--silent' 220 | `-q' 221 | Do not print messages saying which checks are being made. To 222 | suppress all normal output, redirect it to `/dev/null' (any error 223 | messages will still be shown). 224 | 225 | `--srcdir=DIR' 226 | Look for the package's source code in directory DIR. Usually 227 | `configure' can determine that directory automatically. 228 | 229 | `configure' also accepts some other, not widely useful, options. Run 230 | `configure --help' for more details. 231 | 232 | -------------------------------------------------------------------------------- /Makefile.am: -------------------------------------------------------------------------------- 1 | # input file for automake 2 | 3 | bin_PROGRAMS = edlin 4 | edlin_SOURCES = defines.c defines.h dynarray.h dynstr.c dynstr.h \ 5 | edlib.c edlib.h edlin.c msgs.h 6 | EXTRA_DIST = config-h.bc Makefile.bc edlin.htm edlin.tgt edlin.wpj \ 7 | msgs-da.h msgs-de.h msgs-en.h msgs-eo.h msgs-es.h msgs-eu.h \ 8 | msgs-fi.h msgs-fr.h msgs-is.h msgs-it.h msgs-la.h \ 9 | msgs-nl.h msgs-no.h msgs-pl.h msgs-pt.h msgs-sv.h msgs-de2.h \ 10 | msgs-ja.h msgs-tr.h edlin-ja.htm edlin-ja.txt \ 11 | catgets.c kitten.c kitten.h nl_types.h \ 12 | malloc.c realloc.c kitten msgscats.h config-h.ow \ 13 | kit2msgs.c ow.bat 14 | -------------------------------------------------------------------------------- /Makefile.bc: -------------------------------------------------------------------------------- 1 | # Makefile for FreeDOS EDLIN 2 | # uses Borland C/C++ 3.1 - may also work with other Borland-like compilers 3 | 4 | CC=bcc 5 | CFLAGS=-mc -DHAVE_CONFIG_H 6 | LDFLAGS= 7 | LDLIBS= 8 | 9 | SOURCES=defines.c dynstr.c edlib.c edlin.c 10 | OBJ=$(SOURCES:.c=.obj) 11 | EXE=edlin.exe 12 | 13 | all: edlin.exe 14 | 15 | edlin.exe: $(OBJ) config.h 16 | $(CC) $(CFLAGS) $(LDFLAGS) -e$(EXE) $(OBJ) $(LDLIBS) 17 | 18 | config.h: 19 | -copy config-h.bc config.h 20 | 21 | clean: 22 | -del *.obj 23 | 24 | realclean: clean 25 | -del config.h 26 | 27 | distclean: realclean 28 | -del $(EXE) 29 | -------------------------------------------------------------------------------- /NEWS: -------------------------------------------------------------------------------- 1 | GREGORY PIETSCH'S E-MAIL ADDRESS CHANGED 2 | 3 | EWING, NEW JERSEY, February 13, 2005 - Gregory Pietsch's e-mail address has 4 | changed from GKP1@flash.net to gpietsch@comcast.net. 5 | 6 | -=-=- 7 | 8 | EDLIN IN JAPANESE! 9 | 10 | EWING, NEW JERSEY, September 4, 2004 - The edlin program now has support 11 | for the Japanese language. 12 | 13 | -=-=- 14 | 15 | EDLINE RENAMED TO EDLIN 16 | 17 | EWING, NEW JERSEY, June 9, 2003 - Beginning with the new version 2.0, the 18 | edline program has been renamed to edlin. 19 | 20 | On Friday, June 6, 2003, Gregory Pietsch, the maintainer of FreeDOS edline, 21 | received an e-mail from Jon Abrams, the president of Edline, LLC. His e-mail 22 | address is . Abrams requested that Pietsch modify the 23 | name of the text editor so that it is no longer identical to the word "edline" 24 | to avoid confusion. 25 | 26 | -=-=- 27 | 28 | EDLINE PROGRAM INTERNATIONALIZATION 29 | 30 | EWING, NEW JERSEY, May 30, 2003 - Internationalization for the edline program 31 | is now a matter of translating strings in a header file. 32 | 33 | All the outputted strings and format strings for printf() and friends are in 34 | a file called msgs.h. All the translator has to do is translate the strings 35 | in that file into the language of choice. The msgs.h file has been copied to 36 | msgs-en.h, so that the English-language messages are saved. 37 | 38 | I still have to figure out how to copy a specific language file to msgs.h at 39 | compile time in the ./configure script, although this should be easy to do 40 | (crosses fingers here). 41 | 42 | -=-=- 43 | 44 | UNEMPLOYED PROGRAMMER NEEDS WORK 45 | 46 | EWING, NEW JERSEY, March 3, 2003 - Gregory Pietsch, the author of the edline 47 | line editor, is looking for a job. He has been out of work since June 2001 48 | and his unemployment benefits have run out. 49 | 50 | If you would like to hire Gregory, please send him a note at 51 | gpietsch@comcast.net. 52 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | EDLIN 2 | 3 | The edlin program is a small line editor, written for FreeDOS as a functional 4 | clone of the old MS-DOS program edlin. It differs from MS edlin in that 5 | first, it's free software, and second, the user interface is slightly 6 | different in a few places. The reason for the difference is so that the user 7 | does not have to type in control characters mandated by MS edlin's syntax. 8 | 9 | INVOKING EDLIN 10 | 11 | The edlin program is invoked either by itself: 12 | 13 | edlin 14 | 15 | or with a filename that's initially read in: 16 | 17 | edlin file 18 | 19 | EDLIN'S INTERNAL COMMANDS 20 | 21 | The edlin internal commands are described in the HTML file that comes in this 22 | distro. 23 | 24 | COMPILING EDLIN 25 | 26 | The edlin program has been tested with these compilers: 27 | 28 | Microsoft Visual C++: 29 | 30 | To compile with M$VC++, first rename config-h.msc to config.h. Then, have 31 | the symbol HAVE_CONFIG_H defined on the command line or in the project file. 32 | 33 | Borland C++: 34 | 35 | Use the makefile Makefile.bc. The makefile should copy config-h.bc to config.h 36 | before compiling. 37 | 38 | The Japanese port uses Borland filenames. To compile it properly, the symbol 39 | SHIFT_JIS must be defined on the command line. It includes , , 40 | and . 41 | 42 | GNU gcc under Cygwin: 43 | 44 | Compiling under Cygwin should be as easy as 45 | 46 | ./configure;make;make install 47 | 48 | as edlin has been successfully autoconfiscated. ;-) 49 | 50 | If you don't want to use the ./configure script, Eric Auer has noted that 51 | after copying config-h.bc to config.h and renaming your favorite msgs-*.h 52 | file to msgs.h, 53 | 54 | gcc -o edlin.exe -Wall *.c 55 | 56 | should also work. I'm leaving the configure script and Makefile in there, 57 | though, as the generated Makefile can also be used to install edlin and 58 | create distros. ;-) 59 | 60 | OpenWatcom: 61 | 62 | To compile under OpenWatcom, just use the edlin.wpj file. It is currently set 63 | up for 16-bit FreeDOS, but can easily be changed. 64 | 65 | Gregory Pietsch, 2003-06-09 66 | -------------------------------------------------------------------------------- /config-h.bc: -------------------------------------------------------------------------------- 1 | /* config.h. Generated from config.h.in by configure. */ 2 | /* config.h.in. Generated from configure.in by autoheader. */ 3 | 4 | /* Define to 1 if you have the `access' function. */ 5 | #define HAVE_ACCESS 1 6 | 7 | /* Define to 1 if you have the header file. */ 8 | #define HAVE_INTTYPES_H 1 9 | 10 | /* Define to 1 if you have the header file. */ 11 | #define HAVE_IO_H 1 12 | 13 | /* Define to 1 if you have the `iskanji' function. */ 14 | /* #undef HAVE_ISKANJI */ 15 | 16 | /* Define to 1 if you have the header file. */ 17 | /* #undef HAVE_JCTYPE_H */ 18 | 19 | /* Define to 1 if you have the `e' library (-le). */ 20 | /* #undef HAVE_LIBE */ 21 | 22 | /* Define to 1 if you have the `inks' library (-links). */ 23 | /* #undef HAVE_LIBINKS */ 24 | 25 | /* Define to 1 if you have the header file. */ 26 | #define HAVE_LIMITS_H 1 27 | 28 | /* Define to 1 if you have the `link' function. */ 29 | #define HAVE_LINK 1 30 | 31 | /* Define to 1 if your system has a GNU libc compatible `malloc' function, and 32 | to 0 otherwise. */ 33 | #define HAVE_MALLOC 1 34 | 35 | /* Define to 1 if you have the `memchr' function. */ 36 | #define HAVE_MEMCHR 1 37 | 38 | /* Define to 1 if you have the `memmove' function. */ 39 | #define HAVE_MEMMOVE 1 40 | 41 | /* Define to 1 if you have the header file. */ 42 | #define HAVE_MEMORY_H 1 43 | 44 | /* Define to 1 if you have the `memset' function. */ 45 | #define HAVE_MEMSET 1 46 | 47 | /* Define to 1 if your system has a GNU libc compatible `realloc' function, 48 | and to 0 otherwise. */ 49 | #define HAVE_REALLOC 1 50 | 51 | /* Define to 1 if you have the `rename' function. */ 52 | #define HAVE_RENAME 1 53 | 54 | /* Define to 1 if you have the header file. */ 55 | #define HAVE_STDINT_H 1 56 | 57 | /* Define to 1 if you have the header file. */ 58 | #define HAVE_STDLIB_H 1 59 | 60 | /* Define to 1 if you have the `strchr' function. */ 61 | #define HAVE_STRCHR 1 62 | 63 | /* Define to 1 if you have the header file. */ 64 | /* #undef HAVE_STRINGS_H */ 65 | 66 | /* Define to 1 if you have the header file. */ 67 | #define HAVE_STRING_H 1 68 | 69 | /* Define to 1 if you have the header file. */ 70 | #define HAVE_SYS_STAT_H 1 71 | 72 | /* Define to 1 if you have the header file. */ 73 | #define HAVE_SYS_TYPES_H 1 74 | 75 | /* Define to 1 if you have the header file. */ 76 | #define HAVE_UNISTD_H 1 77 | 78 | /* Define to 1 if you have the `unlink' function. */ 79 | #define HAVE_UNLINK 1 80 | 81 | /* Name of package */ 82 | #define PACKAGE "edlin" 83 | 84 | /* Define to the address where bug reports for this package should be sent. */ 85 | #define PACKAGE_BUGREPORT "" 86 | 87 | /* Define to the full name of this package. */ 88 | #define PACKAGE_NAME "edlin" 89 | 90 | /* Define to the full name and version of this package. */ 91 | #define PACKAGE_STRING "edlin 2.10c" 92 | 93 | /* Define to the one symbol short name of this package. */ 94 | #define PACKAGE_TARNAME "edlin" 95 | 96 | /* Define to the version of this package. */ 97 | #define PACKAGE_VERSION "2.10c" 98 | 99 | /* Define to 1 if you have the ANSI C header files. */ 100 | #define STDC_HEADERS 1 101 | 102 | /* Version number of package */ 103 | #define VERSION "2.10c" 104 | 105 | /* Define to empty if `const' does not conform to ANSI C. */ 106 | /* #undef const */ 107 | 108 | /* Define to rpl_malloc if the replacement function should be used. */ 109 | /* #undef malloc */ 110 | 111 | /* Define to rpl_realloc if the replacement function should be used. */ 112 | /* #undef realloc */ 113 | 114 | /* Define to `unsigned int' if does not define. */ 115 | /* #undef size_t */ 116 | -------------------------------------------------------------------------------- /config-h.ow: -------------------------------------------------------------------------------- 1 | /* config.h. Generated from config.h.in by configure. */ 2 | /* config.h.in. Generated from configure.in by autoheader. */ 3 | 4 | /* Define to 1 if you have the `access' function. */ 5 | #define HAVE_ACCESS 1 6 | 7 | /* Define to 1 if you have the header file. */ 8 | #define HAVE_INTTYPES_H 1 9 | 10 | /* Define to 1 if you have the header file. */ 11 | #define HAVE_IO_H 1 12 | 13 | /* Define to 1 if you have the `iskanji' function. */ 14 | /* #undef HAVE_ISKANJI */ 15 | 16 | /* Define to 1 if you have the header file. */ 17 | /* #undef HAVE_JCTYPE_H */ 18 | 19 | /* Define to 1 if you have the `e' library (-le). */ 20 | /* #undef HAVE_LIBE */ 21 | 22 | /* Define to 1 if you have the `inks' library (-links). */ 23 | /* #undef HAVE_LIBINKS */ 24 | 25 | /* Define to 1 if you have the header file. */ 26 | #define HAVE_LIMITS_H 1 27 | 28 | /* Define to 1 if you have the `link' function. */ 29 | #define HAVE_LINK 1 30 | 31 | /* Define to 1 if your system has a GNU libc compatible `malloc' function, and 32 | to 0 otherwise. */ 33 | #define HAVE_MALLOC 1 34 | 35 | /* Define to 1 if you have the `memchr' function. */ 36 | #define HAVE_MEMCHR 1 37 | 38 | /* Define to 1 if you have the `memmove' function. */ 39 | #define HAVE_MEMMOVE 1 40 | 41 | /* Define to 1 if you have the header file. */ 42 | #define HAVE_MEMORY_H 1 43 | 44 | /* Define to 1 if you have the `memset' function. */ 45 | #define HAVE_MEMSET 1 46 | 47 | /* Define to 1 if your system has a GNU libc compatible `realloc' function, 48 | and to 0 otherwise. */ 49 | #define HAVE_REALLOC 1 50 | 51 | /* Define to 1 if you have the `rename' function. */ 52 | #define HAVE_RENAME 1 53 | 54 | /* Define to 1 if you have the header file. */ 55 | #define HAVE_STDINT_H 1 56 | 57 | /* Define to 1 if you have the header file. */ 58 | #define HAVE_STDLIB_H 1 59 | 60 | /* Define to 1 if you have the `strchr' function. */ 61 | #define HAVE_STRCHR 1 62 | 63 | /* Define to 1 if you have the header file. */ 64 | /* #undef HAVE_STRINGS_H */ 65 | 66 | /* Define to 1 if you have the header file. */ 67 | #define HAVE_STRING_H 1 68 | 69 | /* Define to 1 if you have the header file. */ 70 | #define HAVE_SYS_STAT_H 1 71 | 72 | /* Define to 1 if you have the header file. */ 73 | #define HAVE_SYS_TYPES_H 1 74 | 75 | /* Define to 1 if you have the header file. */ 76 | #define HAVE_UNISTD_H 1 77 | 78 | /* Define to 1 if you have the `unlink' function. */ 79 | #define HAVE_UNLINK 1 80 | 81 | /* Name of package */ 82 | #define PACKAGE "edlin" 83 | 84 | /* Define to the address where bug reports for this package should be sent. */ 85 | #define PACKAGE_BUGREPORT "" 86 | 87 | /* Define to the full name of this package. */ 88 | #define PACKAGE_NAME "edlin" 89 | 90 | /* Define to the full name and version of this package. */ 91 | #define PACKAGE_STRING "edlin 2.10c" 92 | 93 | /* Define to the one symbol short name of this package. */ 94 | #define PACKAGE_TARNAME "edlin" 95 | 96 | /* Define to the version of this package. */ 97 | #define PACKAGE_VERSION "2.10c" 98 | 99 | /* Define to 1 if you have the ANSI C header files. */ 100 | #define STDC_HEADERS 1 101 | 102 | /* Version number of package */ 103 | #define VERSION "2.10c" 104 | 105 | /* Define to empty if `const' does not conform to ANSI C. */ 106 | /* #undef const */ 107 | 108 | /* Define to rpl_malloc if the replacement function should be used. */ 109 | /* #undef malloc */ 110 | 111 | /* Define to rpl_realloc if the replacement function should be used. */ 112 | /* #undef realloc */ 113 | 114 | /* Define to `unsigned int' if does not define. */ 115 | /* #undef size_t */ 116 | -------------------------------------------------------------------------------- /config.h.in: -------------------------------------------------------------------------------- 1 | /* config.h.in. Generated from configure.in by autoheader. */ 2 | 3 | /* Define to 1 if you have the `access' function. */ 4 | #undef HAVE_ACCESS 5 | 6 | /* Define to 1 if you have the header file. */ 7 | #undef HAVE_INTTYPES_H 8 | 9 | /* Define to 1 if you have the header file. */ 10 | #undef HAVE_IO_H 11 | 12 | /* Define to 1 if you have the `iskanji' function. */ 13 | #undef HAVE_ISKANJI 14 | 15 | /* Define to 1 if you have the header file. */ 16 | #undef HAVE_JCTYPE_H 17 | 18 | /* Define to 1 if you have the `e' library (-le). */ 19 | #undef HAVE_LIBE 20 | 21 | /* Define to 1 if you have the `inks' library (-links). */ 22 | #undef HAVE_LIBINKS 23 | 24 | /* Define to 1 if you have the header file. */ 25 | #undef HAVE_LIMITS_H 26 | 27 | /* Define to 1 if you have the `link' function. */ 28 | #undef HAVE_LINK 29 | 30 | /* Define to 1 if your system has a GNU libc compatible `malloc' function, and 31 | to 0 otherwise. */ 32 | #undef HAVE_MALLOC 33 | 34 | /* Define to 1 if you have the `memchr' function. */ 35 | #undef HAVE_MEMCHR 36 | 37 | /* Define to 1 if you have the `memmove' function. */ 38 | #undef HAVE_MEMMOVE 39 | 40 | /* Define to 1 if you have the header file. */ 41 | #undef HAVE_MEMORY_H 42 | 43 | /* Define to 1 if you have the `memset' function. */ 44 | #undef HAVE_MEMSET 45 | 46 | /* Define to 1 if your system has a GNU libc compatible `realloc' function, 47 | and to 0 otherwise. */ 48 | #undef HAVE_REALLOC 49 | 50 | /* Define to 1 if you have the `rename' function. */ 51 | #undef HAVE_RENAME 52 | 53 | /* Define to 1 if you have the header file. */ 54 | #undef HAVE_STDINT_H 55 | 56 | /* Define to 1 if you have the header file. */ 57 | #undef HAVE_STDLIB_H 58 | 59 | /* Define to 1 if you have the `strchr' function. */ 60 | #undef HAVE_STRCHR 61 | 62 | /* Define to 1 if you have the header file. */ 63 | #undef HAVE_STRINGS_H 64 | 65 | /* Define to 1 if you have the header file. */ 66 | #undef HAVE_STRING_H 67 | 68 | /* Define to 1 if you have the header file. */ 69 | #undef HAVE_SYS_STAT_H 70 | 71 | /* Define to 1 if you have the header file. */ 72 | #undef HAVE_SYS_TYPES_H 73 | 74 | /* Define to 1 if you have the header file. */ 75 | #undef HAVE_UNISTD_H 76 | 77 | /* Define to 1 if you have the `unlink' function. */ 78 | #undef HAVE_UNLINK 79 | 80 | /* Name of package */ 81 | #undef PACKAGE 82 | 83 | /* Define to the address where bug reports for this package should be sent. */ 84 | #undef PACKAGE_BUGREPORT 85 | 86 | /* Define to the full name of this package. */ 87 | #undef PACKAGE_NAME 88 | 89 | /* Define to the full name and version of this package. */ 90 | #undef PACKAGE_STRING 91 | 92 | /* Define to the one symbol short name of this package. */ 93 | #undef PACKAGE_TARNAME 94 | 95 | /* Define to the version of this package. */ 96 | #undef PACKAGE_VERSION 97 | 98 | /* Define to 1 if you have the ANSI C header files. */ 99 | #undef STDC_HEADERS 100 | 101 | /* Version number of package */ 102 | #undef VERSION 103 | 104 | /* Define to empty if `const' does not conform to ANSI C. */ 105 | #undef const 106 | 107 | /* Define to rpl_malloc if the replacement function should be used. */ 108 | #undef malloc 109 | 110 | /* Define to rpl_realloc if the replacement function should be used. */ 111 | #undef realloc 112 | 113 | /* Define to `unsigned int' if does not define. */ 114 | #undef size_t 115 | -------------------------------------------------------------------------------- /configure.in: -------------------------------------------------------------------------------- 1 | dnl Process this file with autoconf to produce a configure script. 2 | AC_INIT(edlin, 2.10c) 3 | AM_INIT_AUTOMAKE(edlin, 2.10c) 4 | AC_CONFIG_SRCDIR([edlin.c]) 5 | AM_CONFIG_HEADER([config.h]) 6 | 7 | dnl Checks for programs. 8 | AC_PROG_AWK 9 | AC_PROG_CC 10 | AC_PROG_INSTALL 11 | 12 | dnl Checks for libraries. 13 | dnl Replace `main' with a function in -le: 14 | AC_CHECK_LIB(e, main) 15 | dnl Replace `main' with a function in -links: 16 | AC_CHECK_LIB(inks, main) 17 | 18 | dnl Checks for header files. 19 | AC_HEADER_STDC 20 | AC_CHECK_HEADERS(io.h jctype.h limits.h strings.h unistd.h) 21 | 22 | dnl Checks for typedefs, structures, and compiler characteristics. 23 | AC_C_CONST 24 | AC_TYPE_SIZE_T 25 | 26 | dnl Checks for library functions. 27 | AC_FUNC_MEMCMP 28 | AC_FUNC_MALLOC 29 | AC_FUNC_REALLOC 30 | AC_CHECK_FUNCS(access iskanji link memchr memmove memset rename strchr unlink) 31 | 32 | AC_OUTPUT(Makefile) 33 | -------------------------------------------------------------------------------- /defines.c: -------------------------------------------------------------------------------- 1 | /* defines.c -- implementation of functions from defines.h 2 | 3 | AUTHOR: Gregory Pietsch 4 | 5 | COPYRIGHT NOTICE AND DISCLAIMER: 6 | 7 | Copyright (C) 2003 Gregory Pietsch 8 | 9 | This program is free software; you can redistribute it and/or 10 | modify it under the terms of the GNU General Public License 11 | as published by the Free Software Foundation; either version 2 12 | of the License, or (at your option) any later version. 13 | 14 | This program is distributed in the hope that it will be useful, 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | GNU General Public License for more details. 18 | 19 | You should have received a copy of the GNU General Public License along 20 | with this program; if not, write to the Free Software Foundation, Inc., 21 | 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 22 | 23 | */ 24 | 25 | #include "config.h" 26 | #include 27 | #if defined(STDC_HEADERS) || defined(HAVE_STDLIB_H) 28 | #include 29 | #endif 30 | #include "msgs.h" 31 | #include "defines.h" 32 | 33 | void 34 | Nomemory (void) 35 | { 36 | fprintf (stderr, G00037, G00030); 37 | abort (); 38 | } 39 | 40 | /* END OF FILE */ 41 | -------------------------------------------------------------------------------- /defines.h: -------------------------------------------------------------------------------- 1 | /* defines.h -- standard defines 2 | 3 | COPYRIGHT NOTICE AND DISCLAIMER: 4 | 5 | Copyright (C) 2003 Gregory Pietsch 6 | 7 | This program is free software; you can redistribute it and/or 8 | modify it under the terms of the GNU General Public License 9 | as published by the Free Software Foundation; either version 2 10 | of the License, or (at your option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program; if not, write to the Free Software Foundation, Inc., 19 | 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 | */ 21 | 22 | #ifndef DEFINES_H 23 | #define DEFINES_H 24 | 25 | #if defined(__STDC__) || defined(STDC_HEADERS) || defined(HAVE_STDDEF_H) 26 | #include 27 | #endif 28 | 29 | typedef void fvoid_t (); 30 | 31 | typedef enum capacity 32 | { 33 | default_size, 34 | reserve 35 | } capacity; 36 | 37 | #ifndef NPOS 38 | #define NPOS ((size_t)(-1)) 39 | #endif 40 | 41 | void Nomemory (); 42 | 43 | #endif 44 | 45 | /* END OF FILE */ 46 | -------------------------------------------------------------------------------- /depcomp: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | # depcomp - compile a program generating dependencies as side-effects 4 | # Copyright 1999, 2000 Free Software Foundation, Inc. 5 | 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 2, or (at your option) 9 | # any later version. 10 | 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program; if not, write to the Free Software 18 | # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 19 | # 02111-1307, USA. 20 | 21 | # As a special exception to the GNU General Public License, if you 22 | # distribute this file as part of a program that contains a 23 | # configuration script generated by Autoconf, you may include it under 24 | # the same distribution terms that you use for the rest of that program. 25 | 26 | # Originally written by Alexandre Oliva . 27 | 28 | if test -z "$depmode" || test -z "$source" || test -z "$object"; then 29 | echo "depcomp: Variables source, object and depmode must be set" 1>&2 30 | exit 1 31 | fi 32 | # `libtool' can also be set to `yes' or `no'. 33 | 34 | if test -z "$depfile"; then 35 | base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` 36 | dir=`echo "$object" | sed 's,/.*$,/,'` 37 | if test "$dir" = "$object"; then 38 | dir= 39 | fi 40 | # FIXME: should be _deps on DOS. 41 | depfile="$dir.deps/$base" 42 | fi 43 | 44 | tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 45 | 46 | rm -f "$tmpdepfile" 47 | 48 | # Some modes work just like other modes, but use different flags. We 49 | # parameterize here, but still list the modes in the big case below, 50 | # to make depend.m4 easier to write. Note that we *cannot* use a case 51 | # here, because this file can only contain one case statement. 52 | if test "$depmode" = hp; then 53 | # HP compiler uses -M and no extra arg. 54 | gccflag=-M 55 | depmode=gcc 56 | fi 57 | 58 | if test "$depmode" = dashXmstdout; then 59 | # This is just like dashmstdout with a different argument. 60 | dashmflag=-xM 61 | depmode=dashmstdout 62 | fi 63 | 64 | case "$depmode" in 65 | gcc3) 66 | ## gcc 3 implements dependency tracking that does exactly what 67 | ## we want. Yay! Note: for some reason libtool 1.4 doesn't like 68 | ## it if -MD -MP comes after the -MF stuff. Hmm. 69 | "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" 70 | stat=$? 71 | if test $stat -eq 0; then : 72 | else 73 | rm -f "$tmpdepfile" 74 | exit $stat 75 | fi 76 | mv "$tmpdepfile" "$depfile" 77 | ;; 78 | 79 | gcc) 80 | ## There are various ways to get dependency output from gcc. Here's 81 | ## why we pick this rather obscure method: 82 | ## - Don't want to use -MD because we'd like the dependencies to end 83 | ## up in a subdir. Having to rename by hand is ugly. 84 | ## (We might end up doing this anyway to support other compilers.) 85 | ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 86 | ## -MM, not -M (despite what the docs say). 87 | ## - Using -M directly means running the compiler twice (even worse 88 | ## than renaming). 89 | if test -z "$gccflag"; then 90 | gccflag=-MD, 91 | fi 92 | "$@" -Wp,"$gccflag$tmpdepfile" 93 | stat=$? 94 | if test $stat -eq 0; then : 95 | else 96 | rm -f "$tmpdepfile" 97 | exit $stat 98 | fi 99 | rm -f "$depfile" 100 | echo "$object : \\" > "$depfile" 101 | alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 102 | ## The second -e expression handles DOS-style file names with drive letters. 103 | sed -e 's/^[^:]*: / /' \ 104 | -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 105 | ## This next piece of magic avoids the `deleted header file' problem. 106 | ## The problem is that when a header file which appears in a .P file 107 | ## is deleted, the dependency causes make to die (because there is 108 | ## typically no way to rebuild the header). We avoid this by adding 109 | ## dummy dependencies for each header file. Too bad gcc doesn't do 110 | ## this for us directly. 111 | tr ' ' ' 112 | ' < "$tmpdepfile" | 113 | ## Some versions of gcc put a space before the `:'. On the theory 114 | ## that the space means something, we add a space to the output as 115 | ## well. 116 | ## Some versions of the HPUX 10.20 sed can't process this invocation 117 | ## correctly. Breaking it into two sed invocations is a workaround. 118 | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 119 | rm -f "$tmpdepfile" 120 | ;; 121 | 122 | hp) 123 | # This case exists only to let depend.m4 do its work. It works by 124 | # looking at the text of this script. This case will never be run, 125 | # since it is checked for above. 126 | exit 1 127 | ;; 128 | 129 | sgi) 130 | if test "$libtool" = yes; then 131 | "$@" "-Wp,-MDupdate,$tmpdepfile" 132 | else 133 | "$@" -MDupdate "$tmpdepfile" 134 | fi 135 | stat=$? 136 | if test $stat -eq 0; then : 137 | else 138 | rm -f "$tmpdepfile" 139 | exit $stat 140 | fi 141 | rm -f "$depfile" 142 | 143 | if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 144 | echo "$object : \\" > "$depfile" 145 | 146 | # Clip off the initial element (the dependent). Don't try to be 147 | # clever and replace this with sed code, as IRIX sed won't handle 148 | # lines with more than a fixed number of characters (4096 in 149 | # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 150 | # the IRIX cc adds comments like `#:fec' to the end of the 151 | # dependency line. 152 | tr ' ' ' 153 | ' < "$tmpdepfile" \ 154 | | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 155 | tr ' 156 | ' ' ' >> $depfile 157 | echo >> $depfile 158 | 159 | # The second pass generates a dummy entry for each header file. 160 | tr ' ' ' 161 | ' < "$tmpdepfile" \ 162 | | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 163 | >> $depfile 164 | else 165 | # The sourcefile does not contain any dependencies, so just 166 | # store a dummy comment line, to avoid errors with the Makefile 167 | # "include basename.Plo" scheme. 168 | echo "#dummy" > "$depfile" 169 | fi 170 | rm -f "$tmpdepfile" 171 | ;; 172 | 173 | aix) 174 | # The C for AIX Compiler uses -M and outputs the dependencies 175 | # in a .u file. This file always lives in the current directory. 176 | # Also, the AIX compiler puts `$object:' at the start of each line; 177 | # $object doesn't have directory information. 178 | stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` 179 | tmpdepfile="$stripped.u" 180 | outname="$stripped.o" 181 | if test "$libtool" = yes; then 182 | "$@" -Wc,-M 183 | else 184 | "$@" -M 185 | fi 186 | 187 | stat=$? 188 | if test $stat -eq 0; then : 189 | else 190 | rm -f "$tmpdepfile" 191 | exit $stat 192 | fi 193 | 194 | if test -f "$tmpdepfile"; then 195 | # Each line is of the form `foo.o: dependent.h'. 196 | # Do two passes, one to just change these to 197 | # `$object: dependent.h' and one to simply `dependent.h:'. 198 | sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 199 | sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" 200 | else 201 | # The sourcefile does not contain any dependencies, so just 202 | # store a dummy comment line, to avoid errors with the Makefile 203 | # "include basename.Plo" scheme. 204 | echo "#dummy" > "$depfile" 205 | fi 206 | rm -f "$tmpdepfile" 207 | ;; 208 | 209 | icc) 210 | # Intel's C compiler understands `-MD -MF file'. However on 211 | # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 212 | # ICC 7.0 will fill foo.d with something like 213 | # foo.o: sub/foo.c 214 | # foo.o: sub/foo.h 215 | # which is wrong. We want: 216 | # sub/foo.o: sub/foo.c 217 | # sub/foo.o: sub/foo.h 218 | # sub/foo.c: 219 | # sub/foo.h: 220 | # ICC 7.1 will output 221 | # foo.o: sub/foo.c sub/foo.h 222 | # and will wrap long lines using \ : 223 | # foo.o: sub/foo.c ... \ 224 | # sub/foo.h ... \ 225 | # ... 226 | 227 | "$@" -MD -MF "$tmpdepfile" 228 | stat=$? 229 | if test $stat -eq 0; then : 230 | else 231 | rm -f "$tmpdepfile" 232 | exit $stat 233 | fi 234 | rm -f "$depfile" 235 | # Each line is of the form `foo.o: dependent.h', 236 | # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 237 | # Do two passes, one to just change these to 238 | # `$object: dependent.h' and one to simply `dependent.h:'. 239 | sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 240 | # Some versions of the HPUX 10.20 sed can't process this invocation 241 | # correctly. Breaking it into two sed invocations is a workaround. 242 | sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 243 | sed -e 's/$/ :/' >> "$depfile" 244 | rm -f "$tmpdepfile" 245 | ;; 246 | 247 | tru64) 248 | # The Tru64 compiler uses -MD to generate dependencies as a side 249 | # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 250 | # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 251 | # dependencies in `foo.d' instead, so we check for that too. 252 | # Subdirectories are respected. 253 | dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 254 | test "x$dir" = "x$object" && dir= 255 | base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 256 | 257 | if test "$libtool" = yes; then 258 | tmpdepfile1="$dir.libs/$base.lo.d" 259 | tmpdepfile2="$dir.libs/$base.d" 260 | "$@" -Wc,-MD 261 | else 262 | tmpdepfile1="$dir$base.o.d" 263 | tmpdepfile2="$dir$base.d" 264 | "$@" -MD 265 | fi 266 | 267 | stat=$? 268 | if test $stat -eq 0; then : 269 | else 270 | rm -f "$tmpdepfile1" "$tmpdepfile2" 271 | exit $stat 272 | fi 273 | 274 | if test -f "$tmpdepfile1"; then 275 | tmpdepfile="$tmpdepfile1" 276 | else 277 | tmpdepfile="$tmpdepfile2" 278 | fi 279 | if test -f "$tmpdepfile"; then 280 | sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 281 | # That's a space and a tab in the []. 282 | sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 283 | else 284 | echo "#dummy" > "$depfile" 285 | fi 286 | rm -f "$tmpdepfile" 287 | ;; 288 | 289 | #nosideeffect) 290 | # This comment above is used by automake to tell side-effect 291 | # dependency tracking mechanisms from slower ones. 292 | 293 | dashmstdout) 294 | # Important note: in order to support this mode, a compiler *must* 295 | # always write the proprocessed file to stdout, regardless of -o. 296 | "$@" || exit $? 297 | 298 | # Remove the call to Libtool. 299 | if test "$libtool" = yes; then 300 | while test $1 != '--mode=compile'; do 301 | shift 302 | done 303 | shift 304 | fi 305 | 306 | # Remove `-o $object'. 307 | IFS=" " 308 | for arg 309 | do 310 | case $arg in 311 | -o) 312 | shift 313 | ;; 314 | $object) 315 | shift 316 | ;; 317 | *) 318 | set fnord "$@" "$arg" 319 | shift # fnord 320 | shift # $arg 321 | ;; 322 | esac 323 | done 324 | 325 | test -z "$dashmflag" && dashmflag=-M 326 | # Require at least two characters before searching for `:' 327 | # in the target name. This is to cope with DOS-style filenames: 328 | # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 329 | "$@" $dashmflag | 330 | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 331 | rm -f "$depfile" 332 | cat < "$tmpdepfile" > "$depfile" 333 | tr ' ' ' 334 | ' < "$tmpdepfile" | \ 335 | ## Some versions of the HPUX 10.20 sed can't process this invocation 336 | ## correctly. Breaking it into two sed invocations is a workaround. 337 | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 338 | rm -f "$tmpdepfile" 339 | ;; 340 | 341 | dashXmstdout) 342 | # This case only exists to satisfy depend.m4. It is never actually 343 | # run, as this mode is specially recognized in the preamble. 344 | exit 1 345 | ;; 346 | 347 | makedepend) 348 | "$@" || exit $? 349 | # Remove any Libtool call 350 | if test "$libtool" = yes; then 351 | while test $1 != '--mode=compile'; do 352 | shift 353 | done 354 | shift 355 | fi 356 | # X makedepend 357 | shift 358 | cleared=no 359 | for arg in "$@"; do 360 | case $cleared in 361 | no) 362 | set ""; shift 363 | cleared=yes ;; 364 | esac 365 | case "$arg" in 366 | -D*|-I*) 367 | set fnord "$@" "$arg"; shift ;; 368 | # Strip any option that makedepend may not understand. Remove 369 | # the object too, otherwise makedepend will parse it as a source file. 370 | -*|$object) 371 | ;; 372 | *) 373 | set fnord "$@" "$arg"; shift ;; 374 | esac 375 | done 376 | obj_suffix="`echo $object | sed 's/^.*\././'`" 377 | touch "$tmpdepfile" 378 | ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 379 | rm -f "$depfile" 380 | cat < "$tmpdepfile" > "$depfile" 381 | sed '1,2d' "$tmpdepfile" | tr ' ' ' 382 | ' | \ 383 | ## Some versions of the HPUX 10.20 sed can't process this invocation 384 | ## correctly. Breaking it into two sed invocations is a workaround. 385 | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 386 | rm -f "$tmpdepfile" "$tmpdepfile".bak 387 | ;; 388 | 389 | cpp) 390 | # Important note: in order to support this mode, a compiler *must* 391 | # always write the proprocessed file to stdout. 392 | "$@" || exit $? 393 | 394 | # Remove the call to Libtool. 395 | if test "$libtool" = yes; then 396 | while test $1 != '--mode=compile'; do 397 | shift 398 | done 399 | shift 400 | fi 401 | 402 | # Remove `-o $object'. 403 | IFS=" " 404 | for arg 405 | do 406 | case $arg in 407 | -o) 408 | shift 409 | ;; 410 | $object) 411 | shift 412 | ;; 413 | *) 414 | set fnord "$@" "$arg" 415 | shift # fnord 416 | shift # $arg 417 | ;; 418 | esac 419 | done 420 | 421 | "$@" -E | 422 | sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 423 | sed '$ s: \\$::' > "$tmpdepfile" 424 | rm -f "$depfile" 425 | echo "$object : \\" > "$depfile" 426 | cat < "$tmpdepfile" >> "$depfile" 427 | sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 428 | rm -f "$tmpdepfile" 429 | ;; 430 | 431 | msvisualcpp) 432 | # Important note: in order to support this mode, a compiler *must* 433 | # always write the proprocessed file to stdout, regardless of -o, 434 | # because we must use -o when running libtool. 435 | "$@" || exit $? 436 | IFS=" " 437 | for arg 438 | do 439 | case "$arg" in 440 | "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 441 | set fnord "$@" 442 | shift 443 | shift 444 | ;; 445 | *) 446 | set fnord "$@" "$arg" 447 | shift 448 | shift 449 | ;; 450 | esac 451 | done 452 | "$@" -E | 453 | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" 454 | rm -f "$depfile" 455 | echo "$object : \\" > "$depfile" 456 | . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 457 | echo " " >> "$depfile" 458 | . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" 459 | rm -f "$tmpdepfile" 460 | ;; 461 | 462 | none) 463 | exec "$@" 464 | ;; 465 | 466 | *) 467 | echo "Unknown depmode $depmode" 1>&2 468 | exit 1 469 | ;; 470 | esac 471 | 472 | exit 0 473 | -------------------------------------------------------------------------------- /dynarray.h: -------------------------------------------------------------------------------- 1 | /* dynarray.h - dynamic array header 2 | 3 | DESCRIPTION: 4 | 5 | The functions in this header can be used to create a system for 6 | handling dynamic arrays with just about any type as the base type. 7 | 8 | The following macros may be predefined: 9 | 10 | PROTOS_ONLY - Return prototypes only. 11 | Tctor - Use this function to construct a type T (Initialize pointers, etc.) 12 | Tdtor - Use this function to give an instance of type T its last rites 13 | (deallocate memory, etc.) 14 | Tassign - Use this function to assign an instance of a type T to another. 15 | (If pointers are involved, assigning may have some additional 16 | steps beyond just using operator=.) 17 | 18 | The following macros must be predefined: 19 | 20 | T - the base type for the dynamic array 21 | TS - a "slug" prefix for all the functions in the header. 22 | 23 | Because this file may be needed more than once or #included more than once 24 | in the same file with different parameters, it does not have #include 25 | guards. 26 | 27 | COPYRIGHT NOTICE AND DISCLAIMER: 28 | 29 | Copyright (C) 2003 Gregory Pietsch 30 | 31 | This program is free software; you can redistribute it and/or 32 | modify it under the terms of the GNU General Public License 33 | as published by the Free Software Foundation; either version 2 34 | of the License, or (at your option) any later version. 35 | 36 | This program is distributed in the hope that it will be useful, 37 | but WITHOUT ANY WARRANTY; without even the implied warranty of 38 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 39 | GNU General Public License for more details. 40 | 41 | You should have received a copy of the GNU General Public License along 42 | with this program; if not, write to the Free Software Foundation, Inc., 43 | 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 44 | */ 45 | 46 | #include 47 | #include 48 | #include "defines.h" 49 | 50 | #define _NM(y,x) _VAL(y,x) 51 | #define _VAL(y,x) y ## x 52 | 53 | #define _TS_ARRAY_T _NM(TS, _ARRAY_T) 54 | #define _TS_Grow _NM(TS, _Grow) 55 | #define _TS_Tidy _NM(TS, _Tidy) 56 | #define _TS_Xinv _NM(TS, _Xinv) 57 | #define _TS_Xlen _NM(TS, _Xlen) 58 | #define _TS_Xran _NM(TS, _Xran) 59 | #define _TS_append _NM(TS, _append) 60 | #define _TS_assign _NM(TS, _assign) 61 | #define _TS_base _NM(TS, _base) 62 | #define _TS_copy_ctor _NM(TS, _copy_ctor) 63 | #define _TS_create _NM(TS, _create) 64 | #define _TS_create_copy _NM(TS, _create_copy) 65 | #define _TS_create_from_ptr _NM(TS, _create_from_ptr) 66 | #define _TS_create_with_size _NM(TS, _create_with_size) 67 | #define _TS_ctor _NM(TS, _ctor) 68 | #define _TS_ctor_from_ptr _NM(TS, _ctor_from_ptr) 69 | #define _TS_ctor_with_size _NM(TS, _ctor_with_size) 70 | #define _TS_destroy _NM(TS, _destroy) 71 | #define _TS_dtor _NM(TS, _dtor) 72 | #define _TS_get_at _NM(TS, _get_at) 73 | #define _TS_insert _NM(TS, _insert) 74 | #define _TS_length _NM(TS, _length) 75 | #define _TS_put_at _NM(TS, _put_at) 76 | #define _TS_remove _NM(TS, _remove) 77 | #define _TS_reserve _NM(TS, _reserve) 78 | #define _TS_resize _NM(TS, _resize) 79 | #define _TS_set_reserve _NM(TS, _set_reserve) 80 | #define _TS_subarray _NM(TS, _subarray) 81 | #define _TS_swap _NM(TS, _swap) 82 | 83 | #ifdef PROTOS_ONLY 84 | 85 | /* types */ 86 | 87 | /* _ARRAY_T: The array type. */ 88 | typedef struct _TS_ARRAY_T 89 | { 90 | T *_Ptr; 91 | size_t _Len, _Res; 92 | } _TS_ARRAY_T; 93 | 94 | /* Function prototypes. */ 95 | _TS_ARRAY_T *_TS_append (_TS_ARRAY_T *, T *, size_t, size_t); 96 | _TS_ARRAY_T *_TS_assign (_TS_ARRAY_T *, T *, size_t, size_t); 97 | T *_TS_base (_TS_ARRAY_T *); 98 | void _TS_copy_ctor (_TS_ARRAY_T *, _TS_ARRAY_T *); 99 | _TS_ARRAY_T *_TS_create (void); 100 | _TS_ARRAY_T *_TS_create_copy (_TS_ARRAY_T *); 101 | _TS_ARRAY_T *_TS_create_from_ptr (T *, size_t); 102 | _TS_ARRAY_T *_TS_create_with_size (size_t, capacity); 103 | void _TS_ctor (_TS_ARRAY_T *); 104 | void _TS_ctor_from_ptr (_TS_ARRAY_T *, T *, size_t); 105 | void _TS_ctor_with_size (_TS_ARRAY_T *, size_t, capacity); 106 | void _TS_destroy (_TS_ARRAY_T *); 107 | void _TS_dtor (_TS_ARRAY_T *); 108 | T *_TS_get_at (_TS_ARRAY_T *, size_t); 109 | _TS_ARRAY_T *_TS_insert (_TS_ARRAY_T *, size_t, T *, size_t, size_t); 110 | size_t _TS_length (_TS_ARRAY_T *); 111 | void _TS_put_at (_TS_ARRAY_T *, size_t, T *); 112 | _TS_ARRAY_T *_TS_remove (_TS_ARRAY_T *, size_t, size_t); 113 | size_t _TS_reserve (_TS_ARRAY_T *); 114 | void _TS_resize (_TS_ARRAY_T *, size_t, T *); 115 | void _TS_set_reserve (_TS_ARRAY_T *, size_t); 116 | _TS_ARRAY_T *_TS_subarray (_TS_ARRAY_T *, _TS_ARRAY_T *, size_t, size_t); 117 | void _TS_swap (_TS_ARRAY_T *, _TS_ARRAY_T *); 118 | 119 | #else 120 | 121 | #ifndef Tctor 122 | #define Tctor(x) 123 | #endif 124 | #ifndef Tdtor 125 | #define Tdtor(x) 126 | #endif 127 | #ifndef Tassign 128 | #define Tassign(x,y) (*(x) = *(y)) 129 | #endif 130 | 131 | /* functions */ 132 | 133 | static void 134 | _TS_Xinv (void) 135 | { 136 | fputs ("Invalid dynamic array argument\n", stderr); 137 | abort (); 138 | } 139 | 140 | static void 141 | _TS_Xlen (void) 142 | { 143 | fputs ("Length error: dynamic array too long\n", stderr); 144 | abort (); 145 | } 146 | 147 | static void 148 | _TS_Xran (void) 149 | { 150 | fputs ("Out of range: invalid dynamic array position\n", stderr); 151 | abort (); 152 | } 153 | 154 | /* _Tidy: Tidy up an array either when it's initially constructed 155 | or right before it is freed. */ 156 | static void 157 | _TS_Tidy (_TS_ARRAY_T * this, int constructed) 158 | { 159 | size_t i; 160 | 161 | if (constructed && this->_Ptr != 0) 162 | { 163 | for (i = 0; i < this->_Len; i++) 164 | Tdtor (this->_Ptr + i); 165 | free (this->_Ptr); 166 | } 167 | this->_Len = 0; 168 | this->_Ptr = 0; 169 | this->_Res = 0; 170 | } 171 | 172 | /* _Grow: Reallocate an array to make it size n. Initialize the unused 173 | elements in the array to s. If trim is nonzero, resize the array 174 | even if the new size is less than the old one. */ 175 | static void 176 | _TS_Grow (_TS_ARRAY_T * this, size_t n, T * s, int trim) 177 | { 178 | size_t os = this->_Ptr == 0 ? 0 : this->_Res; 179 | size_t i, m, r; 180 | T *np; 181 | 182 | if (n == 0) 183 | { 184 | if (trim) 185 | _TS_Tidy (this, 1); 186 | } 187 | else if (n == os || (n < os && !trim)); 188 | else 189 | { 190 | m = this->_Ptr == 0 && n < this->_Res ? this->_Res : n; 191 | np = calloc (m, sizeof (T)); 192 | if (np == 0) 193 | Nomemory (); /* no memory */ 194 | for (i = 0; i < m; ++i) 195 | Tctor (np + i); 196 | r = m; 197 | m = n < this->_Len ? n : this->_Len; 198 | for (i = 0; i < m; ++i) 199 | Tassign (np + i, this->_Ptr + i); 200 | if (s != 0) 201 | for (; i < this->_Res; ++i) 202 | Tassign (np + i, s); 203 | _TS_Tidy (this, 1); 204 | this->_Ptr = np; 205 | this->_Res = r; 206 | } 207 | this->_Len = n; 208 | } 209 | 210 | /* Exported functions */ 211 | 212 | /* _create: Create an array out of thin air. */ 213 | _TS_ARRAY_T * 214 | _TS_create (void) 215 | { 216 | _TS_ARRAY_T *x = malloc (sizeof (_TS_ARRAY_T)); 217 | 218 | if (x == 0) 219 | Nomemory (); 220 | _TS_Tidy (x, 0); 221 | return x; 222 | } 223 | 224 | /* _destroy: Destroy all elements in the array and free the array. */ 225 | void 226 | _TS_destroy (_TS_ARRAY_T * x) 227 | { 228 | _TS_Tidy (x, 1); 229 | free (x); 230 | } 231 | 232 | /* _ctor: Construct a newly-allocated array. */ 233 | void 234 | _TS_ctor (_TS_ARRAY_T * this) 235 | { 236 | _TS_Tidy (this, 0); 237 | } 238 | 239 | /* _ctor_with_size: Construct a newly-allocated array, given a size and 240 | whether the new elements are a default_size or should be in reserve. */ 241 | void 242 | _TS_ctor_with_size (_TS_ARRAY_T * this, size_t n, capacity c) 243 | { 244 | _TS_Tidy (this, 0); 245 | this->_Res = n; 246 | if (c == default_size) 247 | _TS_Grow (this, n, 0, 0); 248 | } 249 | 250 | /* _create_with_size: Allocates an array and calls _ctor_with_size on it. */ 251 | _TS_ARRAY_T * 252 | _TS_create_with_size (size_t n, capacity c) 253 | { 254 | _TS_ARRAY_T *x = malloc (sizeof (_TS_ARRAY_T)); 255 | 256 | if (x == 0) 257 | Nomemory (); 258 | _TS_ctor_with_size (x, n, c); 259 | return x; 260 | } 261 | 262 | /* _copy_ctor: Construct a newly-allocated array based on the elements of an 263 | existing array. */ 264 | void 265 | _TS_copy_ctor (_TS_ARRAY_T * this, _TS_ARRAY_T * x) 266 | { 267 | size_t i; 268 | 269 | _TS_Tidy (this, 0); 270 | _TS_Grow (this, _TS_length (x), 0, 0); 271 | for (i = 0; i < this->_Len; ++i) 272 | Tassign (this->_Ptr + i, x->_Ptr + i); 273 | } 274 | 275 | /* _create_copy: Allocates an array and calls _copy_ctor on it. */ 276 | _TS_ARRAY_T * 277 | _TS_create_copy (_TS_ARRAY_T * y) 278 | { 279 | _TS_ARRAY_T *x = malloc (sizeof (_TS_ARRAY_T)); 280 | 281 | if (x == 0) 282 | Nomemory (); 283 | _TS_copy_ctor (x, y); 284 | return x; 285 | } 286 | 287 | /* _ctor_from_ptr: Construct an array based on the elements of a normal C array 288 | (decayed to a pointer). The n parameter is the length. */ 289 | void 290 | _TS_ctor_from_ptr (_TS_ARRAY_T * this, T * s, size_t n) 291 | { 292 | if (s == 0) 293 | _TS_Xinv (); 294 | _TS_Tidy (this, 0); 295 | _TS_assign (this, s, n, 1); 296 | } 297 | 298 | /* _create_from_ptr: Allocates an array and calls _ctor_from_ptr on it. */ 299 | _TS_ARRAY_T * 300 | _TS_create_from_ptr (T * s, size_t n) 301 | { 302 | _TS_ARRAY_T *x = malloc (sizeof (_TS_ARRAY_T)); 303 | 304 | if (x == 0) 305 | Nomemory (); 306 | _TS_ctor_from_ptr (x, s, n); 307 | return x; 308 | } 309 | 310 | /* _dtor: Give an array its last rites before free()ing it. */ 311 | void 312 | _TS_dtor (_TS_ARRAY_T * this) 313 | { 314 | _TS_Tidy (this, 1); 315 | } 316 | 317 | /* _append: Append new elements to an existing array. The d parameter is 1 318 | if the new elements are in an array, 0 if there is only one element that 319 | should be propagated through the new space. */ 320 | _TS_ARRAY_T * 321 | _TS_append (_TS_ARRAY_T * this, T * s, size_t n, size_t d) 322 | { 323 | size_t i; 324 | 325 | if (NPOS - this->_Len <= n) 326 | _TS_Xlen (); 327 | i = this->_Len; 328 | for (_TS_Grow (this, n += i, 0, 0); i < n; ++i, s += d) 329 | Tassign (this->_Ptr + i, s); 330 | return this; 331 | } 332 | 333 | /* _assign: Similar to _append, except that the array is assigned to 334 | instead of appended to. */ 335 | _TS_ARRAY_T * 336 | _TS_assign (_TS_ARRAY_T * this, T * s, size_t n, size_t d) 337 | { 338 | size_t i; 339 | 340 | _TS_Grow (this, n, 0, 1); 341 | for (i = 0; i < n; ++i, s += d) 342 | Tassign (this->_Ptr + i, s); 343 | return this; 344 | } 345 | 346 | /* _insert: Insert n elements from s into this at position p. The d parameter 347 | is 1 if s should be incremented after the new element is assigned to, 0 if 348 | s should not be incremented. */ 349 | _TS_ARRAY_T * 350 | _TS_insert (_TS_ARRAY_T * this, size_t p, T * s, size_t n, size_t d) 351 | { 352 | size_t i; 353 | 354 | if (this->_Len < p) 355 | _TS_Xran (); 356 | if (NPOS - this->_Len <= n) 357 | _TS_Xlen (); 358 | if (0 < n) 359 | { 360 | i = this->_Len - p; 361 | for (_TS_Grow (this, n + this->_Len, 0, 0); 0 < i;) 362 | { 363 | --i; 364 | Tassign (this->_Ptr + (p + n + i), this->_Ptr + (p + i)); 365 | } 366 | for (i = 0; i < n; ++i, s += d) 367 | Tassign (this->_Ptr + (p + i), s); 368 | } 369 | return this; 370 | } 371 | 372 | /* _remove: Remove and destroy the n elements starting at this[p]. */ 373 | _TS_ARRAY_T * 374 | _TS_remove (_TS_ARRAY_T * this, size_t p, size_t n) 375 | { 376 | size_t i, m; 377 | 378 | if (this->_Len < p) 379 | _TS_Xran (); 380 | if (this->_Len - p < n) 381 | n = this->_Len - p; 382 | if (0 < n) 383 | { 384 | m = this->_Len - p - n; 385 | for (i = 0; i < m; ++i) 386 | Tassign (this->_Ptr + (p + i), this->_Ptr + (p + i + n)); 387 | _TS_Grow (this, this->_Len - n, 0, 0); 388 | } 389 | return this; 390 | } 391 | 392 | /* _subarray: Assign the n elements starting at this[p] to x. It's okay 393 | if this and x are the same array. */ 394 | _TS_ARRAY_T * 395 | _TS_subarray (_TS_ARRAY_T * this, _TS_ARRAY_T * x, size_t p, size_t n) 396 | { 397 | if (this->_Len < p) 398 | _TS_Xran (); 399 | if (this->_Len - p < n) 400 | n = this->_Len - p; 401 | return (this == x) ? (_TS_remove (this, p + n, NPOS), 402 | _TS_remove (this, 0, p)) 403 | : _TS_assign (x, this->_Ptr + p, n, 1); 404 | } 405 | 406 | /* _Swap: swap the contents of two arrays. */ 407 | void 408 | _TS_swap (_TS_ARRAY_T * this, _TS_ARRAY_T * x) 409 | { 410 | T *tp; 411 | size_t t; 412 | 413 | tp = this->_Ptr; 414 | this->_Ptr = x->_Ptr; 415 | x->_Ptr = tp; 416 | t = this->_Len; 417 | this->_Len = x->_Len; 418 | x->_Len = t; 419 | t = this->_Res; 420 | this->_Res = x->_Res; 421 | x->_Res = t; 422 | } 423 | 424 | /* _get_at: Return the element at this[i]. */ 425 | T * 426 | _TS_get_at (_TS_ARRAY_T * this, size_t i) 427 | { 428 | if (this->_Len <= i) 429 | _TS_Xran (); 430 | return this->_Ptr + i; 431 | } 432 | 433 | /* _put_at: Assign the element x to this[i]. */ 434 | void 435 | _TS_put_at (_TS_ARRAY_T * this, size_t i, T * x) 436 | { 437 | if (this->_Len < i) 438 | _TS_Xran (); 439 | else if (this->_Len == i) 440 | _TS_append (this, x, 1, 1); 441 | else 442 | Tassign (this->_Ptr + i, x); 443 | } 444 | 445 | /* _base: Return the base pointer, or a null pointer if there aren't 446 | any elements in the array. */ 447 | T * 448 | _TS_base (_TS_ARRAY_T * this) 449 | { 450 | return this->_Len != 0 ? this->_Ptr : 0; 451 | } 452 | 453 | /* _length: Return how many elements are there in the array */ 454 | size_t 455 | _TS_length (_TS_ARRAY_T * this) 456 | { 457 | return this->_Len; 458 | } 459 | 460 | /* _resize: Resize an array to _N elements, using _X for new elements 461 | (if we're growing the array). */ 462 | void 463 | _TS_resize (_TS_ARRAY_T * this, size_t n, T * x) 464 | { 465 | _TS_Grow (this, n, x, 1); 466 | } 467 | 468 | /* _reserve: Return how many elements there are in reserve. */ 469 | size_t 470 | _TS_reserve (_TS_ARRAY_T * this) 471 | { 472 | return this->_Res; 473 | } 474 | 475 | /* _set_reserve: Sets how many elements there are in reserve. Only works if 476 | the array is empty. */ 477 | void 478 | _TS_set_reserve (_TS_ARRAY_T * this, size_t r) 479 | { 480 | if (this->_Ptr == 0) 481 | this->_Res = r; 482 | } 483 | 484 | #endif 485 | 486 | #undef _NM 487 | #undef _VAL 488 | 489 | #undef _TS_ARRAY_T 490 | #undef _TS_Grow 491 | #undef _TS_Tidy 492 | #undef _TS_Xinv 493 | #undef _TS_Xlen 494 | #undef _TS_Xran 495 | #undef _TS_append 496 | #undef _TS_assign 497 | #undef _TS_base 498 | #undef _TS_copy_ctor 499 | #undef _TS_create 500 | #undef _TS_create_copy 501 | #undef _TS_create_from_ptr 502 | #undef _TS_create_with_size 503 | #undef _TS_ctor 504 | #undef _TS_ctor_from_ptr 505 | #undef _TS_ctor_with_size 506 | #undef _TS_destroy 507 | #undef _TS_dtor 508 | #undef _TS_get_at 509 | #undef _TS_insert 510 | #undef _TS_length 511 | #undef _TS_put_at 512 | #undef _TS_remove 513 | #undef _TS_reserve 514 | #undef _TS_resize 515 | #undef _TS_set_reserve 516 | #undef _TS_subarray 517 | #undef _TS_swap 518 | 519 | /* END OF FILE */ 520 | -------------------------------------------------------------------------------- /dynstr.h: -------------------------------------------------------------------------------- 1 | /* dynamic string function header 2 | 3 | AUTHOR: Gregory Pietsch 4 | 5 | DESCRIPTION: 6 | 7 | This file contains dynamic string function prototypes for an 8 | edlin-style line editor. 9 | 10 | COPYRIGHT NOTICE AND DISCLAIMER: 11 | 12 | Copyright (C) 2003 Gregory Pietsch 13 | 14 | This program is free software; you can redistribute it and/or 15 | modify it under the terms of the GNU General Public License 16 | as published by the Free Software Foundation; either version 2 17 | of the License, or (at your option) any later version. 18 | 19 | This program is distributed in the hope that it will be useful, 20 | but WITHOUT ANY WARRANTY; without even the implied warranty of 21 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 | GNU General Public License for more details. 23 | 24 | You should have received a copy of the GNU General Public License along 25 | with this program; if not, write to the Free Software Foundation, Inc., 26 | 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 27 | */ 28 | 29 | #ifndef DYNSTR_H 30 | #define DYNSTR_H 31 | 32 | #include "defines.h" 33 | 34 | typedef struct STRING_T 35 | { 36 | char *ptr; 37 | size_t len, res; 38 | } STRING_T; 39 | 40 | /* exported functions */ 41 | 42 | void DSctor (STRING_T * this); 43 | void DSctor_with_size (STRING_T * this, size_t n, capacity c); 44 | void DScopy_ctor (STRING_T *this, STRING_T *x); 45 | void DSdtor (STRING_T * this); 46 | STRING_T *DScreate (void); 47 | STRING_T *DScreate_with_size (size_t n, capacity c); 48 | STRING_T *DScreate_copy (STRING_T *x); 49 | void DSdestroy (STRING_T * this); 50 | STRING_T *DSappendchar (STRING_T * this, int c, size_t nr); 51 | STRING_T *DSappendcstr (STRING_T * this, char *s, size_t ns); 52 | STRING_T *DSappend (STRING_T * this, STRING_T * str, size_t pos, size_t ns); 53 | STRING_T *DSassignchar (STRING_T * this, int c, size_t n); 54 | STRING_T *DSassigncstr (STRING_T * this, char *s, size_t n); 55 | STRING_T *DSassign (STRING_T * this, STRING_T * str, size_t pos, size_t ns); 56 | STRING_T *DSinsertchar (STRING_T * this, size_t p0, int c, size_t nr); 57 | STRING_T *DSinsertcstr (STRING_T * this, size_t p0, char *s, size_t ns); 58 | STRING_T *DSinsert (STRING_T * this, size_t p0, STRING_T * str, size_t pos, 59 | size_t ns); 60 | STRING_T *DSremove (STRING_T * this, size_t p0, size_t nr); 61 | STRING_T *DSreplacechar (STRING_T * this, size_t p0, size_t n0, int c, 62 | size_t nr); 63 | STRING_T *DSreplacecstr (STRING_T * this, size_t p0, size_t n0, char *s, 64 | size_t ns); 65 | STRING_T *DSreplace (STRING_T * this, size_t p0, size_t n0, STRING_T * str, 66 | size_t pos, size_t ns); 67 | int DSget_at (STRING_T * this, size_t p0); 68 | void DSput_at (STRING_T * this, size_t p0, int c); 69 | size_t DScopy (STRING_T * this, char *s, size_t n, size_t p0); 70 | size_t DSfind (STRING_T * this, char *s, size_t p0, size_t n); 71 | size_t DSrfind (STRING_T * this, char *s, size_t p0, size_t n); 72 | size_t DSfind_first_of (STRING_T * this, char *s, size_t p0, size_t n); 73 | size_t DSfind_last_of (STRING_T * this, char *s, size_t p0, size_t n); 74 | size_t DSfind_first_not_of (STRING_T * this, char *s, size_t p0, size_t n); 75 | size_t DSfind_last_not_of (STRING_T * this, char *s, size_t p0, size_t n); 76 | int DScomparechar (STRING_T * this, int c, size_t p0, size_t ns); 77 | int DScomparecstr (STRING_T * this, char *s, size_t p0, size_t ns); 78 | int DScompare (STRING_T * this, STRING_T * str, size_t p0, size_t ns); 79 | char *DScstr (STRING_T * this); 80 | size_t DSlength (STRING_T * this); 81 | void DSresize (STRING_T * this, size_t n, int c); 82 | size_t DSreserve (STRING_T * this); 83 | void DSset_reserve (STRING_T * this, size_t n); 84 | STRING_T *DSsubstr (STRING_T * this, size_t p, size_t n); 85 | 86 | #define T STRING_T 87 | #define TS DAS 88 | #define Tassign(x,y) DSassign(x,y,0,NPOS) 89 | #define Tctor(x) DSctor(x) 90 | #define Tdtor(x) DSdtor(x) 91 | #define PROTOS_ONLY 92 | #include "dynarray.h" 93 | #undef T 94 | #undef TS 95 | #undef Tassign 96 | #undef Tctor 97 | #undef Tdtor 98 | #undef PROTOS_ONLY 99 | 100 | #endif 101 | 102 | /* END OF FILE */ 103 | -------------------------------------------------------------------------------- /edlib.h: -------------------------------------------------------------------------------- 1 | /* edlib.h -- block manipulation routines for edlin 2 | 3 | AUTHOR: Gregory Pietsch 4 | 5 | DESCRIPTION: 6 | 7 | This file contains block manipulation routines for edlin, an 8 | edlin-style line editor. 9 | 10 | COPYRIGHT NOTICE AND DISCLAIMER: 11 | 12 | Copyright (C) 2003 Gregory Pietsch 13 | 14 | This program is free software; you can redistribute it and/or 15 | modify it under the terms of the GNU General Public License 16 | as published by the Free Software Foundation; either version 2 17 | of the License, or (at your option) any later version. 18 | 19 | This program is distributed in the hope that it will be useful, 20 | but WITHOUT ANY WARRANTY; without even the implied warranty of 21 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 | GNU General Public License for more details. 23 | 24 | You should have received a copy of the GNU General Public License along 25 | with this program; if not, write to the Free Software Foundation, Inc., 26 | 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 27 | */ 28 | 29 | #ifndef EDLIB_H 30 | #define EDLIB_H 31 | 32 | /* includes */ 33 | #if defined(__STDC__) || defined(HAVE_STDDEF_H) 34 | #include 35 | #elif defined(HAVE_SYS_TYPES_H) 36 | #include 37 | #endif 38 | 39 | /* typedefs */ 40 | 41 | /* static variables */ 42 | 43 | /* functions */ 44 | 45 | /* commands */ 46 | 47 | /* initialize the buffer */ 48 | void create_buffer (void); 49 | 50 | /* destroy the buffer */ 51 | void destroy_buffer (void); 52 | 53 | /* transfer_file - merges the contents of a file on disk with a file in memory 54 | */ 55 | void transfer_file (unsigned long before_line, char *filename); 56 | 57 | /* write X number of lines to a file */ 58 | void write_file (unsigned long lines, char *filename); 59 | 60 | /* copy a block of lines elsewhere in the buffer */ 61 | void copy_block (unsigned long line1, unsigned long line2, 62 | unsigned long line3, size_t count); 63 | 64 | /* delete a block from line1 to line2 */ 65 | void delete_block (unsigned long line1, unsigned long line2); 66 | 67 | /* move the block from line1 to line2 to immediately before line3 */ 68 | void move_block (unsigned long line1, unsigned long line2, 69 | unsigned long line3); 70 | 71 | /* read a line from stdin */ 72 | char *read_line (char *prompt); 73 | 74 | /* display a block of text */ 75 | void display_block (unsigned long first_line, unsigned long last_line, 76 | unsigned long current_line, size_t page_size); 77 | 78 | /* modify_line - modify a line in the buffer */ 79 | void modify_line (unsigned long line); 80 | 81 | /* search_buffer - search a buffer for a string */ 82 | unsigned long search_buffer (unsigned long current_line, 83 | unsigned long line1, unsigned long line2, 84 | int verify, char *s); 85 | 86 | /* replace_buffer - search a buffer for a string, then replace */ 87 | unsigned long replace_buffer (unsigned long current_line, 88 | unsigned long line1, unsigned long line2, 89 | int verify, char *s); 90 | 91 | /* insert_block - go into insert mode */ 92 | unsigned long insert_block (unsigned long line); 93 | 94 | /* get the last line in the buffer */ 95 | unsigned long get_last_line (void); 96 | 97 | #endif 98 | 99 | /* END OF FILE */ 100 | -------------------------------------------------------------------------------- /edlin-ja.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FDOS/edlin/c036c43adbdaa5693bb4cd3f4f3c65090f1c9d57/edlin-ja.htm -------------------------------------------------------------------------------- /edlin-ja.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FDOS/edlin/c036c43adbdaa5693bb4cd3f4f3c65090f1c9d57/edlin-ja.txt -------------------------------------------------------------------------------- /edlin.c: -------------------------------------------------------------------------------- 1 | /* edlin.c -- main file for edlin 2 | 3 | AUTHOR: Gregory Pietsch 4 | 5 | DESCRIPTION: 6 | 7 | This file is the main file for edlin, an edlin-style line editor. 8 | 9 | COPYRIGHT NOTICE AND DISCLAIMER: 10 | 11 | Copyright (C) 2003 Gregory Pietsch 12 | 13 | This program is free software; you can redistribute it and/or 14 | modify it under the terms of the GNU General Public License 15 | as published by the Free Software Foundation; either version 2 16 | of the License, or (at your option) any later version. 17 | 18 | This program is distributed in the hope that it will be useful, 19 | but WITHOUT ANY WARRANTY; without even the implied warranty of 20 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 | GNU General Public License for more details. 22 | 23 | You should have received a copy of the GNU General Public License along 24 | with this program; if not, write to the Free Software Foundation, Inc., 25 | 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 26 | 27 | */ 28 | 29 | /* includes */ 30 | 31 | #include "config.h" 32 | #include 33 | #include 34 | #include "dynstr.h" 35 | #include "edlib.h" 36 | #define EXTERN /* force a declaration */ 37 | #include "msgs.h" 38 | #ifdef USE_CATGETS 39 | #include "nl_types.h" 40 | #endif 41 | #ifdef USE_KITTEN 42 | #include "kitten.h" 43 | #endif 44 | 45 | 46 | /* typedefs */ 47 | #ifndef MIN 48 | #define MIN(x,y) ((x)<(y)?(x):(y)) 49 | #endif 50 | #ifndef MAX 51 | #define MAX(x,y) ((x)>(y)?(x):(y)) 52 | #endif 53 | 54 | /* static variables */ 55 | 56 | long current_line = 1L; 57 | unsigned page_size = 23; 58 | int exiting = 0; 59 | char *current_filename = 0; 60 | 61 | /* functions */ 62 | 63 | void 64 | help (void) 65 | { 66 | puts (G00013); 67 | puts (G00014); 68 | puts (G00015); 69 | puts (G00016); 70 | puts (G00017); 71 | puts (G00018); 72 | puts (G00019); 73 | puts (G00020); 74 | puts (G00021); 75 | puts (G00022); 76 | puts (G00023); 77 | } 78 | 79 | void 80 | parse_command (char *s) 81 | { 82 | char *ip = s; 83 | long acc = 0; 84 | long lp[4] = { 0UL, 0UL, 0UL, 0UL }; 85 | char op = '+'; 86 | int verifying = 0; 87 | size_t lpip = 0; 88 | 89 | if (*s == '\0') 90 | return; 91 | while (*ip && !isalpha (*ip) && *ip != '?') 92 | { 93 | /* parse the digits */ 94 | if (*ip == '.') 95 | { 96 | if (acc) 97 | { 98 | /* Error: Invalid user input */ 99 | fprintf (stderr, G00037, G00033); 100 | return; 101 | } 102 | acc = current_line; 103 | ip++; 104 | } 105 | else if (*ip == '$') 106 | { 107 | if (acc) 108 | { 109 | /* Error: Invalid user input */ 110 | fprintf (stderr, G00037, G00033); 111 | return; 112 | } 113 | acc = get_last_line (); 114 | ip++; 115 | } 116 | else 117 | while (isdigit (*ip)) 118 | acc = acc * 10 + (*ip++ - '0'); 119 | if (lpip >= 4) 120 | { 121 | /* Error: Invalid user input */ 122 | fprintf (stderr, G00037, G00033); 123 | return; 124 | } 125 | lp[lpip] += (op == '+') ? acc : -acc; 126 | acc = 0; 127 | if (*ip == '+' || *ip == '-') 128 | op = *ip++; 129 | else if (*ip == ',') 130 | { 131 | lpip++; 132 | ip++; 133 | op = '+'; 134 | } 135 | else if (*ip && !(isalpha ((unsigned char) *ip) 136 | || (*ip == '?' && isalpha ((unsigned char) ip[1])))) 137 | { 138 | /* Error: Invalid user input */ 139 | fprintf (stderr, G00037, G00033); 140 | return; 141 | } 142 | } 143 | if (*ip == '?') 144 | { 145 | ip++; 146 | verifying = 1; 147 | } 148 | /* at this point, *ip should be pointing to '\0' or the command character */ 149 | switch (tolower ((unsigned char) (*ip))) 150 | { 151 | case '\0': /* amend a single line or show help */ 152 | if (lp[0] == 0 && verifying) 153 | help (); 154 | else if (lp[0]) 155 | { 156 | current_line = lp[0]; 157 | modify_line (current_line - 1); 158 | } 159 | else 160 | { 161 | /* Error: Invalid user input */ 162 | fprintf (stderr, G00037, G00033); 163 | return; 164 | } 165 | break; 166 | case 'c': /* copy */ 167 | if (lp[0] == 0 || lp[1] == 0) 168 | lp[0] = lp[1] = current_line; 169 | if (lp[2] == 0) 170 | { 171 | /* Error: Invalid user input */ 172 | fprintf (stderr, G00037, G00033); 173 | return; 174 | } 175 | if (lp[3] == 0) 176 | lp[3] = 1; 177 | copy_block (lp[0] - 1, lp[1] - 1, lp[2] - 1, (size_t) lp[3]); 178 | break; 179 | case 'd': /* delete */ 180 | if (lp[1] == 0) 181 | lp[1] = (lp[0]) ? lp[0] : current_line; 182 | if (lp[0] == 0) 183 | lp[0] = current_line; 184 | delete_block (lp[0] - 1, lp[1] - 1); 185 | break; 186 | case 'm': /* move */ 187 | if (lp[0] == 0) 188 | lp[0] = current_line; 189 | if (lp[1] == 0 || lp[2] == 0) 190 | { 191 | /* invalid parameters */ 192 | /* Error: Invalid user input */ 193 | fprintf (stderr, G00037, G00033); 194 | return; 195 | } 196 | move_block (lp[0] - 1, lp[1] - 1, lp[2] - 1); 197 | break; 198 | case 'l': /* list */ 199 | case 'p': /* print */ 200 | if (lp[0] == 0) 201 | { 202 | lp[0] = (*ip == 'l') 203 | ? MAX (current_line - (int) (page_size >> 1), 1) : current_line; 204 | } 205 | if (lp[1] == 0) 206 | lp[1] = lp[0] + page_size - 1; 207 | display_block (lp[0] - 1, lp[1] - 1, current_line - 1, page_size); 208 | break; 209 | case 'q': /* quit */ 210 | exiting = 1; 211 | break; 212 | case 't': /* transfer file */ 213 | if (lp[0] == 0) 214 | lp[0] = current_line; 215 | ip++; 216 | while (*ip && isspace (*ip)) 217 | ip++; 218 | transfer_file (lp[0] - 1, ip); 219 | current_line = lp[0]; 220 | break; 221 | case 'e': /* write & exit */ 222 | case 'w': /* write file */ 223 | exiting = (*ip == 'e'); 224 | ip++; 225 | while (*ip && isspace (*ip)) 226 | ip++; 227 | if (*ip == 0 && current_filename == 0) 228 | /* No filename */ 229 | fprintf (stderr, G00037, G00034); 230 | else 231 | write_file (lp[0] ? lp[0] : NPOS, *ip ? ip : current_filename); 232 | break; 233 | case 'i': /* insert */ 234 | if (lp[0] == 0) 235 | lp[0] = current_line; 236 | current_line = insert_block (lp[0] - 1); 237 | break; 238 | case 'a': /* append */ 239 | current_line = insert_block (get_last_line ()); 240 | break; 241 | case 's': /* search */ 242 | if (lp[0] == 0) 243 | lp[0] = MIN (current_line + 1, (long) get_last_line ()); 244 | if (lp[1] == 0) 245 | lp[1] = get_last_line (); 246 | current_line = search_buffer (current_line, lp[0] - 1, lp[1] - 1, 247 | verifying, ip + 1); 248 | break; 249 | case 'r': /* replace */ 250 | if (lp[0] == 0) 251 | lp[0] = MIN (current_line + 1, (long) get_last_line ()); 252 | if (lp[1] == 0) 253 | lp[1] = get_last_line (); 254 | current_line = replace_buffer (current_line, lp[0] - 1, lp[1] - 1, 255 | verifying, ip + 1); 256 | break; 257 | default: 258 | /* Invalid user input */ 259 | fprintf (stderr, G00037, G00033); 260 | break; 261 | } 262 | } 263 | 264 | /* Main function for edlin. */ 265 | int 266 | main (int argc, char **argv) 267 | { 268 | char *s; 269 | 270 | #if defined(USE_CATGETS) || defined(USE_KITTEN) 271 | /* get catalog */ 272 | the_cat = catopen("edlin", 0); 273 | #endif 274 | 275 | /* put out the copyright notice and disclaimer */ 276 | fputs (PACKAGE_NAME " " PACKAGE_VERSION, stdout); 277 | puts (G00024); 278 | puts (G00025); 279 | puts (G00026); 280 | puts (G00027); 281 | puts (G00028); 282 | puts (G00029); 283 | create_buffer (); 284 | if (argc >= 2) 285 | transfer_file (0, current_filename = argv[1]); 286 | while (!exiting) 287 | { 288 | s = read_line ("*"); 289 | parse_command (s); 290 | } 291 | destroy_buffer (); 292 | #if defined(USE_CATGETS) || defined(USE_KITTEN) 293 | /* close catalog */ 294 | catclose(the_cat); 295 | #endif 296 | return 0; 297 | } 298 | 299 | /* END OF FILE */ 300 | -------------------------------------------------------------------------------- /edlin.htm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | HTML HELP file for EDLIN 6 | 7 | 8 | 9 | 14 | 15 | 16 |

EDLIN 2.4

17 |



18 |

19 |

The edlin program is a small line 20 | editor, written for FreeDOS as a functional clone of the old MS-DOS 21 | program edlin. It differs from MS edlin in that first, it's free 22 | software, and second, the user interface is slightly different in a 23 | few places. The reason for the difference is so that the user does 24 | not have to type in control characters mandated by MS edlin's syntax.

25 |



26 |

27 |

INVOKING EDLIN

28 |



29 |

30 |

The edlin program is invoked either 31 | by itself:

32 |



33 |

34 |

edlin

35 |



36 |

37 |

or with a filename that's initially 38 | read in:

39 |



40 |

41 |

edlin file

42 |



43 |

44 |

EDLIN'S INTERNAL COMMANDS

45 |



46 |

47 |

In the following command lists, 48 | brackets represent optional constructs. The # symbol represents a 49 | line number, which is either a string of digits, a period 50 | representing the current line, a dollar sign ($) representing the 51 | last line in the file, or a line number added or subtracted from 52 | another line number, so that

53 |



54 |

55 |

.,.+1p

56 |



57 |

58 |

prints the current line and the 59 | succeeding line.

60 |



61 |

62 |

A dollar sign in the following lists 63 | represents a string of characters. They may be enclosed in either 64 | single or double quotes and may contain the following escape 65 | sequences:

66 |



67 |

68 |

\a - 69 | alert

70 |

\b - 71 | backspace

72 |

\e - 73 | escape

74 |

\f - 75 | formfeed

76 |

\t - 77 | horizontal tab

78 |

\v - 79 | vertical tab

80 |

\" - 81 | double quote

82 |

\' - 83 | single quote

84 |

\. - 85 | period

86 |

\\ - 87 | backslash 88 |

89 |

\xXX 90 | where X is a hex digit (0-9, a-f, A-F) - hexadecimal constant

91 |

\dddd 92 | where d is a decimal 93 | digit (0-9) - decimal constant

94 |

\OOO 95 | where O is an octal digit (0-7) - octal constant

96 |

\^C 97 | - control character

98 |



99 |

100 |

The edlin program supports the 101 | following syntax:

102 |



103 |

104 |

# - EDIT A SINGLE LINE

105 |



106 |

107 |

The edlin program outputs the single 108 | line indicated by the number, and the next inputted line replaces the 109 | outputted line in the file.

110 |



111 |

112 |

a - APPEND

113 |

This command is equivalent to $+1i .

114 |



115 |

116 |

[#],[#],#,[#]c - COPY A RANGE OF 117 | LINES

118 |



119 |

120 |

This command copies a block of 121 | consecutive lines to another location in the buffer. The parameters 122 | are:

123 |



124 |

125 |
    126 |
  • The first line you want to copy 127 | (default = current line)

    128 |
  • The last line you want to copy 129 | (default = current line)

    130 |
  • The line before which you want 131 | to insert the block of lines

    132 |
  • The number of times you want to 133 | copy the block (default = 1)

    134 |
135 |



136 |

137 |

After edlin copies lines, you may use 138 | the l (list) command to see the correctly renumbered lines.

139 |



140 |

141 |

[#][,#]d - DELETE A BLOCK OF LINES

142 |



143 |

144 |

This command deletes a block of 145 | consecutive lines. The parameters are the first and last line of the 146 | block to be deleted.

147 |



148 |

149 |

If you omit the second parameter, it 150 | deletes only the line specified in the first parameter. If you omit 151 | the first parameter, it deletes the block from the current line to 152 | the line specified in the second parameter (be sure to include the 153 | comma). Omitting both parameters causes the current line to be 154 | deleted.

155 |



156 |

157 |

e filename - SAVE AND QUIT

158 |



159 |

160 |

This command is equivalent to 161 |

162 |



163 |

164 |

w filename

165 |



166 |

167 |

followed by

168 |



169 |

170 |

q

171 |



172 |

173 |

[#]i - INSERT MODE

174 |



175 |

176 |

This command enters insert mode. Its 177 | parameter is the line number before which you want to insert lines.

178 |



179 |

180 |

While inserting, escape sequences 181 | such as those above are legal to type in. To exit insert mode, type a 182 | period (.) on an otherwise blank line (if you need a line with just a 183 | period, escape it).

184 |



185 |

186 |

After exiting insert mode, the line 187 | after the inserted text becomes the current line unless the insertion 188 | was appended to the end of the text, in which case the last line of 189 | the text becomes the new current line.

190 |



191 |

192 |

[#][,#]l - LIST LINES

193 |



194 |

195 |

This command lists lines of text on 196 | the screen. If you omit the first parameter, the command starts 197 | showing text beginning with 11 lines of text before the current line. 198 | Omitting the second parameter shows a page of text beginning with the 199 | line specified in the first parameter. Omitting both shows one page 200 | of text starting at 11 lines before the current line. In all cases, 201 | if the number of lines is larger than the number of lines in a page, 202 | the program will prompt after each page of lines.

203 |



204 |

205 |

[#],[#],#m - MOVE BLOCK

206 |



207 |

208 |

This command moves a block of text to 209 | the line before the number specified in the third parameter. It is 210 | similar to copying, then deleting the original block.

211 |



212 |

213 |

[#][,#]p - PAGE

214 |



215 |

216 |

This is similar to l except that the 217 | default page starts with the current line instead of 11 lines before.

218 |



219 |

220 |

q - QUIT

221 |



222 |

223 |

Self-explanatory.

224 |



225 |

226 |

[#][,#][?]r$,$ - REPLACE STRING

227 |



228 |

229 |

This command replaces all occurrences 230 | of the first string with the second between the two lines specified. 231 | An omitted first parameter starts the replacing at the line after the 232 | current line; an omitted second parameter stops the replacing at the 233 | last line of the file.

234 |



235 |

236 |

The question mark sends a 237 | confirmation message before replacement.

238 |



239 |

240 |

[#][,#][?]s$ - SEARCH FOR 241 | SUBSTRING

242 |



243 |

244 |

This command searches for the first 245 | line containing the substring specified. Omitting the first parameter 246 | causes the search to start on the current line; omitting the second 247 | causes the search to stop at the end of the file.

248 |



249 |

250 |

The question mark causes the search 251 | to send a confirmation message. Saying no to the confirmation message 252 | continues the search; saying yes ends it.

253 |



254 |

255 |

The current line will be reset to the 256 | line where the search ended if it was successful.

257 |



258 |

259 |

[#]t filename - TRANSFER FILE

260 |



261 |

262 |

This command causes the contents of 263 | the file to be inserted before the line number specified. If the line 264 | number is omitted, the default is the current line.

265 |



266 |

267 |

[#]w filename - WRITE FILE

268 |



269 |

270 |

This command causes the first number 271 | of lines specified by the parameter to be written to the file 272 | specified. If the parameter is omitted, it will write all the lines 273 |

274 |

in the buffer to the file.

275 |



276 |

277 |

AUTHOR/MAINTAINER

278 |



279 |

280 |

Gregory Pietsch <gpietsch@comcast.net>

281 | 282 | 283 | -------------------------------------------------------------------------------- /edlin.lsm: -------------------------------------------------------------------------------- 1 | Begin3 2 | Title: edlin 3 | Version: 2.10c 4 | Entered-date: 2007-05-27 5 | Description: The edlin program is the FreeDOS standard line editor. 6 | Keywords: FreeDOS, line editor 7 | Author: gpietsch -at- comcast.net (Gregory Pietsch) 8 | Maintained-by: gpietsch -at- comcast.net (Gregory Pietsch) 9 | Primary-site: http://sourceforge.net/projects/freedos-edlin 10 | Alternate-site: http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/dos/edlin 11 | Original-site: none 12 | Platforms: Linux (gcc), DOS (Microsoft Visual C++ in C mode, Borland C++) 13 | Copying-policy: GPL 14 | End 15 | -------------------------------------------------------------------------------- /edlin.tgt: -------------------------------------------------------------------------------- 1 | 40 2 | targetIdent 3 | 0 4 | MProject 5 | 1 6 | MComponent 7 | 0 8 | 2 9 | WString 10 | 3 11 | EXE 12 | 3 13 | WString 14 | 5 15 | dr2e9 16 | 1 17 | 0 18 | 1 19 | 4 20 | MCommand 21 | 0 22 | 5 23 | MCommand 24 | 0 25 | 6 26 | MItem 27 | 9 28 | edlin.exe 29 | 7 30 | WString 31 | 3 32 | EXE 33 | 8 34 | WVList 35 | 0 36 | 9 37 | WVList 38 | 1 39 | 10 40 | ActionStates 41 | 11 42 | WString 43 | 5 44 | &Make 45 | 12 46 | WVList 47 | 0 48 | -1 49 | 1 50 | 1 51 | 0 52 | 13 53 | WPickList 54 | 6 55 | 14 56 | MItem 57 | 3 58 | *.c 59 | 15 60 | WString 61 | 4 62 | COBJ 63 | 16 64 | WVList 65 | 2 66 | 17 67 | MVState 68 | 18 69 | WString 70 | 3 71 | WCC 72 | 19 73 | WString 74 | 19 75 | ?????Include files: 76 | 1 77 | 20 78 | WString 79 | 10 80 | nl_types.h 81 | 0 82 | 21 83 | MVState 84 | 22 85 | WString 86 | 3 87 | WCC 88 | 23 89 | WString 90 | 23 91 | ?????Macro definitions: 92 | 1 93 | 24 94 | WString 95 | 11 96 | USE_CATGETS 97 | 0 98 | 25 99 | WVList 100 | 0 101 | -1 102 | 1 103 | 1 104 | 0 105 | 26 106 | MItem 107 | 9 108 | catgets.c 109 | 27 110 | WString 111 | 4 112 | COBJ 113 | 28 114 | WVList 115 | 0 116 | 29 117 | WVList 118 | 0 119 | 14 120 | 1 121 | 1 122 | 0 123 | 30 124 | MItem 125 | 9 126 | defines.c 127 | 31 128 | WString 129 | 4 130 | COBJ 131 | 32 132 | WVList 133 | 0 134 | 33 135 | WVList 136 | 0 137 | 14 138 | 1 139 | 1 140 | 0 141 | 34 142 | MItem 143 | 8 144 | dynstr.c 145 | 35 146 | WString 147 | 4 148 | COBJ 149 | 36 150 | WVList 151 | 0 152 | 37 153 | WVList 154 | 0 155 | 14 156 | 1 157 | 1 158 | 0 159 | 38 160 | MItem 161 | 7 162 | edlib.c 163 | 39 164 | WString 165 | 4 166 | COBJ 167 | 40 168 | WVList 169 | 0 170 | 41 171 | WVList 172 | 0 173 | 14 174 | 1 175 | 1 176 | 0 177 | 42 178 | MItem 179 | 7 180 | edlin.c 181 | 43 182 | WString 183 | 4 184 | COBJ 185 | 44 186 | WVList 187 | 0 188 | 45 189 | WVList 190 | 0 191 | 14 192 | 1 193 | 1 194 | 0 195 | -------------------------------------------------------------------------------- /edlin.wpj: -------------------------------------------------------------------------------- 1 | 40 2 | projectIdent 3 | 0 4 | VpeMain 5 | 1 6 | WRect 7 | 2340 8 | 40 9 | 7680 10 | 9200 11 | 2 12 | MProject 13 | 3 14 | MCommand 15 | 0 16 | 4 17 | MCommand 18 | 0 19 | 1 20 | 5 21 | WFileName 22 | 9 23 | edlin.tgt 24 | 6 25 | WVList 26 | 1 27 | 7 28 | VComponent 29 | 8 30 | WRect 31 | 0 32 | 0 33 | 5700 34 | 4280 35 | 0 36 | 0 37 | 9 38 | WFileName 39 | 9 40 | edlin.tgt 41 | 0 42 | 5 43 | 7 44 | -------------------------------------------------------------------------------- /install-sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # install - install a program, script, or datafile 3 | 4 | scriptversion=2004-09-10.20 5 | 6 | # This originates from X11R5 (mit/util/scripts/install.sh), which was 7 | # later released in X11R6 (xc/config/util/install.sh) with the 8 | # following copyright and license. 9 | # 10 | # Copyright (C) 1994 X Consortium 11 | # 12 | # Permission is hereby granted, free of charge, to any person obtaining a copy 13 | # of this software and associated documentation files (the "Software"), to 14 | # deal in the Software without restriction, including without limitation the 15 | # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 16 | # sell copies of the Software, and to permit persons to whom the Software is 17 | # furnished to do so, subject to the following conditions: 18 | # 19 | # The above copyright notice and this permission notice shall be included in 20 | # all copies or substantial portions of the Software. 21 | # 22 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23 | # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 24 | # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 25 | # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN 26 | # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- 27 | # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 28 | # 29 | # Except as contained in this notice, the name of the X Consortium shall not 30 | # be used in advertising or otherwise to promote the sale, use or other deal- 31 | # ings in this Software without prior written authorization from the X Consor- 32 | # tium. 33 | # 34 | # 35 | # FSF changes to this file are in the public domain. 36 | # 37 | # Calling this script install-sh is preferred over install.sh, to prevent 38 | # `make' implicit rules from creating a file called install from it 39 | # when there is no Makefile. 40 | # 41 | # This script is compatible with the BSD install script, but was written 42 | # from scratch. It can only install one file at a time, a restriction 43 | # shared with many OS's install programs. 44 | 45 | # set DOITPROG to echo to test this script 46 | 47 | # Don't use :- since 4.3BSD and earlier shells don't like it. 48 | doit="${DOITPROG-}" 49 | 50 | # put in absolute paths if you don't have them in your path; or use env. vars. 51 | 52 | mvprog="${MVPROG-mv}" 53 | cpprog="${CPPROG-cp}" 54 | chmodprog="${CHMODPROG-chmod}" 55 | chownprog="${CHOWNPROG-chown}" 56 | chgrpprog="${CHGRPPROG-chgrp}" 57 | stripprog="${STRIPPROG-strip}" 58 | rmprog="${RMPROG-rm}" 59 | mkdirprog="${MKDIRPROG-mkdir}" 60 | 61 | chmodcmd="$chmodprog 0755" 62 | chowncmd= 63 | chgrpcmd= 64 | stripcmd= 65 | rmcmd="$rmprog -f" 66 | mvcmd="$mvprog" 67 | src= 68 | dst= 69 | dir_arg= 70 | dstarg= 71 | no_target_directory= 72 | 73 | usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE 74 | or: $0 [OPTION]... SRCFILES... DIRECTORY 75 | or: $0 [OPTION]... -t DIRECTORY SRCFILES... 76 | or: $0 [OPTION]... -d DIRECTORIES... 77 | 78 | In the 1st form, copy SRCFILE to DSTFILE. 79 | In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. 80 | In the 4th, create DIRECTORIES. 81 | 82 | Options: 83 | -c (ignored) 84 | -d create directories instead of installing files. 85 | -g GROUP $chgrpprog installed files to GROUP. 86 | -m MODE $chmodprog installed files to MODE. 87 | -o USER $chownprog installed files to USER. 88 | -s $stripprog installed files. 89 | -t DIRECTORY install into DIRECTORY. 90 | -T report an error if DSTFILE is a directory. 91 | --help display this help and exit. 92 | --version display version info and exit. 93 | 94 | Environment variables override the default commands: 95 | CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG 96 | " 97 | 98 | while test -n "$1"; do 99 | case $1 in 100 | -c) shift 101 | continue;; 102 | 103 | -d) dir_arg=true 104 | shift 105 | continue;; 106 | 107 | -g) chgrpcmd="$chgrpprog $2" 108 | shift 109 | shift 110 | continue;; 111 | 112 | --help) echo "$usage"; exit 0;; 113 | 114 | -m) chmodcmd="$chmodprog $2" 115 | shift 116 | shift 117 | continue;; 118 | 119 | -o) chowncmd="$chownprog $2" 120 | shift 121 | shift 122 | continue;; 123 | 124 | -s) stripcmd=$stripprog 125 | shift 126 | continue;; 127 | 128 | -t) dstarg=$2 129 | shift 130 | shift 131 | continue;; 132 | 133 | -T) no_target_directory=true 134 | shift 135 | continue;; 136 | 137 | --version) echo "$0 $scriptversion"; exit 0;; 138 | 139 | *) # When -d is used, all remaining arguments are directories to create. 140 | # When -t is used, the destination is already specified. 141 | test -n "$dir_arg$dstarg" && break 142 | # Otherwise, the last argument is the destination. Remove it from $@. 143 | for arg 144 | do 145 | if test -n "$dstarg"; then 146 | # $@ is not empty: it contains at least $arg. 147 | set fnord "$@" "$dstarg" 148 | shift # fnord 149 | fi 150 | shift # arg 151 | dstarg=$arg 152 | done 153 | break;; 154 | esac 155 | done 156 | 157 | if test -z "$1"; then 158 | if test -z "$dir_arg"; then 159 | echo "$0: no input file specified." >&2 160 | exit 1 161 | fi 162 | # It's OK to call `install-sh -d' without argument. 163 | # This can happen when creating conditional directories. 164 | exit 0 165 | fi 166 | 167 | for src 168 | do 169 | # Protect names starting with `-'. 170 | case $src in 171 | -*) src=./$src ;; 172 | esac 173 | 174 | if test -n "$dir_arg"; then 175 | dst=$src 176 | src= 177 | 178 | if test -d "$dst"; then 179 | mkdircmd=: 180 | chmodcmd= 181 | else 182 | mkdircmd=$mkdirprog 183 | fi 184 | else 185 | # Waiting for this to be detected by the "$cpprog $src $dsttmp" command 186 | # might cause directories to be created, which would be especially bad 187 | # if $src (and thus $dsttmp) contains '*'. 188 | if test ! -f "$src" && test ! -d "$src"; then 189 | echo "$0: $src does not exist." >&2 190 | exit 1 191 | fi 192 | 193 | if test -z "$dstarg"; then 194 | echo "$0: no destination specified." >&2 195 | exit 1 196 | fi 197 | 198 | dst=$dstarg 199 | # Protect names starting with `-'. 200 | case $dst in 201 | -*) dst=./$dst ;; 202 | esac 203 | 204 | # If destination is a directory, append the input filename; won't work 205 | # if double slashes aren't ignored. 206 | if test -d "$dst"; then 207 | if test -n "$no_target_directory"; then 208 | echo "$0: $dstarg: Is a directory" >&2 209 | exit 1 210 | fi 211 | dst=$dst/`basename "$src"` 212 | fi 213 | fi 214 | 215 | # This sed command emulates the dirname command. 216 | dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` 217 | 218 | # Make sure that the destination directory exists. 219 | 220 | # Skip lots of stat calls in the usual case. 221 | if test ! -d "$dstdir"; then 222 | defaultIFS=' 223 | ' 224 | IFS="${IFS-$defaultIFS}" 225 | 226 | oIFS=$IFS 227 | # Some sh's can't handle IFS=/ for some reason. 228 | IFS='%' 229 | set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` 230 | IFS=$oIFS 231 | 232 | pathcomp= 233 | 234 | while test $# -ne 0 ; do 235 | pathcomp=$pathcomp$1 236 | shift 237 | if test ! -d "$pathcomp"; then 238 | $mkdirprog "$pathcomp" 239 | # mkdir can fail with a `File exist' error in case several 240 | # install-sh are creating the directory concurrently. This 241 | # is OK. 242 | test -d "$pathcomp" || exit 243 | fi 244 | pathcomp=$pathcomp/ 245 | done 246 | fi 247 | 248 | if test -n "$dir_arg"; then 249 | $doit $mkdircmd "$dst" \ 250 | && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ 251 | && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ 252 | && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ 253 | && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } 254 | 255 | else 256 | dstfile=`basename "$dst"` 257 | 258 | # Make a couple of temp file names in the proper directory. 259 | dsttmp=$dstdir/_inst.$$_ 260 | rmtmp=$dstdir/_rm.$$_ 261 | 262 | # Trap to clean up those temp files at exit. 263 | trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 264 | trap '(exit $?); exit' 1 2 13 15 265 | 266 | # Copy the file name to the temp name. 267 | $doit $cpprog "$src" "$dsttmp" && 268 | 269 | # and set any options; do chmod last to preserve setuid bits. 270 | # 271 | # If any of these fail, we abort the whole thing. If we want to 272 | # ignore errors from any of these, just make sure not to ignore 273 | # errors from the above "$doit $cpprog $src $dsttmp" command. 274 | # 275 | { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ 276 | && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ 277 | && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ 278 | && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && 279 | 280 | # Now rename the file to the real destination. 281 | { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ 282 | || { 283 | # The rename failed, perhaps because mv can't rename something else 284 | # to itself, or perhaps because mv is so ancient that it does not 285 | # support -f. 286 | 287 | # Now remove or move aside any old file at destination location. 288 | # We try this two ways since rm can't unlink itself on some 289 | # systems and the destination file might be busy for other 290 | # reasons. In this case, the final cleanup might fail but the new 291 | # file should still install successfully. 292 | { 293 | if test -f "$dstdir/$dstfile"; then 294 | $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ 295 | || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ 296 | || { 297 | echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 298 | (exit 1); exit 299 | } 300 | else 301 | : 302 | fi 303 | } && 304 | 305 | # Now rename the file to the real destination. 306 | $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" 307 | } 308 | } 309 | fi || { (exit 1); exit; } 310 | done 311 | 312 | # The final little trick to "correctly" pass the exit status to the exit trap. 313 | { 314 | (exit 0); exit 315 | } 316 | 317 | # Local variables: 318 | # eval: (add-hook 'write-file-hooks 'time-stamp) 319 | # time-stamp-start: "scriptversion=" 320 | # time-stamp-format: "%:y-%02m-%02d.%02H" 321 | # time-stamp-end: "$" 322 | # End: 323 | -------------------------------------------------------------------------------- /kit2msgs.c: -------------------------------------------------------------------------------- 1 | /* kit2msgs - program to convert kitten databases to the msgs.h format 2 | 3 | AUTHOR: Gregory Pietsch 4 | 5 | This program is freely distributable; just don't claim you wrote it. 6 | */ 7 | 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | int 14 | main (void) 15 | { 16 | unsigned char buf[32768], *p; 17 | int n; 18 | 19 | while ((p = fgets (buf, 32768, stdin)) != 0) 20 | { 21 | if (*p == '#') 22 | { 23 | p[strlen (p) - 1] = '\0'; 24 | printf ("/* %-75s */\n", buf + 2); 25 | } 26 | else if (isspace (*p)) 27 | printf ("\n"); 28 | else 29 | { 30 | for (n = 0, p = buf + 2; isdigit (*p); n = n * 10 + *p - '0', p++) 31 | ; 32 | if (n == 0) 33 | printf ("#ifndef MSGS_H\n#define MSGS_H\n\n#define YES\t\""); 34 | else 35 | printf ("#define G%05d\t\"", n); 36 | while (*p++ != '\n') 37 | { 38 | if (*p > 127) 39 | printf ("\\%03o", *p); 40 | else if (isprint (*p)) 41 | putchar (*p); 42 | } 43 | printf ("\"\n"); 44 | } 45 | } 46 | printf ("\n#endif\n\n/* END OF FILE */\n"); 47 | return 0; 48 | } 49 | 50 | /* END OF FILE */ 51 | -------------------------------------------------------------------------------- /kitten.h: -------------------------------------------------------------------------------- 1 | /* Functions that emulate UNIX catgets, some small DOS file functions */ 2 | 3 | /* Copyright (C) 1999,2000 Jim Hall */ 4 | /* Kitten version by Tom Ehlert, heavily modified by Eric Auer 2003 */ 5 | 6 | /* 7 | This library is free software; you can redistribute it and/or 8 | modify it under the terms of the GNU Lesser General Public 9 | License as published by the Free Software Foundation; either 10 | version 2.1 of the License, or (at your option) any later version. 11 | 12 | This library is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 | Lesser General Public License for more details. 16 | 17 | You should have received a copy of the GNU Lesser General Public 18 | License along with this library; if not, write to the Free Software 19 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 | */ 21 | 22 | 23 | #ifndef _CATGETS_H 24 | #define _CATGETS_H 25 | 26 | #ifdef __cplusplus 27 | extern "C" 28 | { 29 | #endif 30 | 31 | /* Data types */ 32 | 33 | typedef int nl_catd; 34 | 35 | /* Functions */ 36 | 37 | #define catgets(catalog, set,message_number,message) kittengets(set,message_number,message) 38 | #define catopen(name,flag) kittenopen(name) 39 | #define catclose(catalog) kittenclose() 40 | 41 | 42 | char *kittengets (int set_number, int message_number, char *message); 43 | nl_catd kittenopen (char *name); 44 | void kittenclose (void); 45 | 46 | int get_line (int file, char *buffer, int size); 47 | 48 | /*int dos_open(char *filename, int mode);*/ 49 | #define open(filename,mode) dos_open(filename,mode) 50 | 51 | /*int dos_read(int file, void *ptr, unsigned count);*/ 52 | #define read(file, ptr, count) dos_read(file,ptr,count) 53 | 54 | /*int dos_write(int file, void *ptr, unsigned count);*/ 55 | #define write(file, ptr, count) dos_write(file,ptr,count) 56 | 57 | /*void dos_close(int file);*/ 58 | #define close(file) dos_close(file) 59 | 60 | #ifdef __cplusplus 61 | } 62 | #endif 63 | 64 | #endif /* _CATGETS_H */ 65 | -------------------------------------------------------------------------------- /kitten/edlin.da: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FDOS/edlin/c036c43adbdaa5693bb4cd3f4f3c65090f1c9d57/kitten/edlin.da -------------------------------------------------------------------------------- /kitten/edlin.de: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FDOS/edlin/c036c43adbdaa5693bb4cd3f4f3c65090f1c9d57/kitten/edlin.de -------------------------------------------------------------------------------- /kitten/edlin.en: -------------------------------------------------------------------------------- 1 | # edlin.en - English-language messages file 2 | # 3 | # Author: Gregory Pietsch 4 | # 5 | # DESCRIPTION: 6 | # 7 | # This file contains #defines for all the message strings in edlin. 8 | # For internationalization fun, just translate the messages in this 9 | # file. 10 | # 11 | # The strings were generated using ESR's cstrings program and moved 12 | # here. 13 | 14 | 1.0:Yy 15 | 1.1:\040:\040 16 | 1.2:O.K.?\040 17 | 1.3:Entry error 18 | 1.4:%s: %lu line read\n 19 | 1.5:%s: %lu lines read\n 20 | 1.6:%s: %lu line written\n 21 | 1.7:%s: %lu lines written\n 22 | 1.8:%lu:%c%s\n 23 | 1.9:Press to continue 24 | 1.10:%lu:\040 25 | 1.11:Not found 26 | 1.12:%lu: %s\n 27 | 1.13:\nedlin has the following subcommands:\n 28 | 1.14:# edit a single line [#],[#],#m move 29 | 1.15:a append [#][,#]p page 30 | 1.16:[#],[#],#,[#]c copy q quit 31 | 1.17:[#][,#]d delete [#][,#][?]r$,$ replace 32 | 1.18:e<> end (write & quit) [#][,#][?]s$ search 33 | 1.19:[#]i insert [#]t<> transfer 34 | 1.20:[#][,#]l list [#]w<> write\n 35 | 1.21:where $ above is a string, <> is a filename, 36 | 1.22:# is a number (which may be .=current line, $=last line, 37 | 1.23:or either number + or - another number).\n 38 | 1.24:, copyright (c) 2003 Gregory Pietsch 39 | 1.25:This program comes with ABSOLUTELY NO WARRANTY. 40 | 1.26:It is free software, and you are welcome to redistribute it 41 | 1.27:under the terms of the GNU General Public License -- either 42 | 1.28:version 2 of the license, or, at your option, any later 43 | 1.29:version.\n 44 | 1.30:Out of memory 45 | 1.31:String length error 46 | 1.32:String position error 47 | 1.33:Invalid user input, use ? for help. 48 | 1.34:No filename 49 | 1.35:Buffer too big 50 | 1.36:Invalid buffer position 51 | 1.37:ERROR: %s\n 52 | 53 | # END OF FILE -------------------------------------------------------------------------------- /kitten/edlin.eo: -------------------------------------------------------------------------------- 1 | # edlin.eo - Esperanto-language messages file 2 | # 3 | # Author: Gregory Pietsch 4 | # Translated by Rugxulo/Anthony Williams 5 | # 6 | # DESCRIPTION: 7 | # 8 | # This file contains #defines for all the message strings in edlin. 9 | # For internationalization fun, just translate the messages in this 10 | # file. 11 | # 12 | # The strings were generated using ESR's cstrings program and moved 13 | # here. 14 | 15 | 1.0:Jj 16 | 1.1:\040:\040 17 | 1.2:Cxu bonege?\040 18 | 1.3:Eraro dum redaktado 19 | 1.4:%s: %lu linio legita\n 20 | 1.5:%s: %lu linioj legitaj\n 21 | 1.6:%s: %lu linio skribita\n 22 | 1.7:%s: %lu linioj skribitaj\n 23 | 1.8:%lu:%c%s\n 24 | 1.9:Klaku -n por dauxrigi 25 | 1.10:%lu:\040 26 | 1.11:Netrovebla 27 | 1.12:%lu: %s\n 28 | 1.13:\nedlin subtenas la jenajn funkciojn:\n 29 | 1.14:# redaktu linion [#],[#],#m movu 30 | 1.15:a postskribu linion [#][,#]p foliumu 31 | 1.16:[#],[#],#,[#]c kopiu q cxesu 32 | 1.17:[#][,#]d forjxetu [#][,#][?]r$,$ anstatauxigi 33 | 1.18:e<> skribu kaj cxesu [#][,#][?]s$ sercxu 34 | 1.19:[#]i antauxskribu [#]t<> transigu 35 | 1.20:[#][,#]l numerigu / list [#]w<> skribu\n 36 | 1.21:$ en suprajxo signifas frazon, <> signifas dosieron, 37 | 1.22:# signifas numeron (aux .=nuntempa linio, aux $=finfina linio, 38 | 1.23:aux ecx + plus aux - minus iun alian numeron).\n 39 | 1.24:, copyright (c) 2003 Gregory Pietsch 40 | 1.25:Cxi tiu programo havas PRECIZE NENIAN GARANTION. 41 | 1.26:Cxi tiu programo estas libera, do bonvene uzu laux GNU 42 | 1.27:Gxenerala Publika Permesila -- GPL v2, aux pli aktuala eldono de tiu 43 | 1.28: 44 | 1.29: 45 | 1.30:Tro malmulte da memoro trovita 46 | 1.31:ERARO: linia vasteco 47 | 1.32:ERARO: linia loko 48 | 1.33:Mistajpon, uzu ? por akiru helpon 49 | 1.34:dosieron ne trovitan 50 | 1.35:ERARO: teksujon tro grandegan 51 | 1.36:ERARO: neuzeblan teksujan lokon 52 | 1.37:ERARO: %s\n 53 | 54 | # END OF FILE 55 | -------------------------------------------------------------------------------- /kitten/edlin.es: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FDOS/edlin/c036c43adbdaa5693bb4cd3f4f3c65090f1c9d57/kitten/edlin.es -------------------------------------------------------------------------------- /kitten/edlin.eu: -------------------------------------------------------------------------------- 1 | # edlin.eu - messages file (Basque version) 2 | # 3 | # Author: Gregory Pietsch 4 | # 5 | # DESCRIPTION: 6 | # 7 | # This file contains #defines for all the message strings in edlin. 8 | # For internationalization fun, just translate the messages in this 9 | # file. 10 | # 11 | # Artxibo hau EDLIN programako mesuen euskeratzea da, Aitor Santamaria 12 | # Merinok (aitor.sm@wanadoo.es) egindakoa. 13 | # 14 | 15 | 1.0:Bb 16 | 1.1: : \b 17 | 1.2:Adoz? \b 18 | 1.3:Zure aginduan error bat aurkitu da 19 | 1.4:%s: %lu lerro erakurri da\n 20 | 1.5:%s: %lu lerro erakurri dira\n 21 | 1.6:%s: %lu lerro idatzi da\n 22 | 1.7:%s: %lu lerro idatzi dira\n 23 | 1.8:%lu:%c%s\n 24 | 1.9:Sakatu aurrera jarraitzeko 25 | 1.10:%lu: \b 26 | 1.11:Ezin da aurkitu 27 | 1.12:%lu: %s\n 28 | 1.13:\nedlin honako aginduak ulertzen ditu:\n 29 | 1.14:# lerro bakar bat editatu [#],[#],#m muguitu 30 | 1.15:a amaieran lerro berri sortu [#][,#]p orrialdez ikusi 31 | 1.16:[#],[#],#,[#]c kopiatu q irten 32 | 1.17:[#][,#]d ezabatu [#][,#][?]r$,$ aldatu 33 | 1.18:e<> amaitu (idatzi eta irten) [#][,#][?]s$ aurkitu 34 | 1.19:[#]i lerro berriak sortu [#]t<> irakurri 35 | 1.20:[#][,#]l listatu [#]w<> idatzi\n 36 | 1.21:$ karakter-kate bat, <> artxibo baten izena, 37 | 1.22:# zenbaki bat (.=lerro hau, $=azken lerro, 38 | 1.23:edo zenbaki + ala - zenbaki) denean.\n 39 | 1.24:, copyright (c) 2003 Gregory Pietsch 40 | 1.25:Programa honek EZ DAUKA GARANTIARIK. 41 | 1.26:Software librea da, eta kopiak eman ditzakezu, GNU-ko Lizentzia 42 | 1.27:Publikoa Orokorraren konditzioak betetzen direnean -- 2. bertzioa edo 43 | 1.28:nahi baldin baduzu, lasterago bertzio baten bat erabili. 44 | 1.29:\n 45 | 1.30:Ez dago behar den memoria 46 | 1.31:Katearen luzeeran error bat aurkitu da 47 | 1.32:Katearen positzioan error bat aurkitu da 48 | 1.33:Zure agindua ulertezina da, idatzi ? laguntza nahi baduzu. 49 | 1.34:Artxiboak ez dauka izenik 50 | 1.35:Bufferra handiegia da 51 | 1.36:Bufer-reko positzioan error bat aurkitu da 52 | 1.37:ERROR: %s\n 53 | 54 | # END OF FILE 55 | -------------------------------------------------------------------------------- /kitten/edlin.fi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FDOS/edlin/c036c43adbdaa5693bb4cd3f4f3c65090f1c9d57/kitten/edlin.fi -------------------------------------------------------------------------------- /kitten/edlin.fr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FDOS/edlin/c036c43adbdaa5693bb4cd3f4f3c65090f1c9d57/kitten/edlin.fr -------------------------------------------------------------------------------- /kitten/edlin.is: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FDOS/edlin/c036c43adbdaa5693bb4cd3f4f3c65090f1c9d57/kitten/edlin.is -------------------------------------------------------------------------------- /kitten/edlin.it: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FDOS/edlin/c036c43adbdaa5693bb4cd3f4f3c65090f1c9d57/kitten/edlin.it -------------------------------------------------------------------------------- /kitten/edlin.ja: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FDOS/edlin/c036c43adbdaa5693bb4cd3f4f3c65090f1c9d57/kitten/edlin.ja -------------------------------------------------------------------------------- /kitten/edlin.la: -------------------------------------------------------------------------------- 1 | # edlin.la - Latin-language messages file 2 | # 3 | # Author: Gregory Pietsch 4 | # 5 | # DESCRIPTION: 6 | # 7 | # This file contains #defines for all the message strings in edlin. 8 | # For internationalization fun, just translate the messages in this 9 | # file. 10 | # 11 | # The strings were generated using ESR's cstrings program and moved 12 | # here. 13 | 14 | 1.0:Bb 15 | 1.1:\040:\040 16 | 1.2:Bonum est?\040 17 | 1.3:Error dum in programma inducere 18 | 1.4:%s: %lu linea legEbar\n 19 | 1.5:%s: %lu lineae legEbar\n 20 | 1.6:%s: %lu linea scribiEbar\n 21 | 1.7:%s: %lu lineae scribiEbar\n 22 | 1.8:%lu:%c%s\n 23 | 1.9:Deprime continuare 24 | 1.10:%lu:\040 25 | 1.11:Non invediebar 26 | 1.12:%lu: %s\n 27 | 1.13:\nedlin hOc subjussa habet:\n 28 | 1.14:# lineam editat [#],[#],#m movet 29 | 1.15:a subscribet [#][,#]p paginA 30 | 1.16:[#],[#],#,[#]c exscribet q cessit 31 | 1.17:[#][,#]d delet [#][,#][?]r$,$ reponet 32 | 1.18:e<> secribit et cessit [#][,#][?]s$ quaeret 33 | 1.19:[#]i inseret [#]t<> legit 34 | 1.20:[#][,#]l enumerat [#]w<> scribet\n 35 | 1.21:$ linea est, <> scapius est, 36 | 1.22:# numerus est (.=linea usitata, $=linea ultima, 37 | 1.23:vel numerus + vel - alius numerus).\n 38 | 1.24:, copyright (c) MMIII Gregory Pietsch 39 | 1.25:Hoc programma PRAECISE NON SATISDATIONES habet. 40 | 1.26:Libera programma est, et quondam via GNU Generalis Publica Potesta 41 | 1.27:-- versionem II vel recenstim -- distriberis. 42 | 1.28: 43 | 1.29: 44 | 1.30:Non memoriam habeo 45 | 1.31:ERROR: Longitudino lineae 46 | 1.32:ERROR: Positionis lineae 47 | 1.33:Data irrita; ?=auxilium 48 | 1.34:Scapius non est 49 | 1.35:ERROR: Linea magna est 50 | 1.36:ERROR: Positionis in linea irrita 51 | 1.37:ERROR: %s\n 52 | 53 | # END OF FILE 54 | -------------------------------------------------------------------------------- /kitten/edlin.nl: -------------------------------------------------------------------------------- 1 | # edlin.nl - messages file (Dutch version) 2 | # 3 | # Author: Gregory Pietsch 4 | # 5 | # DESCRIPTION: 6 | # 7 | # This file contains #defines for all the message strings in edlin. 8 | # For internationalization fun, just translate the messages in this 9 | # file. 10 | # 11 | # The strings were checked and tweaked by Bernd Blaauw . 12 | # 13 | # 14 | 1.0:Jj 15 | 1.1: : \b 16 | 1.2:O.K.? \b 17 | 1.3:Ingang fout 18 | 1.4:%s: %lu lijn werd gelezen\n 19 | 1.5:%s: %lu lijnen werden gelezen\n 20 | 1.6:%s: %lu lijn werd geschreven\n 21 | 1.7:%s: %lu lijnen werden geschreven\n 22 | 1.8:%lu:%c%s\n 23 | 1.9:Druk op om verder te gaan 24 | 1.10:%lu: \b 25 | 1.11:Niet gevonden 26 | 1.12:%lu: %s\n 27 | 1.13:\nHet edlin programma beveelt de aanhang heeft:\n 28 | 1.14:# Redigeer een enkele lijn [#],[#],#m Beweeg blok 29 | 1.15:a Voeg tekst bij [#][,#]p Toon tekst 30 | 1.16:[#],[#],#,[#]c Kopieer blok q Stop het programma 31 | 1.17:[#][,#]d Schrap blok [#][,#][?]r$,$ Vervang tekst 32 | 1.18:e<> Schrijf en stop [#][,#][?]s$ Zoek naar tekst 33 | 1.19:[#]i Voeg tekst in [#]t<> Lees van dossier 34 | 1.20:[#][,#]l Toon tekst [#]w<> Schrijf te archiveren\n 35 | 1.21:Waar $ boven een koord is, <> een filename is, # een (welk 36 | 1.22:. zou kunnen zijn = huidig lijn, $ = de vorige lijn van de buffer 37 | 1.23:of ofwel nummer + ofwel - nog een nummer) nummer is.\n 38 | 1.24:, copyright (c) 2003 Gregory Pietsch 39 | 1.25:Dit programma komt met ABSOLUUT GEEN GARANTIE. 40 | 1.26:Het is vrije software en u bent welkom opnieuw het onder de 41 | 1.27:condities van de GNU Generaal Publieke Licentie -- te 42 | 1.28:distribueren ofwel uitvoering 2 van de vergunning, ofwel, naar 43 | 1.29:uw keuze, enig latere uitvoering.\n 44 | 1.30:Uit herinnering 45 | 1.31:Koordlengte fout 46 | 1.32:Koordpositie fout 47 | 1.33:Ongeldige gebruiker invoer, gebruik ? voor hulp. 48 | 1.34:Geen bestandsnaam 49 | 1.35:Buffer is ook groot 50 | 1.36:Ongeldige bufferpositie 51 | 1.37:FOUT: %s\n 52 | 53 | # END OF FILE 54 | -------------------------------------------------------------------------------- /kitten/edlin.no: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FDOS/edlin/c036c43adbdaa5693bb4cd3f4f3c65090f1c9d57/kitten/edlin.no -------------------------------------------------------------------------------- /kitten/edlin.pl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FDOS/edlin/c036c43adbdaa5693bb4cd3f4f3c65090f1c9d57/kitten/edlin.pl -------------------------------------------------------------------------------- /kitten/edlin.pt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FDOS/edlin/c036c43adbdaa5693bb4cd3f4f3c65090f1c9d57/kitten/edlin.pt -------------------------------------------------------------------------------- /kitten/edlin.sv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FDOS/edlin/c036c43adbdaa5693bb4cd3f4f3c65090f1c9d57/kitten/edlin.sv -------------------------------------------------------------------------------- /kitten/edlin.tr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FDOS/edlin/c036c43adbdaa5693bb4cd3f4f3c65090f1c9d57/kitten/edlin.tr -------------------------------------------------------------------------------- /malloc.c: -------------------------------------------------------------------------------- 1 | /* Work around bug on some systems where malloc (0) fails. 2 | Copyright (C) 1997, 1998 Free Software Foundation, Inc. 3 | 4 | This program is free software; you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation; either version 2, or (at your option) 7 | any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with this program; if not, write to the Free Software Foundation, 16 | Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 17 | 18 | /* written by Jim Meyering */ 19 | 20 | #if HAVE_CONFIG_H 21 | # include "config.h" 22 | #endif 23 | #undef malloc 24 | 25 | #include 26 | 27 | char *malloc (); 28 | 29 | /* Allocate an N-byte block of memory from the heap. 30 | If N is zero, allocate a 1-byte block. */ 31 | 32 | char * 33 | rpl_malloc (size_t n) 34 | { 35 | if (n == 0) 36 | n = 1; 37 | return malloc (n); 38 | } 39 | -------------------------------------------------------------------------------- /missing: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # Common stub for a few missing GNU programs while installing. 3 | # Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc. 4 | # Originally by Fran,cois Pinard , 1996. 5 | 6 | # This program is free software; you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation; either version 2, or (at your option) 9 | # any later version. 10 | 11 | # This program is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | 16 | # You should have received a copy of the GNU General Public License 17 | # along with this program; if not, write to the Free Software 18 | # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 19 | # 02111-1307, USA. 20 | 21 | # As a special exception to the GNU General Public License, if you 22 | # distribute this file as part of a program that contains a 23 | # configuration script generated by Autoconf, you may include it under 24 | # the same distribution terms that you use for the rest of that program. 25 | 26 | if test $# -eq 0; then 27 | echo 1>&2 "Try \`$0 --help' for more information" 28 | exit 1 29 | fi 30 | 31 | run=: 32 | 33 | # In the cases where this matters, `missing' is being run in the 34 | # srcdir already. 35 | if test -f configure.ac; then 36 | configure_ac=configure.ac 37 | else 38 | configure_ac=configure.in 39 | fi 40 | 41 | case "$1" in 42 | --run) 43 | # Try to run requested program, and just exit if it succeeds. 44 | run= 45 | shift 46 | "$@" && exit 0 47 | ;; 48 | esac 49 | 50 | # If it does not exist, or fails to run (possibly an outdated version), 51 | # try to emulate it. 52 | case "$1" in 53 | 54 | -h|--h|--he|--hel|--help) 55 | echo "\ 56 | $0 [OPTION]... PROGRAM [ARGUMENT]... 57 | 58 | Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an 59 | error status if there is no known handling for PROGRAM. 60 | 61 | Options: 62 | -h, --help display this help and exit 63 | -v, --version output version information and exit 64 | --run try to run the given command, and emulate it if it fails 65 | 66 | Supported PROGRAM values: 67 | aclocal touch file \`aclocal.m4' 68 | autoconf touch file \`configure' 69 | autoheader touch file \`config.h.in' 70 | automake touch all \`Makefile.in' files 71 | bison create \`y.tab.[ch]', if possible, from existing .[ch] 72 | flex create \`lex.yy.c', if possible, from existing .c 73 | help2man touch the output file 74 | lex create \`lex.yy.c', if possible, from existing .c 75 | makeinfo touch the output file 76 | tar try tar, gnutar, gtar, then tar without non-portable flags 77 | yacc create \`y.tab.[ch]', if possible, from existing .[ch]" 78 | ;; 79 | 80 | -v|--v|--ve|--ver|--vers|--versi|--versio|--version) 81 | echo "missing 0.4 - GNU automake" 82 | ;; 83 | 84 | -*) 85 | echo 1>&2 "$0: Unknown \`$1' option" 86 | echo 1>&2 "Try \`$0 --help' for more information" 87 | exit 1 88 | ;; 89 | 90 | aclocal*) 91 | if test -z "$run" && ($1 --version) > /dev/null 2>&1; then 92 | # We have it, but it failed. 93 | exit 1 94 | fi 95 | 96 | echo 1>&2 "\ 97 | WARNING: \`$1' is missing on your system. You should only need it if 98 | you modified \`acinclude.m4' or \`${configure_ac}'. You might want 99 | to install the \`Automake' and \`Perl' packages. Grab them from 100 | any GNU archive site." 101 | touch aclocal.m4 102 | ;; 103 | 104 | autoconf) 105 | if test -z "$run" && ($1 --version) > /dev/null 2>&1; then 106 | # We have it, but it failed. 107 | exit 1 108 | fi 109 | 110 | echo 1>&2 "\ 111 | WARNING: \`$1' is missing on your system. You should only need it if 112 | you modified \`${configure_ac}'. You might want to install the 113 | \`Autoconf' and \`GNU m4' packages. Grab them from any GNU 114 | archive site." 115 | touch configure 116 | ;; 117 | 118 | autoheader) 119 | if test -z "$run" && ($1 --version) > /dev/null 2>&1; then 120 | # We have it, but it failed. 121 | exit 1 122 | fi 123 | 124 | echo 1>&2 "\ 125 | WARNING: \`$1' is missing on your system. You should only need it if 126 | you modified \`acconfig.h' or \`${configure_ac}'. You might want 127 | to install the \`Autoconf' and \`GNU m4' packages. Grab them 128 | from any GNU archive site." 129 | files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` 130 | test -z "$files" && files="config.h" 131 | touch_files= 132 | for f in $files; do 133 | case "$f" in 134 | *:*) touch_files="$touch_files "`echo "$f" | 135 | sed -e 's/^[^:]*://' -e 's/:.*//'`;; 136 | *) touch_files="$touch_files $f.in";; 137 | esac 138 | done 139 | touch $touch_files 140 | ;; 141 | 142 | automake*) 143 | if test -z "$run" && ($1 --version) > /dev/null 2>&1; then 144 | # We have it, but it failed. 145 | exit 1 146 | fi 147 | 148 | echo 1>&2 "\ 149 | WARNING: \`$1' is missing on your system. You should only need it if 150 | you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. 151 | You might want to install the \`Automake' and \`Perl' packages. 152 | Grab them from any GNU archive site." 153 | find . -type f -name Makefile.am -print | 154 | sed 's/\.am$/.in/' | 155 | while read f; do touch "$f"; done 156 | ;; 157 | 158 | autom4te) 159 | if test -z "$run" && ($1 --version) > /dev/null 2>&1; then 160 | # We have it, but it failed. 161 | exit 1 162 | fi 163 | 164 | echo 1>&2 "\ 165 | WARNING: \`$1' is needed, and you do not seem to have it handy on your 166 | system. You might have modified some files without having the 167 | proper tools for further handling them. 168 | You can get \`$1Help2man' as part of \`Autoconf' from any GNU 169 | archive site." 170 | 171 | file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` 172 | test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` 173 | if test -f "$file"; then 174 | touch $file 175 | else 176 | test -z "$file" || exec >$file 177 | echo "#! /bin/sh" 178 | echo "# Created by GNU Automake missing as a replacement of" 179 | echo "# $ $@" 180 | echo "exit 0" 181 | chmod +x $file 182 | exit 1 183 | fi 184 | ;; 185 | 186 | bison|yacc) 187 | echo 1>&2 "\ 188 | WARNING: \`$1' is missing on your system. You should only need it if 189 | you modified a \`.y' file. You may need the \`Bison' package 190 | in order for those modifications to take effect. You can get 191 | \`Bison' from any GNU archive site." 192 | rm -f y.tab.c y.tab.h 193 | if [ $# -ne 1 ]; then 194 | eval LASTARG="\${$#}" 195 | case "$LASTARG" in 196 | *.y) 197 | SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` 198 | if [ -f "$SRCFILE" ]; then 199 | cp "$SRCFILE" y.tab.c 200 | fi 201 | SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` 202 | if [ -f "$SRCFILE" ]; then 203 | cp "$SRCFILE" y.tab.h 204 | fi 205 | ;; 206 | esac 207 | fi 208 | if [ ! -f y.tab.h ]; then 209 | echo >y.tab.h 210 | fi 211 | if [ ! -f y.tab.c ]; then 212 | echo 'main() { return 0; }' >y.tab.c 213 | fi 214 | ;; 215 | 216 | lex|flex) 217 | echo 1>&2 "\ 218 | WARNING: \`$1' is missing on your system. You should only need it if 219 | you modified a \`.l' file. You may need the \`Flex' package 220 | in order for those modifications to take effect. You can get 221 | \`Flex' from any GNU archive site." 222 | rm -f lex.yy.c 223 | if [ $# -ne 1 ]; then 224 | eval LASTARG="\${$#}" 225 | case "$LASTARG" in 226 | *.l) 227 | SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` 228 | if [ -f "$SRCFILE" ]; then 229 | cp "$SRCFILE" lex.yy.c 230 | fi 231 | ;; 232 | esac 233 | fi 234 | if [ ! -f lex.yy.c ]; then 235 | echo 'main() { return 0; }' >lex.yy.c 236 | fi 237 | ;; 238 | 239 | help2man) 240 | if test -z "$run" && ($1 --version) > /dev/null 2>&1; then 241 | # We have it, but it failed. 242 | exit 1 243 | fi 244 | 245 | echo 1>&2 "\ 246 | WARNING: \`$1' is missing on your system. You should only need it if 247 | you modified a dependency of a manual page. You may need the 248 | \`Help2man' package in order for those modifications to take 249 | effect. You can get \`Help2man' from any GNU archive site." 250 | 251 | file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` 252 | if test -z "$file"; then 253 | file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` 254 | fi 255 | if [ -f "$file" ]; then 256 | touch $file 257 | else 258 | test -z "$file" || exec >$file 259 | echo ".ab help2man is required to generate this page" 260 | exit 1 261 | fi 262 | ;; 263 | 264 | makeinfo) 265 | if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then 266 | # We have makeinfo, but it failed. 267 | exit 1 268 | fi 269 | 270 | echo 1>&2 "\ 271 | WARNING: \`$1' is missing on your system. You should only need it if 272 | you modified a \`.texi' or \`.texinfo' file, or any other file 273 | indirectly affecting the aspect of the manual. The spurious 274 | call might also be the consequence of using a buggy \`make' (AIX, 275 | DU, IRIX). You might want to install the \`Texinfo' package or 276 | the \`GNU make' package. Grab either from any GNU archive site." 277 | file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` 278 | if test -z "$file"; then 279 | file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` 280 | file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` 281 | fi 282 | touch $file 283 | ;; 284 | 285 | tar) 286 | shift 287 | if test -n "$run"; then 288 | echo 1>&2 "ERROR: \`tar' requires --run" 289 | exit 1 290 | fi 291 | 292 | # We have already tried tar in the generic part. 293 | # Look for gnutar/gtar before invocation to avoid ugly error 294 | # messages. 295 | if (gnutar --version > /dev/null 2>&1); then 296 | gnutar "$@" && exit 0 297 | fi 298 | if (gtar --version > /dev/null 2>&1); then 299 | gtar "$@" && exit 0 300 | fi 301 | firstarg="$1" 302 | if shift; then 303 | case "$firstarg" in 304 | *o*) 305 | firstarg=`echo "$firstarg" | sed s/o//` 306 | tar "$firstarg" "$@" && exit 0 307 | ;; 308 | esac 309 | case "$firstarg" in 310 | *h*) 311 | firstarg=`echo "$firstarg" | sed s/h//` 312 | tar "$firstarg" "$@" && exit 0 313 | ;; 314 | esac 315 | fi 316 | 317 | echo 1>&2 "\ 318 | WARNING: I can't seem to be able to run \`tar' with the given arguments. 319 | You may want to install GNU tar or Free paxutils, or check the 320 | command line arguments." 321 | exit 1 322 | ;; 323 | 324 | *) 325 | echo 1>&2 "\ 326 | WARNING: \`$1' is needed, and you do not seem to have it handy on your 327 | system. You might have modified some files without having the 328 | proper tools for further handling them. Check the \`README' file, 329 | it often tells you about the needed prerequirements for installing 330 | this package. You may also peek at any GNU archive site, in case 331 | some other package would contain this missing \`$1' program." 332 | exit 1 333 | ;; 334 | esac 335 | 336 | exit 0 337 | -------------------------------------------------------------------------------- /mkinstalldirs: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | # mkinstalldirs --- make directory hierarchy 3 | # Author: Noah Friedman 4 | # Created: 1993-05-16 5 | # Public domain 6 | 7 | # $Id: mkinstalldirs,v 1.1 2007-07-04 22:56:08 perditionc Exp $ 8 | 9 | errstatus=0 10 | 11 | for file 12 | do 13 | set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` 14 | shift 15 | 16 | pathcomp= 17 | for d 18 | do 19 | pathcomp="$pathcomp$d" 20 | case "$pathcomp" in 21 | -* ) pathcomp=./$pathcomp ;; 22 | esac 23 | 24 | if test ! -d "$pathcomp"; then 25 | echo "mkdir $pathcomp" 26 | 27 | mkdir "$pathcomp" || lasterr=$? 28 | 29 | if test ! -d "$pathcomp"; then 30 | errstatus=$lasterr 31 | fi 32 | fi 33 | 34 | pathcomp="$pathcomp/" 35 | done 36 | done 37 | 38 | exit $errstatus 39 | 40 | # mkinstalldirs ends here 41 | -------------------------------------------------------------------------------- /msgs-da.h: -------------------------------------------------------------------------------- 1 | /* edlin catalog file (Danish version -- CP 850) */ 2 | /* */ 3 | /* Author: Gregory Pietsch */ 4 | /* */ 5 | /* DESCRIPTION: */ 6 | /* */ 7 | /* This file contains #defines for all the message strings in edlin. */ 8 | /* For internationalization fun, just translate the messages in this */ 9 | /* file. */ 10 | 11 | #ifndef MSGS_H 12 | #define MSGS_H 13 | 14 | #define YES "Jj" 15 | #define G00001 " : \b " 16 | #define G00002 "O.K.? \b" 17 | #define G00003 "L\233sning fejl" 18 | #define G00004 "%s: %lu k\233 var l\221se\n" 19 | #define G00005 "%s: %lu k\233 var l\221se\n" 20 | #define G00006 "%s: %lu k\233 var skrevet\n" 21 | #define G00007 "%s: %lu k\233 var skrevet\n" 22 | #define G00008 "%lu:%c%s\n" 23 | #define G00009 "Presse hen til forts\221tte" 24 | #define G00010 "%lu: \b" 25 | #define G00011 "Ikke oprette" 26 | #define G00012 "%lu: %s\n" 27 | #define G00013 "\nDen edlin plan har den n\221ste befalinger:\n" 28 | #define G00014 "# redigere en ugifte k\233 [#],[#],#m skridt hindre" 29 | #define G00015 "a vedh\221fte tekst [#][,#]p r\233be sig tekst" 30 | #define G00016 "[#],[#],#,[#]c afskrift hindre q forlade plan" 31 | #define G00017 "[#][,#]d fjerne hindre [#][,#][?]r$,$ skifte ud tekst" 32 | #define G00018 "e<> skriv og forlade [#][,#][?]s$ ransage nemlig tekst" 33 | #define G00019 "[#]i indflette tekst [#]t<> l\221se af fil" 34 | #define G00020 "[#][,#]l r\233be sig tekst [#]w<> henvende sig til fil\n" 35 | #define G00021 "der hvor $ ovenfor er en f\233lge, <> er en filnavn," 36 | #define G00022 "# er et antal (hvilke m\206 v\221re .=den idev\221rende k\233, $=den sidst k\233," 37 | #define G00023 "eller en antal + eller - en anden antal).\n" 38 | #define G00024 ", copyright (c) 2003 Gregory Pietsch" 39 | #define G00025 "Indev\221rende plan kommer HOS NUL GARANTI." 40 | #define G00026 "Den er omkostningsfrit programmel, og det m\206 du gerne hen til fordele" 41 | #define G00027 "sig ind under den betalingsbetingelser i den GNU General Offentlig Licens --" 42 | #define G00028 "enten den ene eller den anden af gengivelse 2 i den Licens, eller, henne ved" 43 | #define G00029 "jeres valgmulighed, hvilken som helst senere gengivelse.\n" 44 | #define G00030 "Op fra hukommelse" 45 | #define G00031 "F\233lge l\221ngde fejl" 46 | #define G00032 "F\233lge holdning fejl" 47 | #define G00033 "Ugyldig bruger inddata; hj\221lp ? nemlig hj\221lp." 48 | #define G00034 "Ikke filnavn" 49 | #define G00035 "Buffer ligeledes stor" 50 | #define G00036 "Ugyldig buffer holdning" 51 | #define G00037 "FEJL: %s\n" 52 | 53 | /* END OF FILE */ 54 | 55 | #endif 56 | 57 | /* END OF FILE */ 58 | -------------------------------------------------------------------------------- /msgs-de.h: -------------------------------------------------------------------------------- 1 | /* edlin.de - messages file (German version) */ 2 | /* */ 3 | /* Author: Gregory Pietsch */ 4 | /* corrected version by Eric Auer */ 5 | /* */ 6 | /* DESCRIPTION: */ 7 | /* */ 8 | /* This file contains #defines for all the message strings in edlin. */ 9 | /* For internationalization fun, just translate the messages in this */ 10 | /* file. */ 11 | /* The strings were generated using ESR's cstrings program and moved */ 12 | /* here. */ 13 | #ifndef MSGS_H 14 | #define MSGS_H 15 | 16 | #define YES "Jj" 17 | #define G00001 " : \b" 18 | #define G00002 "Okay? \b" 19 | #define G00003 "Eingabefehler" 20 | #define G00004 "%s: %lu Zeilen gelesen\n" 21 | #define G00005 "%s: %lu Zeilen gelesen\n" 22 | #define G00006 "%s: %lu Zeile geschrieben\n" 23 | #define G00007 "%s: %lu Zeilen geschrieben\n" 24 | #define G00008 "%lu:%c%s\n" 25 | #define G00009 "Dr\201cken Sie um weiterzumachen" 26 | #define G00010 "%lu: \b" 27 | #define G00011 "Nicht gefunden" 28 | #define G00012 "%lu: %s\n" 29 | #define G00013 "\nedlin hat diese Befehle:\n" 30 | #define G00014 "# Zeile ersetzen [#],[#],#m Block verschieben" 31 | #define G00015 "a Zeile einf\201gen [#][,#]p drucken" 32 | #define G00016 "[#],[#],#,[#]c Block kopieren q verlassen" 33 | #define G00017 "[#][,#]d Block l\224schen [#][,#][?]r$,$ ersetzen" 34 | #define G00018 "e<> speichern + verlassen [#][,#][?]s$ suchen" 35 | #define G00019 "[#]i einf\201gen [#]t<> Datei einlesen" 36 | #define G00020 "[#][,#]l anzeigen [#]w<> speichern\n" 37 | #define G00021 "$ ist eine Zeichenkette, <> ist ein Dateiname," 38 | #define G00022 "# ist eine Zeilennummer oder .=aktuelle Zeile, $=Letzte Zeile," 39 | #define G00023 "oder eine Zeilennummer + or - eine andere Zeilennummer.\n" 40 | #define G00024 ", Copyright (c) 2003 Gregory Pietsch" 41 | #define G00025 "F\201r dieses Programm besteht KEINERLEI GARANTIE." 42 | #define G00026 "Dieses Programm ist freie Software. Sie k\224nnen es unter den Bedingungen" 43 | #define G00027 "der GNU General Public License, wie von der Free Software Foundation" 44 | #define G00028 "ver\224ffentlicht, weitergeben und/oder modifizieren, entweder gem\204\341" 45 | #define G00029 "Version 2 der Lizenz oder (nach Ihrer Wahl) jeder sp\204teren Version.\n" 46 | #define G00030 "Kein Speicher mehr frei" 47 | #define G00031 "Fehlerhafte Zeichenketten-L\204nge" 48 | #define G00032 "Fehlerhafte Zeichenketten-Position" 49 | #define G00033 "Eingabe ist nicht eindeutig, Tippen Sie ? um Hilfe anzuzeigen." 50 | #define G00034 "Dateiname fehlt" 51 | #define G00035 "Buffer ist zu gro\341" 52 | #define G00036 "Bufferposition ist nicht eindeutig" 53 | #define G00037 "FEHLER: %s\n" 54 | 55 | /* END OF FILE */ 56 | 57 | #endif 58 | 59 | /* END OF FILE */ 60 | -------------------------------------------------------------------------------- /msgs-de2.h: -------------------------------------------------------------------------------- 1 | /* msgs.h - messages file (German version) 2 | 3 | Author: Gregory Pietsch 4 | 5 | Umlaut-free corrected version by Eric Auer 6 | 7 | DESCRIPTION: 8 | 9 | This file contains #defines for all the message strings in edlin. 10 | For internationalization fun, just translate the messages in this 11 | file. The strings were generated using Eric S.Raymond's cstrings program 12 | and moved here. 13 | 14 | */ 15 | 16 | #ifndef MSGS_H 17 | #define MSGS_H 18 | 19 | #define YES "Jj" 20 | 21 | #define G00001 " : " 22 | #define G00002 "Okay? " 23 | #define G00003 "Eingabefehler" 24 | #define G00004 "%s: %lu Zeile gelesen\n" 25 | #define G00005 "%s: %lu Zeilen gelesen\n" 26 | #define G00006 "%s: %lu Zeile geschrieben\n" 27 | #define G00007 "%s: %lu Zeilen geschrieben\n" 28 | #define G00008 "%lu:%c%s\n" 29 | #define G00009 "Druecken Sie um weiterzumachen" 30 | #define G00010 "%lu: " 31 | #define G00011 "Nicht gefunden" 32 | #define G00012 "%lu: %s\n" 33 | #define G00013 "\nedlin hat diese Befehle:\n" 34 | #define G00014 "# Zeile ersetzen [#],[#],#m Block verschieben" 35 | #define G00015 "a Zeile einfuegen [#][,#]p drucken" 36 | #define G00016 "[#],[#],#,[#]c Block kopieren q verlassen" 37 | #define G00017 "[#][,#]d Block loeschen [#][,#][?]r$,$ ersetzen" 38 | #define G00018 "e<> speichern + verlassen [#][,#][?]s$ suchen" 39 | #define G00019 "[#]i einfuegen [#]t<> Datei einlesen" 40 | #define G00020 "[#][,#]l anzeigen [#]w<> speichern\n" 41 | #define G00021 "$ ist eine Zeichenkette, <> ist ein Dateiname," 42 | #define G00022 "# ist eine Zeilennummer oder .=aktuelle Zeile, $=Letzte Zeile," 43 | #define G00023 "oder eine Zeilennummer + or - eine andere Zeilennummer.\n" 44 | #define G00024 ", Copyright (c) 2003 Gregory Pietsch" 45 | #define G00025 "Fuer dieses Programm besteht KEINERLEI GARANTIE." 46 | #define G00026 "Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen" 47 | #define G00027 "der GNU General Public License, wie von der Free Software Foundation" 48 | #define G00028 "veroeffentlicht, weitergeben und/oder modifizieren, entweder gemaess" 49 | #define G00029 "Version 2 der Lizenz oder (nach Ihrer Wahl) jeder spaeteren Version.\n" 50 | #define G00030 "Kein Speicher mehr frei" 51 | #define G00031 "Fehlerhafte Zeichenketten-Laenge" 52 | #define G00032 "Fehlerhafte Zeichenketten-Position" 53 | #define G00033 "Eingabe ist nicht eindeutig, Tippen Sie ? um Hilfe anzuzeigen." 54 | #define G00034 "Dateiname fehlt" 55 | #define G00035 "Buffer ist zu gross" 56 | #define G00036 "Bufferposition ist nicht eindeutig" 57 | #define G00037 "FEHLER: %s\n" 58 | 59 | #endif 60 | 61 | /* END OF FILE */ 62 | -------------------------------------------------------------------------------- /msgs-en.h: -------------------------------------------------------------------------------- 1 | /* msgs.h - messages file 2 | 3 | Author: Gregory Pietsch 4 | 5 | DESCRIPTION: 6 | 7 | This file contains #defines for all the message strings in edlin. 8 | For internationalization fun, just translate the messages in this 9 | file. 10 | 11 | The strings were generated using ESR's cstrings program and moved 12 | here. 13 | 14 | */ 15 | 16 | #ifndef MSGS_H 17 | #define MSGS_H 18 | 19 | #define YES "Yy" 20 | 21 | #define G00001 " : " 22 | #define G00002 "O.K.? " 23 | #define G00003 "Entry error" 24 | #define G00004 "%s: %lu line read\n" 25 | #define G00005 "%s: %lu lines read\n" 26 | #define G00006 "%s: %lu line written\n" 27 | #define G00007 "%s: %lu lines written\n" 28 | #define G00008 "%lu:%c%s\n" 29 | #define G00009 "Press to continue" 30 | #define G00010 "%lu: " 31 | #define G00011 "Not found" 32 | #define G00012 "%lu: %s\n" 33 | #define G00013 "\nedlin has the following subcommands:\n" 34 | #define G00014 "# edit a single line [#],[#],#m move" 35 | #define G00015 "a append [#][,#]p page" 36 | #define G00016 "[#],[#],#,[#]c copy q quit" 37 | #define G00017 "[#][,#]d delete [#][,#][?]r$,$ replace" 38 | #define G00018 "e<> end (write & quit) [#][,#][?]s$ search" 39 | #define G00019 "[#]i insert [#]t<> transfer" 40 | #define G00020 "[#][,#]l list [#]w<> write\n" 41 | #define G00021 "where $ above is a string, <> is a filename," 42 | #define G00022 "# is a number (which may be .=current line, $=last line," 43 | #define G00023 "or either number + or - another number).\n" 44 | #define G00024 ", copyright (c) 2003 Gregory Pietsch" 45 | #define G00025 "This program comes with ABSOLUTELY NO WARRANTY." 46 | #define G00026 "It is free software, and you are welcome to redistribute it" 47 | #define G00027 "under the terms of the GNU General Public License -- either" 48 | #define G00028 "version 2 of the license, or, at your option, any later" 49 | #define G00029 "version.\n" 50 | #define G00030 "Out of memory" 51 | #define G00031 "String length error" 52 | #define G00032 "String position error" 53 | #define G00033 "Invalid user input, use ? for help." 54 | #define G00034 "No filename" 55 | #define G00035 "Buffer too big" 56 | #define G00036 "Invalid buffer position" 57 | #define G00037 "ERROR: %s\n" 58 | 59 | #endif 60 | 61 | /* END OF FILE */ 62 | -------------------------------------------------------------------------------- /msgs-eo.h: -------------------------------------------------------------------------------- 1 | /* edlin.eo - Esperanto-language messages file */ 2 | /* */ 3 | /* Author: Gregory Pietsch */ 4 | /* Translated by Rugxulo/Anthony Williams */ 5 | /* */ 6 | /* DESCRIPTION: */ 7 | /* */ 8 | /* This file contains #defines for all the message strings in edlin. */ 9 | /* For internationalization fun, just translate the messages in this */ 10 | /* file. */ 11 | /* */ 12 | /* The strings were generated using ESR's cstrings program and moved */ 13 | /* here. */ 14 | 15 | #ifndef MSGS_H 16 | #define MSGS_H 17 | 18 | #define YES "Jj" 19 | #define G00001 "\040:\040" 20 | #define G00002 "Cxu bonege?\040" 21 | #define G00003 "Eraro dum redaktado" 22 | #define G00004 "%s: %lu linio legita\n" 23 | #define G00005 "%s: %lu linioj legitaj\n" 24 | #define G00006 "%s: %lu linio skribita\n" 25 | #define G00007 "%s: %lu linioj skribitaj\n" 26 | #define G00008 "%lu:%c%s\n" 27 | #define G00009 "Klaku -n por dauxrigi" 28 | #define G00010 "%lu:\040" 29 | #define G00011 "Netrovebla" 30 | #define G00012 "%lu: %s\n" 31 | #define G00013 "\nedlin subtenas la jenajn funkciojn:\n" 32 | #define G00014 "# redaktu linion [#],[#],#m movu" 33 | #define G00015 "a postskribu linion [#][,#]p foliumu" 34 | #define G00016 "[#],[#],#,[#]c kopiu q cxesu" 35 | #define G00017 "[#][,#]d forjxetu [#][,#][?]r$,$ anstatauxigi" 36 | #define G00018 "e<> skribu kaj cxesu [#][,#][?]s$ sercxu" 37 | #define G00019 "[#]i antauxskribu [#]t<> transigu" 38 | #define G00020 "[#][,#]l numerigu / list [#]w<> skribu\n" 39 | #define G00021 "$ en suprajxo signifas frazon, <> signifas dosieron," 40 | #define G00022 "# signifas numeron (aux .=nuntempa linio, aux $=finfina linio," 41 | #define G00023 "aux ecx + plus aux - minus iun alian numeron).\n" 42 | #define G00024 ", copyright (c) 2003 Gregory Pietsch" 43 | #define G00025 "Cxi tiu programo havas PRECIZE NENIAN GARANTION." 44 | #define G00026 "Cxi tiu programo estas libera, do bonvene uzu laux GNU" 45 | #define G00027 "Gxenerala Publika Permesila -- GPL v2, aux pli aktuala eldono de tiu" 46 | #define G00028 "" 47 | #define G00029 "" 48 | #define G00030 "Tro malmulte da memoro trovita" 49 | #define G00031 "ERARO: linia vasteco" 50 | #define G00032 "ERARO: linia loko" 51 | #define G00033 "Mistajpon, uzu ? por akiru helpon" 52 | #define G00034 "dosieron ne trovitan" 53 | #define G00035 "ERARO: teksujon tro grandegan" 54 | #define G00036 "ERARO: neuzeblan teksujan lokon" 55 | #define G00037 "ERARO: %s\n" 56 | 57 | /* END OF FILE */ 58 | 59 | #endif 60 | 61 | /* END OF FILE */ 62 | -------------------------------------------------------------------------------- /msgs-es.h: -------------------------------------------------------------------------------- 1 | /* edlin.es - messages file (Spanish version) */ 2 | /* */ 3 | /* Author: Gregory Pietsch */ 4 | /* */ 5 | /* DESCRIPTION: */ 6 | /* */ 7 | /* This file contains #defines for all the message strings in edlin. */ 8 | /* For internationalization fun, just translate the messages in this */ 9 | /* file. */ 10 | /* */ 11 | /* The strings were translated by */ 12 | /* Aitor SANTAMARIA_MERINO (aitor.sm@wanadoo.es) */ 13 | /* */ 14 | #ifndef MSGS_H 15 | #define MSGS_H 16 | 17 | #define YES "Ss" 18 | #define G00001 " : \b" 19 | #define G00002 "\250De acuerdo? \b" 20 | #define G00003 "Entrada err\242nea" 21 | #define G00004 "%s: %lu l\241nea le\241da\n" 22 | #define G00005 "%s: %lu l\241neas le\241das\n" 23 | #define G00006 "%s: %lu l\241nea escrita\n" 24 | #define G00007 "%s: %lu l\241neas escritas\n" 25 | #define G00008 "%lu:%c%s\n" 26 | #define G00009 "Pulse para continuar" 27 | #define G00010 "%lu: \b" 28 | #define G00011 "No encontrado" 29 | #define G00012 "%lu: %s\n" 30 | #define G00013 "\nEl programa edlin tiene las siguientes sub\242rdenes:\n" 31 | #define G00014 "# Editar una sola l\241nea [#],[#],#m Mover" 32 | #define G00015 "a A\244adir [#][,#]p P\240gina" 33 | #define G00016 "[#],[#],#,[#]c Copiar q Salir" 34 | #define G00017 "[#][,#]d Eliminar [#][,#][?]r$,$ Sustituir" 35 | #define G00018 "e<> Fin (guardar y salir) [#][,#][?]s$ Buscar" 36 | #define G00019 "[#]i Introducir [#]t<> Transferir" 37 | #define G00020 "[#][,#]l Listar [#]w<> Escribir\n" 38 | #define G00021 "donde $ es una cadena de caracteres, <> Es un nombre de" 39 | #define G00022 "archivo, # es un n\243mero (que puede ser . = la l\241nea actual," 40 | #define G00023 "$ = la \243ltima l\241nea, o bien un n\243mero + o - otro n\243mero).\n" 41 | #define G00024 ", copyright (c) 2003 Gregory Pietsch" 42 | #define G00025 "Este programa se distribuye ABSOLUTAMENTE SIN GARANTIA." 43 | #define G00026 "Este programa es software libre, y se le invita a redistribuirlo" 44 | #define G00027 "bajo los t\202rminos de la Licencia P\243blica General de GNU -" 45 | #define G00028 "la versi\242n 2 o, a su criterio, cualquier versi\242n posterior." 46 | #define G00029 "" 47 | #define G00030 "Memoria agotada" 48 | #define G00031 "Error en la longitud de la l\241nea" 49 | #define G00032 "Error ee la posici\242n de la l\241nea" 50 | #define G00033 "Entrada no v\240lida, use ? para la ayuda" 51 | #define G00034 "No hay nombre de archivo" 52 | #define G00035 "El b\243fer es demasiado grande" 53 | #define G00036 "Posici\242n no v\240lida del b\243fer" 54 | #define G00037 "ERROR: %s\n" 55 | 56 | /* END OF FILE */ 57 | 58 | #endif 59 | 60 | /* END OF FILE */ 61 | -------------------------------------------------------------------------------- /msgs-eu.h: -------------------------------------------------------------------------------- 1 | /* edlin.eu - messages file (Basque version) */ 2 | /* */ 3 | /* Author: Gregory Pietsch */ 4 | /* */ 5 | /* DESCRIPTION: */ 6 | /* */ 7 | /* This file contains #defines for all the message strings in edlin. */ 8 | /* For internationalization fun, just translate the messages in this */ 9 | /* file. */ 10 | /* */ 11 | /* Artxibo hau EDLIN programako mesuen euskeratzea da, Aitor Santamaria */ 12 | /* Merinok (aitor.sm@wanadoo.es) egindakoa. */ 13 | /* */ 14 | 15 | #ifndef MSGS_H 16 | #define MSGS_H 17 | 18 | #define YES "Bb" 19 | #define G00001 " : \b" 20 | #define G00002 "Adoz? \b" 21 | #define G00003 "Zure aginduan error bat aurkitu da" 22 | #define G00004 "%s: %lu lerro erakurri da\n" 23 | #define G00005 "%s: %lu lerro erakurri dira\n" 24 | #define G00006 "%s: %lu lerro idatzi da\n" 25 | #define G00007 "%s: %lu lerro idatzi dira\n" 26 | #define G00008 "%lu:%c%s\n" 27 | #define G00009 "Sakatu aurrera jarraitzeko" 28 | #define G00010 "%lu: \b" 29 | #define G00011 "Ezin da aurkitu" 30 | #define G00012 "%lu: %s\n" 31 | #define G00013 "\nedlin honako aginduak ulertzen ditu:\n" 32 | #define G00014 "# lerro bakar bat editatu [#],[#],#m muguitu" 33 | #define G00015 "a amaieran lerro berri sortu [#][,#]p orrialdez ikusi" 34 | #define G00016 "[#],[#],#,[#]c kopiatu q irten" 35 | #define G00017 "[#][,#]d ezabatu [#][,#][?]r$,$ aldatu" 36 | #define G00018 "e<> amaitu (idatzi eta irten) [#][,#][?]s$ aurkitu" 37 | #define G00019 "[#]i lerro berriak sortu [#]t<> irakurri" 38 | #define G00020 "[#][,#]l listatu [#]w<> idatzi\n" 39 | #define G00021 "$ karakter-kate bat, <> artxibo baten izena," 40 | #define G00022 "# zenbaki bat (.=lerro hau, $=azken lerro," 41 | #define G00023 "edo zenbaki + ala - zenbaki) denean.\n" 42 | #define G00024 ", copyright (c) 2003 Gregory Pietsch" 43 | #define G00025 "Programa honek EZ DAUKA GARANTIARIK." 44 | #define G00026 "Software librea da, eta kopiak eman ditzakezu, GNU-ko Lizentzia" 45 | #define G00027 "Publikoa Orokorraren konditzioak betetzen direnean -- 2. bertzioa edo" 46 | #define G00028 "nahi baldin baduzu, lasterago bertzio baten bat erabili." 47 | #define G00029 "\n" 48 | #define G00030 "Ez dago behar den memoria" 49 | #define G00031 "Katearen luzeeran error bat aurkitu da" 50 | #define G00032 "Katearen positzioan error bat aurkitu da" 51 | #define G00033 "Zure agindua ulertezina da, idatzi ? laguntza nahi baduzu." 52 | #define G00034 "Artxiboak ez dauka izenik" 53 | #define G00035 "Bufferra handiegia da" 54 | #define G00036 "Bufer-reko positzioan error bat aurkitu da" 55 | #define G00037 "ERROR: %s\n" 56 | 57 | /* END OF FILE */ 58 | 59 | #endif 60 | 61 | /* END OF FILE */ 62 | -------------------------------------------------------------------------------- /msgs-fi.h: -------------------------------------------------------------------------------- 1 | /* edlin.fi - messages file (Finnish version) */ 2 | /* */ 3 | /* Author: Gregory Pietsch */ 4 | /* */ 5 | /* DESCRIPTION: */ 6 | /* */ 7 | /* This file contains #defines for all the message strings in edlin. */ 8 | /* For internationalization fun, just translate the messages in this */ 9 | /* file. */ 10 | /* */ 11 | /* */ 12 | 13 | #ifndef MSGS_H 14 | #define MSGS_H 15 | 16 | #define YES "Kk" 17 | 18 | #define G00001 " : " 19 | #define G00002 "O.K.? " 20 | #define G00003 "Sy\224tevirhe" 21 | #define G00004 "%s: %lu rivi luettu\n" 22 | #define G00005 "%s: %lu rivi\204 luettu\n" 23 | #define G00006 "%s: %lu rivi kirjoitettu\n" 24 | #define G00007 "%s: %lu rivi\204 kirjoitettu\n" 25 | #define G00008 "%lu:%c%s\n" 26 | #define G00009 "Paina jatkaaksesi" 27 | #define G00010 "%lu: " 28 | #define G00011 "Ei l\224ydy" 29 | #define G00012 "%lu: %s\n" 30 | #define G00013 "\nedlin sis\204lt\204\204 seuraavat komennot:\n" 31 | #define G00014 "# muokkaa rivi\204 [#],[#],#m siirr\204" 32 | #define G00015 "a lis\204\204 loppuun [#][,#]p sivu" 33 | #define G00016 "[#],[#],#,[#]c kopioi q lopeta (hylk\204\204)" 34 | #define G00017 "[#][,#]d poista [#][,#][?]r$,$ korvaa" 35 | #define G00018 "e<> tallenna ja lopeta [#][,#][?]s$ hae" 36 | #define G00019 "[#]i sy\224t\204 [#]t<> yhdist\204" 37 | #define G00020 "[#][,#]l luettelo [#]w<> kirjoita\n" 38 | #define G00021 "miss\204 $ on merkkijono, <> tiedostonimi," 39 | #define G00022 "# on luku (tai .=nykyinen rivi, $=viimeinen rivi," 40 | #define G00023 "tai jompikumpi + tai - toinen luku).\n" 41 | #define G00024 ", (c) 2003 Gregory Pietsch" 42 | #define G00025 "This program comes with ABSOLUTELY NO WARRANTY." 43 | #define G00026 "It is free software, and you are welcome to redistribute it" 44 | #define G00027 "under the terms of the GNU General Public License -- either" 45 | #define G00028 "version 2 of the license, or, at your option, any later" 46 | #define G00029 "version.\n" 47 | #define G00030 "Muisti loppu" 48 | #define G00031 "Merkkijonopituus virheellinen" 49 | #define G00032 "Merkkijonopaikka virheellinen" 50 | #define G00033 "Sy\224te virheellinen, ? avaa ohjeen." 51 | #define G00034 "Ei tiedostonime\204" 52 | #define G00035 "Puskuri liian iso" 53 | #define G00036 "Puskuripaikka virheellinen" 54 | #define G00037 "VIRHE: %s\n" 55 | 56 | /* END OF FILE */ 57 | 58 | #endif 59 | 60 | /* END OF FILE */ 61 | -------------------------------------------------------------------------------- /msgs-fr.h: -------------------------------------------------------------------------------- 1 | /* edlin.fr - messages file (French version) */ 2 | /* */ 3 | /* Author: Gregory Pietsch */ 4 | /* */ 5 | /* DESCRIPTION: */ 6 | /* */ 7 | /* This file contains #defines for all the message strings in edlin. */ 8 | /* For internationalization fun, just translate the messages in this */ 9 | /* file. */ 10 | /* */ 11 | /* The strings were translated by Achille FOUILLEUL */ 12 | /* . */ 13 | /* */ 14 | /* */ 15 | #ifndef MSGS_H 16 | #define MSGS_H 17 | 18 | #define YES "Oo" 19 | #define G00001 " : \b" 20 | #define G00002 "O.K.? \b" 21 | #define G00003 "Erreur d'entr\202e" 22 | #define G00004 "%s: %lu ligne lue\n" 23 | #define G00005 "%s: %lu lignes lues\n" 24 | #define G00006 "%s: %lu ligne \202crite\n" 25 | #define G00007 "%s: %lu lignes \202crite\n" 26 | #define G00008 "%lu:%c%s\n" 27 | #define G00009 "Appuyez sur pour continuer" 28 | #define G00010 "%lu: \b" 29 | #define G00011 "Non trouv\202" 30 | #define G00012 "%lu: %s\n" 31 | #define G00013 "\nLe programme de edlin reconna\214t les commandes suivants:\n" 32 | #define G00014 "# editer une seule ligne [#],[#],#m d\202placer le bloc" 33 | #define G00015 "a ajouter le texte [#][,#]p montrer le texte" 34 | #define G00016 "[#],[#],#,[#]c copier le bloc q quitter" 35 | #define G00017 "[#][,#]d effacer le bloc [#][,#][?]r$,$ remplacer le texte" 36 | #define G00018 "e<> ecrire et cesser [#][,#][?]s$ recherche le texte" 37 | #define G00019 "[#]i ins\202rer le texte [#]t<> lire le fichier" 38 | #define G00020 "[#][,#]l montrer le texte [#]w<> ecrire le fichier\n" 39 | #define G00021 "Ci-dessus, $ est le texte, <> est un nom de fichier, #" 40 | #define G00022 "est un num\202ro (qui peut \210tre . = la ligne courante, $ = derni\212re la" 41 | #define G00023 "ligne, ou bien le num\202ro + ou - un autre num\202ro).\n" 42 | #define G00024 ", copyright (c) 2003 Gregory Pietsch" 43 | #define G00025 "ABSOLUMENT AUCUNE GARANTIE n'est fournie quant \205 ce programme." 44 | #define G00026 "C'est un logiciel libre et sa redistribution sous les termes" 45 | #define G00027 "de la Licence Publique G\202n\202rale GNU (selon votre choix:" 46 | #define G00028 "soit la version 2, soit une version ult\202rieure) est" 47 | #define G00029 "encourag\202e.\n" 48 | #define G00030 "M\202moire \202puis\202e" 49 | #define G00031 "Erreur de longueur de cha\214ne" 50 | #define G00032 "Erreur de position dans la cha\214ne" 51 | #define G00033 "Entr\202e invalide, tapez ? pour obtenir de l'aide." 52 | #define G00034 "Aucun nom de fichier" 53 | #define G00035 "Le tampon est trop grand" 54 | #define G00036 "Position dans le tampon invalide" 55 | #define G00037 "L'ERREUR: %s\n" 56 | 57 | /* END OF FILE */ 58 | 59 | #endif 60 | 61 | /* END OF FILE */ 62 | -------------------------------------------------------------------------------- /msgs-is.h: -------------------------------------------------------------------------------- 1 | /* edlin.is - messages file (Icelandic version -- CP 850) */ 2 | /* */ 3 | /* Author: Gregory Pietsch */ 4 | /* */ 5 | /* DESCRIPTION: */ 6 | /* */ 7 | /* This file contains #defines for all the message strings in edlin. */ 8 | /* For internationalization fun, just translate the messages in this */ 9 | /* file. */ 10 | /* */ 11 | /* The strings were translated online and moved here. */ 12 | /* */ 13 | /* */ 14 | #ifndef MSGS_H 15 | #define MSGS_H 16 | 17 | #define YES "Jj" 18 | #define G00001 " : \b" 19 | #define G00002 "O.K.? \b" 20 | #define G00003 "Innganga villa" 21 | #define G00004 "%s: %lu l\241na var lesa\n" 22 | #define G00005 "%s: %lu l\241numa\320ur var\243lfur lesa\n" 23 | #define G00006 "%s: %lu l\241na var skrifa\320ur\n" 24 | #define G00007 "%s: %lu l\241numa\320ur var\343lfur skrifa\320ur\n" 25 | #define G00008 "%lu:%c%s\n" 26 | #define G00009 "\350r\354sta til halda \240fram" 27 | #define G00010 "%lu: \b" 28 | #define G00011 "Ekki stofna" 29 | #define G00012 "%lu: %s\n" 30 | #define G00013 "\nEdlin hefur h\242pur stu\320ningsmanna stj\242rn:\n" 31 | #define G00014 "# Ritst\354ra a einn l\241na [#],[#],#m Hreyfa h\243sar\224\320" 32 | #define G00015 "a Auka vi\320 texti [#][,#]p S\354na texti" 33 | #define G00016 "[#],[#],#,[#]c Eftirl\241king h\243sar\224\320 q h\221tta" 34 | #define G00017 "[#][,#]d fella brott h\243sar\224\320 [#][,#][?]r$,$ skipta um texti" 35 | #define G00018 "e<> skrifa og h\221tta [#][,#][?]s$ leita a\320 texti" 36 | #define G00019 "[#]i b\221ta inn \241 texti [#]t<> lesa fr\240 skr\240" 37 | #define G00020 "[#][,#]l S\354na texti [#]w<> Skrifa til a skr\240\n" 38 | #define G00021 "hvar $ yfir er a band, <> er a filename, # er a tala (hver mega" 39 | #define G00022 "vera . = straumur l\241na , $ = s\241\320astur l\241na \241 h\224ggdeyfir," 40 | #define G00023 "e\320a annar hvor tala + e\320a - annar tala).\n" 41 | #define G00024 ", copyright (c) 2003 Gregory Pietsch" 42 | #define G00025 "Edlin koma me\320 algerlega neitun \240byrg\320." 43 | #define G00026 "\350a\320 er frj\240ls hugb\243na\320ur, og \347\243 ert velkominn til redistribute" 44 | #define G00027 "\347a\320 undirskilm\240lar af the GNU Almennur Opinber Leyfisveitandi" 45 | #define G00028 "annar hvor \243tg\240fa 2 af leyfisveitandi, e\320a, \240 \347inn valkostur," 46 | #define G00029 "allir seinna \243tg\240fa.\n" 47 | #define G00030 "\351t af minni" 48 | #define G00031 "Band lengd villa" 49 | #define G00032 "Band sta\320a villa" 50 | #define G00033 "\231ryrki notandi inntak, nota ? fyrir hj\240lpa." 51 | #define G00034 "Neitun filename" 52 | #define G00035 "H\224ggdeyfir er of st\242r" 53 | #define G00036 "\231ryrki h\224ggdeyfir sta\320a" 54 | #define G00037 "VILLA: %s\n" 55 | 56 | /* END OF FILE */ 57 | 58 | #endif 59 | 60 | /* END OF FILE */ 61 | -------------------------------------------------------------------------------- /msgs-it.h: -------------------------------------------------------------------------------- 1 | /* edlin.it - messages file (Italian version) */ 2 | /* */ 3 | /* Author: Gregory Pietsch */ 4 | /* */ 5 | /* DESCRIPTION: */ 6 | /* */ 7 | /* This file contains #defines for all the message strings in edlin. */ 8 | /* For internationalization fun, just translate the messages in this */ 9 | /* file. */ 10 | /* */ 11 | /* The translation was done by Roberto Mariottini */ 12 | /* . */ 13 | /* */ 14 | 15 | #ifndef MSGS_H 16 | #define MSGS_H 17 | 18 | #define YES "Ss" 19 | #define G00001 " : \b" 20 | #define G00002 "GIUSTO? \b" 21 | #define G00003 "Voce errata" 22 | #define G00004 "%s: %lu linea \212 stata letta\n" 23 | #define G00005 "%s: %lu linee sono state lette\n" 24 | #define G00006 "%s: %lu linea \212 stata scritta\n" 25 | #define G00007 "%s: %lu linee sono state scritte\n" 26 | #define G00008 "%lu:%c%s\n" 27 | #define G00009 "Premi per continuare" 28 | #define G00010 "%lu: \b" 29 | #define G00011 "Non trovato" 30 | #define G00012 "%lu: %s\n" 31 | #define G00013 "\nIl programma edlin ha i seguenti sottocomandi:\n" 32 | #define G00014 "# modifica una singola linea [#],[#],#m sposta un blocco di testo" 33 | #define G00015 "a aggiungi in coda [#][,#]p visualizza il testo" 34 | #define G00016 "[#],[#],#,[#]c copia un blocco di testo q esci dal programma" 35 | #define G00017 "[#][,#]d cancella un blocco di testo [#][,#][?]r$,$ sostituisci il testo" 36 | #define G00018 "e<> fine (salva ed esci) [#][,#][?]s$ ricerca nel testo" 37 | #define G00019 "[#]i inserisci nuovo testo [#]t<> trasferisci da file" 38 | #define G00020 "[#][,#]l visualizza un blocco di testo [#]w<> salva il testo\n" 39 | #define G00021 "In cui $ \212 una stringa, <> \212 un nome di file, " 40 | #define G00022 "# \212 un numero (che pu\225 essere .=linea corrente, $=ultima linea, o" 41 | #define G00023 "o numero + o - un altro numero).\n" 42 | #define G00024 ", copyright (c) 2003 Gregory Pietsch" 43 | #define G00025 "Questo programma \212 fornito con ASSOLUTAMENTE NESSUNA GARANZIA." 44 | #define G00026 "Questo programma \212 software libero (free software) e siete liberi" 45 | #define G00027 "di ridistribuirlo alle condizioni della Licenza Generale Pubblica GNU" 46 | #define G00028 "(GNU General Public License) -- versione 2 oppure," 47 | #define G00029 "a vostra scelta, una qualsiasi versione successiva.\n" 48 | #define G00030 "Memoria esaurita" 49 | #define G00031 "Errore di lunghezza della stringa" 50 | #define G00032 "Errore di posizione della stringa" 51 | #define G00033 "Input non valido dell'utente; ? per aiuto." 52 | #define G00034 "Nessun nome di file" 53 | #define G00035 "Buffer troppo grande" 54 | #define G00036 "Posizione non valida del buffer" 55 | #define G00037 "ERRORE: %s\n" 56 | 57 | /* END OF FILE */ 58 | 59 | #endif 60 | 61 | /* END OF FILE */ 62 | -------------------------------------------------------------------------------- /msgs-ja.h: -------------------------------------------------------------------------------- 1 | /* edlin.ja - messages file (Japanese SHIFT-JIS version) */ 2 | /* */ 3 | /* Author: Gregory Pietsch, translated by Suzu Minashiro */ 4 | /* */ 5 | /* DESCRIPTION: */ 6 | /* */ 7 | /* This is the Japanese-language version of the edlin.ja file. The strings */ 8 | /* were collected using the cstrings program by Eric S. Raymond and */ 9 | /* translated. */ 10 | /* */ 11 | 12 | 13 | #ifndef MSGS_H 14 | #define MSGS_H 15 | 16 | #define YES "Yy" 17 | #define G00001 " : \b" 18 | #define G00002 "O.K.? \b" 19 | #define G00003 "Entry error" 20 | #define G00004 "%s: %lu \215s\223\307\202\335\215\236\202\335\202\334\202\265\202\275\201B\n" 21 | #define G00005 "%s: %lu \215s\223\307\202\335\215\236\202\335\202\334\202\265\202\275\201B\n" 22 | #define G00006 "%s: %lu \215s\217\221\202\253\215\236\202\335\202\334\202\265\202\275\201B\n" 23 | #define G00007 "%s: %lu \215s\217\221\202\253\215\236\202\335\202\334\202\265\202\275\201B\n" 24 | #define G00008 "%lu:%c%s\n" 25 | #define G00009 "\211\374\215s\202\360\211\237\211\272\202\265\202\304\202\255\202\276\202\263\202\242\201B\214p\221\261\202\265\202\334\202\267\201B" 26 | #define G00010 "%lu: \b" 27 | #define G00011 "\214\251\202\302\202\251\202\350\202\334\202\271\202\361" 28 | #define G00012 "%lu: %s\n" 29 | #define G00013 "\nedlin\202\305\202\315\216\237\202\314\203T\203u\203R\203}\203\223\203h\202\252\216g\227p\202\305\202\253\202\334\202\267:\n" 30 | #define G00014 "# \215s\225\322\217W [#],[#],#m \210\332\223\256" 31 | #define G00015 "a \222\307\211\301 [#][,#]p \203y\201[\203W" 32 | #define G00016 "[#],[#],#,[#]c \225\241\216\312 q \217I\227\271" 33 | #define G00017 "[#][,#]d \215\355\217\234 [#][,#][?]r$,$ \222u\212\267" 34 | #define G00018 "e<> \217I\227\271 (\225\333\221\266\214\343) [#][,#][?]s$ \214\237\215\365" 35 | #define G00019 "[#]i \221}\223\374 [#]t<> \223]\221\227" 36 | #define G00020 "[#][,#]l \203\212\203X\203g [#]w<> \217\221\202\253\215\236\202\335\n" 37 | #define G00021 " $\202\315\225\266\216\232\227\361\201A<>\202\315\203t\203@\203C\203\213\226\274\202\360\216\246\202\265\201A" 38 | #define G00022 " #\202\315\215s\224\324\215\206(.\202\305\214\273\215\335\215s\201A$\202\305\215\305\217I\215s\201A\202\334\202\275+-\202\305\221\212\221\316\215s)\202\360\216\246\202\267\201B" 39 | #define G00023 "" 40 | #define G00024 ", copyright (c) 2003 Gregory Pietsch" 41 | #define G00025 "This program comes with ABSOLUTELY NO WARRANTY." 42 | #define G00026 "It is free software, and you are welcome to redistribute it" 43 | #define G00027 "under the terms of the GNU General Public License -- either" 44 | #define G00028 "version 2 of the license, or, at your option, any later" 45 | #define G00029 "version.\n" 46 | #define G00030 "\203\201\203\202\203\212\202\252\221\253\202\350\202\334\202\271\202\361\201B" 47 | #define G00031 "\225\266\216\232\227\361\222\267\203G\203\211\201[" 48 | #define G00032 "\225\266\216\232\227\361\210\312\222u\203G\203\211\201[" 49 | #define G00033 "\223\374\227\315\210\331\217\355\202\305\202\267\201B?\202\305help\202\360\216Q\217\306\202\265\202\304\202\255\202\276\202\263\202\242\201B" 50 | #define G00034 "\203t\203@\203C\203\213\226\274\202\252\202\240\202\350\202\334\202\271\202\361\201B" 51 | #define G00035 "\203o\203b\203t\203@\202\311\221\316\202\265\202\304\221\345\202\253\202\267\202\254\202\334\202\267\201B" 52 | #define G00036 "\203o\203b\203t\203@\210\312\222u\202\252\210\331\217\355\202\305\202\267\201B" 53 | #define G00037 "ERROR: %s\n" 54 | 55 | /* END OF FILE */ 56 | 57 | #endif 58 | 59 | /* END OF FILE */ 60 | -------------------------------------------------------------------------------- /msgs-la.h: -------------------------------------------------------------------------------- 1 | /* edlin.la - Latin-language messages file */ 2 | /* */ 3 | /* Author: Gregory Pietsch */ 4 | /* */ 5 | /* DESCRIPTION: */ 6 | /* */ 7 | /* This file contains #defines for all the message strings in edlin. */ 8 | /* For internationalization fun, just translate the messages in this */ 9 | /* file. */ 10 | /* */ 11 | /* The strings were generated using ESR's cstrings program and moved */ 12 | /* here. */ 13 | 14 | #ifndef MSGS_H 15 | #define MSGS_H 16 | 17 | #define YES "Bb" 18 | #define G00001 "\040:\040" 19 | #define G00002 "Bonum est?\040" 20 | #define G00003 "Error dum in programma inducere" 21 | #define G00004 "%s: %lu linea legEbar\n" 22 | #define G00005 "%s: %lu lineae legEbar\n" 23 | #define G00006 "%s: %lu linea scribiEbar\n" 24 | #define G00007 "%s: %lu lineae scribiEbar\n" 25 | #define G00008 "%lu:%c%s\n" 26 | #define G00009 "Deprime continuare" 27 | #define G00010 "%lu:\040" 28 | #define G00011 "Non invediebar" 29 | #define G00012 "%lu: %s\n" 30 | #define G00013 "\nedlin hOc subjussa habet:\n" 31 | #define G00014 "# lineam editat [#],[#],#m movet" 32 | #define G00015 "a subscribet [#][,#]p paginA" 33 | #define G00016 "[#],[#],#,[#]c exscribet q cessit" 34 | #define G00017 "[#][,#]d delet [#][,#][?]r$,$ reponet" 35 | #define G00018 "e<> secribit et cessit [#][,#][?]s$ quaeret" 36 | #define G00019 "[#]i inseret [#]t<> legit" 37 | #define G00020 "[#][,#]l enumerat [#]w<> scribet\n" 38 | #define G00021 "$ linea est, <> scapius est," 39 | #define G00022 "# numerus est (.=linea usitata, $=linea ultima," 40 | #define G00023 "vel numerus + vel - alius numerus).\n" 41 | #define G00024 ", copyright (c) MMIII Gregory Pietsch" 42 | #define G00025 "Hoc programma PRAECISE NON SATISDATIONES habet." 43 | #define G00026 "Libera programma est, et quondam via GNU Generalis Publica Potesta" 44 | #define G00027 "-- versionem II vel recenstim -- distriberis." 45 | #define G00028 "" 46 | #define G00029 "" 47 | #define G00030 "Non memoriam habeo" 48 | #define G00031 "ERROR: Longitudino lineae" 49 | #define G00032 "ERROR: Positionis lineae" 50 | #define G00033 "Data irrita; ?=auxilium" 51 | #define G00034 "Scapius non est" 52 | #define G00035 "ERROR: Linea magna est" 53 | #define G00036 "ERROR: Positionis in linea irrita" 54 | #define G00037 "ERROR: %s\n" 55 | 56 | /* END OF FILE */ 57 | 58 | #endif 59 | 60 | /* END OF FILE */ 61 | -------------------------------------------------------------------------------- /msgs-nl.h: -------------------------------------------------------------------------------- 1 | /* edlin.nl - messages file (Dutch version) */ 2 | /* */ 3 | /* Author: Gregory Pietsch */ 4 | /* */ 5 | /* DESCRIPTION: */ 6 | /* */ 7 | /* This file contains #defines for all the message strings in edlin. */ 8 | /* For internationalization fun, just translate the messages in this */ 9 | /* file. */ 10 | /* */ 11 | /* The strings were checked and tweaked by Bernd Blaauw . */ 12 | /* */ 13 | /* */ 14 | #ifndef MSGS_H 15 | #define MSGS_H 16 | 17 | #define YES "Jj" 18 | #define G00001 " : \b" 19 | #define G00002 "O.K.? \b" 20 | #define G00003 "Ingang fout" 21 | #define G00004 "%s: %lu lijn werd gelezen\n" 22 | #define G00005 "%s: %lu lijnen werden gelezen\n" 23 | #define G00006 "%s: %lu lijn werd geschreven\n" 24 | #define G00007 "%s: %lu lijnen werden geschreven\n" 25 | #define G00008 "%lu:%c%s\n" 26 | #define G00009 "Druk op om verder te gaan" 27 | #define G00010 "%lu: \b" 28 | #define G00011 "Niet gevonden" 29 | #define G00012 "%lu: %s\n" 30 | #define G00013 "\nHet edlin programma beveelt de aanhang heeft:\n" 31 | #define G00014 "# Redigeer een enkele lijn [#],[#],#m Beweeg blok" 32 | #define G00015 "a Voeg tekst bij [#][,#]p Toon tekst" 33 | #define G00016 "[#],[#],#,[#]c Kopieer blok q Stop het programma" 34 | #define G00017 "[#][,#]d Schrap blok [#][,#][?]r$,$ Vervang tekst" 35 | #define G00018 "e<> Schrijf en stop [#][,#][?]s$ Zoek naar tekst" 36 | #define G00019 "[#]i Voeg tekst in [#]t<> Lees van dossier" 37 | #define G00020 "[#][,#]l Toon tekst [#]w<> Schrijf te archiveren\n" 38 | #define G00021 "Waar $ boven een koord is, <> een filename is, # een (welk" 39 | #define G00022 ". zou kunnen zijn = huidig lijn, $ = de vorige lijn van de buffer" 40 | #define G00023 "of ofwel nummer + ofwel - nog een nummer) nummer is.\n" 41 | #define G00024 ", copyright (c) 2003 Gregory Pietsch" 42 | #define G00025 "Dit programma komt met ABSOLUUT GEEN GARANTIE." 43 | #define G00026 "Het is vrije software en u bent welkom opnieuw het onder de" 44 | #define G00027 "condities van de GNU Generaal Publieke Licentie -- te" 45 | #define G00028 "distribueren ofwel uitvoering 2 van de vergunning, ofwel, naar" 46 | #define G00029 "uw keuze, enig latere uitvoering.\n" 47 | #define G00030 "Uit herinnering" 48 | #define G00031 "Koordlengte fout" 49 | #define G00032 "Koordpositie fout" 50 | #define G00033 "Ongeldige gebruiker invoer, gebruik ? voor hulp." 51 | #define G00034 "Geen bestandsnaam" 52 | #define G00035 "Buffer is ook groot" 53 | #define G00036 "Ongeldige bufferpositie" 54 | #define G00037 "FOUT: %s\n" 55 | 56 | /* END OF FILE */ 57 | 58 | #endif 59 | 60 | /* END OF FILE */ 61 | -------------------------------------------------------------------------------- /msgs-no.h: -------------------------------------------------------------------------------- 1 | /* edlin.no - messages file (Norweigan version -- CP 850) */ 2 | /* */ 3 | /* Author: Gregory Pietsch */ 4 | /* */ 5 | /* DESCRIPTION: */ 6 | /* */ 7 | /* This file contains #defines for all the message strings in edlin. */ 8 | /* For internationalization fun, just translate the messages in this */ 9 | /* file. */ 10 | /* */ 11 | /* The strings were generated using ESR's cstrings program and moved */ 12 | /* here. */ 13 | /* */ 14 | #ifndef MSGS_H 15 | #define MSGS_H 16 | 17 | #define YES "Jj" 18 | #define G00001 " : \b" 19 | #define G00002 "O.K.? \b" 20 | #define G00003 "Adgangfeil" 21 | #define G00004 "%s: %lu ledning var leser\n" 22 | #define G00005 "%s: %lu ledninger var leser\n" 23 | #define G00006 "%s: %lu ledning skrevet\n" 24 | #define G00007 "%s: %lu ledninger skrevet\n" 25 | #define G00008 "%lu:%c%s\n" 26 | #define G00009 "Presse fortsette" 27 | #define G00010 "%lu: \b" 28 | #define G00011 "Ikke funnet" 29 | #define G00012 "%lu: %s\n" 30 | #define G00013 "\nEdlin program har de f\233lgende subkommandoene:\n" 31 | #define G00014 "# rediger en enkel ledning [#],[#],#m flytt blokk" 32 | #define G00015 "a tilf\233y tekst [#][,#]p vis tekst" 33 | #define G00016 "[#],[#],#,[#]c kopier blokk q slutt programet" 34 | #define G00017 "[#][,#]d stryk blokk [#][,#][?]r$,$ erstatt tekst" 35 | #define G00018 "e<> skriv og slutt [#][,#][?]s$ let etter tekst" 36 | #define G00019 "[#]i tilf\233y tekst [#]t<> les arkiv" 37 | #define G00020 "[#][,#]l vis tekst [#]w<> skriv arkiv\n" 38 | #define G00021 "hvor $ er over en snor, <> er et filnavn, # er et antall er" 39 | #define G00022 "(som . = n\206v\221rende ledning, $ = den siste ledningen" 40 | #define G00023 "i bufferen, eller hver antall + eller - enda et antall).\n" 41 | #define G00024 ", copyright (c) 2003 Gregory Pietsch" 42 | #define G00025 "Dette programet kommer UTEN NOE GARANTI." 43 | #define G00026 "Det er fri programvare, og De er velkommen omfordele det" 44 | #define G00027 "under termene av GNU General Public License -- hver versjon 2 av" 45 | #define G00028 "tillatelsen, eller, p\206 Deres alternativ, noe senere versjon." 46 | #define G00029 "" 47 | #define G00030 "Ut av hukommelse" 48 | #define G00031 "Snorlengdefeil" 49 | #define G00032 "Snorposisjonsfeil" 50 | #define G00033 "Ugyldig brukerinngang, bruk ? for hjelp." 51 | #define G00034 "Ingen filnavn" 52 | #define G00035 "St\233t ogs\206 stor" 53 | #define G00036 "Ugyldig bufferposisjon" 54 | #define G00037 "ERROR: %s\n" 55 | 56 | /* END OF FILE */ 57 | 58 | #endif 59 | 60 | /* END OF FILE */ 61 | -------------------------------------------------------------------------------- /msgs-pl.h: -------------------------------------------------------------------------------- 1 | /* ranslated by Mateusz Viste "Fox" / mateusz.viste@mail.ru */ 2 | /* olish letters encoded in the MAZOVIA standard */ 3 | /* omepage: http://www.the.killer.webpark.pl */ 4 | /* */ 5 | /* edlin.en - Polish-language messages file, MAZOVIA encoding */ 6 | /* */ 7 | /* Author: Gregory Pietsch */ 8 | /* */ 9 | /* DESCRIPTION: */ 10 | /* */ 11 | /* This file contains #defines for all the message strings in edlin. */ 12 | /* For internationalization fun, just translate the messages in this */ 13 | /* file. */ 14 | /* */ 15 | 16 | #ifndef MSGS_H 17 | #define MSGS_H 18 | 19 | #define YES "Tt" 20 | #define G00001 "\040:\040" 21 | #define G00002 "O.K.?\040" 22 | #define G00003 "Entry error" 23 | #define G00004 "%s: %lu odczytana linia\n" 24 | #define G00005 "%s: %lu odczytanych linii\n" 25 | #define G00006 "%s: %lu zapisana linia\n" 26 | #define G00007 "%s: %lu zapisanych linii\n" 27 | #define G00008 "%lu:%c%s\n" 28 | #define G00009 "Wci\236nij by kontynuowa\215" 29 | #define G00010 "%lu:\040" 30 | #define G00011 "Nie znaleziono" 31 | #define G00012 "%lu: %s\n" 32 | #define G00013 "\nedlin has the following subcommands:\n" 33 | #define G00014 "# edit a single line [#],[#],#m move" 34 | #define G00015 "a append [#][,#]p page" 35 | #define G00016 "[#],[#],#,[#]c copy q quit" 36 | #define G00017 "[#][,#]d delete [#][,#][?]r$,$ replace" 37 | #define G00018 "e<> end (write & quit) [#][,#][?]s$ search" 38 | #define G00019 "[#]i insert [#]t<> transfer" 39 | #define G00020 "[#][,#]l list [#]w<> write\n" 40 | #define G00021 "where $ above is a string, <> is a filename," 41 | #define G00022 "# is a number (which may be .=current line, $=last line," 42 | #define G00023 "or either number + or - another number).\n" 43 | #define G00024 ", copyright (c) 2003 Gregory Pietsch" 44 | #define G00025 "Ten program nie posiada JAKIEJKOLWIEK GWARANCJI." 45 | #define G00026 "To jest wolne oprogramowanie, i mo\247e by\215 dowolnie" 46 | #define G00027 "rozpowszechniane na warunkach zawartych w licencji" 47 | #define G00028 "GNU General Public License -- w wersji 2, lub" 48 | #define G00029 "jakiejkoliwek p\242\246niejszej wersji.\n" 49 | #define G00030 "Brak pami\221ci" 50 | #define G00031 "String length error" 51 | #define G00032 "String position error" 52 | #define G00033 "Nieprawid\222owe polecenie, u\247yj ? po pomoc." 53 | #define G00034 "Brak nazwy pliku" 54 | #define G00035 "Zbyt du\247y bufor" 55 | #define G00036 "Nieprawid\222owa pozycja bufora" 56 | #define G00037 "B\234\217D: %s\n" 57 | 58 | /* END OF FILE */ 59 | 60 | #endif 61 | 62 | /* END OF FILE */ 63 | -------------------------------------------------------------------------------- /msgs-pt.h: -------------------------------------------------------------------------------- 1 | /* edlin.pt - messages file (Portuguese version -- CP 850) */ 2 | /* */ 3 | /* Author: Gregory Pietsch */ 4 | /* */ 5 | /* DESCRIPTION: */ 6 | /* */ 7 | /* This file contains #defines for all the message strings in edlin. */ 8 | /* For internationalization fun, just translate the messages in this */ 9 | /* file. */ 10 | /* */ 11 | /* Corrected Portuguese translations were provided by */ 12 | /* Dutra de Lacerda */ 13 | /* */ 14 | #ifndef MSGS_H 15 | #define MSGS_H 16 | 17 | #define YES "Ss" 18 | #define G00001 " : \b" 19 | #define G00002 "Confirma? \b" 20 | #define G00003 "Input incorrecto" 21 | #define G00004 "%s: %lu linha foi lida\n" 22 | #define G00005 "%s: %lu linhas foram lidas\n" 23 | #define G00006 "%s: %lu linha foi escrita\n" 24 | #define G00007 "%s: %lu linhas foram escritas\n" 25 | #define G00008 "%lu:%c%s\n" 26 | #define G00009 "Pressione para continuar" 27 | #define G00010 "%lu: \b" 28 | #define G00011 "N\306o encontrado" 29 | #define G00012 "%lu: %s\n" 30 | #define G00013 "\nO Edlin obedece aos seguintes subcomandos:\n" 31 | #define G00014 "# editar linha [#],[#],#m mover o bloco" 32 | #define G00015 "a anexar [#][,#]p mostrar pagina" 33 | #define G00016 "[#],[#],#,[#]c copiar bloco q desistir" 34 | #define G00017 "[#][,#]d apagar [#][,#][?]r$,$ substituir" 35 | #define G00018 "e<> gravar e sair [#][,#][?]s$ procurar sequ\210ncia" 36 | #define G00019 "[#]i insirir texto [#]t<> l\210r ficheiro" 37 | #define G00020 "[#][,#]l mostrar linhas [#]w<> gravar\n" 38 | #define G00021 "onde $ = uma sequ\210ncia de letras, <> = um nome de ficheiro," 39 | #define G00022 " # = um n\243mero (de linha) ou '.' = linha actual ou '$' = \243ltima linha," 40 | #define G00023 " ou qualquer n\243mero intermedi\240rio +/- outro n\243mero.\n" 41 | #define G00024 ", copyright (c) 2003 Gregory Pietsch" 42 | #define G00025 "Este programa, porque gratuito, vem SEM NENHUMA GARANTIA." 43 | #define G00026 "\220 software livre e a sua redistribui\207\306o, nos termos da" 44 | #define G00027 "Licen\207a P\243blica Geral (da GNU), vers\306o 2 ou posterior," 45 | #define G00028 "\202 n\306o s\242 permitida como tamb\202m \202 encorajada." 46 | #define G00029 "\n" 47 | #define G00030 "ERRO: Mem\242ria insuficiente" 48 | #define G00031 "Erro de comprimento (da sequ\210ncia de caracteres)" 49 | #define G00032 "Erro de posi\207\306o (na sequ\210ncia de caracteres)" 50 | #define G00033 "ERRO: Comando inv\240lido; Use '?' para ajuda" 51 | #define G00034 "ERRO: Falta o nome do ficheiro" 52 | #define G00035 "ERRO: Mem\242ria de trabalho demasiado grande" 53 | #define G00036 "Erro de posi\207\306o (na mem\242ria de trabalho)" 54 | #define G00037 "ERRO: %s\n" 55 | 56 | /* END OF FILE */ 57 | 58 | #endif 59 | 60 | /* END OF FILE */ 61 | -------------------------------------------------------------------------------- /msgs-sv.h: -------------------------------------------------------------------------------- 1 | /* edlin.sv - Swedish-language messages file */ 2 | /* */ 3 | /* Author: Gregory Pietsch */ 4 | /* */ 5 | /* DESCRIPTION: */ 6 | /* */ 7 | /* This file contains #defines for all the message strings in edlin. */ 8 | /* For internationalization fun, just translate the messages in this */ 9 | /* file. */ 10 | /* Swedish translation Oct 2006 /A.J */ 11 | 12 | #ifndef MSGS_H 13 | #define MSGS_H 14 | 15 | #define YES "Jj" 16 | #define G00001 ": \b" 17 | #define G00002 "OK? \b" 18 | #define G00003 "Input Error" 19 | #define G00004 "%s: %lu rad inl\204st\n" 20 | #define G00005 "%s: %lu rader inl\204sta\n" 21 | #define G00006 "%s: %lu rad skriven\n" 22 | #define G00007 "%s: %lu rader skrivna\n" 23 | #define G00008 "%lu:%c%s\n" 24 | #define G00009 "Tryck " 25 | #define G00010 "%lu: \b" 26 | #define G00011 "hittades ej" 27 | #define G00012 "%lu: %s\n" 28 | #define G00013 "\nedlin har f\224ljande (engelska) kommandon:\n" 29 | #define G00014 "# editera en rad [#],[#],#m move" 30 | #define G00015 "a append [#][,#]p page" 31 | #define G00016 "[#],[#],#,[#]c copy q quit" 32 | #define G00017 "[#][,#]d delete [#][,#][?]r$,$ replace" 33 | #define G00018 "e<> end (write & quit) [#][,#][?]s$ s\224k" 34 | #define G00019 "[#]i insert [#]t<> transfer" 35 | #define G00020 "[#][,#]l lista [#]w<> write\n" 36 | #define G00021 "d\204r $ \204r en str\204ng, <> \204r ett filnamn," 37 | #define G00022 "# \204r ett radnummer (.=aktuell rad, $=sista raden," 38 | #define G00023 " uttryck med +/- kan anv\204ndas)\n" 39 | #define G00024 ", copyright (c) 2003 Gregory Pietsch" 40 | #define G00025 "This program comes with ABSOLUTELY NO WARRANTY." 41 | #define G00026 "It is free software, and you are welcome to redistribute it" 42 | #define G00027 "under the terms of the GNU General Public License -- either" 43 | #define G00028 "version 2 of the license, or, at your option, any later" 44 | #define G00029 "version.\n" 45 | #define G00030 "Slut p\206 minne" 46 | #define G00031 "Felaktig Str\204ngl\204ngd" 47 | #define G00032 "Felaktig Str\204ngposition" 48 | #define G00033 "F\224rst\206r ej, skriv ? f\224r hj\204lp." 49 | #define G00034 "Filnamn saknas" 50 | #define G00035 "F\224r stor buffert" 51 | #define G00036 "Ogiltig buffertposition" 52 | #define G00037 "ERROR: %s\n" 53 | 54 | /* END OF FILE */ 55 | 56 | #endif 57 | 58 | /* END OF FILE */ 59 | -------------------------------------------------------------------------------- /msgs-tr.h: -------------------------------------------------------------------------------- 1 | /* msgs.h - messages file 2 | 3 | Author: Gregory Pietsch 4 | 5 | DESCRIPTION: 6 | 7 | This file contains #defines for all the message strings in edlin. 8 | For internationalization fun, just translate the messages in this 9 | file. 10 | 11 | The strings were generated using ESR's cstrings program and moved 12 | here. 13 | 14 | */ 15 | 16 | #ifndef MSGS_H 17 | #define MSGS_H 18 | 19 | #define YES "Ee" 20 | 21 | #define G00001 " : " 22 | #define G00002 "Tamam? " 23 | #define G00003 "Girdi hatası" 24 | #define G00004 "%s: %lu satır okundu\n" 25 | #define G00005 "%s: %lu satır okundu\n" 26 | #define G00006 "%s: %lu satır yazıldı\n" 27 | #define G00007 "%s: %lu satır yazıldı\n" 28 | #define G00008 "%lu:%c%s\n" 29 | #define G00009 "Sürdürmek için 'a basın" 30 | #define G00010 "%lu: " 31 | #define G00011 "Bulunamadı" 32 | #define G00012 "%lu: %s\n" 33 | #define G00013 "\nedlin aşağıdaki altkomutlara iyedir:\n" 34 | #define G00014 "# tek bir satır düzenle [#],[#],#m taşı" 35 | #define G00015 "a iliştir [#][,#]p sayfa" 36 | #define G00016 "[#],[#],#,[#]c kopyala q çık" 37 | #define G00017 "[#][,#]d sil [#][,#][?]r$,$ değiştir" 38 | #define G00018 "e<> son (yaz ve çık) [#][,#][?]s$ ara" 39 | #define G00019 "[#]i ekle [#]t<> aktar" 40 | #define G00020 "[#][,#]l listele [#]w<> yaz\n" 41 | #define G00021 "$ bir dizi, <> bir dosya adı iken," 42 | #define G00022 "# bir sayı (.=geçerli satır, $=son satır," 43 | #define G00023 "veya her bir sayı + veya - başka bir sayı).\n" 44 | #define G00024 ", telif hakkı (c) 2003 Gregory Pietsch" 45 | #define G00025 "Bu program kesinlikle herhangi bir GARANTİ İLE GELMEZ." 46 | #define G00026 "Bu program özgür yazılım olup GNU Genel Kamu Lisansı'nın" 47 | #define G00027 "(GNU General Public License) 2. sürümü veya sizin seçeceğiniz" 48 | #define G00028 "daha yeni bir sürümü altında özgürce dağıtılabilir." 49 | #define G00029 "\n" 50 | #define G00030 "Yetersiz bellek" 51 | #define G00031 "Dizi uzunluk hatası" 52 | #define G00032 "Dizi konum hatası" 53 | #define G00033 "Geçersiz girdi, yardım için ? yapın." 54 | #define G00034 "Dosya adı yok" 55 | #define G00035 "Arabellek çok büyük" 56 | #define G00036 "Geçersiz arabellek konumu" 57 | #define G00037 "HATA: %s\n" 58 | 59 | #endif 60 | 61 | /* END OF FILE */ 62 | -------------------------------------------------------------------------------- /msgs.h: -------------------------------------------------------------------------------- 1 | /* msgs.h - messages file 2 | 3 | Author: Gregory Pietsch 4 | 5 | DESCRIPTION: 6 | 7 | This file contains #defines for all the message strings in edlin. 8 | For internationalization fun, just translate the messages in this 9 | file. 10 | 11 | The strings were generated using ESR's cstrings program and moved 12 | here. 13 | 14 | */ 15 | 16 | #ifndef MSGS_H 17 | #define MSGS_H 18 | 19 | #define YES "Yy" 20 | 21 | #define G00001 " : " 22 | #define G00002 "O.K.? " 23 | #define G00003 "Entry error" 24 | #define G00004 "%s: %lu line read\n" 25 | #define G00005 "%s: %lu lines read\n" 26 | #define G00006 "%s: %lu line written\n" 27 | #define G00007 "%s: %lu lines written\n" 28 | #define G00008 "%lu:%c%s\n" 29 | #define G00009 "Press to continue" 30 | #define G00010 "%lu: " 31 | #define G00011 "Not found" 32 | #define G00012 "%lu: %s\n" 33 | #define G00013 "\nedlin has the following subcommands:\n" 34 | #define G00014 "# edit a single line [#],[#],#m move" 35 | #define G00015 "a append [#][,#]p page" 36 | #define G00016 "[#],[#],#,[#]c copy q quit" 37 | #define G00017 "[#][,#]d delete [#][,#][?]r$,$ replace" 38 | #define G00018 "e<> end (write & quit) [#][,#][?]s$ search" 39 | #define G00019 "[#]i insert [#]t<> transfer" 40 | #define G00020 "[#][,#]l list [#]w<> write\n" 41 | #define G00021 "where $ above is a string, <> is a filename," 42 | #define G00022 "# is a number (which may be .=current line, $=last line," 43 | #define G00023 "or either number + or - another number).\n" 44 | #define G00024 ", copyright (c) 2003 Gregory Pietsch" 45 | #define G00025 "This program comes with ABSOLUTELY NO WARRANTY." 46 | #define G00026 "It is free software, and you are welcome to redistribute it" 47 | #define G00027 "under the terms of the GNU General Public License -- either" 48 | #define G00028 "version 2 of the license, or, at your option, any later" 49 | #define G00029 "version.\n" 50 | #define G00030 "Out of memory" 51 | #define G00031 "String length error" 52 | #define G00032 "String position error" 53 | #define G00033 "Invalid user input, use ? for help." 54 | #define G00034 "No filename" 55 | #define G00035 "Buffer too big" 56 | #define G00036 "Invalid buffer position" 57 | #define G00037 "ERROR: %s\n" 58 | 59 | #endif 60 | 61 | /* END OF FILE */ 62 | -------------------------------------------------------------------------------- /msgscats.h: -------------------------------------------------------------------------------- 1 | /* msgs.h - messages file for catgets() 2 | 3 | Author: Gregory Pietsch 4 | 5 | DESCRIPTION: 6 | 7 | This file contains #defines for all the message strings in edlin. 8 | For internationalization fun, just translate the messages in this 9 | file. 10 | 11 | The strings were generated using ESR's cstrings program and moved 12 | here. 13 | 14 | */ 15 | 16 | #ifndef MSGS_H 17 | #define MSGS_H 18 | 19 | #ifdef USE_KITTEN 20 | #include "kitten.h" 21 | #else 22 | #include "nl_types.h" 23 | #endif 24 | 25 | #define YES catgets(the_cat, 1, 0, "Yy") 26 | 27 | #define G00001 catgets(the_cat, 1, 1, " : ") 28 | #define G00002 catgets(the_cat, 1, 2, "O.K.? ") 29 | #define G00003 catgets(the_cat, 1, 3, "Entry error") 30 | #define G00004 catgets(the_cat, 1, 4, "%s: %lu line read\n") 31 | #define G00005 catgets(the_cat, 1, 5, "%s: %lu lines read\n") 32 | #define G00006 catgets(the_cat, 1, 6, "%s: %lu line written\n") 33 | #define G00007 catgets(the_cat, 1, 7, "%s: %lu lines written\n") 34 | #define G00008 catgets(the_cat, 1, 8, "%lu:%c%s\n") 35 | #define G00009 catgets(the_cat, 1, 9, "Press to continue") 36 | #define G00010 catgets(the_cat, 1, 10, "%lu: ") 37 | #define G00011 catgets(the_cat, 1, 11, "Not found") 38 | #define G00012 catgets(the_cat, 1, 12, "%lu: %s\n") 39 | #define G00013 catgets(the_cat, 1, 13, "\nedlin has the following subcommands:\n") 40 | #define G00014 catgets(the_cat, 1, 14, "# edit a single line [#],[#],#m move") 41 | #define G00015 catgets(the_cat, 1, 15, "a append [#][,#]p page") 42 | #define G00016 catgets(the_cat, 1, 16, "[#],[#],#,[#]c copy q quit") 43 | #define G00017 catgets(the_cat, 1, 17, "[#][,#]d delete [#][,#][?]r$,$ replace") 44 | #define G00018 catgets(the_cat, 1, 18, "e<> end (write & quit) [#][,#][?]s$ search") 45 | #define G00019 catgets(the_cat, 1, 19, "[#]i insert [#]t<> transfer") 46 | #define G00020 catgets(the_cat, 1, 20, "[#][,#]l list [#]w<> write\n") 47 | #define G00021 catgets(the_cat, 1, 21, "where $ above is a string, <> is a filename,") 48 | #define G00022 catgets(the_cat, 1, 22, "# is a number (which may be .=current line, $=last line,") 49 | #define G00023 catgets(the_cat, 1, 23, "or either number + or - another number).\n") 50 | #define G00024 catgets(the_cat, 1, 24, ", copyright (c) 2003 Gregory Pietsch") 51 | #define G00025 catgets(the_cat, 1, 25, "This program comes with ABSOLUTELY NO WARRANTY.") 52 | #define G00026 catgets(the_cat, 1, 26, "It is free software, and you are welcome to redistribute it") 53 | #define G00027 catgets(the_cat, 1, 27, "under the terms of the GNU General Public License -- either") 54 | #define G00028 catgets(the_cat, 1, 28, "version 2 of the license, or, at your option, any later") 55 | #define G00029 catgets(the_cat, 1, 29, "version.\n") 56 | #define G00030 catgets(the_cat, 1, 30, "Out of memory") 57 | #define G00031 catgets(the_cat, 1, 31, "String length error") 58 | #define G00032 catgets(the_cat, 1, 32, "String position error") 59 | #define G00033 catgets(the_cat, 1, 33, "Invalid user input, use ? for help.") 60 | #define G00034 catgets(the_cat, 1, 34, "No filename") 61 | #define G00035 catgets(the_cat, 1, 35, "Buffer too big") 62 | #define G00036 catgets(the_cat, 1, 36, "Invalid buffer position") 63 | #define G00037 catgets(the_cat, 1, 37, "ERROR: %s\n") 64 | 65 | #ifndef EXTERN 66 | #define EXTERN extern 67 | #endif 68 | EXTERN nl_catd the_cat; 69 | 70 | #endif 71 | 72 | /* END OF FILE */ 73 | -------------------------------------------------------------------------------- /nl_types.h: -------------------------------------------------------------------------------- 1 | /* nl_types.h - Substitute nl_types.h that is kitten-compatible 2 | 3 | AUTHOR: Gregory Pietsch 4 | 5 | DESCRIPTION: 6 | 7 | The header shall contain definitions of at least the following 8 | types: 9 | 10 | nl_catd 11 | Used by the message catalog functions catopen(), catgets(), and 12 | catclose() to identify a catalog descriptor. 13 | nl_item 14 | Used by nl_langinfo() to identify items of langinfo data. Values of 15 | objects of type nl_item are defined in . 16 | */ 17 | #ifndef _NL_TYPES 18 | #define _NL_TYPES 19 | 20 | #if defined(__STDC__) || defined(STDC_HEADERS) || defined(HAVE_STDDEF_H) 21 | #include 22 | #endif 23 | #ifndef _NL_CATD_DEFINED 24 | #define _NL_CATD_DEFINED 25 | typedef size_t nl_catd; 26 | #endif 27 | #ifndef _NL_ITEM_DEFINED 28 | #define _NL_ITEM_DEFINED 29 | typedef int nl_item; 30 | #endif 31 | /* 32 | The header shall contain definitions of at least the following 33 | constants: 34 | 35 | NL_SETD 36 | Used by gencat when no $set directive is specified in a message text 37 | source file; see the Internationalization Guide. This constant can be passed 38 | as the value of set_id on subsequent calls to catgets() (that is, to 39 | retrieve messages from the default message set). The value of NL_SETD is 40 | implementation-defined. 41 | NL_CAT_LOCALE 42 | Value that must be passed as the oflag argument to catopen() to ensure that 43 | message catalog selection depends on the LC_MESSAGES locale category, rather 44 | than directly on the LANG environment variable. 45 | */ 46 | #define NL_SETD 0 47 | #define NL_CAT_LOCALE 1 48 | /* 49 | The following shall be declared as functions and may also be defined as macros. 50 | Function prototypes shall be provided. 51 | */ 52 | #ifdef __cplusplus 53 | extern "C" 54 | { 55 | #endif 56 | int catclose (nl_catd); 57 | char *catgets (nl_catd, int, int, const char *); 58 | nl_catd catopen (const char *, int); 59 | #ifdef __cplusplus 60 | }; 61 | #endif 62 | 63 | #endif /* _NL_TYPES */ 64 | 65 | /* END OF FILE */ 66 | -------------------------------------------------------------------------------- /ow.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM Tested on Win XP Home SP2 w/ OpenWatcom 1.5 3 | REM builds FreeDOS's edlin 2.10c (by Gregory Pietsch: gpietsch@comcast.net) 4 | REM 5 | REM rugxulo@bellsouth.net (this .BAT file's author) 6 | REM Saturday, December 30, 2006 11:57pm 7 | REM 8 | REM 9 | REM USAGE: 10 | REM 11 | REM = default is to build 16-bit DOS .EXE (slower, but 8086s: use this!) 12 | REM = "/32" = DOS/4GW .EXE (uses virtual mem, runs much faster on Win XP) 13 | REM = see below about changing/stubbing the DOS extender w/ WDOS/X 14 | REM 15 | REM NOTES: 16 | REM 17 | REM = If environment space is low, "command /e:2048 /c edlin-ow /32" 18 | REM = building the 16-bit .EXE works on pure DOS (thankfully): 20s on P166 19 | REM = so I'm guessing 32-bit .EXE will build too! :-) 20 | REM = I have kept the 16-bit and 32-bit flags settings separate in case 21 | REM they get changed/expanded later. 22 | REM = I've not (yet) found a good way to set/use an environ. variable with 23 | REM the program version number. 24 | REM 25 | REM TODO: (hopefully within the next six months!) 26 | REM 27 | REM = message file for a certain popular conlang (hint: see my e-mail addy) 28 | REM = N.B. I'm no great scholar, but I can read it fairly well. :-) 29 | REM 30 | 31 | if not exist edlin-2.10c\nul if exist edlin-2.10c.zip unzip edlin-2.10c.zip 32 | if not exist edlin-2.10c\nul goto end 33 | cd edlin-2.10c 34 | 35 | REM new FreeDOS i18n support (replaces old msgs-en.h, etc. files) 36 | copy /b msgscats.h msgs.h 37 | 38 | REM make CONFIG.H 39 | if not exist config.h copy /b config-h.ow config.h 40 | if not exist config.h copy /b config-h.bc config.h 41 | if not exist config.h goto end 42 | 43 | REM 16-bit DOS: 44 | REM 45 | REM -zq = quiet, -ox = max. optimize, -bt = target OS, -mh = model huge 46 | set FLAGS1=-i=%WATCOM%\h -fi=nl_types.h -dUSE_CATGETS -zq -ox -bt=dos -mh 47 | set MYCC=wcc 48 | 49 | REM 32-bit DOS: (N.B. Use WCC386.EXE instead of WCC.EXE) 50 | REM 51 | REM -mf = model flat 52 | if not "%1"=="/32" goto compile 53 | set FLAGS1=-i%WATCOM%\h -fi=nl_types.h -dUSE_CATGETS -zq -ox -bt=dos -mf 54 | set MYCC=wcc386 55 | 56 | :compile 57 | for %%f in (catgets defines dynstr edlib edlin) do %MYCC% %%f.c %FLAGS1% 58 | 59 | REM EDLIN32 uses DOS/4GW by default: 60 | REM http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/devel/c/ 61 | REM openwatcom/1.5/ext_dos4gw.zip (210k) 62 | REM 63 | REM else do "stubit edlin32.exe" w/ WDOS/X 0.97 for stand-alone .EXE: 64 | REM http://tippach.business.t-online.de/wdosx/wdosx097.zip (690k) 65 | REM 66 | REM Other DOS extenders will work too but haven't been tested by me (yet). 67 | 68 | set W1=dos4g name edlin32 69 | if not "%1"=="/32" set W1=dos name edlin16 70 | 71 | wlink system %W1% file catgets,defines,dynstr,edlib,edlin 72 | 73 | :end 74 | set FLAGS1= 75 | set MYCC= 76 | set W1= 77 | 78 | REM (EOF) -------------------------------------------------------------------------------- /realloc.c: -------------------------------------------------------------------------------- 1 | /* Work around bug on some systems where realloc (NULL, 0) fails. 2 | Copyright (C) 1997 Free Software Foundation, Inc. 3 | 4 | This program is free software; you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation; either version 2, or (at your option) 7 | any later version. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with this program; if not, write to the Free Software Foundation, 16 | Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 17 | 18 | /* written by Jim Meyering */ 19 | 20 | #if HAVE_CONFIG_H 21 | # include "config.h" 22 | #endif 23 | #undef realloc 24 | 25 | #include 26 | 27 | char *malloc (); 28 | char *realloc (); 29 | 30 | /* Change the size of an allocated block of memory P to N bytes, 31 | with error checking. If N is zero, change it to 1. If P is NULL, 32 | use malloc. */ 33 | 34 | char * 35 | rpl_realloc (p, n) 36 | char *p; 37 | size_t n; 38 | { 39 | if (n == 0) 40 | n = 1; 41 | if (p == 0) 42 | return malloc (n); 43 | return realloc (p, n); 44 | } 45 | -------------------------------------------------------------------------------- /todo: -------------------------------------------------------------------------------- 1 | LIST OF THINGS TO WORK ON 2 | 3 | * F2 and F3 4 | 5 | The only missing features of MS edlin are the handling of these control keys 6 | when editing lines. The reason I haven't done anything to this section is 7 | because I want FreeDOS edlin to work as well under Linux as it does under 8 | FreeDOS, and handling of special keys is more difficult (and different) under 9 | Linux because I figure I'd probably have to throw in a termcap handler or 10 | something similar. 11 | 12 | * Error handling 13 | 14 | The error handling in edlin is grubby at best. I would like to see it worked 15 | on. 16 | 17 | * Internationalization of outputted messages. 18 | 19 | To speed internationalization, all the output messages are in msgs.h. 20 | Internationalization should just be a matter of copying a particular 21 | file to msgs.h and voila, instant internationalization! 22 | 23 | I eventually want to get translations of all the languages in which it is 24 | possible to use the ISO 8859-1 character set. The following is a status 25 | list: 26 | 27 | LANGUAGE STATUS 28 | ======== ====== 29 | Afrikaans (af) not done 30 | Basque (eu) done 31 | Catalan (ca) not done 32 | Danish (da) draft 33 | Dutch (nl) done 34 | English (en) done 35 | Faeroese (fo) not done 36 | Finnish (fi) draft 37 | French (fr) done 38 | Galician (gl) not done 39 | German (de) done 40 | Icelandic (is) draft 41 | Irish (ga) not done 42 | Italian (it) done 43 | Norwegian (no) draft 44 | Portuguese (pt) done 45 | Scottish (gd) not done 46 | Spanish (es) done 47 | Swedish (sv) draft 48 | 49 | The following is not one of the above, but there is a port for it: 50 | 51 | Japanese (ja) done 52 | 53 | In the above, "not done" means that I don't have a translation, "draft" means 54 | that I produced a mechanical translation that hasn't been checked by a native 55 | speaker, and "done" means that the translation has been checked by a native 56 | speaker and thus should be more stable than draft. 57 | 58 | In addition to the above languages, I would like to get translations in 59 | widely-known constructed and science fiction languages such as J.R.R. 60 | Tolkien's Middle Earth Elven, Loglan, Lojban, and of course, Klingon from 61 | "Star Trek". 62 | 63 | Gregory Pietsch, 2005-11-15 64 | 65 | --------------------------------------------------------------------------------