diff options
| -rw-r--r-- | COPYING | 340 | ||||
| -rw-r--r-- | INSTALL | 183 | ||||
| -rw-r--r-- | Makefile.am | 7 | ||||
| -rw-r--r-- | Makefile.in | 353 | ||||
| -rw-r--r-- | aclocal.m4 | 104 | ||||
| -rw-r--r-- | configure.in | 23 | ||||
| -rwxr-xr-x | install-sh | 251 | ||||
| -rw-r--r-- | lcd2041.c | 314 | ||||
| -rw-r--r-- | lcd2041.h | 14 | ||||
| -rwxr-xr-x | missing | 190 | ||||
| -rwxr-xr-x | mkinstalldirs | 40 | 
11 files changed, 1491 insertions, 328 deletions
| @@ -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 + +	    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) <year>  <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) year  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,183 @@ +Basic Installation +================== + +   These are generic installation instructions. + +   The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation.  It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions.  Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + +   If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release.  If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + +   The file `configure.in' is used to create `configure' by a program +called `autoconf'.  You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + +  1. `cd' to the directory containing the package's source code and type +     `./configure' to configure the package for your system.  If you're +     using `csh' on an old version of System V, you might need to type +     `sh ./configure' instead to prevent `csh' from trying to execute +     `configure' itself. + +     Running `configure' takes awhile.  While running, it prints some +     messages telling which features it is checking for. + +  2. Type `make' to compile the package. + +  3. Optionally, type `make check' to run any self-tests that come with +     the package. + +  4. Type `make install' to install the programs and any data files and +     documentation. + +  5. You can remove the program binaries and object files from the +     source code directory by typing `make clean'.  To also remove the +     files that `configure' created (so you can compile the package for +     a different kind of computer), type `make distclean'.  There is +     also a `make maintainer-clean' target, but that is intended mainly +     for the package's developers.  If you use it, you may have to get +     all sorts of other programs in order to regenerate files that came +     with the distribution. + +Compilers and Options +===================== + +   Some systems require unusual options for compilation or linking that +the `configure' script does not know about.  You can give `configure' +initial values for variables by setting them in the environment.  Using +a Bourne-compatible shell, you can do that on the command line like +this: +     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: +     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + +   You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory.  To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'.  `cd' to the +directory where you want the object files and executables to go and run +the `configure' script.  `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + +   If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory.  After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + +   By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc.  You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + +   You can specify separate installation prefixes for +architecture-specific files and architecture-independent files.  If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + +   In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files.  Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + +   If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + +   Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System).  The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + +   For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + +   There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on.  Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option.  TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: +     CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field.  If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + +   If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + +   If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists.  Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + +   `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' +     Use and save the results of the tests in FILE instead of +     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for +     debugging `configure'. + +`--help' +     Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' +     Do not print messages saying which checks are being made.  To +     suppress all normal output, redirect it to `/dev/null' (any error +     messages will still be shown). + +`--srcdir=DIR' +     Look for the package's source code in directory DIR.  Usually +     `configure' can determine that directory automatically. + +`--version' +     Print the version of Autoconf used to generate the `configure' +     script, and exit. + +`configure' also accepts some other, not widely useful, options. + diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..3913f9d --- /dev/null +++ b/Makefile.am @@ -0,0 +1,7 @@ +## Process this file with automake to produce Makefile.in + +AUTOMAKE_OPTIONS = foreign + +bin_PROGRAMS = lcd4linux +lcd4linux_SOURCES = lcd4linux.c + diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..0671753 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,353 @@ +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = . + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = @CC@ +MAKEINFO = @MAKEINFO@ +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +AUTOMAKE_OPTIONS = foreign + +bin_PROGRAMS = lcd4linux +lcd4linux_SOURCES = lcd4linux.c +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES =  +PROGRAMS =  $(bin_PROGRAMS) + + +DEFS = @DEFS@ -I. -I$(srcdir)  +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +lcd4linux_OBJECTS =  lcd4linux.o +lcd4linux_LDADD = $(LDADD) +lcd4linux_DEPENDENCIES =  +lcd4linux_LDFLAGS =  +CFLAGS = @CFLAGS@ +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ +DIST_COMMON =  COPYING INSTALL Makefile.am Makefile.in aclocal.m4 \ +configure configure.in install-sh missing mkinstalldirs + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +DEP_FILES =  .deps/lcd4linux.P +SOURCES = $(lcd4linux_SOURCES) +OBJECTS = $(lcd4linux_OBJECTS) + +all: all-redirect +.SUFFIXES: +.SUFFIXES: .S .c .o .s +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)  +	cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile + +Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status $(BUILT_SOURCES) +	cd $(top_builddir) \ +	  && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(ACLOCAL_M4):  configure.in  +	cd $(srcdir) && $(ACLOCAL) + +config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +	$(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) +	cd $(srcdir) && $(AUTOCONF) + +mostlyclean-binPROGRAMS: + +clean-binPROGRAMS: +	-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +distclean-binPROGRAMS: + +maintainer-clean-binPROGRAMS: + +install-binPROGRAMS: $(bin_PROGRAMS) +	@$(NORMAL_INSTALL) +	$(mkinstalldirs) $(DESTDIR)$(bindir) +	@list='$(bin_PROGRAMS)'; for p in $$list; do \ +	  if test -f $$p; then \ +	    echo "  $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ +	     $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ +	  else :; fi; \ +	done + +uninstall-binPROGRAMS: +	@$(NORMAL_UNINSTALL) +	list='$(bin_PROGRAMS)'; for p in $$list; do \ +	  rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ +	done + +.s.o: +	$(COMPILE) -c $< + +.S.o: +	$(COMPILE) -c $< + +mostlyclean-compile: +	-rm -f *.o core *.core + +clean-compile: + +distclean-compile: +	-rm -f *.tab.c + +maintainer-clean-compile: + +lcd4linux: $(lcd4linux_OBJECTS) $(lcd4linux_DEPENDENCIES) +	@rm -f lcd4linux +	$(LINK) $(lcd4linux_LDFLAGS) $(lcd4linux_OBJECTS) $(lcd4linux_LDADD) $(LIBS) + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) +	list='$(SOURCES) $(HEADERS)'; \ +	unique=`for i in $$list; do echo $$i; done | \ +	  awk '    { files[$$0] = 1; } \ +	       END { for (i in files) print i; }'`; \ +	here=`pwd` && cd $(srcdir) \ +	  && mkid -f$$here/ID $$unique $(LISP) + +TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP) +	tags=; \ +	here=`pwd`; \ +	list='$(SOURCES) $(HEADERS)'; \ +	unique=`for i in $$list; do echo $$i; done | \ +	  awk '    { files[$$0] = 1; } \ +	       END { for (i in files) print i; }'`; \ +	test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ +	  || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: +	-rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) + +# This target untars the dist file and tries a VPATH configuration.  Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist +	-rm -rf $(distdir) +	GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz +	mkdir $(distdir)/=build +	mkdir $(distdir)/=inst +	dc_install_base=`cd $(distdir)/=inst && pwd`; \ +	cd $(distdir)/=build \ +	  && ../configure --srcdir=.. --prefix=$$dc_install_base \ +	  && $(MAKE) $(AM_MAKEFLAGS) \ +	  && $(MAKE) $(AM_MAKEFLAGS) dvi \ +	  && $(MAKE) $(AM_MAKEFLAGS) check \ +	  && $(MAKE) $(AM_MAKEFLAGS) install \ +	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \ +	  && $(MAKE) $(AM_MAKEFLAGS) dist +	-rm -rf $(distdir) +	@banner="$(distdir).tar.gz is ready for distribution"; \ +	dashes=`echo "$$banner" | sed s/./=/g`; \ +	echo "$$dashes"; \ +	echo "$$banner"; \ +	echo "$$dashes" +dist: distdir +	-chmod -R a+r $(distdir) +	GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) +	-rm -rf $(distdir) +dist-all: distdir +	-chmod -R a+r $(distdir) +	GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) +	-rm -rf $(distdir) +distdir: $(DISTFILES) +	-rm -rf $(distdir) +	mkdir $(distdir) +	-chmod 777 $(distdir) +	here=`cd $(top_builddir) && pwd`; \ +	top_distdir=`cd $(distdir) && pwd`; \ +	distdir=`cd $(distdir) && pwd`; \ +	cd $(top_srcdir) \ +	  && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --foreign Makefile +	@for file in $(DISTFILES); do \ +	  d=$(srcdir); \ +	  if test -d $$d/$$file; then \ +	    cp -pr $$/$$file $(distdir)/$$file; \ +	  else \ +	    test -f $(distdir)/$$file \ +	    || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ +	    || cp -p $$d/$$file $(distdir)/$$file || :; \ +	  fi; \ +	done + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: +	-rm -rf .deps + +maintainer-clean-depend: + +%.o: %.c +	@echo '$(COMPILE) -c $<'; \ +	$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< +	@-cp .deps/$(*F).pp .deps/$(*F).P; \ +	tr ' ' '\012' < .deps/$(*F).pp \ +	  | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ +	    >> .deps/$(*F).P; \ +	rm .deps/$(*F).pp + +%.lo: %.c +	@echo '$(LTCOMPILE) -c $<'; \ +	$(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< +	@-sed -e 's/^\([^:]*\)\.o[ 	]*:/\1.lo \1.o :/' \ +	  < .deps/$(*F).pp > .deps/$(*F).P; \ +	tr ' ' '\012' < .deps/$(*F).pp \ +	  | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ +	    >> .deps/$(*F).P; \ +	rm -f .deps/$(*F).pp +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: install-binPROGRAMS +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am +	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-binPROGRAMS +uninstall: uninstall-am +all-am: Makefile $(PROGRAMS) +all-redirect: all-am +install-strip: +	$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: +	$(mkinstalldirs)  $(DESTDIR)$(bindir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: +	-rm -f Makefile $(CONFIG_CLEAN_FILES) +	-rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am:  mostlyclean-binPROGRAMS mostlyclean-compile \ +		mostlyclean-tags mostlyclean-depend mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am:  clean-binPROGRAMS clean-compile clean-tags clean-depend \ +		clean-generic mostlyclean-am + +clean: clean-am + +distclean-am:  distclean-binPROGRAMS distclean-compile distclean-tags \ +		distclean-depend distclean-generic clean-am + +distclean: distclean-am +	-rm -f config.status + +maintainer-clean-am:  maintainer-clean-binPROGRAMS \ +		maintainer-clean-compile maintainer-clean-tags \ +		maintainer-clean-depend maintainer-clean-generic \ +		distclean-am +	@echo "This command is intended for maintainers to use;" +	@echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am +	-rm -f config.status + +.PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ +maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ +mostlyclean-compile distclean-compile clean-compile \ +maintainer-clean-compile tags mostlyclean-tags distclean-tags \ +clean-tags maintainer-clean-tags distdir mostlyclean-depend \ +distclean-depend clean-depend maintainer-clean-depend info-am info \ +dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ +install-exec install-data-am install-data install-am install \ +uninstall-am uninstall all-redirect all-am all installdirs \ +mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..9f8add8 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,104 @@ +dnl aclocal.m4 generated automatically by aclocal 1.4 + +dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. + +# Do all the work for Automake.  This macro actually does too much -- +# some checks are only needed if your package does certain things. +# But this isn't really a big deal. + +# serial 1 + +dnl Usage: +dnl AM_INIT_AUTOMAKE(package,version, [no-define]) + +AC_DEFUN(AM_INIT_AUTOMAKE, +[AC_REQUIRE([AC_PROG_INSTALL]) +PACKAGE=[$1] +AC_SUBST(PACKAGE) +VERSION=[$2] +AC_SUBST(VERSION) +dnl test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then +  AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi +ifelse([$3],, +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) +AC_REQUIRE([AM_SANITY_CHECK]) +AC_REQUIRE([AC_ARG_PROGRAM]) +dnl FIXME This is truly gross. +missing_dir=`cd $ac_aux_dir && pwd` +AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) +AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) +AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) +AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) +AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) +AC_REQUIRE([AC_PROG_MAKE_SET])]) + +# +# Check to make sure that the build environment is sane. +# + +AC_DEFUN(AM_SANITY_CHECK, +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments.  Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( +   set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` +   if test "[$]*" = "X"; then +      # -L didn't work. +      set X `ls -t $srcdir/configure conftestfile` +   fi +   if test "[$]*" != "X $srcdir/configure conftestfile" \ +      && test "[$]*" != "X conftestfile $srcdir/configure"; then + +      # If neither matched, then we have a broken ls.  This can happen +      # if, for instance, CONFIG_SHELL is bash and it inherits a +      # broken ls alias from the environment.  This has actually +      # happened.  Such a system could not be considered "sane". +      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken +alias in your environment]) +   fi + +   test "[$]2" = conftestfile +   ) +then +   # Ok. +   : +else +   AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +rm -f conftest* +AC_MSG_RESULT(yes)]) + +dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) +dnl The program must properly implement --version. +AC_DEFUN(AM_MISSING_PROG, +[AC_MSG_CHECKING(for working $2) +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf.  Sigh. +if ($2 --version) < /dev/null > /dev/null 2>&1; then +   $1=$2 +   AC_MSG_RESULT(found) +else +   $1="$3/missing $2" +   AC_MSG_RESULT(missing) +fi +AC_SUBST($1)]) + diff --git a/configure.in b/configure.in new file mode 100644 index 0000000..9c7ea3c --- /dev/null +++ b/configure.in @@ -0,0 +1,23 @@ +dnl Process this file with autoconf to produce a configure script. +AC_INIT(lcd4linux.c) +AM_INIT_AUTOMAKE(lcd4linux, 0.8) + +dnl Checks for programs. +AC_PROG_CC + +dnl Checks for libraries. +dnl Replace `main' with a function in -lm: +AC_CHECK_LIB(m, main) + +dnl Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS(fcntl.h sys/ioctl.h sys/time.h unistd.h) + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_HEADER_TIME + +dnl Checks for library functions. +AC_PROG_GCC_TRADITIONAL +AC_CHECK_FUNCS(gettimeofday strdup strerror strstr strtol uname) + +AC_OUTPUT(Makefile) diff --git a/install-sh b/install-sh new file mode 100755 index 0000000..e9de238 --- /dev/null +++ b/install-sh @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission.  M.I.T. makes no representations about the +# suitability of this software for any purpose.  It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch.  It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do +    case $1 in +	-c) instcmd="$cpprog" +	    shift +	    continue;; + +	-d) dir_arg=true +	    shift +	    continue;; + +	-m) chmodcmd="$chmodprog $2" +	    shift +	    shift +	    continue;; + +	-o) chowncmd="$chownprog $2" +	    shift +	    shift +	    continue;; + +	-g) chgrpcmd="$chgrpprog $2" +	    shift +	    shift +	    continue;; + +	-s) stripcmd="$stripprog" +	    shift +	    continue;; + +	-t=*) transformarg=`echo $1 | sed 's/-t=//'` +	    shift +	    continue;; + +	-b=*) transformbasename=`echo $1 | sed 's/-b=//'` +	    shift +	    continue;; + +	*)  if [ x"$src" = x ] +	    then +		src=$1 +	    else +		# this colon is to work around a 386BSD /bin/sh bug +		: +		dst=$1 +	    fi +	    shift +	    continue;; +    esac +done + +if [ x"$src" = x ] +then +	echo "install:	no input file specified" +	exit 1 +else +	true +fi + +if [ x"$dir_arg" != x ]; then +	dst=$src +	src="" +	 +	if [ -d $dst ]; then +		instcmd=: +		chmodcmd="" +	else +		instcmd=mkdir +	fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad  +# if $src (and thus $dsttmp) contains '*'. + +	if [ -f $src -o -d $src ] +	then +		true +	else +		echo "install:  $src does not exist" +		exit 1 +	fi +	 +	if [ x"$dst" = x ] +	then +		echo "install:	no destination specified" +		exit 1 +	else +		true +	fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + +	if [ -d $dst ] +	then +		dst="$dst"/`basename $src` +	else +		true +	fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +#  this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS='	 +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do +	pathcomp="${pathcomp}${1}" +	shift + +	if [ ! -d "${pathcomp}" ] ; +        then +		$mkdirprog "${pathcomp}" +	else +		true +	fi + +	pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then +	$doit $instcmd $dst && + +	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && +	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && +	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && +	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + +	if [ x"$transformarg" = x ]  +	then +		dstfile=`basename $dst` +	else +		dstfile=`basename $dst $transformbasename |  +			sed $transformarg`$transformbasename +	fi + +# don't allow the sed command to completely eliminate the filename + +	if [ x"$dstfile" = x ]  +	then +		dstfile=`basename $dst` +	else +		true +	fi + +# Make a temp file name in the proper directory. + +	dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + +	$doit $instcmd $src $dsttmp && + +	trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing.  If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + +	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && +	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && +	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && +	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + +	$doit $rmcmd -f $dstdir/$dstfile && +	$doit $mvcmd $dsttmp $dstdir/$dstfile  + +fi && + + +exit 0 diff --git a/lcd2041.c b/lcd2041.c deleted file mode 100644 index 8abee97..0000000 --- a/lcd2041.c +++ /dev/null @@ -1,314 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> -#include <unistd.h> -#include <termios.h> -#include <fcntl.h> -#include <string.h> -#include <errno.h> - -#include "lcd2041.h" - -#define BAR_HORI 1 -#define BAR_VERT 2 -#define BAR_DUAL 3 - -static int lcd; -static char *lcd_device=NULL; -static int bar_mode=0; - -typedef struct { -  int l1; -  int l2; -  int chr; -} SEGMENT; - -typedef struct { -  int l1; -  int l2; -  int lru; -} CHARACTER; - -static SEGMENT Segment[COLS+1][ROWS+1]; -static CHARACTER Character[CHAR]; - -static int lcd_open(void) -{ -  int fd; -  struct termios portset; -   -  fd = open(lcd_device, O_RDWR | O_NOCTTY | O_NDELAY);  -  if (fd==-1) { -    fprintf (stderr, "open(%s) failed: %s\n", lcd_device, strerror(errno)); -    return -1; -  } -  if (tcgetattr(fd, &portset)==-1) { -    fprintf (stderr, "tcgetattr(%s) failed: %s\n", lcd_device, strerror(errno)); -    return -1; -  } -  cfmakeraw(&portset); -  cfsetospeed(&portset, B19200); -  if (tcsetattr(fd, TCSANOW, &portset)==-1) { -    fprintf (stderr, "tcsetattr(%s) failed: %s\n", lcd_device, strerror(errno)); -    return -1; -  } -  return fd; -} - - -static void lcd_write (char *string, int len) -{ -  if (lcd==-1) return; -  if (write (lcd, string, len)==-1) { -    if (errno==EAGAIN) { -      usleep(1000); -      if (write (lcd, string, len)>=0) return; -    } -    fprintf (stderr, "write(%s) failed: %s\n", lcd_device, strerror(errno)); -  } -} - - -void lcd_clear (void) -{ -  lcd_write ("\014", 1); -} - - -void lcd_put (int x, int y, char *string) -{ -  char buffer[256]; -  snprintf (buffer, sizeof(buffer), "\376G%c%c%s", x, y, string); -  lcd_write (buffer, strlen(buffer)); -} -  -void lcd_hbar (int x, int y, int dir, int max, int len) -{ -  char buffer[COLS+5]; -  char *p; - -  if (bar_mode!=BAR_HORI) { -    lcd_write ("\376h", 2); -    bar_mode=BAR_HORI; -  } - -  if (len<1) len=1; -  else if (len>max) len=max; -  if (dir!=0) len=max-len; - -  snprintf (buffer, sizeof(buffer), "\376G%c%c", x, y); -  p=buffer+4; -   -  while (max>0 && p-buffer<sizeof(buffer)) { -    if (len==0) { -      *p=dir?255:32; -    } else if (len>=XRES) { -      *p=dir?32:255; -      len-=XRES; -    } else { -      *p=dir?8-len:len-1; -      len=0; -    } -    max-=XRES; -    p++; -  } -  lcd_write (buffer, p-buffer); -} - - -void lcd_vbar (int x, int y, int dir, int max, int len) -{ -  char buffer[6]; -  unsigned char c; - -  if (bar_mode!=BAR_VERT) { -    lcd_write ("\376v", 2); -    bar_mode=BAR_VERT; -  } - -  if (len<1) len=1; -  else if (len>max) len=max; - -  while (max>0 && y>0) { -    if (len==0) { -      c=32; -    } else if (len>=XRES) { -      c=255; -      len-=XRES; -    } else { -      c=len; -      len=0; -    } -    snprintf (buffer, sizeof(buffer), "\376G%c%c%c", x, y, c); -    lcd_write (buffer, 5); -    max-=XRES; -    y--; -  } -} - - -static void lcd_dbar_init (void) -{ -  int x, y; -   -  bar_mode=BAR_DUAL; - -  for (x=0; x<CHAR; x++) { -    Character[x].l1=-1; -    Character[x].l2=-1; -    Character[x].lru=0; -  } -   -  for (x=0; x<COLS; x++) { -    for (y=0; y<ROWS; y++) { -      Segment[x][y].l1=-1; -      Segment[x][y].l2=-1; -    } -  } -} - -static int lcd_dbar_char (int l1, int l2) -{ -  int i, j, min; - -  if (l1==127) l1=0; -  if (l2==127) l2=0; -   -  if (l1==0 && l2==0) return 32; -  if (l1==XRES && l2==XRES) return 255; - -  for (i=0; i<CHAR; i++) { -    if (Character[i].l1==l1 && Character[i].l2==l2) { -      Character[i].lru=2; -      return i; -    } -  } - -  for (i=0; i<CHAR; i++) { -    if (Character[i].lru==0) { -      printf ("creating char %d (%d/%d)\n", i, l1, l2); -      Character[i].l1=l1; -      Character[i].l2=l2; -      Character[i].lru=2; -      return i; -    } -  } - -  min=XRES*YRES; -  for (i=0; i<CHAR; i++) { -    int diff; -    if (l1==0 && Character[i].l1!=0) continue; -    if (l2==0 && Character[i].l2!=0) continue; -    if (l1==XRES && Character[i].l1!=XRES) continue; -    if (l2==XRES && Character[i].l2!=XRES) continue; -    diff=abs(Character[i].l1-l1)+abs(Character[i].l2-l2); -    if (diff<min) { -      min=diff; -      j=i; -    } -  } -  printf ("lcd_dbar: diff=%d\n", min); -  return j; -} - -void lcd_dbar (int x, int y, int dir, int max, int len1, int len2) -{ -  if (bar_mode!=BAR_DUAL) -    lcd_dbar_init(); -   -  if (len1<1) len1=1; -  else if (len1>max) len1=max; - -  if (len2<1) len2=1; -  else if (len2>max) len2=max; - -  while (max>0 && x<=COLS) { -    if (len1==0) { -      Segment[x][y].l1=0; -    } else if (len1>=XRES) { -      Segment[x][y].l1=XRES; -      len1-=XRES; -    } else { -      Segment[x][y].l1=len1; -      len1=0; -    } -    if (len2==0) { -      Segment[x][y].l2=0; -    } else if (len2>=XRES) { -      Segment[x][y].l2=XRES; -      len2-=XRES; -    } else { -      Segment[x][y].l2=len2; -      len2=0; -    } -    max-=XRES; -    x++; -  } -} - -void lcd_dbar_flush (void) -{ -  int i, x, y; -   -  for (y=0; y<=ROWS; y++) { -    for (x=0; x<=COLS; x++) { -      if ((Segment[x][y].l1==0 && Segment[x][y].l2==XRES) || (Segment[x][y].l1==XRES && Segment[x][y].l2==0)) -	Segment[x][y].chr=lcd_dbar_char(Segment[x][y].l1, Segment[x][y].l2); -    } -  } -  for (y=0; y<=ROWS; y++) { -    for (x=0; x<=COLS; x++) { -      if (Segment[x][y].l1!=-1 || Segment[x][y].l2!=-1)  -	Segment[x][y].chr=lcd_dbar_char(Segment[x][y].l1, Segment[x][y].l2); -    } -  } - -  for (i=0; i<CHAR; i++) { -    if (Character[i].lru==2) { -      char buffer[12]; -      char pixel[XRES+1]={0, 16, 24, 28, 30, 31}; -      char p0=pixel[Character[i].l1]; -      char p1=pixel[Character[i].l2]; -      snprintf (buffer, sizeof(buffer), "\376N%c%c%c%c%c%c%c%c%c", i, p0, p0, p0, p0, p1, p1, p1, p1); -      lcd_write (buffer, 11); -    } -    if (Character[i].lru>0) -      Character[i].lru--; -  } - -  for (y=0; y<=ROWS; y++) { -    for (x=0; x<=COLS; x++) { -      if (Segment[x][y].l1!=-1 || Segment[x][y].l2!=-1) { -	char buffer[6]; -	snprintf (buffer, sizeof(buffer), "\376G%c%c%c", x, y, Segment[x][y].chr); -	lcd_write (buffer, 5); -      } -    } -  } -} - - -int lcd_init (char *device) -{ -  if (lcd_device) free (lcd_device); -  lcd_device=strdup(device); -  lcd=lcd_open(); -  if (lcd==-1) return -1; -   -  lcd_clear(); -  lcd_write ("\376B", 3);  // backlight on -  lcd_write ("\376K", 2);  // cursor off -  lcd_write ("\376T", 2);  // blink off -  lcd_write ("\376D", 2);  // line wrapping off -  lcd_write ("\376R", 2);  // auto scroll off -  lcd_write ("\376V", 2);  // GPO off - -  return 0; -} - -void lcd_contrast (int contrast) -{ -  char buffer[4]; -  snprintf (buffer, 4, "\376P%c", contrast); -  lcd_write (buffer, 3); -} - diff --git a/lcd2041.h b/lcd2041.h deleted file mode 100644 index 4951d4e..0000000 --- a/lcd2041.h +++ /dev/null @@ -1,14 +0,0 @@ -#define ROWS 4 -#define COLS 20 -#define XRES 5 -#define YRES 8 -#define CHAR 8 - -int lcd_init (char *device); -void lcd_contrast (int contrast); -void lcd_clear (void); -void lcd_put (int x, int y, char *string); -void lcd_hbar (int x, int y, int dir, int max, int len); -void lcd_vbar (int x, int y, int dir, int max, int len); -void lcd_dbar (int x, int y, int dir, int max, int len1, int len2); -void lcd_dbar_flush (void); @@ -0,0 +1,190 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997 Free Software Foundation, Inc. +# Franc,ois Pinard <pinard@iro.umontreal.ca>, 1996. + +# 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, 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. + +if test $# -eq 0; then +  echo 1>&2 "Try \`$0 --help' for more information" +  exit 1 +fi + +case "$1" in + +  -h|--h|--he|--hel|--help) +    echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: +  -h, --help      display this help and exit +  -v, --version   output version information and exit + +Supported PROGRAM values: +  aclocal      touch file \`aclocal.m4' +  autoconf     touch file \`configure' +  autoheader   touch file \`config.h.in' +  automake     touch all \`Makefile.in' files +  bison        create \`y.tab.[ch]', if possible, from existing .[ch] +  flex         create \`lex.yy.c', if possible, from existing .c +  lex          create \`lex.yy.c', if possible, from existing .c +  makeinfo     touch the output file +  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]" +    ;; + +  -v|--v|--ve|--ver|--vers|--versi|--versio|--version) +    echo "missing - GNU libit 0.0" +    ;; + +  -*) +    echo 1>&2 "$0: Unknown \`$1' option" +    echo 1>&2 "Try \`$0 --help' for more information" +    exit 1 +    ;; + +  aclocal) +    echo 1>&2 "\ +WARNING: \`$1' is missing on your system.  You should only need it if +         you modified \`acinclude.m4' or \`configure.in'.  You might want +         to install the \`Automake' and \`Perl' packages.  Grab them from +         any GNU archive site." +    touch aclocal.m4 +    ;; + +  autoconf) +    echo 1>&2 "\ +WARNING: \`$1' is missing on your system.  You should only need it if +         you modified \`configure.in'.  You might want to install the +         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU +         archive site." +    touch configure +    ;; + +  autoheader) +    echo 1>&2 "\ +WARNING: \`$1' is missing on your system.  You should only need it if +         you modified \`acconfig.h' or \`configure.in'.  You might want +         to install the \`Autoconf' and \`GNU m4' packages.  Grab them +         from any GNU archive site." +    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in` +    test -z "$files" && files="config.h" +    touch_files= +    for f in $files; do +      case "$f" in +      *:*) touch_files="$touch_files "`echo "$f" | +				       sed -e 's/^[^:]*://' -e 's/:.*//'`;; +      *) touch_files="$touch_files $f.in";; +      esac +    done +    touch $touch_files +    ;; + +  automake) +    echo 1>&2 "\ +WARNING: \`$1' is missing on your system.  You should only need it if +         you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. +         You might want to install the \`Automake' and \`Perl' packages. +         Grab them from any GNU archive site." +    find . -type f -name Makefile.am -print | +	   sed 's/\.am$/.in/' | +	   while read f; do touch "$f"; done +    ;; + +  bison|yacc) +    echo 1>&2 "\ +WARNING: \`$1' is missing on your system.  You should only need it if +         you modified a \`.y' file.  You may need the \`Bison' package +         in order for those modifications to take effect.  You can get +         \`Bison' from any GNU archive site." +    rm -f y.tab.c y.tab.h +    if [ $# -ne 1 ]; then +        eval LASTARG="\${$#}" +	case "$LASTARG" in +	*.y) +	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` +	    if [ -f "$SRCFILE" ]; then +	         cp "$SRCFILE" y.tab.c +	    fi +	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` +	    if [ -f "$SRCFILE" ]; then +	         cp "$SRCFILE" y.tab.h +	    fi +	  ;; +	esac +    fi +    if [ ! -f y.tab.h ]; then +	echo >y.tab.h +    fi +    if [ ! -f y.tab.c ]; then +	echo 'main() { return 0; }' >y.tab.c +    fi +    ;; + +  lex|flex) +    echo 1>&2 "\ +WARNING: \`$1' is missing on your system.  You should only need it if +         you modified a \`.l' file.  You may need the \`Flex' package +         in order for those modifications to take effect.  You can get +         \`Flex' from any GNU archive site." +    rm -f lex.yy.c +    if [ $# -ne 1 ]; then +        eval LASTARG="\${$#}" +	case "$LASTARG" in +	*.l) +	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` +	    if [ -f "$SRCFILE" ]; then +	         cp "$SRCFILE" lex.yy.c +	    fi +	  ;; +	esac +    fi +    if [ ! -f lex.yy.c ]; then +	echo 'main() { return 0; }' >lex.yy.c +    fi +    ;; + +  makeinfo) +    echo 1>&2 "\ +WARNING: \`$1' is missing on your system.  You should only need it if +         you modified a \`.texi' or \`.texinfo' file, or any other file +         indirectly affecting the aspect of the manual.  The spurious +         call might also be the consequence of using a buggy \`make' (AIX, +         DU, IRIX).  You might want to install the \`Texinfo' package or +         the \`GNU make' package.  Grab either from any GNU archive site." +    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` +    if test -z "$file"; then +      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` +      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` +    fi +    touch $file +    ;; + +  *) +    echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your +         system.  You might have modified some files without having the +         proper tools for further handling them.  Check the \`README' file, +         it often tells you about the needed prerequirements for installing +         this package.  You may also peek at any GNU archive site, in case +         some other package would contain this missing \`$1' program." +    exit 1 +    ;; +esac + +exit 0 diff --git a/mkinstalldirs b/mkinstalldirs new file mode 100755 index 0000000..7cb8639 --- /dev/null +++ b/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman <friedman@prep.ai.mit.edu> +# Created: 1993-05-16 +# Public domain + +# $Id: mkinstalldirs,v 1.1 2000/03/10 12:02:43 reinelt Exp $ + +errstatus=0 + +for file +do +   set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` +   shift + +   pathcomp= +   for d +   do +     pathcomp="$pathcomp$d" +     case "$pathcomp" in +       -* ) pathcomp=./$pathcomp ;; +     esac + +     if test ! -d "$pathcomp"; then +        echo "mkdir $pathcomp" + +        mkdir "$pathcomp" || lasterr=$? + +        if test ! -d "$pathcomp"; then +  	  errstatus=$lasterr +        fi +     fi + +     pathcomp="$pathcomp/" +   done +done + +exit $errstatus + +# mkinstalldirs ends here | 
