Update to xcalc 1.1.0
This commit is contained in:
parent
274574490b
commit
180002922b
@ -1,3 +1,208 @@
|
||||
commit df1721c44e0b357f4d8ae80247861b4a6f7a7bbb
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Sun Jun 9 13:44:24 2019 -0700
|
||||
|
||||
xcalc 1.1.0
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit 74a71638ace07252e85106d87f80a62b1f07280f
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Sat Jun 1 17:33:44 2019 -0700
|
||||
|
||||
Fix -Wsign-compare warning in quit() function
|
||||
|
||||
Reported by gcc 7.3:
|
||||
actions.c: In function ‘quit’:
|
||||
actions.c:414:60: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
|
||||
if (ev->type == ClientMessage && ev->xclient.data.l[0] != wm_delete_window)
|
||||
^~
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit 012115650d15697e1cdc13edf770ac9775b108f4
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Sat Jun 1 17:29:15 2019 -0700
|
||||
|
||||
Fix -Wsign-compare warning in Syntax() function
|
||||
|
||||
Reported by gcc 7.3:
|
||||
xcalc.c: In function ‘Syntax’:
|
||||
xcalc.c:322:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
|
||||
for (i=0; i < XtNumber(Options); i++)
|
||||
^
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit 7a04d51cb90b9a314eea117bc36fedb2bfaab516
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Sat Jun 1 17:24:20 2019 -0700
|
||||
|
||||
Pass -D_CONST_X_STRING to make libXt declare String as const char *
|
||||
|
||||
Clears up 58 of 62 gcc -Wdiscarded-qualifiers warnings in the xcalc build
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit 519e35d2c5649a995d39ee26e39809a3b7ffabc9
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Sat Jun 1 17:16:11 2019 -0700
|
||||
|
||||
Add bitwise ops and base conversion (DEC/OCT/HEX) to man page
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit c4f1bdb16b560d813e6ded83c2d7a4f4d280a90a
|
||||
Author: Tim Hentenaar <tim@hentenaar.com>
|
||||
Date: Sat Mar 22 02:47:33 2014 +0100
|
||||
|
||||
Add bitwise ops and base conversion (DEC/OCT/HEX) in TI mode
|
||||
|
||||
These operations implicitly truncate their parameters, and result to
|
||||
integers:
|
||||
|
||||
* not
|
||||
* and
|
||||
* or
|
||||
* xor
|
||||
* shl
|
||||
* shr
|
||||
* mod
|
||||
* trunc
|
||||
|
||||
Base 2 was left out of the base conversion code intentionally as it
|
||||
would require making the UI at least one third wider.
|
||||
|
||||
Attempts to change base with negative values will simply display
|
||||
"error." Note that with larger numbers, the result may be inaccurate
|
||||
due to rounding.
|
||||
|
||||
I've also bound the Return key to the equal() action.
|
||||
|
||||
Signed-off-by: Tim Hentenaar <tim@hentenaar.com>
|
||||
|
||||
commit be5114cebfdc29788cf038d349c0ed6cce4bb536
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Sun Feb 17 13:50:58 2019 -0800
|
||||
|
||||
xcalc 1.0.7
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit 85c9feb6e10cea1ef017d702151b14717c40b9d5
|
||||
Author: Stéphane Aulery <lkppo@free.fr>
|
||||
Date: Sun Jul 7 22:50:30 2013 +0200
|
||||
|
||||
Reduce scope of i (cppcheck --verbose --enable=all)
|
||||
|
||||
Signed-off-by: Stéphane Aulery <lkppo@free.fr>
|
||||
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit aa3d39389bfc752486a83933574d0365c74d4e29
|
||||
Author: Stéphane Aulery <lkppo@free.fr>
|
||||
Date: Sun Jul 7 22:50:29 2013 +0200
|
||||
|
||||
Reduce scope of cell (cppcheck --verbose --enable=all)
|
||||
|
||||
Signed-off-by: Stéphane Aulery <lkppo@free.fr>
|
||||
Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit 8d156f428912aecdd493e075b75e735bfbae7dda
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Wed Nov 21 16:59:17 2018 -0800
|
||||
|
||||
Update configure.ac bug URL for gitlab migration
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit b8f4da1126dd44b4adc5f83ba5c7e06a2de75996
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Fri Nov 16 21:11:40 2018 -0800
|
||||
|
||||
Update README for gitlab migration
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit 8df4b463f69fc3e7e08ce5de284ed7f318935c1e
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Sat May 5 12:20:12 2018 -0700
|
||||
|
||||
Reword fall through comments to appease gcc -Wimplicit-fallthrough
|
||||
|
||||
Gets rid of these warnings:
|
||||
math.c:707:24: warning: this statement may fall through [-Wimplicit-fallthrough=]
|
||||
case kSQR: flagINV = !flagINV; /* fall through to */
|
||||
~~~~~~~~^~~~~~~~~~
|
||||
math.c:708:3: note: here
|
||||
case kSQRT: if (flagINV) dnum=dnum*dnum;
|
||||
^~~~
|
||||
math.c:711:24: warning: this statement may fall through [-Wimplicit-fallthrough=]
|
||||
case k10X: flagINV = !flagINV; /* fall through to */
|
||||
~~~~~~~~^~~~~~~~~~
|
||||
math.c:712:3: note: here
|
||||
case kLOG: if (flagINV) dnum=pow(10.0,dnum);
|
||||
^~~~
|
||||
math.c:715:24: warning: this statement may fall through [-Wimplicit-fallthrough=]
|
||||
case kEXP: flagINV = !flagINV; /* fall through to */
|
||||
~~~~~~~~^~~~~~~~~~
|
||||
math.c:716:3: note: here
|
||||
case kLN: if (flagINV) dnum=exp(dnum);
|
||||
^~~~
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit 7a90211e35841758ff11e79a1633494e2055df88
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Sat May 5 12:15:19 2018 -0700
|
||||
|
||||
Fix misleading indentation in math.c
|
||||
|
||||
math.c: In function ‘numeric’:
|
||||
math.c:267:3: warning: this ‘if’ clause does not guard... [-Wmisleading-indentat
|
||||
ion]
|
||||
if ((int) strlen(dispstr) >= MAXDISP)
|
||||
^~
|
||||
math.c:270:5: note: ...this statement, but the latter is misleadingly indented a
|
||||
s if it were guarded by the ‘if’
|
||||
switch (keynum){
|
||||
^~~~~~
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit d056a3c6843cf5f6c8b392c46bc4f1b637f87d0b
|
||||
Author: Mihail Konev <k.mvc@ya.ru>
|
||||
Date: Thu Jan 26 14:00:20 2017 +1000
|
||||
|
||||
autogen: add default patch prefix
|
||||
|
||||
Signed-off-by: Mihail Konev <k.mvc@ya.ru>
|
||||
|
||||
commit f5982d0175359f7db28127cba3a42e08352f295b
|
||||
Author: Emil Velikov <emil.l.velikov@gmail.com>
|
||||
Date: Mon Mar 9 12:00:52 2015 +0000
|
||||
|
||||
autogen.sh: use quoted string variables
|
||||
|
||||
Place quotes around the $srcdir, $ORIGDIR and $0 variables to prevent
|
||||
fall-outs, when they contain space.
|
||||
|
||||
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
|
||||
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
|
||||
commit 004ce8287f9afab014a44c8bb8ba476ef5930a57
|
||||
Author: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Date: Tue Jan 24 10:32:07 2017 +1000
|
||||
|
||||
autogen.sh: use exec instead of waiting for configure to finish
|
||||
|
||||
Syncs the invocation of configure with the one from the server.
|
||||
|
||||
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
|
||||
Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
|
||||
|
||||
commit 0fba659f91bebe1f92f4de2660bf806fd049350b
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Mon Jan 19 21:26:22 2015 -0800
|
||||
|
@ -22,7 +22,7 @@
|
||||
SUBDIRS = man
|
||||
bin_PROGRAMS = xcalc
|
||||
|
||||
AM_CFLAGS = $(XCALC_CFLAGS) $(CWARNFLAGS)
|
||||
AM_CFLAGS = $(XCALC_CFLAGS) $(CWARNFLAGS) -D_CONST_X_STRING
|
||||
xcalc_LDADD = $(XCALC_LIBS) -lm
|
||||
|
||||
xcalc_SOURCES = \
|
||||
@ -53,3 +53,4 @@ ChangeLog:
|
||||
|
||||
dist-hook: ChangeLog INSTALL
|
||||
|
||||
EXTRA_DIST = README.md
|
||||
|
@ -74,7 +74,7 @@ build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
bin_PROGRAMS = xcalc$(EXEEXT)
|
||||
subdir = .
|
||||
DIST_COMMON = README $(am__configure_deps) $(dist_appdefault_DATA) \
|
||||
DIST_COMMON = $(am__configure_deps) $(dist_appdefault_DATA) \
|
||||
$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
|
||||
$(srcdir)/config.h.in $(top_srcdir)/configure COPYING \
|
||||
ChangeLog INSTALL compile config.guess config.sub depcomp \
|
||||
@ -341,7 +341,7 @@ top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
SUBDIRS = man
|
||||
AM_CFLAGS = $(XCALC_CFLAGS) $(CWARNFLAGS)
|
||||
AM_CFLAGS = $(XCALC_CFLAGS) $(CWARNFLAGS) -D_CONST_X_STRING
|
||||
xcalc_LDADD = $(XCALC_LIBS) -lm
|
||||
xcalc_SOURCES = \
|
||||
actions.c \
|
||||
@ -357,6 +357,7 @@ dist_appdefault_DATA = \
|
||||
app-defaults/XCalc-color
|
||||
|
||||
MAINTAINERCLEANFILES = ChangeLog INSTALL
|
||||
EXTRA_DIST = README.md
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
|
@ -1,26 +0,0 @@
|
||||
xcalc is a scientific calculator X11 client that can emulate a TI-30
|
||||
or an HP-10C.
|
||||
|
||||
All questions regarding this software should be directed at the
|
||||
Xorg mailing list:
|
||||
|
||||
http://lists.freedesktop.org/mailman/listinfo/xorg
|
||||
|
||||
Please submit bug reports to the Xorg bugzilla:
|
||||
|
||||
https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
|
||||
|
||||
The master development code repository can be found at:
|
||||
|
||||
git://anongit.freedesktop.org/git/xorg/app/xcalc
|
||||
|
||||
http://cgit.freedesktop.org/xorg/app/xcalc
|
||||
|
||||
For patch submission instructions, see:
|
||||
|
||||
http://www.x.org/wiki/Development/Documentation/SubmittingPatches
|
||||
|
||||
For more information on the git code manager, see:
|
||||
|
||||
http://wiki.x.org/wiki/GitPage
|
||||
|
18
app/xcalc/README.md
Normal file
18
app/xcalc/README.md
Normal file
@ -0,0 +1,18 @@
|
||||
xcalc is a scientific calculator X11 client that can emulate a TI-30
|
||||
or an HP-10C.
|
||||
|
||||
All questions regarding this software should be directed at the
|
||||
Xorg mailing list:
|
||||
|
||||
https://lists.x.org/mailman/listinfo/xorg
|
||||
|
||||
The master development code repository can be found at:
|
||||
|
||||
https://gitlab.freedesktop.org/xorg/app/xcalc
|
||||
|
||||
Please submit bug reports and requests to merge patches there.
|
||||
|
||||
For patch submission instructions, see:
|
||||
|
||||
https://www.x.org/wiki/Development/Documentation/SubmittingPatches
|
||||
|
266
app/xcalc/aclocal.m4
vendored
266
app/xcalc/aclocal.m4
vendored
@ -19,32 +19,63 @@ You have another version of autoconf. It may work, but is not guaranteed to.
|
||||
If you have problems, you may need to regenerate the build system entirely.
|
||||
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
|
||||
|
||||
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
|
||||
# serial 1 (pkg-config-0.24)
|
||||
#
|
||||
# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
|
||||
dnl serial 11 (pkg-config-0.29.1)
|
||||
dnl
|
||||
dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
|
||||
dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
|
||||
dnl
|
||||
dnl This program is free software; you can redistribute it and/or modify
|
||||
dnl it under the terms of the GNU General Public License as published by
|
||||
dnl the Free Software Foundation; either version 2 of the License, or
|
||||
dnl (at your option) any later version.
|
||||
dnl
|
||||
dnl This program is distributed in the hope that it will be useful, but
|
||||
dnl WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
dnl General Public License for more details.
|
||||
dnl
|
||||
dnl You should have received a copy of the GNU General Public License
|
||||
dnl along with this program; if not, write to the Free Software
|
||||
dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
dnl 02111-1307, USA.
|
||||
dnl
|
||||
dnl As a special exception to the GNU General Public License, if you
|
||||
dnl distribute this file as part of a program that contains a
|
||||
dnl configuration script generated by Autoconf, you may include it under
|
||||
dnl the same distribution terms that you use for the rest of that
|
||||
dnl program.
|
||||
|
||||
# PKG_PROG_PKG_CONFIG([MIN-VERSION])
|
||||
# ----------------------------------
|
||||
dnl PKG_PREREQ(MIN-VERSION)
|
||||
dnl -----------------------
|
||||
dnl Since: 0.29
|
||||
dnl
|
||||
dnl Verify that the version of the pkg-config macros are at least
|
||||
dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
|
||||
dnl installed version of pkg-config, this checks the developer's version
|
||||
dnl of pkg.m4 when generating configure.
|
||||
dnl
|
||||
dnl To ensure that this macro is defined, also add:
|
||||
dnl m4_ifndef([PKG_PREREQ],
|
||||
dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
|
||||
dnl
|
||||
dnl See the "Since" comment for each macro you use to see what version
|
||||
dnl of the macros you require.
|
||||
m4_defun([PKG_PREREQ],
|
||||
[m4_define([PKG_MACROS_VERSION], [0.29.1])
|
||||
m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
|
||||
[m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
|
||||
])dnl PKG_PREREQ
|
||||
|
||||
dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
|
||||
dnl ----------------------------------
|
||||
dnl Since: 0.16
|
||||
dnl
|
||||
dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
|
||||
dnl first found in the path. Checks that the version of pkg-config found
|
||||
dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
|
||||
dnl used since that's the first version where most current features of
|
||||
dnl pkg-config existed.
|
||||
AC_DEFUN([PKG_PROG_PKG_CONFIG],
|
||||
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
|
||||
m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
|
||||
@ -66,18 +97,19 @@ if test -n "$PKG_CONFIG"; then
|
||||
PKG_CONFIG=""
|
||||
fi
|
||||
fi[]dnl
|
||||
])# PKG_PROG_PKG_CONFIG
|
||||
])dnl PKG_PROG_PKG_CONFIG
|
||||
|
||||
# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||
#
|
||||
# Check to see whether a particular set of modules exists. Similar
|
||||
# to PKG_CHECK_MODULES(), but does not set variables or print errors.
|
||||
#
|
||||
# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||
# only at the first occurence in configure.ac, so if the first place
|
||||
# it's called might be skipped (such as if it is within an "if", you
|
||||
# have to call PKG_CHECK_EXISTS manually
|
||||
# --------------------------------------------------------------
|
||||
dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||
dnl -------------------------------------------------------------------
|
||||
dnl Since: 0.18
|
||||
dnl
|
||||
dnl Check to see whether a particular set of modules exists. Similar to
|
||||
dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
|
||||
dnl
|
||||
dnl Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||
dnl only at the first occurence in configure.ac, so if the first place
|
||||
dnl it's called might be skipped (such as if it is within an "if", you
|
||||
dnl have to call PKG_CHECK_EXISTS manually
|
||||
AC_DEFUN([PKG_CHECK_EXISTS],
|
||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||
if test -n "$PKG_CONFIG" && \
|
||||
@ -87,8 +119,10 @@ m4_ifvaln([$3], [else
|
||||
$3])dnl
|
||||
fi])
|
||||
|
||||
# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
|
||||
# ---------------------------------------------
|
||||
dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
|
||||
dnl ---------------------------------------------
|
||||
dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
|
||||
dnl pkg_failed based on the result.
|
||||
m4_define([_PKG_CONFIG],
|
||||
[if test -n "$$1"; then
|
||||
pkg_cv_[]$1="$$1"
|
||||
@ -100,10 +134,11 @@ m4_define([_PKG_CONFIG],
|
||||
else
|
||||
pkg_failed=untried
|
||||
fi[]dnl
|
||||
])# _PKG_CONFIG
|
||||
])dnl _PKG_CONFIG
|
||||
|
||||
# _PKG_SHORT_ERRORS_SUPPORTED
|
||||
# -----------------------------
|
||||
dnl _PKG_SHORT_ERRORS_SUPPORTED
|
||||
dnl ---------------------------
|
||||
dnl Internal check to see if pkg-config supports short errors.
|
||||
AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
|
||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||
if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
|
||||
@ -111,19 +146,17 @@ if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
|
||||
else
|
||||
_pkg_short_errors_supported=no
|
||||
fi[]dnl
|
||||
])# _PKG_SHORT_ERRORS_SUPPORTED
|
||||
])dnl _PKG_SHORT_ERRORS_SUPPORTED
|
||||
|
||||
|
||||
# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
|
||||
# [ACTION-IF-NOT-FOUND])
|
||||
#
|
||||
#
|
||||
# Note that if there is a possibility the first call to
|
||||
# PKG_CHECK_MODULES might not happen, you should be sure to include an
|
||||
# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
|
||||
#
|
||||
#
|
||||
# --------------------------------------------------------------
|
||||
dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
|
||||
dnl [ACTION-IF-NOT-FOUND])
|
||||
dnl --------------------------------------------------------------
|
||||
dnl Since: 0.4.0
|
||||
dnl
|
||||
dnl Note that if there is a possibility the first call to
|
||||
dnl PKG_CHECK_MODULES might not happen, you should be sure to include an
|
||||
dnl explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
|
||||
AC_DEFUN([PKG_CHECK_MODULES],
|
||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||
AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
|
||||
@ -177,16 +210,40 @@ else
|
||||
AC_MSG_RESULT([yes])
|
||||
$3
|
||||
fi[]dnl
|
||||
])# PKG_CHECK_MODULES
|
||||
])dnl PKG_CHECK_MODULES
|
||||
|
||||
|
||||
# PKG_INSTALLDIR(DIRECTORY)
|
||||
# -------------------------
|
||||
# Substitutes the variable pkgconfigdir as the location where a module
|
||||
# should install pkg-config .pc files. By default the directory is
|
||||
# $libdir/pkgconfig, but the default can be changed by passing
|
||||
# DIRECTORY. The user can override through the --with-pkgconfigdir
|
||||
# parameter.
|
||||
dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
|
||||
dnl [ACTION-IF-NOT-FOUND])
|
||||
dnl ---------------------------------------------------------------------
|
||||
dnl Since: 0.29
|
||||
dnl
|
||||
dnl Checks for existence of MODULES and gathers its build flags with
|
||||
dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
|
||||
dnl and VARIABLE-PREFIX_LIBS from --libs.
|
||||
dnl
|
||||
dnl Note that if there is a possibility the first call to
|
||||
dnl PKG_CHECK_MODULES_STATIC might not happen, you should be sure to
|
||||
dnl include an explicit call to PKG_PROG_PKG_CONFIG in your
|
||||
dnl configure.ac.
|
||||
AC_DEFUN([PKG_CHECK_MODULES_STATIC],
|
||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||
_save_PKG_CONFIG=$PKG_CONFIG
|
||||
PKG_CONFIG="$PKG_CONFIG --static"
|
||||
PKG_CHECK_MODULES($@)
|
||||
PKG_CONFIG=$_save_PKG_CONFIG[]dnl
|
||||
])dnl PKG_CHECK_MODULES_STATIC
|
||||
|
||||
|
||||
dnl PKG_INSTALLDIR([DIRECTORY])
|
||||
dnl -------------------------
|
||||
dnl Since: 0.27
|
||||
dnl
|
||||
dnl Substitutes the variable pkgconfigdir as the location where a module
|
||||
dnl should install pkg-config .pc files. By default the directory is
|
||||
dnl $libdir/pkgconfig, but the default can be changed by passing
|
||||
dnl DIRECTORY. The user can override through the --with-pkgconfigdir
|
||||
dnl parameter.
|
||||
AC_DEFUN([PKG_INSTALLDIR],
|
||||
[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
|
||||
m4_pushdef([pkg_description],
|
||||
@ -200,13 +257,15 @@ m4_popdef([pkg_description])
|
||||
])dnl PKG_INSTALLDIR
|
||||
|
||||
|
||||
# PKG_NOARCH_INSTALLDIR(DIRECTORY)
|
||||
# -------------------------
|
||||
# Substitutes the variable noarch_pkgconfigdir as the location where a
|
||||
# module should install arch-independent pkg-config .pc files. By
|
||||
# default the directory is $datadir/pkgconfig, but the default can be
|
||||
# changed by passing DIRECTORY. The user can override through the
|
||||
# --with-noarch-pkgconfigdir parameter.
|
||||
dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
|
||||
dnl --------------------------------
|
||||
dnl Since: 0.27
|
||||
dnl
|
||||
dnl Substitutes the variable noarch_pkgconfigdir as the location where a
|
||||
dnl module should install arch-independent pkg-config .pc files. By
|
||||
dnl default the directory is $datadir/pkgconfig, but the default can be
|
||||
dnl changed by passing DIRECTORY. The user can override through the
|
||||
dnl --with-noarch-pkgconfigdir parameter.
|
||||
AC_DEFUN([PKG_NOARCH_INSTALLDIR],
|
||||
[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
|
||||
m4_pushdef([pkg_description],
|
||||
@ -219,6 +278,23 @@ m4_popdef([pkg_default])
|
||||
m4_popdef([pkg_description])
|
||||
])dnl PKG_NOARCH_INSTALLDIR
|
||||
|
||||
|
||||
dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
|
||||
dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||
dnl -------------------------------------------
|
||||
dnl Since: 0.28
|
||||
dnl
|
||||
dnl Retrieves the value of the pkg-config variable for the given module.
|
||||
AC_DEFUN([PKG_CHECK_VAR],
|
||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||
AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
|
||||
|
||||
_PKG_CONFIG([$1], [variable="][$3]["], [$2])
|
||||
AS_VAR_COPY([$1], [pkg_cv_][$1])
|
||||
|
||||
AS_VAR_IF([$1], [""], [$5], [$4])dnl
|
||||
])dnl PKG_CHECK_VAR
|
||||
|
||||
# Copyright (C) 2002-2012 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; the Free Software Foundation
|
||||
@ -1242,7 +1318,7 @@ AC_SUBST([am__untar])
|
||||
|
||||
dnl xorg-macros.m4. Generated from xorg-macros.m4.in xorgversion.m4 by configure.
|
||||
dnl
|
||||
dnl Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
dnl Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
dnl
|
||||
dnl Permission is hereby granted, free of charge, to any person obtaining a
|
||||
dnl copy of this software and associated documentation files (the "Software"),
|
||||
@ -1279,7 +1355,7 @@ dnl DEALINGS IN THE SOFTWARE.
|
||||
# See the "minimum version" comment for each macro you use to see what
|
||||
# version you require.
|
||||
m4_defun([XORG_MACROS_VERSION],[
|
||||
m4_define([vers_have], [1.19.0])
|
||||
m4_define([vers_have], [1.19.2])
|
||||
m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.])))
|
||||
m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.])))
|
||||
m4_if(m4_cmp(maj_have, maj_needed), 0,,
|
||||
@ -1357,6 +1433,17 @@ AC_DEFUN([XORG_MANPAGE_SECTIONS],[
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
AC_REQUIRE([AC_PROG_SED])
|
||||
|
||||
case $host_os in
|
||||
solaris*)
|
||||
# Solaris 2.0 - 11.3 use SysV man page section numbers, so we
|
||||
# check for a man page file found in later versions that use
|
||||
# traditional section numbers instead
|
||||
AC_CHECK_FILE([/usr/share/man/man7/attributes.7],
|
||||
[SYSV_MAN_SECTIONS=false], [SYSV_MAN_SECTIONS=true])
|
||||
;;
|
||||
*) SYSV_MAN_SECTIONS=false ;;
|
||||
esac
|
||||
|
||||
if test x$APP_MAN_SUFFIX = x ; then
|
||||
APP_MAN_SUFFIX=1
|
||||
fi
|
||||
@ -1372,8 +1459,8 @@ if test x$LIB_MAN_DIR = x ; then
|
||||
fi
|
||||
|
||||
if test x$FILE_MAN_SUFFIX = x ; then
|
||||
case $host_os in
|
||||
solaris*) FILE_MAN_SUFFIX=4 ;;
|
||||
case $SYSV_MAN_SECTIONS in
|
||||
true) FILE_MAN_SUFFIX=4 ;;
|
||||
*) FILE_MAN_SUFFIX=5 ;;
|
||||
esac
|
||||
fi
|
||||
@ -1382,8 +1469,8 @@ if test x$FILE_MAN_DIR = x ; then
|
||||
fi
|
||||
|
||||
if test x$MISC_MAN_SUFFIX = x ; then
|
||||
case $host_os in
|
||||
solaris*) MISC_MAN_SUFFIX=5 ;;
|
||||
case $SYSV_MAN_SECTIONS in
|
||||
true) MISC_MAN_SUFFIX=5 ;;
|
||||
*) MISC_MAN_SUFFIX=7 ;;
|
||||
esac
|
||||
fi
|
||||
@ -1392,8 +1479,8 @@ if test x$MISC_MAN_DIR = x ; then
|
||||
fi
|
||||
|
||||
if test x$DRIVER_MAN_SUFFIX = x ; then
|
||||
case $host_os in
|
||||
solaris*) DRIVER_MAN_SUFFIX=7 ;;
|
||||
case $SYSV_MAN_SECTIONS in
|
||||
true) DRIVER_MAN_SUFFIX=7 ;;
|
||||
*) DRIVER_MAN_SUFFIX=4 ;;
|
||||
esac
|
||||
fi
|
||||
@ -1402,8 +1489,8 @@ if test x$DRIVER_MAN_DIR = x ; then
|
||||
fi
|
||||
|
||||
if test x$ADMIN_MAN_SUFFIX = x ; then
|
||||
case $host_os in
|
||||
solaris*) ADMIN_MAN_SUFFIX=1m ;;
|
||||
case $SYSV_MAN_SECTIONS in
|
||||
true) ADMIN_MAN_SUFFIX=1m ;;
|
||||
*) ADMIN_MAN_SUFFIX=8 ;;
|
||||
esac
|
||||
fi
|
||||
@ -1665,13 +1752,24 @@ m4_ifval([$1],
|
||||
fi])
|
||||
|
||||
# Test for the ability of xmlto to generate a text target
|
||||
#
|
||||
# NOTE: xmlto 0.0.27 or higher return a non-zero return code in the
|
||||
# following test for empty XML docbook files.
|
||||
# For compatibility reasons use the following empty XML docbook file and if
|
||||
# it fails try it again with a non-empty XML file.
|
||||
have_xmlto_text=no
|
||||
cat > conftest.xml << "EOF"
|
||||
EOF
|
||||
AS_IF([test "$have_xmlto" = yes],
|
||||
[AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1],
|
||||
[have_xmlto_text=yes],
|
||||
[AC_MSG_WARN([xmlto cannot generate text format, this format skipped])])])
|
||||
[# Try it again with a non-empty XML file.
|
||||
cat > conftest.xml << "EOF"
|
||||
<x></x>
|
||||
EOF
|
||||
AS_IF([$XMLTO --skip-validation txt conftest.xml >/dev/null 2>&1],
|
||||
[have_xmlto_text=yes],
|
||||
[AC_MSG_WARN([xmlto cannot generate text format, this format skipped])])])])
|
||||
rm -f conftest.xml
|
||||
AM_CONDITIONAL([HAVE_XMLTO_TEXT], [test $have_xmlto_text = yes])
|
||||
AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes])
|
||||
@ -3067,8 +3165,9 @@ AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||
macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros`
|
||||
INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \
|
||||
mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \
|
||||
|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \
|
||||
echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)"
|
||||
|| (rm -f \$(top_srcdir)/.INSTALL.tmp; test -e \$(top_srcdir)/INSTALL || ( \
|
||||
touch \$(top_srcdir)/INSTALL; \
|
||||
echo 'failed to copy INSTALL from util-macros: installing empty INSTALL.' >&2))"
|
||||
AC_SUBST([INSTALL_CMD])
|
||||
]) # XORG_INSTALL
|
||||
dnl Copyright 2005 Red Hat, Inc
|
||||
@ -3129,10 +3228,11 @@ AC_DEFUN([XORG_RELEASE_VERSION],[
|
||||
#
|
||||
#
|
||||
AC_DEFUN([XORG_CHANGELOG], [
|
||||
CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \
|
||||
CHANGELOG_CMD="((GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp) 2>/dev/null && \
|
||||
mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \
|
||||
|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \
|
||||
echo 'git directory not found: installing possibly empty changelog.' >&2)"
|
||||
|| (rm -f \$(top_srcdir)/.changelog.tmp; test -e \$(top_srcdir)/ChangeLog || ( \
|
||||
touch \$(top_srcdir)/ChangeLog; \
|
||||
echo 'git failed to create ChangeLog: installing empty ChangeLog.' >&2))"
|
||||
AC_SUBST([CHANGELOG_CMD])
|
||||
]) # XORG_CHANGELOG
|
||||
|
||||
|
@ -46,7 +46,9 @@ from the X Consortium.
|
||||
#endif
|
||||
|
||||
static void add(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void and(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void back(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void base(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void bell(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void clearit(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void cosine(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
@ -63,11 +65,14 @@ static void factorial(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void inverse(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void leftParen(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void logarithm(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void mod(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void multiply(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void naturalLog(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void negate(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void nop(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void not(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void off(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void or(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void pi(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void power(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void quit(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
@ -77,6 +82,8 @@ static void rightParen(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void roll(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void scientific(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void selection(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void shl(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void shr(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void sine(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void square(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void squareRoot(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
@ -85,6 +92,8 @@ static void subtract(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void sum(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void tangent(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void tenpower(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void xtrunc(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void xor(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
static void XexchangeY(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
|
||||
/*
|
||||
@ -93,7 +102,9 @@ static void XexchangeY(Widget w, XEvent *ev, String *vector, Cardinal *count);
|
||||
|
||||
XtActionsRec Actions[] = {
|
||||
{"add", add}, /* addition */
|
||||
{"and", and}, /* bitwise and */
|
||||
{"back", back}, /* HP-specific backspace */
|
||||
{"base", base}, /* base conversion */
|
||||
{"bell", bell}, /* ring bell */
|
||||
{"clear", clearit}, /* TI-specific clear calculator state */
|
||||
{"cosine", cosine}, /* trigonometric function cosine */
|
||||
@ -110,11 +121,14 @@ XtActionsRec Actions[] = {
|
||||
{"inverse", inverse}, /* inverse */
|
||||
{"leftParen", leftParen}, /* TI-specific left parenthesis */
|
||||
{"logarithm", logarithm}, /* logarithm base 10 */
|
||||
{"mod", mod}, /* modulus */
|
||||
{"multiply", multiply}, /* multiplication */
|
||||
{"naturalLog", naturalLog}, /* natural logarithm base e */
|
||||
{"negate", negate}, /* change sign */
|
||||
{"nop", nop}, /* no operation, rings bell */
|
||||
{"not", not}, /* bitwise not */
|
||||
{"off", off}, /* clear state */
|
||||
{"or", or}, /* bitwise or */
|
||||
{"pi", pi}, /* the number pi */
|
||||
{"power", power}, /* raise to an arbitrary power */
|
||||
{"quit", quit}, /* quit */
|
||||
@ -124,6 +138,8 @@ XtActionsRec Actions[] = {
|
||||
{"roll", roll}, /* HP-specific roll stack */
|
||||
{"scientific", scientific}, /* scientfic notation (EE) */
|
||||
{"selection", selection}, /* copy selection */
|
||||
{"shl", shl}, /* arithmetic shift left */
|
||||
{"shr", shr}, /* arithmetic shift right */
|
||||
{"sine", sine}, /* trigonometric function sine */
|
||||
{"square", square}, /* square */
|
||||
{"squareRoot", squareRoot}, /* square root */
|
||||
@ -132,6 +148,8 @@ XtActionsRec Actions[] = {
|
||||
{"sum", sum}, /* memory summation */
|
||||
{"tangent", tangent}, /* trigonometric function tangent */
|
||||
{"tenpower", tenpower}, /* 10 raised to to an arbitrary power */
|
||||
{"trunc", xtrunc}, /* truncate to integer */
|
||||
{"xor", xor}, /* bitwise xor */
|
||||
{"XexchangeY", XexchangeY} /* HP-specific exchange X and Y registers */
|
||||
};
|
||||
|
||||
@ -145,6 +163,14 @@ static void add(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
post_op();
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void and(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
XCALC_PRE_OP(kAND);
|
||||
rpn ? twof(kAND) : twoop(kAND);
|
||||
post_op();
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void back(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
@ -153,6 +179,14 @@ static void back(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
post_op();
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void base(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
XCALC_PRE_OP(kBASE);
|
||||
change_base();
|
||||
post_op();
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void bell(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
@ -196,6 +230,7 @@ static void digit(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
switch (vector[0][0])
|
||||
{
|
||||
case '0': XCALC_PRE_OP(kZERO); numeric(kZERO); break;
|
||||
case '1': XCALC_PRE_OP(kONE); numeric(kONE); break;
|
||||
case '2': XCALC_PRE_OP(kTWO); numeric(kTWO); break;
|
||||
case '3': XCALC_PRE_OP(kTHREE); numeric(kTHREE); break;
|
||||
@ -205,7 +240,12 @@ static void digit(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
case '7': XCALC_PRE_OP(kSEVEN); numeric(kSEVEN); break;
|
||||
case '8': XCALC_PRE_OP(kEIGHT); numeric(kEIGHT); break;
|
||||
case '9': XCALC_PRE_OP(kNINE); numeric(kNINE); break;
|
||||
case '0': XCALC_PRE_OP(kZERO); numeric(kZERO); break;
|
||||
case 'A': XCALC_PRE_OP(kxA); numeric(kxA); break;
|
||||
case 'B': XCALC_PRE_OP(kxB); numeric(kxB); break;
|
||||
case 'C': XCALC_PRE_OP(kxC); numeric(kxC); break;
|
||||
case 'D': XCALC_PRE_OP(kxD); numeric(kxD); break;
|
||||
case 'E': XCALC_PRE_OP(kxE); numeric(kxE); break;
|
||||
case 'F': XCALC_PRE_OP(kxF); numeric(kxF); break;
|
||||
}
|
||||
post_op();
|
||||
}
|
||||
@ -290,6 +330,14 @@ static void logarithm(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
post_op();
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void mod(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
XCALC_PRE_OP(kMOD);
|
||||
rpn ? twof(kMOD) : twoop(kMOD);
|
||||
post_op();
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void multiply(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
@ -320,6 +368,14 @@ static void nop(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
ringbell();
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void not(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
XCALC_PRE_OP(kNOT);
|
||||
oneop(kNOT);
|
||||
post_op();
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void off(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
@ -328,6 +384,14 @@ static void off(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
post_op();
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void or(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
XCALC_PRE_OP(kOR);
|
||||
rpn ? twof(kOR) : twoop(kOR);
|
||||
post_op();
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void pi(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
@ -347,7 +411,8 @@ static void power(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
/*ARGSUSED*/
|
||||
static void quit(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
if (ev->type == ClientMessage && ev->xclient.data.l[0] != wm_delete_window)
|
||||
if (ev->type == ClientMessage &&
|
||||
((Atom) ev->xclient.data.l[0]) != wm_delete_window)
|
||||
ringbell();
|
||||
else
|
||||
Quit();
|
||||
@ -399,6 +464,22 @@ static void selection(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
do_select(((XButtonReleasedEvent *)ev)->time);
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void shl(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
XCALC_PRE_OP(kSHL);
|
||||
rpn ? twof(kSHL) : twoop(kSHL);
|
||||
post_op();
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void shr(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
XCALC_PRE_OP(kSHR);
|
||||
rpn ? twof(kSHR) : twoop(kSHR);
|
||||
post_op();
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void sine(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
@ -463,6 +544,22 @@ static void tenpower(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
post_op();
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void xtrunc(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
XCALC_PRE_OP(kTRUNC);
|
||||
oneop(kTRUNC);
|
||||
post_op();
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void xor(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
XCALC_PRE_OP(kXOR);
|
||||
rpn ? twof(kXOR) : twoop(kXOR);
|
||||
post_op();
|
||||
}
|
||||
|
||||
/*ARGSUSED*/
|
||||
static void XexchangeY(Widget w, XEvent *ev, String *vector, Cardinal *count)
|
||||
{
|
||||
|
@ -42,6 +42,15 @@ XCalc*bevel.screen.P.label: ()
|
||||
XCalc*bevel.screen.P.fromHoriz: GRAD
|
||||
XCalc*bevel.screen.P.fromVert: LCD
|
||||
XCalc*bevel.screen.P.horizDistance: 2
|
||||
XCalc*bevel.screen.HEX.fromHoriz: P
|
||||
XCalc*bevel.screen.HEX.fromVert: LCD
|
||||
XCalc*bevel.screen.HEX.horizDistance: 1
|
||||
XCalc*bevel.screen.DEC.fromHoriz: P
|
||||
XCalc*bevel.screen.DEC.fromVert: LCD
|
||||
XCalc*bevel.screen.DEC.horizDistance: 1
|
||||
XCalc*bevel.screen.OCT.fromHoriz: P
|
||||
XCalc*bevel.screen.OCT.fromVert: LCD
|
||||
XCalc*bevel.screen.OCT.horizDistance: 1
|
||||
|
||||
!XCalc*ti.Geometry: 171x252
|
||||
XCalc*ti.bevel.screen.LCD.width: 186
|
||||
@ -59,6 +68,12 @@ XCalc*ti.bevel.screen.LCD.translations: #replace\n\
|
||||
None<Key>7:digit(7)\n\
|
||||
None<Key>8:digit(8)\n\
|
||||
None<Key>9:digit(9)\n\
|
||||
Shift<Key>a:digit(A)\n\
|
||||
Shift<Key>b:digit(B)\n\
|
||||
Shift<Key>c:digit(C)\n\
|
||||
Shift<Key>d:digit(D)\n\
|
||||
Shift<Key>e:digit(E)\n\
|
||||
Shift<Key>f:digit(F)\n\
|
||||
<Key>KP_0:digit(0)\n\
|
||||
<Key>KP_1:digit(1)\n\
|
||||
<Key>KP_2:digit(2)\n\
|
||||
@ -71,6 +86,7 @@ XCalc*ti.bevel.screen.LCD.translations: #replace\n\
|
||||
<Key>KP_9:digit(9)\n\
|
||||
<Key>KP_Enter:equal()\n\
|
||||
<Key>KP_Equal:equal()\n\
|
||||
<Key>Return:equal()\n\
|
||||
<Key>KP_Multiply:multiply()\n\
|
||||
<Key>KP_Add:add()\n\
|
||||
<Key>KP_Subtract:subtract()\n\
|
||||
@ -87,6 +103,13 @@ XCalc*ti.bevel.screen.LCD.translations: #replace\n\
|
||||
:<Key>(:leftParen()\n\
|
||||
:<Key>):rightParen()\n\
|
||||
:<Key>!:factorial()\n\
|
||||
:<Key>|:or()\n\
|
||||
:<Key>&:and()\n\
|
||||
:<Key><:shl()\n\
|
||||
:<Key>>:shr()\n\
|
||||
:<Key>~:not()\n\
|
||||
:<Key>%:mod()\n\
|
||||
<Key>x:xor()\n\
|
||||
<Key>e:e()\n\
|
||||
:<Key>^:power()\n\
|
||||
<Key>p:pi()\n\
|
||||
@ -140,62 +163,95 @@ XCalc*ti.button14.translations: #override<Btn1Down>,<Btn1Up>:naturalLog()unset()
|
||||
XCalc*ti.button15.label: y^x
|
||||
XCalc*ti.button15.translations: #override<Btn1Down>,<Btn1Up>:power()unset()
|
||||
|
||||
XCalc*ti.button16.font: -adobe-symbol-*-*-*-*-*-120-*-*-*-*-*-*
|
||||
XCalc*ti.button16.label: \160
|
||||
XCalc*ti.button16.translations: #override<Btn1Down>,<Btn1Up>:pi()unset()
|
||||
XCalc*ti.button17.label: x!
|
||||
XCalc*ti.button17.translations: #override<Btn1Down>,<Btn1Up>:factorial()unset()
|
||||
XCalc*ti.button18.label: (
|
||||
XCalc*ti.button18.translations: #override<Btn1Down>,<Btn1Up>:leftParen()unset()
|
||||
XCalc*ti.button19.label: )
|
||||
XCalc*ti.button19.translations: #override<Btn1Down>,<Btn1Up>:rightParen()unset()
|
||||
XCalc*ti.button20.font: -adobe-symbol-*-*-*-*-*-120-*-*-*-*-*-*
|
||||
XCalc*ti.button20.label: \270
|
||||
XCalc*ti.button20.translations: #override<Btn1Down>,<Btn1Up>:divide()unset()
|
||||
XCalc*ti.button16.label: not
|
||||
XCalc*ti.button16.translations: #override<Btn1Down>,<Btn1Up>:not()unset()
|
||||
XCalc*ti.button17.label: and
|
||||
XCalc*ti.button17.translations: #override<Btn1Down>,<Btn1Up>:and()unset()
|
||||
XCalc*ti.button18.label: or
|
||||
XCalc*ti.button18.translations: #override<Btn1Down>,<Btn1Up>:or()unset()
|
||||
XCalc*ti.button19.label: xor
|
||||
XCalc*ti.button19.translations: #override<Btn1Down>,<Btn1Up>:xor()unset()
|
||||
XCalc*ti.button20.label: trunc
|
||||
XCalc*ti.button20.translations: #override<Btn1Down>,<Btn1Up>:trunc()unset()
|
||||
|
||||
XCalc*ti.button21.label: STO
|
||||
XCalc*ti.button21.translations: #override<Btn1Down>,<Btn1Up>:store()unset()
|
||||
XCalc*ti.button22.label: 7
|
||||
XCalc*ti.button22.translations: #override<Btn1Down>,<Btn1Up>:digit(7)unset()
|
||||
XCalc*ti.button23.label: 8
|
||||
XCalc*ti.button23.translations: #override<Btn1Down>,<Btn1Up>:digit(8)unset()
|
||||
XCalc*ti.button24.label: 9
|
||||
XCalc*ti.button24.translations: #override<Btn1Down>,<Btn1Up>:digit(9)unset()
|
||||
XCalc*ti.button25.label: *
|
||||
XCalc*ti.button25.translations: #override<Btn1Down>,<Btn1Up>:multiply()unset()
|
||||
XCalc*ti.button21.font: -adobe-symbol-*-*-*-*-*-120-*-*-*-*-*-*
|
||||
XCalc*ti.button21.label: \160
|
||||
XCalc*ti.button21.translations: #override<Btn1Down>,<Btn1Up>:pi()unset()
|
||||
XCalc*ti.button22.label: x!
|
||||
XCalc*ti.button22.translations: #override<Btn1Down>,<Btn1Up>:factorial()unset()
|
||||
XCalc*ti.button23.label: (
|
||||
XCalc*ti.button23.translations: #override<Btn1Down>,<Btn1Up>:leftParen()unset()
|
||||
XCalc*ti.button24.label: )
|
||||
XCalc*ti.button24.translations: #override<Btn1Down>,<Btn1Up>:rightParen()unset()
|
||||
XCalc*ti.button25.label: base
|
||||
XCalc*ti.button25.translations: #override<Btn1Down>,<Btn1Up>:base()unset()
|
||||
|
||||
XCalc*ti.button26.label: RCL
|
||||
XCalc*ti.button26.translations: #override<Btn1Down>,<Btn1Up>:recall()unset()
|
||||
XCalc*ti.button27.label: 4
|
||||
XCalc*ti.button27.translations: #override<Btn1Down>,<Btn1Up>:digit(4)unset()
|
||||
XCalc*ti.button28.label: 5
|
||||
XCalc*ti.button28.translations: #override<Btn1Down>,<Btn1Up>:digit(5)unset()
|
||||
XCalc*ti.button29.label: 6
|
||||
XCalc*ti.button29.translations: #override<Btn1Down>,<Btn1Up>:digit(6)unset()
|
||||
XCalc*ti.button30.label: -
|
||||
XCalc*ti.button30.translations: #override<Btn1Down>,<Btn1Up>:subtract()unset()
|
||||
XCalc*ti.button26.label: shl
|
||||
XCalc*ti.button26.translations: #override<Btn1Down>,<Btn1Up>:shl()unset()
|
||||
XCalc*ti.button27.label: D
|
||||
XCalc*ti.button27.translations: #override<Btn1Down>,<Btn1Up>:digit(D)unset()
|
||||
XCalc*ti.button28.label: E
|
||||
XCalc*ti.button28.translations: #override<Btn1Down>,<Btn1Up>:digit(E)unset()
|
||||
XCalc*ti.button29.label: F
|
||||
XCalc*ti.button29.translations: #override<Btn1Down>,<Btn1Up>:digit(F)unset()
|
||||
XCalc*ti.button30.label: shr
|
||||
XCalc*ti.button30.translations: #override<Btn1Down>,<Btn1Up>:shr()unset()
|
||||
|
||||
XCalc*ti.button31.label: SUM
|
||||
XCalc*ti.button31.translations: #override<Btn1Down>,<Btn1Up>:sum()unset()
|
||||
XCalc*ti.button32.label: 1
|
||||
XCalc*ti.button32.translations: #override<Btn1Down>,<Btn1Up>:digit(1)unset()
|
||||
XCalc*ti.button33.label: 2
|
||||
XCalc*ti.button33.translations: #override<Btn1Down>,<Btn1Up>:digit(2)unset()
|
||||
XCalc*ti.button34.label: 3
|
||||
XCalc*ti.button34.translations: #override<Btn1Down>,<Btn1Up>:digit(3)unset()
|
||||
XCalc*ti.button35.label: +
|
||||
XCalc*ti.button35.translations: #override<Btn1Down>,<Btn1Up>:add()unset()
|
||||
XCalc*ti.button31.label: mod
|
||||
XCalc*ti.button31.translations: #override<Btn1Down>,<Btn1Up>:mod()unset()
|
||||
XCalc*ti.button32.label: A
|
||||
XCalc*ti.button32.translations: #override<Btn1Down>,<Btn1Up>:digit(A)unset()
|
||||
XCalc*ti.button33.label: B
|
||||
XCalc*ti.button33.translations: #override<Btn1Down>,<Btn1Up>:digit(B)unset()
|
||||
XCalc*ti.button34.label: C
|
||||
XCalc*ti.button34.translations: #override<Btn1Down>,<Btn1Up>:digit(C)unset()
|
||||
XCalc*ti.button35.font: -adobe-symbol-*-*-*-*-*-120-*-*-*-*-*-*
|
||||
XCalc*ti.button35.label: \270
|
||||
XCalc*ti.button35.translations: #override<Btn1Down>,<Btn1Up>:divide()unset()
|
||||
|
||||
XCalc*ti.button36.label: EXC
|
||||
XCalc*ti.button36.translations: #override<Btn1Down>,<Btn1Up>:exchange()unset()
|
||||
XCalc*ti.button37.label: 0
|
||||
XCalc*ti.button37.translations: #override<Btn1Down>,<Btn1Up>:digit(0)unset()
|
||||
XCalc*ti.button38.label: .
|
||||
XCalc*ti.button38.translations: #override<Btn1Down>,<Btn1Up>:decimal()unset()
|
||||
XCalc*ti.button39.label: +/-
|
||||
XCalc*ti.button39.translations: #override<Btn1Down>,<Btn1Up>:negate()unset()
|
||||
XCalc*ti.button40.label: =
|
||||
XCalc*ti.button40.translations: #override<Btn1Down>,<Btn1Up>:equal()unset()
|
||||
XCalc*ti.button36.label: STO
|
||||
XCalc*ti.button36.translations: #override<Btn1Down>,<Btn1Up>:store()unset()
|
||||
XCalc*ti.button37.label: 7
|
||||
XCalc*ti.button37.translations: #override<Btn1Down>,<Btn1Up>:digit(7)unset()
|
||||
XCalc*ti.button38.label: 8
|
||||
XCalc*ti.button38.translations: #override<Btn1Down>,<Btn1Up>:digit(8)unset()
|
||||
XCalc*ti.button39.label: 9
|
||||
XCalc*ti.button39.translations: #override<Btn1Down>,<Btn1Up>:digit(9)unset()
|
||||
XCalc*ti.button40.label: *
|
||||
XCalc*ti.button40.translations: #override<Btn1Down>,<Btn1Up>:multiply()unset()
|
||||
|
||||
XCalc*ti.button41.label: RCL
|
||||
XCalc*ti.button41.translations: #override<Btn1Down>,<Btn1Up>:recall()unset()
|
||||
XCalc*ti.button42.label: 4
|
||||
XCalc*ti.button42.translations: #override<Btn1Down>,<Btn1Up>:digit(4)unset()
|
||||
XCalc*ti.button43.label: 5
|
||||
XCalc*ti.button43.translations: #override<Btn1Down>,<Btn1Up>:digit(5)unset()
|
||||
XCalc*ti.button44.label: 6
|
||||
XCalc*ti.button44.translations: #override<Btn1Down>,<Btn1Up>:digit(6)unset()
|
||||
XCalc*ti.button45.label: -
|
||||
XCalc*ti.button45.translations: #override<Btn1Down>,<Btn1Up>:subtract()unset()
|
||||
|
||||
XCalc*ti.button46.label: SUM
|
||||
XCalc*ti.button46.translations: #override<Btn1Down>,<Btn1Up>:sum()unset()
|
||||
XCalc*ti.button47.label: 1
|
||||
XCalc*ti.button47.translations: #override<Btn1Down>,<Btn1Up>:digit(1)unset()
|
||||
XCalc*ti.button48.label: 2
|
||||
XCalc*ti.button48.translations: #override<Btn1Down>,<Btn1Up>:digit(2)unset()
|
||||
XCalc*ti.button49.label: 3
|
||||
XCalc*ti.button49.translations: #override<Btn1Down>,<Btn1Up>:digit(3)unset()
|
||||
XCalc*ti.button50.label: +
|
||||
XCalc*ti.button50.translations: #override<Btn1Down>,<Btn1Up>:add()unset()
|
||||
|
||||
XCalc*ti.button51.label: EXC
|
||||
XCalc*ti.button51.translations: #override<Btn1Down>,<Btn1Up>:exchange()unset()
|
||||
XCalc*ti.button52.label: 0
|
||||
XCalc*ti.button52.translations: #override<Btn1Down>,<Btn1Up>:digit(0)unset()
|
||||
XCalc*ti.button53.label: .
|
||||
XCalc*ti.button53.translations: #override<Btn1Down>,<Btn1Up>:decimal()unset()
|
||||
XCalc*ti.button54.label: +/-
|
||||
XCalc*ti.button54.translations: #override<Btn1Down>,<Btn1Up>:negate()unset()
|
||||
XCalc*ti.button55.label: =
|
||||
XCalc*ti.button55.translations: #override<Btn1Down>,<Btn1Up>:equal()unset()
|
||||
|
||||
XCalc*ti.button1.horizDistance: 4
|
||||
XCalc*ti.button1.vertDistance: 12
|
||||
@ -290,6 +346,38 @@ XCalc*ti.button39.fromVert: button34
|
||||
XCalc*ti.button40.fromHoriz: button39
|
||||
XCalc*ti.button40.fromVert: button35
|
||||
|
||||
XCalc*ti.button41.horizDistance: 4
|
||||
XCalc*ti.button41.fromVert: button36
|
||||
XCalc*ti.button42.fromHoriz: button41
|
||||
XCalc*ti.button42.fromVert: button37
|
||||
XCalc*ti.button43.fromHoriz: button42
|
||||
XCalc*ti.button43.fromVert: button38
|
||||
XCalc*ti.button44.fromHoriz: button43
|
||||
XCalc*ti.button44.fromVert: button39
|
||||
XCalc*ti.button45.fromHoriz: button44
|
||||
XCalc*ti.button45.fromVert: button40
|
||||
|
||||
XCalc*ti.button46.horizDistance: 4
|
||||
XCalc*ti.button46.fromVert: button41
|
||||
XCalc*ti.button47.fromHoriz: button46
|
||||
XCalc*ti.button47.fromVert: button42
|
||||
XCalc*ti.button48.fromHoriz: button47
|
||||
XCalc*ti.button48.fromVert: button43
|
||||
XCalc*ti.button49.fromHoriz: button48
|
||||
XCalc*ti.button49.fromVert: button44
|
||||
XCalc*ti.button50.fromHoriz: button49
|
||||
XCalc*ti.button50.fromVert: button45
|
||||
|
||||
XCalc*ti.button51.horizDistance: 4
|
||||
XCalc*ti.button51.fromVert: button46
|
||||
XCalc*ti.button52.fromHoriz: button51
|
||||
XCalc*ti.button52.fromVert: button47
|
||||
XCalc*ti.button53.fromHoriz: button52
|
||||
XCalc*ti.button53.fromVert: button48
|
||||
XCalc*ti.button54.fromHoriz: button53
|
||||
XCalc*ti.button54.fromVert: button49
|
||||
XCalc*ti.button55.fromHoriz: button54
|
||||
XCalc*ti.button55.fromVert: button50
|
||||
|
||||
!XCalc*hp.Geometry: 336x164
|
||||
XCalc*hp.bevel.screen.LCD.width: 186
|
||||
|
88
app/xcalc/configure
vendored
88
app/xcalc/configure
vendored
@ -1,8 +1,8 @@
|
||||
#! /bin/sh
|
||||
# Guess values for system-dependent variables and create Makefiles.
|
||||
# Generated by GNU Autoconf 2.69 for xcalc 1.0.6.
|
||||
# Generated by GNU Autoconf 2.69 for xcalc 1.1.0.
|
||||
#
|
||||
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
|
||||
# Report bugs to <https://gitlab.freedesktop.org/xorg/app/xcalc/issues>.
|
||||
#
|
||||
#
|
||||
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
|
||||
@ -267,7 +267,7 @@ fi
|
||||
$as_echo "$0: be upgraded to zsh 4.3.4 or later."
|
||||
else
|
||||
$as_echo "$0: Please tell bug-autoconf@gnu.org and
|
||||
$0: https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
|
||||
$0: https://gitlab.freedesktop.org/xorg/app/xcalc/issues
|
||||
$0: about your system, including any error possibly output
|
||||
$0: before this message. Then install a modern shell, or
|
||||
$0: manually run the script under such a shell if you do
|
||||
@ -581,9 +581,9 @@ MAKEFLAGS=
|
||||
# Identity of this package.
|
||||
PACKAGE_NAME='xcalc'
|
||||
PACKAGE_TARNAME='xcalc'
|
||||
PACKAGE_VERSION='1.0.6'
|
||||
PACKAGE_STRING='xcalc 1.0.6'
|
||||
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
|
||||
PACKAGE_VERSION='1.1.0'
|
||||
PACKAGE_STRING='xcalc 1.1.0'
|
||||
PACKAGE_BUGREPORT='https://gitlab.freedesktop.org/xorg/app/xcalc/issues'
|
||||
PACKAGE_URL=''
|
||||
|
||||
ac_unique_file="Makefile.am"
|
||||
@ -1317,7 +1317,7 @@ if test "$ac_init_help" = "long"; then
|
||||
# Omit some internal or obsolete options to make the list less imposing.
|
||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||
cat <<_ACEOF
|
||||
\`configure' configures xcalc 1.0.6 to adapt to many kinds of systems.
|
||||
\`configure' configures xcalc 1.1.0 to adapt to many kinds of systems.
|
||||
|
||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||
|
||||
@ -1387,7 +1387,7 @@ fi
|
||||
|
||||
if test -n "$ac_init_help"; then
|
||||
case $ac_init_help in
|
||||
short | recursive ) echo "Configuration of xcalc 1.0.6:";;
|
||||
short | recursive ) echo "Configuration of xcalc 1.1.0:";;
|
||||
esac
|
||||
cat <<\_ACEOF
|
||||
|
||||
@ -1443,7 +1443,7 @@ Some influential environment variables:
|
||||
Use these variables to override the choices made by `configure' or to help
|
||||
it to find libraries and programs with nonstandard names/locations.
|
||||
|
||||
Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
|
||||
Report bugs to <https://gitlab.freedesktop.org/xorg/app/xcalc/issues>.
|
||||
_ACEOF
|
||||
ac_status=$?
|
||||
fi
|
||||
@ -1506,7 +1506,7 @@ fi
|
||||
test -n "$ac_init_help" && exit $ac_status
|
||||
if $ac_init_version; then
|
||||
cat <<\_ACEOF
|
||||
xcalc configure 1.0.6
|
||||
xcalc configure 1.1.0
|
||||
generated by GNU Autoconf 2.69
|
||||
|
||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||
@ -1830,7 +1830,7 @@ cat >config.log <<_ACEOF
|
||||
This file contains any messages produced by compilers while
|
||||
running configure, to aid debugging if configure makes a mistake.
|
||||
|
||||
It was created by xcalc $as_me 1.0.6, which was
|
||||
It was created by xcalc $as_me 1.1.0, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
$ $0 $@
|
||||
@ -2659,7 +2659,7 @@ fi
|
||||
|
||||
# Define the identity of the package.
|
||||
PACKAGE='xcalc'
|
||||
VERSION='1.0.6'
|
||||
VERSION='1.1.0'
|
||||
|
||||
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
@ -10303,10 +10303,11 @@ _ACEOF
|
||||
|
||||
|
||||
|
||||
CHANGELOG_CMD="(GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp && \
|
||||
CHANGELOG_CMD="((GIT_DIR=\$(top_srcdir)/.git git log > \$(top_srcdir)/.changelog.tmp) 2>/dev/null && \
|
||||
mv \$(top_srcdir)/.changelog.tmp \$(top_srcdir)/ChangeLog) \
|
||||
|| (rm -f \$(top_srcdir)/.changelog.tmp; touch \$(top_srcdir)/ChangeLog; \
|
||||
echo 'git directory not found: installing possibly empty changelog.' >&2)"
|
||||
|| (rm -f \$(top_srcdir)/.changelog.tmp; test -e \$(top_srcdir)/ChangeLog || ( \
|
||||
touch \$(top_srcdir)/ChangeLog; \
|
||||
echo 'git failed to create ChangeLog: installing empty ChangeLog.' >&2))"
|
||||
|
||||
|
||||
|
||||
@ -10314,14 +10315,45 @@ echo 'git directory not found: installing possibly empty changelog.' >&2)"
|
||||
macros_datadir=`$PKG_CONFIG --print-errors --variable=pkgdatadir xorg-macros`
|
||||
INSTALL_CMD="(cp -f "$macros_datadir/INSTALL" \$(top_srcdir)/.INSTALL.tmp && \
|
||||
mv \$(top_srcdir)/.INSTALL.tmp \$(top_srcdir)/INSTALL) \
|
||||
|| (rm -f \$(top_srcdir)/.INSTALL.tmp; touch \$(top_srcdir)/INSTALL; \
|
||||
echo 'util-macros \"pkgdatadir\" from xorg-macros.pc not found: installing possibly empty INSTALL.' >&2)"
|
||||
|| (rm -f \$(top_srcdir)/.INSTALL.tmp; test -e \$(top_srcdir)/INSTALL || ( \
|
||||
touch \$(top_srcdir)/INSTALL; \
|
||||
echo 'failed to copy INSTALL from util-macros: installing empty INSTALL.' >&2))"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
case $host_os in
|
||||
solaris*)
|
||||
# Solaris 2.0 - 11.3 use SysV man page section numbers, so we
|
||||
# check for a man page file found in later versions that use
|
||||
# traditional section numbers instead
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for /usr/share/man/man7/attributes.7" >&5
|
||||
$as_echo_n "checking for /usr/share/man/man7/attributes.7... " >&6; }
|
||||
if ${ac_cv_file__usr_share_man_man7_attributes_7+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
test "$cross_compiling" = yes &&
|
||||
as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
|
||||
if test -r "/usr/share/man/man7/attributes.7"; then
|
||||
ac_cv_file__usr_share_man_man7_attributes_7=yes
|
||||
else
|
||||
ac_cv_file__usr_share_man_man7_attributes_7=no
|
||||
fi
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__usr_share_man_man7_attributes_7" >&5
|
||||
$as_echo "$ac_cv_file__usr_share_man_man7_attributes_7" >&6; }
|
||||
if test "x$ac_cv_file__usr_share_man_man7_attributes_7" = xyes; then :
|
||||
SYSV_MAN_SECTIONS=false
|
||||
else
|
||||
SYSV_MAN_SECTIONS=true
|
||||
fi
|
||||
|
||||
;;
|
||||
*) SYSV_MAN_SECTIONS=false ;;
|
||||
esac
|
||||
|
||||
if test x$APP_MAN_SUFFIX = x ; then
|
||||
APP_MAN_SUFFIX=1
|
||||
fi
|
||||
@ -10337,8 +10369,8 @@ if test x$LIB_MAN_DIR = x ; then
|
||||
fi
|
||||
|
||||
if test x$FILE_MAN_SUFFIX = x ; then
|
||||
case $host_os in
|
||||
solaris*) FILE_MAN_SUFFIX=4 ;;
|
||||
case $SYSV_MAN_SECTIONS in
|
||||
true) FILE_MAN_SUFFIX=4 ;;
|
||||
*) FILE_MAN_SUFFIX=5 ;;
|
||||
esac
|
||||
fi
|
||||
@ -10347,8 +10379,8 @@ if test x$FILE_MAN_DIR = x ; then
|
||||
fi
|
||||
|
||||
if test x$MISC_MAN_SUFFIX = x ; then
|
||||
case $host_os in
|
||||
solaris*) MISC_MAN_SUFFIX=5 ;;
|
||||
case $SYSV_MAN_SECTIONS in
|
||||
true) MISC_MAN_SUFFIX=5 ;;
|
||||
*) MISC_MAN_SUFFIX=7 ;;
|
||||
esac
|
||||
fi
|
||||
@ -10357,8 +10389,8 @@ if test x$MISC_MAN_DIR = x ; then
|
||||
fi
|
||||
|
||||
if test x$DRIVER_MAN_SUFFIX = x ; then
|
||||
case $host_os in
|
||||
solaris*) DRIVER_MAN_SUFFIX=7 ;;
|
||||
case $SYSV_MAN_SECTIONS in
|
||||
true) DRIVER_MAN_SUFFIX=7 ;;
|
||||
*) DRIVER_MAN_SUFFIX=4 ;;
|
||||
esac
|
||||
fi
|
||||
@ -10367,8 +10399,8 @@ if test x$DRIVER_MAN_DIR = x ; then
|
||||
fi
|
||||
|
||||
if test x$ADMIN_MAN_SUFFIX = x ; then
|
||||
case $host_os in
|
||||
solaris*) ADMIN_MAN_SUFFIX=1m ;;
|
||||
case $SYSV_MAN_SECTIONS in
|
||||
true) ADMIN_MAN_SUFFIX=1m ;;
|
||||
*) ADMIN_MAN_SUFFIX=8 ;;
|
||||
esac
|
||||
fi
|
||||
@ -11193,7 +11225,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||
# report actual input values of CONFIG_FILES etc. instead of their
|
||||
# values after options handling.
|
||||
ac_log="
|
||||
This file was extended by xcalc $as_me 1.0.6, which was
|
||||
This file was extended by xcalc $as_me 1.1.0, which was
|
||||
generated by GNU Autoconf 2.69. Invocation command line was
|
||||
|
||||
CONFIG_FILES = $CONFIG_FILES
|
||||
@ -11253,13 +11285,13 @@ $config_headers
|
||||
Configuration commands:
|
||||
$config_commands
|
||||
|
||||
Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>."
|
||||
Report bugs to <https://gitlab.freedesktop.org/xorg/app/xcalc/issues>."
|
||||
|
||||
_ACEOF
|
||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||
ac_cs_version="\\
|
||||
xcalc config.status 1.0.6
|
||||
xcalc config.status 1.1.0
|
||||
configured by $0, generated by GNU Autoconf 2.69,
|
||||
with options \\"\$ac_cs_config\\"
|
||||
|
||||
|
@ -23,8 +23,8 @@ dnl Process this file with autoconf to create configure.
|
||||
|
||||
# Initialize Autoconf
|
||||
AC_PREREQ([2.60])
|
||||
AC_INIT([xcalc], [1.0.6],
|
||||
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [xcalc])
|
||||
AC_INIT([xcalc], [1.1.0],
|
||||
[https://gitlab.freedesktop.org/xorg/app/xcalc/issues], [xcalc])
|
||||
AC_CONFIG_SRCDIR([Makefile.am])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
|
||||
|
@ -130,7 +130,7 @@ Computes the tangent, or arctangent when inverted.
|
||||
The corresponding action procedure is \fBtangent()\fP.
|
||||
.TP 10
|
||||
.B DRG
|
||||
Changes the DRG mode, as indicated by 'DEG', 'RAD', or 'GRAD' at the bottom of
|
||||
Changes the DRG mode, as indicated by 'DEG', 'RAD', or 'GRAD' at the bottom
|
||||
of the calculator ``liquid crystal'' display.
|
||||
When in 'DEG' mode, numbers in the display are taken as being
|
||||
degrees. In 'RAD' mode, numbers are in radians, and in 'GRAD' mode, numbers
|
||||
@ -168,6 +168,26 @@ example "2 y^x 3 =" results in "8", which is 2^3. For a further example,
|
||||
"(1+2+3) y^x (1+2) =" equals "6 y^x 3" which equals "216".
|
||||
The corresponding action procedure is \fBpower()\fR.
|
||||
.TP 10
|
||||
.B not
|
||||
Performs a bitwise not.
|
||||
The corresponding action procedure is \fBnot()\fP.
|
||||
.TP 10
|
||||
.B and
|
||||
Performs a bitwise and.
|
||||
The corresponding action procedure is \fBand()\fP.
|
||||
.TP 10
|
||||
.B or
|
||||
Performs a bitwise or.
|
||||
The corresponding action procedure is \fBor()\fP.
|
||||
.TP 10
|
||||
.B xor
|
||||
Performs a bitwise exclusive or.
|
||||
The corresponding action procedure is \fBxor()\fP.
|
||||
.TP 10
|
||||
.B trunc
|
||||
Truncates the number in the display to an integer.
|
||||
The corresponding action procedure is \fBtrunc()\fP.
|
||||
.TP 10
|
||||
.B PI
|
||||
The constant 'pi'. (3.1415927....)
|
||||
The corresponding action procedure is \fBpi()\fR.
|
||||
@ -186,6 +206,30 @@ is \fBleftParen()\fR.
|
||||
Right parenthesis. The corresponding action procedure for TI calculators
|
||||
is \fBrightParen()\fR.
|
||||
.TP 10
|
||||
.B base
|
||||
Changes the number base, as indicated by 'DEC', 'HEX, or 'OCT' at the bottom
|
||||
of the calculator display.
|
||||
When in 'DEC' mode, numbers in the display are taken as being decimal
|
||||
(base 10). In 'HEX' mode, numbers are in hexadecimal (base 16), and in 'OCT'
|
||||
mode, numbers are in octal (base 8).
|
||||
The corresponding action procedure is \fBbase()\fP.
|
||||
.TP 10
|
||||
.B shl
|
||||
Performs an arithmetic bitwise shift left, For example, entering "1 shl 2"
|
||||
should result in "4".
|
||||
The corresponding action procedure is \fBshl()\fR.
|
||||
.TP 10
|
||||
.B shr
|
||||
Performs an arithmetic bitwise shift right, For example, entering "8 shr 1"
|
||||
should result in "4".
|
||||
The corresponding action procedure is \fBshr()\fR.
|
||||
.TP 10
|
||||
.B mod
|
||||
Performs the modulo operation, which calculates the remainder when dividing
|
||||
the first number by the second. For example, entering "14 mod 8" should
|
||||
result in "6".
|
||||
The corresponding action procedure is \fBmod()\fR.
|
||||
.TP 10
|
||||
.B /
|
||||
Division. The corresponding action procedure is \fBdivide()\fR.
|
||||
.TP 10
|
||||
|
187
app/xcalc/math.c
187
app/xcalc/math.c
@ -43,7 +43,7 @@ jmp_buf env;
|
||||
* functions. Much of it is shared between the infix and rpn modes.
|
||||
*/
|
||||
|
||||
static int flagINV, flagPAREN, flagM, drgmode; /* display flags */
|
||||
static int flagINV, flagPAREN, flagM, drgmode, numbase; /* display flags */
|
||||
|
||||
static double drg2rad=M_PI/180.0; /* Conversion factors for trig funcs */
|
||||
static double rad2drg=180.0/M_PI;
|
||||
@ -94,17 +94,47 @@ strlcpy(char *dst, const char *src, size_t size)
|
||||
* is non-zero then an error has occurred. On some systems (e.g. Ultrix),
|
||||
* sscanf will call lower level routines that will set errno.
|
||||
*/
|
||||
|
||||
static void
|
||||
parse_double (const char *src, const char *fmt, double *dp)
|
||||
parse_double(double *dp)
|
||||
{
|
||||
unsigned long n = 0;
|
||||
int olderrno = errno;
|
||||
|
||||
(void) sscanf (src, fmt, dp);
|
||||
switch (numbase) {
|
||||
case 8:
|
||||
(void)sscanf(dispstr, "%lo", &n);
|
||||
*dp = (double)n;
|
||||
break;
|
||||
case 16:
|
||||
(void)sscanf(dispstr, "%lX", &n);
|
||||
*dp = (double)n;
|
||||
break;
|
||||
default:
|
||||
(void)sscanf(dispstr, "%lf", dp);
|
||||
}
|
||||
|
||||
errno = olderrno;
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format the given double according to the
|
||||
* selected number base.
|
||||
*/
|
||||
static void
|
||||
format_double(double n)
|
||||
{
|
||||
switch (numbase) {
|
||||
case 8:
|
||||
snprintf(dispstr, sizeof(dispstr), "%lo", (long)n);
|
||||
break;
|
||||
case 16:
|
||||
snprintf(dispstr, sizeof(dispstr), "%lX", (long)n);
|
||||
break;
|
||||
default:
|
||||
snprintf(dispstr, sizeof(dispstr), "%.8g", n);
|
||||
}
|
||||
}
|
||||
|
||||
/*********************************/
|
||||
int pre_op(int keynum)
|
||||
@ -181,12 +211,13 @@ void post_op(void)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
static void
|
||||
DrawDisplay(void)
|
||||
{
|
||||
if (strlen(dispstr) > 12) { /* strip out some decimal digits */
|
||||
char *estr = strchr(dispstr,'e'); /* search for exponent part */
|
||||
if (strlen(dispstr) >= MAXDISP) { /* strip out some decimal digits */
|
||||
char *estr = index(dispstr,'e'); /* search for exponent part */
|
||||
if (!estr) dispstr[12]='\0'; /* no exp, just trunc. */
|
||||
else {
|
||||
char tmp[32];
|
||||
@ -204,6 +235,28 @@ DrawDisplay(void)
|
||||
setflag(XCalc_RADIAN, (drgmode==RAD));
|
||||
setflag(XCalc_GRADAM, (drgmode==GRAD));
|
||||
setflag(XCalc_PAREN, (flagPAREN));
|
||||
setflag(XCalc_HEX, (numbase==16));
|
||||
setflag(XCalc_DEC, (numbase==10));
|
||||
setflag(XCalc_OCT, (numbase==8));
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
void
|
||||
change_base(void)
|
||||
{
|
||||
parse_double(&dnum);
|
||||
|
||||
if (dnum >= 0) {
|
||||
switch (numbase) {
|
||||
case 8: numbase = 10; break;
|
||||
case 10: numbase = 16; break;
|
||||
case 16: numbase = 8; break;
|
||||
}
|
||||
|
||||
format_double(dnum);
|
||||
} else strlcpy(dispstr, "error", sizeof(dispstr));
|
||||
|
||||
DrawDisplay();
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
@ -211,11 +264,12 @@ void
|
||||
numeric(int keynum)
|
||||
{
|
||||
char st[2];
|
||||
int cell = 0;
|
||||
|
||||
flagINV=0;
|
||||
|
||||
if (rpn && (memop == kSTO || memop == kRCL || memop == kSUM)) {
|
||||
int cell = 0;
|
||||
|
||||
switch (keynum) {
|
||||
case kONE: cell = 1; break;
|
||||
case kTWO: cell = 2; break;
|
||||
@ -238,7 +292,7 @@ numeric(int keynum)
|
||||
case kRCL:
|
||||
PushNum(dnum);
|
||||
dnum = mem[cell];
|
||||
snprintf(dispstr, sizeof(dispstr), "%.8g", dnum);
|
||||
format_double(dnum);
|
||||
lift_enabled = 1;
|
||||
entered = 1;
|
||||
clrdisp++;
|
||||
@ -267,7 +321,9 @@ numeric(int keynum)
|
||||
if ((int) strlen(dispstr) >= MAXDISP)
|
||||
return;
|
||||
|
||||
st[0] = '\0';
|
||||
switch (keynum){
|
||||
case kZERO: st[0] = '0'; break;
|
||||
case kONE: st[0] = '1'; break;
|
||||
case kTWO: st[0] = '2'; break;
|
||||
case kTHREE: st[0] = '3'; break;
|
||||
@ -275,10 +331,18 @@ numeric(int keynum)
|
||||
case kFIVE: st[0] = '5'; break;
|
||||
case kSIX: st[0] = '6'; break;
|
||||
case kSEVEN: st[0] = '7'; break;
|
||||
case kEIGHT: st[0] = '8'; break;
|
||||
case kNINE: st[0] = '9'; break;
|
||||
case kZERO: st[0] = '0'; break;
|
||||
case kEIGHT: if (numbase > 8) st[0] = '8'; break;
|
||||
case kNINE: if (numbase > 8) st[0] = '9'; break;
|
||||
case kxA: if (numbase > 10) st[0] = 'A'; break;
|
||||
case kxB: if (numbase > 10) st[0] = 'B'; break;
|
||||
case kxC: if (numbase > 10) st[0] = 'C'; break;
|
||||
case kxD: if (numbase > 10) st[0] = 'D'; break;
|
||||
case kxE: if (numbase > 10) st[0] = 'E'; break;
|
||||
case kxF: if (numbase > 10) st[0] = 'F'; break;
|
||||
}
|
||||
|
||||
if (st[0] == '\0')
|
||||
return;
|
||||
st[1] = '\0';
|
||||
strcat(dispstr,st);
|
||||
|
||||
@ -432,7 +496,7 @@ twoop(int keynum)
|
||||
}
|
||||
|
||||
if (entered==1)
|
||||
parse_double(dispstr,"%lf",&dnum);
|
||||
parse_double(&dnum);
|
||||
|
||||
clrdisp=CLR=1;
|
||||
entered=Dpoint=exponent=0;
|
||||
@ -450,7 +514,7 @@ twoop(int keynum)
|
||||
/* now, if the current op (keynum) is of
|
||||
higher priority than the lastop, the current
|
||||
op and number are just pushed on top
|
||||
Priorities: (Y^X) > *,/ > +,- */
|
||||
Priorities: (Y^X) > *,/ > +,- > >>,<< > & > ^ > ~ */
|
||||
|
||||
if (priority(keynum) > priority(lastop)) {
|
||||
PushNum(dnum);
|
||||
@ -465,10 +529,17 @@ twoop(int keynum)
|
||||
case kMUL: acc *= dnum; break;
|
||||
case kDIV: acc /= dnum; break;
|
||||
case kPOW: acc = pow(acc,dnum); break;
|
||||
case kMOD: acc = (long)acc % (long)dnum; break;
|
||||
case kAND: acc = (long)acc & (long)dnum; break;
|
||||
case kOR: acc = (long)acc | (long)dnum; break;
|
||||
case kXOR: acc = (long)acc ^ (long)dnum; break;
|
||||
case kSHL: acc = (long)acc << (long)dnum; break;
|
||||
case kSHR: acc = (long)acc >> (long)dnum; break;
|
||||
}
|
||||
|
||||
PushNum(acc);
|
||||
PushOp(keynum);
|
||||
snprintf(dispstr, sizeof(dispstr), "%.8g", acc);
|
||||
format_double(acc);
|
||||
DrawDisplay();
|
||||
dnum=acc;
|
||||
}
|
||||
@ -490,7 +561,7 @@ twof(int keynum)
|
||||
if (!entered)
|
||||
return;
|
||||
if (entered==1)
|
||||
parse_double(dispstr, "%lf", &dnum);
|
||||
parse_double(&dnum);
|
||||
acc = PopNum();
|
||||
switch(keynum) {
|
||||
case kADD: acc += dnum; break;
|
||||
@ -498,9 +569,16 @@ twof(int keynum)
|
||||
case kMUL: acc *= dnum; break;
|
||||
case kDIV: acc /= dnum; break;
|
||||
case kPOW: acc = pow(acc,dnum); break;
|
||||
case kXXY: PushNum(dnum);
|
||||
case kXXY: PushNum(dnum); break;
|
||||
case kMOD: acc = (long)acc % (long)dnum; break;
|
||||
case kAND: acc = (long)acc & (long)dnum; break;
|
||||
case kOR: acc = (long)acc | (long)dnum; break;
|
||||
case kXOR: acc = (long)acc ^ (long)dnum; break;
|
||||
case kSHL: acc = (long)acc << (long)dnum; break;
|
||||
case kSHR: acc = (long)acc >> (long)dnum; break;
|
||||
}
|
||||
snprintf(dispstr, sizeof(dispstr), "%.8g", acc);
|
||||
|
||||
format_double(acc);
|
||||
DrawDisplay();
|
||||
clrdisp++;
|
||||
Dpoint = exponent = 0;
|
||||
@ -520,7 +598,7 @@ entrf(void)
|
||||
Dpoint=exponent=0;
|
||||
|
||||
if (entered==1)
|
||||
parse_double(dispstr,"%lf",&dnum);
|
||||
parse_double(&dnum);
|
||||
entered=2;
|
||||
memop = kENTR;
|
||||
PushNum(dnum);
|
||||
@ -538,7 +616,7 @@ equf(void)
|
||||
Dpoint=exponent=0;
|
||||
|
||||
if (entered==1)
|
||||
parse_double(dispstr,"%lf",&dnum);
|
||||
parse_double(&dnum);
|
||||
entered=2;
|
||||
|
||||
PushNum(dnum);
|
||||
@ -561,12 +639,24 @@ equf(void)
|
||||
case kLPAR: flagPAREN--;
|
||||
PushNum(acc);
|
||||
break;
|
||||
case kMOD: acc = (long)acc % (long)dnum;
|
||||
break;
|
||||
case kAND: acc = (long)acc & (long)dnum;
|
||||
break;
|
||||
case kOR: acc = (long)acc | (long)dnum;
|
||||
break;
|
||||
case kXOR: acc = (long)acc ^ (long)dnum;
|
||||
break;
|
||||
case kSHL: acc = (long)acc << (long)dnum;
|
||||
break;
|
||||
case kSHR: acc = (long)acc >> (long)dnum;
|
||||
break;
|
||||
}
|
||||
dnum=acc;
|
||||
PushNum(dnum);
|
||||
}
|
||||
|
||||
snprintf(dispstr, sizeof(dispstr), "%.8g", dnum);
|
||||
format_double(dnum);
|
||||
DrawDisplay();
|
||||
}
|
||||
|
||||
@ -585,13 +675,13 @@ rollf(void)
|
||||
if (!entered)
|
||||
return;
|
||||
if (entered==1)
|
||||
parse_double(dispstr, "%lf", &dnum);
|
||||
parse_double(&dnum);
|
||||
entered = 2;
|
||||
lift_enabled = 1;
|
||||
RollNum(flagINV);
|
||||
flagINV=0;
|
||||
clrdisp++;
|
||||
snprintf(dispstr, sizeof(dispstr), "%.8g", dnum);
|
||||
format_double(dnum);
|
||||
DrawDisplay();
|
||||
}
|
||||
|
||||
@ -609,7 +699,7 @@ rparf(void)
|
||||
Dpoint=exponent=0;
|
||||
|
||||
if (entered==1)
|
||||
parse_double(dispstr,"%lf",&dnum);
|
||||
parse_double(&dnum);
|
||||
entered=2;
|
||||
|
||||
PushNum(dnum);
|
||||
@ -628,6 +718,18 @@ rparf(void)
|
||||
break;
|
||||
case kPOW: acc = pow(acc,dnum);
|
||||
break;
|
||||
case kMOD: acc = (long)acc % (long)dnum;
|
||||
break;
|
||||
case kAND: acc = (long)acc & (long)dnum;
|
||||
break;
|
||||
case kOR: acc = (long)acc | (long)dnum;
|
||||
break;
|
||||
case kXOR: acc = (long)acc ^ (long)dnum;
|
||||
break;
|
||||
case kSHL: acc = (long)acc << (long)dnum;
|
||||
break;
|
||||
case kSHR: acc = (long)acc >> (long)dnum;
|
||||
break;
|
||||
}
|
||||
dnum=acc;
|
||||
PushNum(dnum);
|
||||
@ -635,7 +737,7 @@ rparf(void)
|
||||
(void) PopNum();
|
||||
flagPAREN--;
|
||||
entered=2;
|
||||
snprintf(dispstr, sizeof(dispstr), "%.8g", dnum);
|
||||
format_double(dnum);
|
||||
DrawDisplay();
|
||||
}
|
||||
|
||||
@ -644,7 +746,7 @@ drgf(void)
|
||||
{
|
||||
if (flagINV) {
|
||||
if (entered==1)
|
||||
parse_double(dispstr,"%lf",&dnum);
|
||||
parse_double(&dnum);
|
||||
switch (drgmode) {
|
||||
case DEG: dnum=dnum*M_PI/180.0; break;
|
||||
case RAD: dnum=dnum*200.0/M_PI; break;
|
||||
@ -653,7 +755,7 @@ drgf(void)
|
||||
entered=2;
|
||||
clrdisp=1;
|
||||
flagINV=0;
|
||||
snprintf(dispstr, sizeof(dispstr), "%.8g", dnum);
|
||||
format_double(dnum);
|
||||
}
|
||||
|
||||
flagINV=0;
|
||||
@ -684,7 +786,7 @@ memf(int keynum)
|
||||
{
|
||||
memop = keynum;
|
||||
if (entered==1)
|
||||
parse_double(dispstr,"%lf",&dnum);
|
||||
parse_double(&dnum);
|
||||
entered = 2;
|
||||
clrdisp++;
|
||||
lift_enabled = 0;
|
||||
@ -697,22 +799,22 @@ oneop(int keynum)
|
||||
double dtmp;
|
||||
|
||||
if (entered==1)
|
||||
parse_double(dispstr,"%lf",&dnum);
|
||||
parse_double(&dnum);
|
||||
entered = 2;
|
||||
|
||||
switch (keynum) { /* do the actual math fn. */
|
||||
case kE: if (rpn && memop != kENTR) PushNum(dnum); dnum=M_E; break;
|
||||
case kPI: if (rpn && memop != kENTR) PushNum(dnum); dnum=M_PI; break;
|
||||
case kRECIP: dnum=1.0/dnum; break;
|
||||
case kSQR: flagINV = !flagINV; /* fall through to */
|
||||
case kSQR: flagINV = !flagINV; /* fall through */
|
||||
case kSQRT: if (flagINV) dnum=dnum*dnum;
|
||||
else dnum=sqrt(dnum);
|
||||
break;
|
||||
case k10X: flagINV = !flagINV; /* fall through to */
|
||||
case k10X: flagINV = !flagINV; /* fall through */
|
||||
case kLOG: if (flagINV) dnum=pow(10.0,dnum);
|
||||
else dnum=log10(dnum);
|
||||
break;
|
||||
case kEXP: flagINV = !flagINV; /* fall through to */
|
||||
case kEXP: flagINV = !flagINV; /* fall through */
|
||||
case kLN: if (flagINV) dnum=exp(dnum);
|
||||
else dnum=log(dnum);
|
||||
break;
|
||||
@ -740,6 +842,8 @@ oneop(int keynum)
|
||||
for (j=1,dnum=1.0; j<=i; j++)
|
||||
dnum*=(float) j;
|
||||
break;
|
||||
case kNOT: dnum = ~(long)dnum; break;
|
||||
case kTRUNC: dnum = trunc(dnum); break;
|
||||
}
|
||||
|
||||
if (entered==3) { /* error */
|
||||
@ -752,7 +856,7 @@ oneop(int keynum)
|
||||
clrdisp=1;
|
||||
flagINV=0;
|
||||
lift_enabled = 1;
|
||||
snprintf(dispstr, sizeof(dispstr), "%.8g", dnum);
|
||||
format_double(dnum);
|
||||
DrawDisplay();
|
||||
}
|
||||
|
||||
@ -760,13 +864,12 @@ void
|
||||
offf(void)
|
||||
{
|
||||
/* full reset */
|
||||
int i;
|
||||
ResetCalc();
|
||||
entered=clrdisp=1;
|
||||
lift_enabled = 0;
|
||||
dnum=mem[0]=0.0;
|
||||
if (rpn)
|
||||
for (i=1; i < XCALC_MEMORY; i++)
|
||||
for (int i=1; i < XCALC_MEMORY; i++)
|
||||
mem[i]=0.0;
|
||||
exponent=Dpoint=0;
|
||||
DrawDisplay();
|
||||
@ -899,11 +1002,17 @@ priority(int op)
|
||||
/*******/
|
||||
{
|
||||
switch (op) {
|
||||
case kPOW: return(2);
|
||||
case kPOW: return(6);
|
||||
case kMUL:
|
||||
case kDIV: return(1);
|
||||
case kDIV:
|
||||
case kMOD: return(5);
|
||||
case kADD:
|
||||
case kSUB: return(0);
|
||||
case kSUB: return(4);
|
||||
case kSHL:
|
||||
case kSHR: return(3);
|
||||
case kAND: return(2);
|
||||
case kXOR: return(1);
|
||||
case kOR: return(0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -915,12 +1024,16 @@ ResetCalc(void)
|
||||
/********/
|
||||
{
|
||||
flagM=flagINV=flagPAREN=0; drgmode=DEG;
|
||||
numbase=(!numbase ? 10 : numbase);
|
||||
setflag(XCalc_MEMORY, False);
|
||||
setflag(XCalc_INVERSE, False);
|
||||
setflag(XCalc_PAREN, False);
|
||||
setflag(XCalc_RADIAN, False);
|
||||
setflag(XCalc_GRADAM, False);
|
||||
setflag(XCalc_DEGREE, True);
|
||||
setflag(XCalc_HEX, False);
|
||||
setflag(XCalc_DEC, True);
|
||||
setflag(XCalc_OCT, False);
|
||||
strlcpy(dispstr, "0", sizeof(dispstr));
|
||||
draw(dispstr);
|
||||
ClearStacks();
|
||||
|
@ -74,7 +74,7 @@ static Display *dpy = NULL; /* connection to the X server */
|
||||
static Widget toplevel=NULL; /* top level shell widget */
|
||||
static Widget calculator=NULL; /* an underlying form widget */
|
||||
static Widget LCD = NULL; /* liquid crystal display */
|
||||
static Widget ind[6]; /* mode indicators in the screen */
|
||||
static Widget ind[9]; /* mode indicators in the screen */
|
||||
static char selstr[LCD_STR_LEN]; /* storage for selections from the LCD */
|
||||
/* checkerboard used in mono mode */
|
||||
static XtAppContext xtcontext; /* Toolkit application context */
|
||||
@ -221,6 +221,18 @@ static void create_display(Widget parent)
|
||||
/* () - the parenthesis indicator */
|
||||
ind[XCalc_PAREN] = XtCreateManagedWidget("P", labelWidgetClass, screen,
|
||||
args, XtNumber(args));
|
||||
|
||||
/* HEX - the hexadecimal (base 16) indicator */
|
||||
ind[XCalc_HEX] = XtCreateManagedWidget("HEX", labelWidgetClass, screen,
|
||||
args, XtNumber(args));
|
||||
|
||||
/* DEC - the hexadecimal (base 16) indicator */
|
||||
ind[XCalc_DEC] = XtCreateManagedWidget("DEC", labelWidgetClass, screen,
|
||||
args, XtNumber(args));
|
||||
|
||||
/* OCT - the octal (base 8) indicator */
|
||||
ind[XCalc_OCT] = XtCreateManagedWidget("OCT", labelWidgetClass, screen,
|
||||
args, XtNumber(args));
|
||||
}
|
||||
|
||||
/*
|
||||
@ -240,7 +252,10 @@ static void create_keypad(Widget parent)
|
||||
"button21","button22","button23","button24","button25",
|
||||
"button26","button27","button28","button29","button30",
|
||||
"button31","button32","button33","button34","button35",
|
||||
"button36","button37","button38","button39","button40"
|
||||
"button36","button37","button38","button39","button40",
|
||||
"button41","button42","button43","button44","button45",
|
||||
"button46","button47","button48","button49","button50",
|
||||
"button51","button52","button53","button54","button55",
|
||||
};
|
||||
register int i;
|
||||
int n = XtNumber(Keyboard);
|
||||
@ -297,14 +312,12 @@ void Quit(void)
|
||||
*/
|
||||
static void Syntax(int argc, char **argv)
|
||||
{
|
||||
register int i;
|
||||
|
||||
(void) fprintf(stderr, "%s: unknown options:", argv[0]);
|
||||
for (i=1; i <argc; i++)
|
||||
for (int i = 1; i <argc; i++)
|
||||
(void) fprintf(stderr, " %s", argv[i]);
|
||||
(void) fprintf(stderr, "\n\n");
|
||||
(void) fprintf(stderr, "Usage: %s", argv[0]);
|
||||
for (i=0; i < XtNumber(Options); i++)
|
||||
for (Cardinal i = 0; i < XtNumber(Options); i++)
|
||||
(void) fprintf(stderr, " [%s]", Options[i].option);
|
||||
(void) fprintf(stderr, "\n");
|
||||
XtDestroyApplicationContext(xtcontext);
|
||||
|
@ -102,6 +102,21 @@ from the X Consortium.
|
||||
#define kROLL 44 /* roll stack */
|
||||
#define kNOP 45 /* no operation */
|
||||
#define kBKSP 46 /* backspace */
|
||||
#define kAND 47 /* bitwise and */
|
||||
#define kBASE 48 /* base conversion */
|
||||
#define kMOD 49 /* modulus */
|
||||
#define kNOT 50 /* bitwise not (ones compliment) */
|
||||
#define kOR 51 /* bitwise or */
|
||||
#define kSHL 52 /* arithmetic shift left */
|
||||
#define kSHR 53 /* arithmetic shift right */
|
||||
#define kXOR 54 /* bitwise xor */
|
||||
#define kTRUNC 55 /* truncate to integer */
|
||||
#define kxA 56 /* 0xa */
|
||||
#define kxB 57 /* 0xb */
|
||||
#define kxC 58 /* 0xc */
|
||||
#define kxD 59 /* 0xd */
|
||||
#define kxE 60 /* 0xe */
|
||||
#define kxF 61 /* 0xf */
|
||||
|
||||
#define XCalc_MEMORY 0 /* memory indicator */
|
||||
#define XCalc_INVERSE 1 /* inverse function indicator */
|
||||
@ -109,6 +124,9 @@ from the X Consortium.
|
||||
#define XCalc_RADIAN 3 /* radian indicator */
|
||||
#define XCalc_GRADAM 4 /* grad indicator */
|
||||
#define XCalc_PAREN 5 /* parenthesis indicator */
|
||||
#define XCalc_HEX 6 /* hexadecimal (base 16) indicator */
|
||||
#define XCalc_DEC 7 /* decimal (base 10) indicator */
|
||||
#define XCalc_OCT 8 /* octal (base 8) indicator */
|
||||
|
||||
/* actions.c */
|
||||
extern XtActionsRec Actions[];
|
||||
@ -121,6 +139,7 @@ extern void fail_op(void);
|
||||
extern int pre_op(int keynum);
|
||||
extern void post_op(void);
|
||||
|
||||
extern void change_base(void);
|
||||
extern void numeric(int keynum);
|
||||
extern void bkspf(void);
|
||||
extern void decf(void);
|
||||
|
Loading…
Reference in New Issue
Block a user