Commit Graph

35 Commits

Author SHA1 Message Date
Renaud 04264b4d27 Start clean up of lock/pklock dependencies. 2014-12-22 15:06:37 +08:00
Renaud 0e9fc236f9 display depends on window instead of efunc. 2014-12-22 14:45:37 +08:00
Renaud 86d5b10fa9 fileio depends on display instead of efunc. 2014-12-22 14:45:16 +08:00
Renaud 86afdef45e refactor handling of version and program name strings. 2014-12-22 14:43:23 +08:00
Linus Torvalds 25f0141df1 Avoid memory access errors if llength() overflows
llength() is currently a 'short' which can overflow and result in signed
numbers if line lengths are larger than 32k.  We'll fix the overflow
separately, but before we do that, just use a signed int to hold the
value so that we don't overrun memory allocations when we converted that
negative number to a large positive unsigned integer.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2013-02-22 14:29:43 -08:00
Linus Torvalds 1edeced67c Fix vtputc() and simplify show_line by using it again
This re-introduces vtputc() as the way to show characters, which
reinstates the control character handing, and simplifies show_line() in
the process.

vtputc now takes an "int" that is either a unicode character or a signed
char (so negative values in the range [-1, -128] are considered to be
the same as [128, 255]).  This allows us to use it regardless of what
the source of data is.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-11 11:23:32 -07:00
Linus Torvalds 4bccfab632 Make 'show_line()' do proper TAB handling
The TAB handling got broken by commit cee00b0efb ("Show UTF-8 input as
UTF-8 output") when it stopped doing things one byte at a time.

I'm sure the other special character cases are broken too.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-11 01:22:32 -07:00
Linus Torvalds 6b793211c2 Make cursor movement (largely) understand UTF-8 character boundaries
Ok, so it may do odd things if it's not truly utf-8, and when moving up
and down lines that have utf-8 the cursor moves oddly (because the byte
offset within the line stays constant, rather than the character
offset), but with this you can actually open the UTF8 example file and
move around it, and at least some of the movement makes sense.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 16:40:36 -07:00
Linus Torvalds e62cdf04cf Split up the utf8 helper functions into a file of their own
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 16:21:35 -07:00
Linus Torvalds cee00b0efb Show UTF-8 input as UTF-8 output
.. by doing the stupid "convert to unicode value and back" model.

This actually populates the 'struct video' array with the unicode
values, so UTF8 input actually shows correctly.  In particular, the nice
test-file (UTF-8-demo.txt) shows up not as garbage, but as the UTF-8 it
is.

HOWEVER!

Since the *editing* doesn't know about UTF-8, and considers it just a
stream of bytes, the end result is not actually a usable utf-8 editor.
So don't get too excited yet: this is just a partial step to "actually
edit utf8 data"

NOTE NOTE NOTE! If the character buffer contains Latin1, we will
transform that Latin1 to unicode, and then output it as UTF8.  And we
will edit it correctly as the character-by-character data.  Also, we
still do the "UTF8 to Latin1" translation on *input*, so with this
commit we can actually continue to *edit* Latin1 text.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 15:08:17 -07:00
Linus Torvalds e8f984a1b0 Make the 'struct video' contain an array of unicode characters rather than bytes
This is disgusting.  And quite frankly, it's debatable whether this will
ever work.  The "line" structure is still just an array of characters,
so that has to work with utf-8.

But the 'struct video' thing is what represents the actual screen
rectangle, and is fixed-size by the size of the screen.  So making it
contain actual 32-bit unicode characters *may* make sense.

Right now we translate things the same way we always used to, though, so
utf-8 in 'struct line' will not be translated to the proper unicode
array, but to the bytes of the utf-8 representation.  So this really
doesn't improve anything per se yet, just expands the memory use of the
video array.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 14:24:23 -07:00
Linus Torvalds 2dddd4f970 Show lines with a single helper function, not one byte at a time
Let's see how hard it is to show UTF-8 characters properly.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 13:38:41 -07:00
Linus Torvalds c718cb2a4a Show xA0 (nbsp) as a non-printable character
I want to see the difference between space and nbsp, and I consider nbsp
to be a control character, so show it as such.  Even if it is
technically "printable".

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-08-22 09:25:04 -07:00
Thiago Farina 823786d263 uemacs: display.c: Use the newly introduced xmalloc function.
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-12-16 15:46:43 -08:00
Thiago Farina af19da1a99 uemacs: Move structure line and its functions to its own header file.
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-15 08:46:20 -08:00
Pekka Enberg 72a1af4d91 uemacs: Kill dead code
This patch kills #ifdef'd code from display.c and file.c.

Signed-off-by: Pekka Enberg <penberg@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-14 15:21:47 -08:00
Pekka Enberg 0f05e53f99 uemacs: Fix return statements
Return statement is not a function so remove superfluous use of parenthesis.

Cc: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-08-29 08:15:23 -07:00
Thiago Farina 8facd84c6f uemacs: Add --help option.
Add a basic usage() function to support the --help option.

Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-08-18 12:14:19 -07:00
Thiago Farina 81a3a0be6e uemacs: convert typedef struct window_t to struct window.
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-08-01 15:10:23 -07:00
Thiago Farina e32cecc843 uemacs: convert typdef struct VIDEO to struct video.
Signed-off-by: Thiago Farina <thiago.farina@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-06-01 08:11:33 -07:00
Thiago Farina c7e30a9636 uemacs: convert typdef struct LINE to struct line.
Cc: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-04-28 07:46:47 -07:00
Pekka Enberg 74ffb9e254 uemacs: remove use of 'register' keyword
Lets welcome uEmacs/PK to the year 2010! As expected, the patch has no effect
on the generated code:

   text	   data	    bss	    dec	    hex	filename
 106002	   8864	  18616	 133482	  2096a	em
 106002	   8864	  18616	 133482	  2096a	em.new

Cc: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-02-27 16:17:44 -08:00
Thiago Farina 5ffdebdbf3 uemacs: remove typdef struct BUFFER -> struct buffer.
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-02-15 18:33:31 -08:00
Thiago Farina 8fc7449839 uemacs: fix sparse warnings, making file-local symbols static.
ansi.c:255:6: warning: symbol 'ansihello' was not declared. Should it be static?
epath.h:11:6: warning: symbol 'pathname' was not declared. Should it be static?
display.c:36:7: warning: symbol 'vscreen' was not declared. Should it be static?
display.c:38:7: warning: symbol 'pscreen' was not declared. Should it be static?
display.c:927:5: warning: symbol 'updateline' was not declared. Should it be static?
evar.h:20:6: warning: symbol 'uv' was not declared. Should it be static?
evar.h:24:6: warning: symbol 'envars' was not declared. Should it be static?
evar.h:128:7: warning: symbol 'funcs' was not declared. Should it be static?
fileio.c:14:6: warning: symbol 'ffp' was not declared. Should it be static?
fileio.c:15:5: warning: symbol 'eofflag' was not declared. Should it be static?
ibmpc.c:505:6: warning: symbol 'ibmhello' was not declared. Should it be static?
isearch.c:36:5: warning: symbol 'saved_get_char' was not declared. Should it be static?
isearch.c:37:5: warning: symbol 'eaten_char' was not declared. Should it be static?
isearch.c:41:5: warning: symbol 'cmd_buff' was not declared. Should it be static?
isearch.c:42:5: warning: symbol 'cmd_offset' was not declared. Should it be static?
isearch.c:43:5: warning: symbol 'cmd_reexecute' was not declared. Should it be static?
line.c:21:6: warning: symbol 'ykbuf' was not declared. Should it be static?
line.c:22:5: warning: symbol 'ykboff' was not declared. Should it be static?
lock.c:17:6: warning: symbol 'lname' was not declared. Should it be static?
lock.c:18:5: warning: symbol 'numlocks' was not declared. Should it be static?
vmsvt.c:521:6: warning: symbol 'hellovms' was not declared. Should it be static?
vt52.c:181:6: warning: symbol 'vt52hello' was not declared. Should it be static?

Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-01-29 16:30:44 -08:00
Linus Torvalds 378d2a835b Mark functions and variables local to display.c 'static'
Waste a few minutes occasionally on cleanup, and maybe we can make this
thing look ok in a decade or two..

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-11-19 11:22:04 -08:00
Linus Torvalds dbc51bf972 Handle 8-bit characters better in display
This code still assumes a latin1 kind of "one byte, one character" setup.

UTF-8 input/output (even if the data is encoded in latin-1) is a separate
issue.
2005-10-01 10:46:09 -07:00
Linus Torvalds ef92bc8cd9 Make sources mostly sparse-clean
Mainly an issue of taking care of a few remaining K&R function
declarations.
2005-10-01 01:09:22 -07:00
Linus Torvalds 24338ae855 Fix more compiler warnings
Better initializers, and more proper function types.
2005-10-01 00:56:15 -07:00
Linus Torvalds d66d329986 Replace "WINDOW" type with "window_t"
Starting to try to avoid name clashes with curses and friends.
2005-10-01 00:02:32 -07:00
Linus Torvalds d5dc3160cf Lots of ANSI'fication and cleanups
Still tons of warnings with "-Wall", but now it's actually getting closer.

It even compiles again.
2005-09-30 22:52:45 -07:00
Linus Torvalds 9605cf8826 First cut at turning things into proper modern ANSI C
Hey! Real declarations!
2005-09-30 16:34:11 -07:00
Linus Torvalds 118ee5f944 Fix up headers and bogus re-definitions to use <stdlib.h> and <string.h>
Hey, it's already compiling cleaner. Getting proper function declarations
will be a bitch, though.
2005-09-30 15:33:51 -07:00
Linus Torvalds 435dd32ae2 Run "indent -kr -i8" on the sources
Let's see how nasty it is to clean things up. For real.
2005-09-30 15:26:09 -07:00
Linus Torvalds 77784cd46c Minimal patches to make uemacs compile in a modern environment.
make sure to include <errno.h>, and allow for the fact that newer
gcc's don't allow function declarations in function scope (don't
ask me why, but there you have it..)
2005-05-31 08:58:59 -07:00
Linus Torvalds d7148b21fe Initial import of em-4.0.15-lt
This is a slightly updated version of uemacs-PK (PK is Pekka
Kutvonen) which was used at Helsinki University a long time
ago. My fingers cannot be retrained.
2005-05-31 08:50:56 -07:00