Initial import of Eterm 0.8.9 sources

SVN revision: 38
eterm-0.10
Michael Jennings 24 years ago
commit 22b2a193d3
  1. 17
      .cvsignore
  2. 340
      COPYING
  3. 11
      CVS-README
  4. 1627
      ChangeLog
  5. 79
      Eterm.spec.in
  6. 7
      Makefile.am
  7. 124
      README
  8. 413
      ReleaseNotes
  9. 293
      acconfig.h
  10. 249
      acl.m4
  11. 52
      autogen.sh
  12. 42
      bg/Makefile.am
  13. 252
      bg/Makefile.in
  14. 34
      bg/README.backgrounds
  15. 4
      bg/scale/.cvsignore
  16. 4
      bg/tile/.cvsignore
  17. 387
      configure.in
  18. 12
      debian/README.debian
  19. 137
      debian/changelog
  20. 17
      debian/control
  21. 8
      debian/copyright
  22. 5
      debian/dirs
  23. 10
      debian/doc-base
  24. 1
      debian/docs
  25. 2
      debian/menu
  26. 29
      debian/postinst
  27. 9
      debian/postrm
  28. 94
      debian/rules
  29. 1
      debian/shlibs.local
  30. 4
      doc/.cvsignore
  31. 1263
      doc/Eterm.1.in
  32. 44
      doc/Eterm.tcap
  33. 147
      doc/Eterm.ti
  34. 1469
      doc/Eterm_reference.html
  35. 534
      doc/FAQ.html
  36. 14
      doc/Makefile.am
  37. 238
      install-sh
  38. 12
      libmej/Makefile.am
  39. 372
      libmej/Makefile.in
  40. 55
      libmej/debug.c
  41. 36
      libmej/debug.h
  42. 47
      libmej/global.h
  43. 407
      libmej/mem.c
  44. 82
      libmej/mem.h
  45. 519
      libmej/snprintf.c
  46. 568
      libmej/strings.c
  47. 106
      libmej/strings.h
  48. 272
      libmej/strptime.c
  49. 76
      libmej/strptime.h
  50. 188
      missing
  51. 32
      mkinstalldirs
  52. 9
      reformat-code
  53. 10
      src/.cvsignore
  54. 822
      src/Eterm.xpm
  55. 30
      src/Makefile.am
  56. 623
      src/activeconfig.c
  57. 106
      src/activeconfig.h
  58. 390
      src/activeeterm.c
  59. 48
      src/activeeterm.h
  60. 524
      src/activetags.c
  61. 182
      src/activetags.h
  62. 7123
      src/command.c
  63. 122
      src/command.h
  64. 105
      src/debug.h
  65. 26
      src/eterm_imlib.h
  66. 527
      src/feature.h.in
  67. 556
      src/graphics.c
  68. 63
      src/graphics.h
  69. 2
      src/graphics/.cvsignore
  70. 11
      src/graphics/Makefile.am
  71. 1
      src/graphics/README
  72. 4000
      src/graphics/data
  73. 169
      src/graphics/grxlib.c
  74. 28
      src/graphics/grxlib.h
  75. 257
      src/graphics/qplot.c
  76. 389
      src/grkelot.c
  77. 38
      src/grkelot.h
  78. 53
      src/grx.h
  79. 479
      src/main.c
  80. 304
      src/main.h
  81. 2567
      src/menubar.c
  82. 126
      src/menubar.h
  83. 379
      src/misc.c
  84. 38
      src/misc.h
  85. 148
      src/netdisp.c
  86. 3637
      src/options.c
  87. 107
      src/options.h
  88. 1611
      src/pixmap.c
  89. 89
      src/pixmap.h
  90. 80
      src/profile.h
  91. 3294
      src/screen.c
  92. 261
      src/screen.h
  93. 539
      src/scrollbar.c
  94. 91
      src/scrollbar.h
  95. 99
      src/system.c
  96. 21
      src/system.h
  97. 219
      src/threads.c
  98. 33
      src/threads.h
  99. 502
      src/utmp.c
  100. 1
      stamp-h.in
  101. Some files were not shown because too many files have changed in this diff Show More

@ -0,0 +1,17 @@
config.log
config.sub
config.cache
config.guess
configure
ltconfig
ltmain.sh
Makefile
Makefile.in
aclocal.m4
config.status
config.h
libtool
stamp-h
move-themes
Eterm.spec
config.h.in

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

@ -0,0 +1,11 @@
As of 31 August 1998, Eterm is now available via anonymous CVS from
anoncvs.gnome.org. If you don't know how to use CVS, don't use it.
The authors, of course, don't guarantee anything whatsoever about
Eterm being functional; we guarantee even less if you get it from
CVS. We will try to remember to test things before we commit them,
but we make no promises. :-)
Happy terming!
mej

File diff suppressed because it is too large Load Diff

@ -0,0 +1,79 @@
# Note that this is NOT a relocatable package
%define ver @VERSION@
%define rel SNAP
%define prefix /usr
Summary: Eterm Enlightened Terminal Emulator for X Windows
Name: Eterm
Version: %ver
Release: %rel
Copyright: GPL
Group: X11/Applications
Source: ftp://ftp.enlightenment.org/pub/Eterm/Eterm-%{ver}.tar.gz
BuildRoot: /tmp/Eterm-root
Packager: technoir <technoir@themes.org>
URL: http://e.themes.org/
Requires: imlib >= 1.8
Docdir: %{prefix}/doc
%description
Eterm is a color vt102 terminal emulator intended as an xterm replacement for users who want a term program integrated with Enlightenment, or simply want a little more "eye candy". Eterm uses Imlib for advanced graphic abilities.
%changelog
* Wed Dec 30 1998 mej <mej@mw.3com.com>
- Added spec file. Created by techn0ir <technoir@themes.org>
%prep
%setup
%build
# Optimize that damned code all the way
if [ ! -z "`echo -n ${RPM_OPT_FLAGS} | grep pentium`" ]; then
if [ ! -z `which egcs` ]; then
CC="egcs"
else
if [ ! -z `which pgcc` ]; then
CC="pgcc"
fi
fi
CFLAGS="${RPM_OPT_FLAGS}"
else
CFLAGS="${RPM_OPT_FLAGS}"
fi
if [ ! -f configure ]; then
CFLAGS="$RPM_OPT_FLAGS" ./autogen.sh --prefix=%prefix
else
CFLAGS="$RPM_OPT_FLAGS" ./configure --prefix=%prefix
fi
make
%install
rm -rf $RPM_BUILD_ROOT
make prefix=$RPM_BUILD_ROOT%{prefix} install
%clean
rm -rf $RPM_BUILD_ROOT
%post
%postun
%files
%defattr(-, root, root)
%{prefix}/bin/*
%(prefix)/doc/*
%{prefix}/lib/*
%{prefix}/share/*
%{prefix}/man/*
%doc COPYING
%doc ChangeLog
%doc README

@ -0,0 +1,7 @@
# $Id$
AUTOMAKE_OPTIONS = foreign
SUBDIRS = libmej src themes utils doc bg
EXTRA_DIST = README ReleaseNotes CVS-README COPYING ChangeLog autogen.sh

124
README

@ -0,0 +1,124 @@
Release notes for Eterm Development Release 0.8
-----------------------------------------------
Software Requirements
---------------------
- The usual X11R6 stuff
- Rasterman's Imlib and the libraries it needs. Visit
http://www.labs.redhat.com/imlib/ for more information.
- Even though Eterm works with any window manager, you just might get extra
fancies by using the Enlightenment window manager from Rasterman and
Mandrake - http://www.enlightenment.org/ for more information. Now go see
what your desktop can look like with E. :) -vendu
Documentation to read
---------------------
- The FAQ at http://www.eterm.org/
- Run "Eterm -h" - you'll see the command line options.
ATTENTION! Active Tags Warning!
--------------------------------
NOTE: It looks like the latest resize-crashes happen in the active tags
code. We'll try to get this fixed as soon as possible. Until then, if you
want to use tags, you may want to see the FIXME notes in screen.c for what
NULL pointer checks to remove.
Preliminary support for active tags by Nat Friedman has been added.
Thanks, Nat :) (http://dingus.mit.edu/ for more info)
This will definitely need more work :) Sorry if it's buggy (I'd expect it
to be >:). -vendu
Building Eterm 0.8
------------------
From the toplevel Eterm source tree directory:
./configure
make
With better optimization flags
- For gcc 2.7.2.1 and older: make "CFLAGS=-O2 -fno-strength-reduce"
- For Intel-based platforms with new gcc compilers: make "CFLAGS=-O2 -m486"
- For Intel-based platforms with new gcc compilers, more optimization:
make "CFLAGS=-O3 -m486 -malign-loops=2 -malign-jumps=2 -malign-functions=2"
- For Pentium machines with egcs or pgcc:
make "CFLAGS=-O6 -mpentium -malign-loops=2 -malign-jumps=2 -malign-functions=2"
- Eterm seems to compile OK with pgcc 1.0.1. DEFINITELY use the -malign
flags, they seem to speed things up quite considerably for Pentium
processors :)
Installing Eterm
----------------
After performing the build step above, run:
make install
Standard Disclaimer
-------------------
The authors don't take any responsibility for any damage this program
may do. We are doing this in our spare time. If you don't like this
program, don't use it.
Eterm is based on rxvt 2.21. This development release of Eterm
has been hacked together by Tuomo Venalainen (vendu@cc.hut.fi)
and Michael Jennings (mej@tcserv.com). Thanks to Rasterman
(aka Carsten Haitzler) and Michael Kellen, as well as to all the
other people who have provided patches. Thanks to all regulars
from the #E IRC channel for helping us test Eterm.
The development of Eterm will be continued. The sources need to be
converted into human-readable format ;-). More features will be added
as well. We'll continue cleaning up and patching the sources to make
Eterm more robust, secure and portable.
NOTE: Support for libXpm was dropped off in DR 0.3. Imlib does a much
better job at loading and scaling the background pixmaps. And hey,
it's Eterm, ya know :-)
Future Plans
------------
There will be minimal further development on this incarnation of Eterm.
We have begun Project Resurrection, which is a complete rewrite of Eterm
with a completely different philosophy of design. Please visit
http://ganja.tky.hut.fi/Resurrection/ for more information.
Notes
-----
- In case you need utmp support, you'll have to run Eterm "setuid root"
As root, do: "chmod 4755 Eterm" Make SURE the Eterm binary is owned by
user=root, group=root (on BSD, i think it should be group=wheel):
1. chown root.root Eterm
2. (BSD) chown root.wheel Eterm
Note that in this version, utmp support will be turned on automagically
only on Linux and FreeBSD. If you want to try it on other platforms,
add -DUTMP_SUPPORT to your compilation flags. An example:
make "CFLAGS=-O -DUTMP_SUPPORT"
- The only fonts I know that will display ANSI art correctly are Raster's
nexus and vga;
- If you want to use colorful ANSI prompts (at least bash can show them),
make sure to make them end with a new line character ('\n')>
Development Notes
-----------------
- ATTENTION! Ignore warnings like this:
options.c:1454: warning: unsigned int format, long unsigned int arg (arg 3)
- type casting or otherwise screwing around can break text colors bad :)
- The sources don't compile with the GCC profiling flag (-gp) yet;
Troubleshooting
---------------
- See feature.h;
- In case you have problems, try commenting out #define NDEBUG in feature.h:
/* #define NDEBUG */
E-n-Joy! ;-) -- vendu & mej

@ -0,0 +1,413 @@
Release Notes
=============
This document includes a summary of major changes for each revision of Eterm.
Changes made to rxvt 2.21 include
---------------------------------
- Better (read: working) implementation of utmp logging and added security;
needs to be tested on different platforms;
- Support for Rasterman's Imlib - used for loading and scaling the background
pixmaps;
- The command line option -pixmap now takes '@' as the delimiter between
the pixmap name and geometry. The old delimiter, ';', is NOT supported
any more. It was UGLY. Period. <g> ;
- A new command line option, --scale or -@, was added. It will scale the background
pixmap "to fit"; to fill the whole background of the Eterm window;
- The binary was renamed to Eterm;
- Several bug/annoyance fixes. For example, fixed a problem with DEBUG_UTMP
that printed garbage when running with the debugging messages enabled.
See also #define NDEBUG in feature.h;
- Minor speedups.
More changes for 0.3 (included in some 0.2 versions), as described by Michael:
- Installs signal handlers that, among other things, make core
dumps secure by revoking privs and changing its umask to 077.
It also prompts for whether or not it should dump core, timing
out after 10 seconds or if it gets a SIGT(STP|TIN|TOU)
- Changes stuff that said rxvt to Eterm (most places, but I probably
missed a few).
- Fixes SVR4/utmpx compile under HP-UX 10.X
Utmp logging support was fixed to work on FreeBSD (tested on 2.1.5 and 2.2.2)
for 0.3a. Thanks to Brian Gottlieb for doing it.
Changes made to 0.3b include a few portability additions and fixes (HP-UX,
OSF/1) and a few changed (commented out) #define's in feature.h.
Eterm DR-0.4x included a number of patches for bold fonts, security,
utmp logging, etc.
Several bugs were fixed for DR 0.5. Thanks to Michael Kellen for his
Solaris patch.
Thanks go to Steve <steve@rage.org> for his help with security.
Changes in DR-0.6:
------------------
- Finally got the distribution tree cleaned up to remove most all traces
of left-over rxvt SPAM(tm). For now, however, credit for most of the
docs still remains with the rxvt people.
- No more .Xdefaults support. The X Resource Manager (Xrm) code has
several known security holes which make any program making
XGetDefault() calls insecure. Since Eterm generally runs as root,
this is unacceptable. So too is reading .Xdefaults directly, which
it had been doing up until now. From DR-0.6 on, it will read (in
proper Enlightened fashion) ~/.Eterm/MAIN, which will be a very
E-like config file. See doc/MAIN.dist for a sample.
- The config files support $ variable expansion, ~ expansion, single/double
quotes, and (if #defined) backquotes. PLEASE read the accompanying
notes in src/feature.h before #defining ALLOW_BACKQUOTE_EXEC. Also
supported is the %include macro.
Changes in DR-0.6a:
-------------------
- Lots of bug fixes:
- The font options now accept font names starting with '-'
- Intense colors are no longer off by one.
- Scrollbar and cursor color configuration options now work properly.
- Eterm now changes back to the original directory after searching for
a config file.
- Command line options now take precedence over config file options
- -h and --help now work properly, instead of asking for a string value
- MAIN.dist.in now contains a value for cut_chars that works right when
ALLOW_BACKQUOTE_EXEC is #defined.
- The "video reverse" in MAIN.dist.in is now "video normal", because I
got sick of people saying there was a bug in Eterm that caused their
foreground and background colors to be swapped. :^) More of a
cl00bie-didn't-read-the-comments fix than a bug fix.... ;)
- New features:
- A "magic number"-like identifier that will prevent Enlightenment config
files from being read by Eterm. See doc/MAIN.dist for details.
- Secure execution of backquote commands in config files, even if Eterm
runs setuid/setgid.
- Invalid contexts are skipped entirely with only one error message. For
example, if you don't compile in kanji support, you'll only get one
warning instead of 5 or 6.
- -H and --home-on-echo options, which will cause Eterm to jump to the
bottom of the screen when something is echoed there, if you're viewing
the scrollback buffer. There is also a new attribute "home_on_echo" in
the toggles context of the config file for this option. Thanks to Casey
<casey@netcomi.com> for his help with this. Just in time, Casey. :)
- There is now a script which randomly chooses a pixmap from ~/.Eterm/pix
that can be executed in your config file. This script requires the
dorand program (source provided) and can be found in doc/random_pixmap.sh
Changes in DR-0.7:
------------------
- Theme support. The options were changed to -t and --theme. Consult the FAQ for
more info on themes.
- Alternate config file option. This has been integrated into theme support, but
can also work independently thereof. If you don't like the name MAIN for your
config file, or want to run a certain Eterm with a different config file, use
the -X or --config-file option.
- Borderless Eterm windows. Use the -x or --borderless option to get a borderless
Eterm. Remember, you'll want to specify a geometry, since you won't be able to
move it, and something to exec. If your window manager supports it, it is
recommended that you use that functionality rather than Eterm's built-in option.
- Built-in functions. Several functions have been added to facilitate the building
of more robust config files. The currently-supported functions are:
- %appname() Returns the current application name. "Eterm-DR-0.7" as of
Eterm 0.7.
- %version() Returns the numeric version.
- %random(...) Randomly chooses one of its parameters and returns that.
- Other new options (consult the MAIN file and the --help screen for more info):
- -E and --home-on-refresh
- --pointer-color
- --scrollbar-right
- --scrollbar-floating
- -M and --menu (Menubar code is beta, so use it at your own risk)
- --term-name
- Config file support for all the above. Also:
- exec (context misc) For use with themes....
- Some major and minor bug fixes. Nobody noticed, so I won't go into details. :)
- Support for Window Maker's "docking", thanks to CmdrTaco (Rob Malda)
(http://slashdot.org/malda/)
Changes in DR-0.8:
------------------
- Several experimental features are in, like active tags, fake transparency,
and threads support. Use them at your own risk; they are unsupported and
known not to work right. We chose not to fix them since we're going to
rewrite the whole thing anyway (see http://ganja.tky.hut.fi/resurrection/)
- The FORCE_BACKSPACE feature introduce in 0.7 PL5 has been disabled for now;
you can't succesfully start Eterm as a background process with it
- The new fake transparency option, -O/trans, only works OK with a pixmap
the size of your root window / resolution. Test it with an exact image
of your root window for a neat effect :) Note that escape sequences for
changing the background pixmap will be ignored.
- Two new config file options, "trans" and "save_under", have been added.
Read themes/Eterm/MAIN for more information. The corresponding new
command line options are -O and --save-under.
- Fixed the pixmap handling code so that the menubar stuff works right now.
Thanks to Cliff Wright <cliff@vixen.itdl.ds.boeing.com> and keebler
<keebler@ncal.verio.com> for their help with finding and fixing this.
- The Xterm-style scrollbar feature (defined in src/feature.h) will actually
compile and run properly. The restriction on size to 15 pixels has
been removed as well. Thanks to Peter Norby <norby@inktomi.com> and
Hal Black <hal@hablack.bevc.blacksburg.va.us> for supplying patches for
this.
- Made several changes to the configure script so that hopefully it will
work for a larger percentage of the populace. :-) Some of the changes
were suggested by John Reese <jtr@pyro.ugcs.caltech.edu> and Hal Black
<hal@hablack.bevc.blacksburg.va.us>.
- Added MIN_ANCHOR_SIZE to src/feature.h which allows you to specify a minimum
size for the scrollbar anchor. Good for large scrollback buffers and/or
small windows. Still a mite flaky at the bottom of the scrollbar, but it
works. Credit for the idea goes to Stephen Farrell <stephen@farrell.org>,
though the actual code was largely rewritten.
- Added CHANGE_SCROLLCOLOR_ON_FOCUS to src/feature.h which makes the
scrollbar "disappear" (i.e., become the background color) when the window
loses focus. This feature was suggested by Scott Heavner
<sdh@falstaff.MAE.cwru.edu>.
- Added option --menu-text-color and config file attribute menu_text,
which allow you to change the color of the menubar text. This feature
was suggested by Scott Heavner <sdh@falstaff.MAE.cwru.edu>.
- Fixed a bug for FreeBSD that only allowed Eterm to open 16 tty's at
once. Thanks to Christopher Mann <r3cgm@cdrom.com> for finding this
one.
- PL1
- Fixed bug which caused scrollbar not to redraw properly
- PL2
- Rewrote the string functions in src/misc.c to be faster. Also, support
for "\C" and "C-" to represent the Ctrl-key modifier was added.
- Added MENU_TEXT_FLOATING to src/feature.h which puts the menubar text
in the middle of the menubar buttons (which is, IMHO, where it belongs,
but apparently someone disagrees :-) -- mej).
- The pre-release stuff in RELNOTES.Eterm has been removed.
- Added an "emacs" theme for GNU Emacs or XEmacs in a text window.
- Got rid of that damned annoying preedit type error. :-)
- Added call counting for the malloc routines in libmej/mem.* thanks to
Michael Wolf (Elessar) <mawolf@concentric.net>.
- PL3
- Changed themes/Makefile.in so that existing themes in
${prefix}/lib/Eterm/themes do not get overwritten by the "make install"
routine. Sorry, stupid oversight on my part. :( -- mej
- New "chooser" theme. Read the comments at the top of
themes/chooser/chooser.menu for more details. :)
- New extended command "echo" in the ESC ] 10 ; set. See the chooser
theme for implementation examples. Basically, it echoes its parameters
and tacks a carriage return on the end.
- Fixed the bug introduced in PL2 which caused a border width < the shadow
width to not properly display the menubar. This was only noticeable in
the mutt theme or to users who specifically set border_width to 0 or 1.
- Eterm now sets the environment variable ETERM_THEME_ROOT to point to the
root directory of the theme it is currently using.
- PL4
- Made several portability improvements in the configure script and its
associated files.
- Moved the active.tags file into the themes directory, which is the
location from which it is installed.
- The configure script now builds src/feature.h instead of the make process
so that it will be there before the make is done. If src/feature.h.in is
updated, however, src/feature.h will still be generated from it by a make.
- The installed Eterm binary will be Eterm-<version_number>, and Eterm will
be created as a soft-link to that file in the $bindir directory.
- Eterm will now guess the install prefix (${prefix}) based on where gcc is
located, unless you give a --prefix on the command line. This keeps me
from having to use it. If it makes you have to use it, tough break. =P
- Added the --with-imlib option to configure. If you specify
--with-imlib=/some/path, the compiler will look in /some/path/include
for Imlib's header files and in /some/path/lib for Imlib itself. You can
also specify --without-imlib, which will disable pixmap support entirely.
- PL5
- Fixed the problem with the Eterm -> Pixmap -> None menu item.
- IMPORTANT NOTE: One of the src/feature.h defines added in version 0.8 was
the MIN_ANCHOR_SIZE #define. There are KNOWN PROBLEMS with using this feature
and trying to scroll up from the bottom using Shift-Prior, the up arrow on the
scrollbar, etc. If this bothers you, COMMENT OUT that line in src/feature.h.
Fixing this problem will require a redesign of how Eterm looks at scrolling
and positioning the terminal window relative to the scrollbar and vice versa.
This may or may not happen in the current development cycle.
- Added the CTRL_CLICK_RAISE #define to src/feature.h which allows a mouse
click in the terminal window while holding the Ctrl key to raise the window
and steal keyboard focus. This is useful if you are stuck without a window
manager for one reason or another or for using Eterm as an X session manager.
- Also added an escape sequence, ESC ] 5 ; BEL, to perform the same task, and
added a menu item called "Steal Focus" to send that escape sequence.
- Fixed the "bug" that made command-line paths relative to the current theme
as well as paths in theme config files. Searching relative to the current
directory takes place after searching the directories in the "path" line
(from the config file). (I have "bug" in quotes because it wasn't really
a bug -- all paths were interpreted relative to the theme used -- but it
applied to command-line variables too, which was very confusing to some.)
Changes in 0.8.6:
-----------------
- For starters, we changed the naming convention. No more "DR" and "PL" stuff.
We got asked too many stupid questions. ("What's the P 15 mean?") Starting
with this release, we'll be using numbers only. The third number will still
indicate the patch level, however.
- Added support for imlib-config script supplied with Imlib 1.8 and up. This
speeds and simplifies the calculation of CFLAGS and LDFLAGS for proper
linking with Imlib.
- Fixed problems with compilation on NetBSD thanks to Clifford Wright
<cliff@snipe444.org>.
- Redid the themes to support the new pixmap mechanism I'm working on. Once
the new pixmap archive comes out, you'll want to remove your themes
directory ($prefix/lib/Eterm/themes by default) and install the themes
contained in this distribution. Get the new Eterm Backgrounds Collection
at http://www.tcserv.com/archive/E/ or a mirror near you.
- Reworked the transparency mechanism thanks to Gerald Britton
<gbritton@mit.edu> and Nat Friedman <ndf@mit.edu>. It now takes a copy
of the root window's pixmap and uses that. It responds to all moves and
resizes by updating the pixmap. No requests for changing pixmap are
honored by a transparent Eterm (the -O or --trans options). Furthermore,
this will probably only work in Enlightenment. And for the full effect,
you'll want to run it without scrollbar/menubar and borderless (the
latter being done either through Enlightenment or with the -x option).
- Added the Esetroot program, which sets the root pixmap atom for those
who don't use Enlightenment as their window manager. There has been
mixed feedback on whether or not this program works. YMMV.
- Added a theme to demo some of the pseudo-transparency features. Use
"Eterm -t trans" to invoke it.
- Some pseudo-transparency toys are in too. The option --shade will darken
the portion of the desktop "showing through" the Eterm window. Results
in a "smoked glass" effect. This option can also be used with the
--tint option to provide a colored glass effect. See the man page for
more information. Also be sure to check out the effect of the
--scrollbar-floating option with transparency. :)
- Fixed compilation without pixmap and/or menubar support. The options
--disable-menus and --without-imlib can, when passed to the configure
script, be used to automatically disable menubar and pixmap support,
respectively.
- NEW MAN PAGE!! At long last, the man page has been updated with the new
options. Many thanks to Shaleh <shaleh@debian.org> for doing this.
- The values "yes" and "no" can now be used as boolean values in options
and config file entries, along with 0/1, true/false, and on/off.
- Eterm now changes the color of the scrollbar when losing focus. If no
unfocused scrollbar color is specified in the config file or on the
command line, you will not notice it. See the man page and the default
config files for more info.
Changes in 0.8.7:
-----------------
- The old libmej is now built as a shared library as well as a static one.
Also, everything but the main() function has been moved into a library,
libEterm. Since most people use lots of Eterms at once, creating a shared
library will reduce the text segment of each Eterm significantly, saving
quite a bit of memory per Eterm.
- Removed MIN_ANCHOR_SIZE and added -a (--min-anchor-size) option. It is 0 by
default so ppl won't complain about the scroll-up "bug".
- Lots of fixes to Esetroot
- CygWin32 support. May take a little bit of effort, but it works.
- Escape sequences to toggle transparency and shading, as well as set tint,
are in. Toggling transparency works. The others don't yet.
- Newer Linux versions required a hack to open the display.
- Cleaned up privileges toggling.
- Changed the --watch-bg option to --watch-pixmap, which will hopefully make it
less tempting for people to think it has something to do with transparency.
- Added the --watch-desktop option which causes a pseudo-transparent Eterm to
monitor the desktop pixmap for changes and update accordingly.
- Several various parser cleanups.
- Transparency can now be done via Imlib rather than Xlib. It is markedly slower
but offers more configureability, like shading by percentage (--shade-pct) and
tinting masks (--tint <24-bit mask>).
- Shading now works for 8bpp pseudo-color displays. This formerly generated an
error message about the X server not setting the visual info properly. It is
not fast by any means, but that's what you get for having an 8bpp video card.
- Fixed the menubar code so that the menus aren't clipped by the window or screen
edge.
- Changed the shell_expand() function in options.c so that \' within single quotes
would insert a single quote. This differs from the shell behavior, but I prefer
it. :)
- More *BSD utmp fixes.
- Added debugging features configureable at configure-time. Also added stack
tracing on crash.
- Fixed the bug with dragging a transparent Eterm across E's desktop dragbar. It
reparents to the root window for a bit, but once you drop the window, it changes
backdrops right on cue. Also works when moving Eterm windows between desktops.
Note that this requires the use of the -W (--watch-desktop) option.
- \e[9n prints the pixmap filename in the title bar. In transparency mode, prints
transparency info to the title bar.
- New --home-on-input option which split off part of --home-on-echo
Changes in 0.8.8:
-----------------
- Better, more detailed man page. Now if only people would read it....
- Shading is now done by percentage, and tinting by hex mask. See the man page for
more info.
- Lots of new options: --menubar-move, --anim, --pause, --viewport-mode,
--xterm-select, and --select-line. See man page for details.
- FORCE_BACKSPACE and FORCE_DELETE have been fixed.
- KS_DELETE (the strings associated with pressing the Delete key) is now set to ^?
by default. If you don't like that, you can set it back, or use the keysym
attribute in the config file, or whatever.
- --with-cc=prog argument to ./configure to specify an alternative compiler. The
default looks for egcs, then pgcc, then gcc, etc.
- Eterm-specific escape sequences:
Syntax: ESC ] 6 ; <op> ; <arg> BEL
where <op> is: 0 toggle transparency
1 set shade percentage
2 set tint mask
3 forced update of pseudo-transparent background
30 Do not use
40 Do not use
and <arg> is an optional argument, depending
on the particular sequence being used. It
(along with its preceeding semicolon) may or
may not be needed.
- X errors are handled more gracefully and with more helpful information.
- The --disable-stack-trace option to ./configure, whose use is obvious.
- Added an icon and associated option/attribute.
- As always, lots of bug fixes. See the ChangeLog for details.
- The -center option for Esetroot. Centers the pixmap.
- Eterm is now FHS compliant, meaning that the theme and image directories are
now under ${prefix}/share/Eterm instead of ${prefix}/lib/Eterm. See the
move-themes script included in the distribution.
Changes in 0.8.9:
-----------------
- Support for scrolling with mouse wheels.
- New --version switch to display compile-time configuration.
- Tinting and shading have been sped up by about 30% thanks to Michael Pearson
<alcaron@ozemail.com.au>.
- Scrollbar type and width is now customizeable at compile-time *and* run-time.
Support for NeXT-style scrollbars has also been added.
- Three *major* bugs have been fixed. Tiled desktop images no longer cause
crashes when tinting or shading. The resize crash bug has also been squished.
The secure system() call replacement which was accidentally removed has been
added back.
- Ctrl-Button1 now grabs input focus. Ctrl-Button2 toggles the scrollbar on and
off. Ctrl-Button3 toggles the menubar on and off. NOTE: If you used to
disable the menubar by commenting out the loading of the menubar file, or
loading a fake one (e.g., '-Mx' or '-M /dev/null'), don't. Simply add "off" to
the end of the menu line (e.g., 'menu Eterm.menu off'), or use the new boolean
command-line option --menubar (e.g., '--menubar off'). Then you can toggle the
menubar using Ctrl-Button3 like you would expect.
- Popup scrollbar support has been added.
- New -D (--desktop) option for choosing a desktop to start on. Your window
manager must be GNOME-compliant for this to work. See the documentation at
http://www.gnome.org/devel/gnomewm/ for info on the _WIN_WORKSPACE property.
- The Eterm Technical Reference has been completely rewritten. It is now an HTML
document located in the doc/ directory.
- Lots and lots and lots of new escape sequences. See the Technical Reference for
details on them.
- Oodles of small bug fixes, as always. :-)
- Debugging output is now runtime configurable. Use the --debug option and supply
a number. 0 (the default) gives no debugging output. 1-5 give increasingly
more output, up to 5 (which I don't recommend using) which synchronizes X events
(and slows things down bigtime).
- You can now save your current Eterm settings from the menu.
- New --app-keypad and --app-cursor options to set the startup mode for
application/normal mode for the keypad and cursor keys.
- Three new utilities in addition to Esetroot, all of which are located in the
utils/ directory. Etbg is a tool for manipulating Eterm's background image on
the fly. Etcolors.sh demonstrates all the different combinations of your
current color settings. Etmenu.sh lets you send menu commands to Eterm's
menubar subsystem without having to type the escape codes yourself.
- Borderless Eterms now attempt to use the Window Manager to become borderless
instead of bypassing it altogether.

@ -0,0 +1,293 @@
/* acconfig.h
This file is in the public domain.
Descriptive text for the C preprocessor macros that
the distributed Autoconf macros can define.
No software package will use all of them; autoheader copies the ones
your configure.in uses into your configuration header file templates.
The entries are in sort -df order: alphabetical, case insensitive,
ignoring punctuation (such as underscores). Although this order
can split up related entries, it makes it easier to check whether
a given entry is in the file.
Leave the following blank line there!! Autoheader needs it. */
/* Define if on AIX 3.
System headers sometimes define this.
We just want to avoid a redefinition error message. */
#ifndef _ALL_SOURCE
#undef _ALL_SOURCE
#endif
/* Define if using alloca.c. */
#undef C_ALLOCA
/* Define if type char is unsigned and you are not using gcc. */
#ifndef __CHAR_UNSIGNED__
#undef __CHAR_UNSIGNED__
#endif
/* Define if the closedir function returns void instead of int. */
#undef CLOSEDIR_VOID
/* Define to empty if the keyword does not work. */
#undef const
/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems.
This function is required for alloca.c support on those systems. */
#undef CRAY_STACKSEG_END
/* Define for DGUX with <sys/dg_sys_info.h>. */
#undef DGUX
/* Define if you have <dirent.h>. */
#undef DIRENT
/* Define to the type of elements in the array set by `getgroups'.
Usually this is either `int' or `gid_t'. */
#undef GETGROUPS_T
/* Define if the `getloadavg' function needs to be run setuid or setgid. */
#undef GETLOADAVG_PRIVILEGED
/* Define if the `getpgrp' function takes no argument. */
#undef GETPGRP_VOID
/* Define to `int' if <sys/types.h> doesn't define. */
#undef gid_t
/* Define if you have alloca, as a function or macro. */
#undef HAVE_ALLOCA
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
#undef HAVE_ALLOCA_H
/* Define if you don't have vprintf but do have _doprnt. */
#undef HAVE_DOPRNT
/* Define if your system has a working fnmatch function. */
#undef HAVE_FNMATCH
/* Define if your system has its own `getloadavg' function. */
#undef HAVE_GETLOADAVG
/* Define if you have the getmntent function. */
#undef HAVE_GETMNTENT
/* Define if the `long double' type works. */
#undef HAVE_LONG_DOUBLE
/* Define if you support file names longer than 14 characters. */
#undef HAVE_LONG_FILE_NAMES
/* Define if you have a working `mmap' system call. */
#undef HAVE_MMAP
/* Define if system calls automatically restart after interruption
by a signal. */
#undef HAVE_RESTARTABLE_SYSCALLS
/* Define if your struct stat has st_blksize. */
#undef HAVE_ST_BLKSIZE
/* Define if your struct stat has st_blocks. */
#undef HAVE_ST_BLOCKS
/* Define if you have the strcoll function and it is properly defined. */
#undef HAVE_STRCOLL
/* Define if your struct stat has st_rdev. */
#undef HAVE_ST_RDEV
/* Define if you have the strftime function. */
#undef HAVE_STRFTIME
/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
#undef HAVE_SYS_WAIT_H
/* Define if your struct tm has tm_zone. */
#undef HAVE_TM_ZONE
/* Define if you don't have tm_zone but do have the external array
tzname. */
#undef HAVE_TZNAME
/* Define if you have <unistd.h>. */
#undef HAVE_UNISTD_H
/* Define if utime(file, NULL) sets file's timestamp to the present. */
#undef HAVE_UTIME_NULL
/* Define if you have <vfork.h>. */
#undef HAVE_VFORK_H
/* Define if you have the vprintf function. */
#undef HAVE_VPRINTF
/* Define if you have the wait3 system call. */
#undef HAVE_WAIT3
/* Define as __inline if that's what the C compiler calls it. */
#undef inline
/* Define if int is 16 bits instead of 32. */
#undef INT_16_BITS
/* Define if long int is 64 bits. */
#undef LONG_64_BITS
/* Define if major, minor, and makedev are declared in <mkdev.h>. */
#undef MAJOR_IN_MKDEV
/* Define if major, minor, and makedev are declared in <sysmacros.h>. */
#undef MAJOR_IN_SYSMACROS
/* Define if on MINIX. */
#undef _MINIX
/* Define to `int' if <sys/types.h> doesn't define. */
#undef mode_t
/* Define if you don't have <dirent.h>, but have <ndir.h>. */
#undef NDIR
/* Define if you have <memory.h>, and <string.h> doesn't declare the
mem* functions. */
#undef NEED_MEMORY_H
/* Define if your struct nlist has an n_un member. */
#undef NLIST_NAME_UNION
/* Define if you have <nlist.h>. */
#undef NLIST_STRUCT
/* Define if your C compiler doesn't accept -c and -o together. */
#undef NO_MINUS_C_MINUS_O
/* Define to `long' if <sys/types.h> doesn't define. */
#undef off_t
/* Define to `int' if <sys/types.h> doesn't define. */
#undef pid_t
/* Define if the system does not provide POSIX.1 features except
with this defined. */
#undef _POSIX_1_SOURCE
/* Define if you need to in order for stat and other things to work. */
#undef _POSIX_SOURCE
/* Define as the return type of signal handlers (int or void). */
#undef RETSIGTYPE
/* Define if the `setpgrp' function takes no argument. */
#undef SETPGRP_VOID
/* Define if the setvbuf function takes the buffering type as its second
argument and the buffer pointer as the third, as on System V
before release 3. */
#undef SETVBUF_REVERSED
/* Define to `unsigned' if <sys/types.h> doesn't define. */
#undef size_t
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at run-time.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown
*/
#undef STACK_DIRECTION
/* Define if the `S_IS*' macros in <sys/stat.h> do not work properly. */
#undef STAT_MACROS_BROKEN
/* Define if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define on System V Release 4. */
#undef SVR4
/* Define if you don't have <dirent.h>, but have <sys/dir.h>. */
#undef SYSDIR
/* Define if you don't have <dirent.h>, but have <sys/ndir.h>. */
#undef SYSNDIR
/* Define if `sys_siglist' is declared by <signal.h>. */
#undef SYS_SIGLIST_DECLARED
/* Define if you can safely include both <sys/time.h> and <time.h>. */
#undef TIME_WITH_SYS_TIME
/* Define if your <sys/time.h> declares struct tm. */
#undef TM_IN_SYS_TIME
/* Define to `int' if <sys/types.h> doesn't define. */
#undef uid_t
/* Define for Encore UMAX. */
#undef UMAX
/* Define for Encore UMAX 4.3 that has <inq_status/cpustats.h>
instead of <sys/cpustats.h>. */
#undef UMAX4_3
/* Define if you do not have <strings.h>, index, bzero, etc.. */
#undef USG
/* Define vfork as fork if vfork does not work. */
#undef vfork
/* Define if the closedir function returns void instead of int. */
#undef VOID_CLOSEDIR
/* Define if your processor stores words with the most significant
byte first (like Motorola and SPARC, unlike Intel and VAX). */
#undef WORDS_BIGENDIAN
/* Define if the X Window System is missing or not being used. */
#undef X_DISPLAY_MISSING
/* Define if lex declares yytext as a char * by default, not a char[]. */
#undef YYTEXT_POINTER
/* Package name */
#undef PACKAGE
/* Version number */
#undef VERSION
/* Do we want malloc debugging? */
#undef WITH_DMALLOC
/* Linux xdm hack for higher kernel revs */
#undef NEED_LINUX_HACK
/* Do we need our own nanosleep()? */
#undef HAVE_NANOSLEEP
/* Debugging level */
#undef DEBUG
/* Stack tracing tools */
#undef NO_STACK_TRACE
#undef DBX
#undef GDB
#undef PSTACK
/* *BSD utmp stuff */
#undef HAVE_LOGIN
#undef HAVE_LOGOUT
/* Do we have the X shape extension? */
#undef HAVE_X_SHAPE_EXT
/* Leave that blank line there!! Autoheader needs it.
If you're adding to this file, keep in mind:
The entries are in sort -df order: alphabetical, case insensitive,
ignoring punctuation (such as underscores). */

249
acl.m4

@ -0,0 +1,249 @@
dnl acl.m4 -- Written by Duncan Simpson <dps@io.stargate.co.uk>
dnl Posted to BUGTRAQ on 17 June 1999
dnl Used by encouragement. :-)
dnl Check snprintf for overrun potential
AC_DEFUN(dps_snprintf_oflow,
[AC_MSG_CHECKING(whether snprintf ignores n)
AC_CACHE_VAL(dps_cv_snprintf_bug,
[AC_TRY_RUN(
changequote(<<, >>)dnl
<<#include <stdio.h>
#ifndef HAVE_SNPRINTF
#ifdef HAVE_VSNPRINTF
#include "vsnprintf.h"
#else /* not HAVE_VSNPRINTF */
#include "vsnprintf.c"
#endif /* HAVE_VSNPRINTF */
#endif /* HAVE_SNPRINTF */
int main(void)
{
char ovbuf[7];
int i;
for (i=0; i<7; i++) ovbuf[i]='x';
snprintf(ovbuf, 4,"foo%s", "bar");
if (ovbuf[5]!='x') exit(1);
snprintf(ovbuf, 4,"foo%d", 666);
if (ovbuf[5]!='x') exit(1);
exit(0);
} >>
changequote([, ]), dps_cv_snprintf_bug=0, dps_cv_snprintf_bug=1,
dps_cv_snprintf_bug=2)])
if test $dps_cv_snprintf_bug -eq 0; then
AC_MSG_RESULT([no, snprintf is ok])
else if test $dps_cv_snprint_bug -eq 1; then
AC_MSG_RESULT([yes, snprintf is broken])
AC_DEFINE(HAVE_SNPRINTF_BUG,1)
else
AC_MSG_RESULT([unknown, assuming yes])
AC_DEFINE(HAVE_SNPRINTF_BUG,1)
fi; fi])
dnl Check vsnprintf for overrun potential
AC_DEFUN(dps_vsnprintf_oflow,
[AC_MSG_CHECKING(whether vsnprintf ignores n)
AC_CACHE_VAL(dps_cv_vsnprintf_bug,
[AC_TRY_RUN(
changequote(<<, >>)dnl
<<#include <stdio.h>
#include <stdarg.h>
#ifndef HAVE_VSNPRINTF
#include "vsnprintf.c"
#endif /* HAVE_VSNPRINTF */
int prnt(char *s, const char *fmt, ...)
{
va_list argp;
va_start(argp, fmt);
vsnprintf(s, 4, fmt, argp);
va_end(argp);
}
int main(void)
{
char ovbuf[7];
int i;
for (i=0; i<7; i++) ovbuf[i]='x';
prnt(ovbuf, "foo%s", "bar");
if (ovbuf[5]!='x') exit(1);
prnt(ovbuf, "foo%d", 666);
if (ovbuf[5]!='x') exit(1);
exit(0);
} >>
changequote([, ]), dps_cv_vsnprintf_bug=0, dps_cv_vsnprintf_bug=1,
dps_cv_vsnprintf_bug=2)])
if test $dps_cv_vsnprintf_bug -eq 0; then
AC_MSG_RESULT([no, vsnprintf is ok])
else if test $dps_cv_vsnprint_bug -eq 1; then
AC_MSG_RESULT([yes, vsnprintf is broken])
AC_DEFINE(HAVE_VSNPRINTF_BUG,1)
else
AC_MSG_RESULT([unknown, assuming yes])
AC_DEFINE(HAVE_VSNPRINTF_BUG,1)
fi; fi])
dnl open and symlink interaction bug test
AC_DEFUN(dps_symlink_open_bug,
[AC_MSG_CHECKING(security of interaction between symlink and open)
AC_CACHE_VAL(dps_cv_symlink_open_bug,
[mkdir conftest.d
AC_TRY_RUN(
changequote(<<, >>)dnl
<<#include <stdio.h>
#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
#endif
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef HAVE_ERRNO_H
#include <errno.h>
#else
extern int errno;
#endif
int main(void)
{
int fd;
if (chdir("conftest.d")!=0)
exit(1);
if (symlink("foo","bar")!=0)
exit(1);
if ((fd=open("bar", O_CREAT | O_EXCL | O_WRONLY, 0700))==0)
{
write(fd, "If the symlink was to .rhosts you would be unhappy", 50);
close(fd);
exit(1);
}
if (errno!=EEXIST)
exit(1);
exit(0);
} >>
changequote([, ]), cps_cv_symlink_open_bug=0,
[if test -r conftest.d/foo; then
cps_cv_symlink_open_bug=2
else
cps_cv_symlink_open_bug=1
fi], cps_cv_symlink_open_buf=3)
rm -rf conftest.d])
case "$cps_cv_symlink_open_bug" in
0) AC_MSG_RESULT(secure) ;;
1) AC_MSG_RESULT(errno wrong but ok)
AC_DEFINE(HAVE_SYMLINK_OPEN_ERRNO_BUG) ;;
2) AC_MSG_RESULT(insecure)
AC_DEFINE(HAVE_SYMLINK_OPEN_SECURITY_HOLE)
AC_DEFINE(HAVE_SYMLINK_OPEN_ERRNO_BUG) ;;
3) AC_MSG_RESULT(assuming insecure)
AC_DEFINE(HAVE_SYMLINK_OPEN_SECURITY_HOLE)
AC_DEFINE(HAVE_SYMLINK_OPEN_ERRNO_BUG) ;;
*) AC_MSG_RESULT($cps_cv_symlink_open_bug)
AC_MSG_ERROR(Impossible value of cps_cv_symlink_open_bug) ;;
esac])
dnl Check to RLIMIT_NPROC resource limit
AC_DEFUN(dps_rlimit_nproc,
[AC_MSG_CHECKING(for working RLIMIT_NPROC resource limit)
AC_CACHE_VAL(dps_cv_rlimit_nproc,
[AC_TRY_RUN(
changequote(<<, >>)dnl
<<
#ifndef HAVE_STDLIB_H
#include <stdlib.h>
#endif /* HAVE_STDLIB_H */
#ifndef HAVE_SIGNAL_H
#include <signal.h>
#endif /* HAVE_SIGNAL_H */
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif /* HAVE_UNISTD_H */
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif /* HAVE_SYS_RESOURCE_H */
int main(void)
{
#ifdef RLIMIT_NPROC
static const struct rlimit pid_lim={RLIMIT_NPROC, 1};
pid_t f;
signal(SIGCHLD, SIG_IGN);
setrlimit(RLIMIT_NPROC, (struct rlimit *) &pid_lim);
if ((f=fork())==0)
exit(0);
if (f==-1)
exit(0); /* The fork() failed (the right thing) */
#endif
exit(1);
} >>
changequote([, ]), cps_cv_rlimit_nproc=0, cps_cv_rlimit_nproc=1,
cps_cv_rlimit_nproc=2)])
if test $cps_cv_rlimit_nproc -eq 0; then
AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_RLIMIT_NPROC,1)
else if test $cps_cv_rlimit_nproc -eq 1; then
AC_MSG_RESULT([no])
else
AC_MSG_RESULT([unknown, assuming none])
fi; fi])
dnl Check to RLIMIT_MEMLOCK resource limit
AC_DEFUN(cps_rlimit_memlock,
[AC_MSG_CHECKING(for RLIMIT_MEMLOCK resource limit)
AC_CACHE_VAL(cps_cv_rlimit_memlock,
[AC_TRY_RUN(
changequote(<<, >>)dnl
<<
#ifndef HAVE_STDLIB_H
#include <stdlib.h>
#endif /* HAVE_STDLIB_H */
#ifndef HAVE_SIGNAL_H
#include <signal.h>
#endif /* HAVE_SIGNAL_H */
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif /* HAVE_UNISTD_H */
#ifdef HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#endif /* HAVE_SYS_RESOURCE_H */
#ifdef HAVE_SYS_MMAN
#include <sys/mman.h>
#endif /* HAVE_SYS_MMAN */
#ifdef HAVE_ERRNO_H
#include <errno.h>
#endif /* HAVE_ERRNO_H */
int main(void)
{
#ifdef RLIMIT_MEMLOCK
static const struct rlimit mlock_lim={RLIMIT_MEMLOCK, 0};
void *memory;
if (setrlimit(RLIMIT_MEMLOCK, (struct rlimit *) &mlock_lim)!=-1)
exit(0);
#endif
exit(1);
} >>
changequote([, ]), cps_cv_rlimit_memlock=0, cps_cv_rlimit_memlock=1,
cps_cv_rlimit_memlock=2)])
if test $cps_cv_rlimit_memlock -eq 0; then
AC_MSG_RESULT([yes])
AC_DEFINE(HAVE_RLIMIT_MEMLOCK,1)
else if test $cps_cv_rlimit_memlock -eq 1; then
AC_MSG_RESULT([no])
else
AC_MSG_RESULT([unknown, assuming none])
fi; fi])

@ -0,0 +1,52 @@
#!/bin/sh
# Run this to generate all the initial makefiles, etc.
# $Id$
DIE=0
(autoconf --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have autoconf installed to compile Eterm."
echo "Download the appropriate package for your distribution,"
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
(libtool --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have libtool installed to compile Eterm."
echo "Download the appropriate package for your distribution,"
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
(automake --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have automake installed to compile Eterm."