tlf_1.1.5/0000775000175000017500000000000012105552237010541 5ustar jtnjtntlf_1.1.5/aclocal.m40000664000175000017500000011725212105506433012406 0ustar jtnjtn# generated automatically by aclocal 1.11.3 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, # Inc. # This file 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. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, [m4_warning([this file was generated for autoconf 2.68. 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 . # # 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. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- 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)))?$]) m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]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 # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes ], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]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 # # # -------------------------------------------------------------- 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 AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT])[]dnl ]) elif test $pkg_failed = untried; then AC_MSG_RESULT([no]) m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])[]dnl ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) $3 fi[]dnl ])# PKG_CHECK_MODULES # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software # Foundation, Inc. # # This file 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. # serial 1 # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11.3], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.3])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file 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. # serial 1 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, # 2010, 2011 Free Software Foundation, Inc. # # This file 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. # serial 12 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file 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. # serial 16 # 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. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, # Inc. # # This file 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. # serial 1 # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file 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. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file 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. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, # Inc. # # This file 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. # serial 1 # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software # Foundation, Inc. # # This file 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. # serial 5 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file 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. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # 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" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $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]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. # # This file 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. # serial 1 # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. # # This file 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. # serial 3 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. # # This file 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. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([acinclude.m4]) tlf_1.1.5/configure.ac0000664000175000017500000000524712072353226013037 0ustar jtnjtn# Process this file with autoconf to produce a configure script. AC_INIT(tlf, 1.1.5, rein@couperus.com es tb@forth-ev.de) AM_INIT_AUTOMAKE AC_CONFIG_SRCDIR([config.h.in]) AC_CONFIG_HEADERS([config.h]) # Checks for programs. AC_PROG_CC AC_PROG_INSTALL # Checks for libraries. PKG_CHECK_MODULES(GLIB, glib-2.0) AC_CHECK_LIB([m], [atan]) AC_CHECK_LIB([pthread], [pthread_create]) ACX_PTHREAD AC_CHECK_LIB([ncurses], [initscr],,AC_MSG_ERROR([needs ncurses library])) AC_CHECK_LIB([panel], [update_panels],, AC_MSG_ERROR([needs ncurses panel library])) # Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([arpa/inet.h fcntl.h memory.h netdb.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time.h syslog.h termios.h unistd.h]) dnl Check if we want to link the Hamradio control libraries (hamlib) AC_ARG_ENABLE([hamlib], [ --enable-hamlib Add support for hamradio control libraries], [case "${enableval}" in yes) wanthamlib=true ;; no) wanthamlib=false ;; # *)   AC_MSG_ERROR([[bad value ${enableval} for --enable-hamlib]]) ;; esac], [wanthamlib=false]) if test "x${wanthamlib}" != "xfalse"; then dnl Look for hamlib hamlib_modules="hamlib >= 1.2.8" PKG_CHECK_MODULES(HAMLIB, [$hamlib_modules], [ CFLAGS="$CFLAGS $HAMLIB_CFLAGS"; LIBS="$LIBS $HAMLIB_LIBS"; ], [ AC_MSG_ERROR([Hamradio control libraries 1.2.8 or later not found...]) ]) AC_CHECK_LIB(hamlib,main,,AC_MSG_ERROR([Hamradio control libraries not found...])) AC_CHECK_HEADERS(hamlib/rig.h,,AC_MSG_ERROR([Hamlib headers not found...])) AC_DEFINE([WANT_HAMLIB], 1, [Want Hamlib]) echo "enabling hamlib support" else AC_DEFINE([WANT_HAMLIB], 0, [No Hamlib]) echo "disabling hamlib support" fi if test "${ac_cv_c_compiler_gnu}" = "yes"; then CFLAGS="${CFLAGS} -Wall" fi # Checks for typedefs, structures, and compiler characteristics. AC_HEADER_STDBOOL AC_TYPE_MODE_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_SSIZE_T # Checks for library functions. AC_PROG_GCC_TRADITIONAL AC_FUNC_STRFTIME AC_FUNC_MALLOC AC_CHECK_FUNCS([bzero floor ftruncate gethostbyname memset mkfifo putenv select socket sqrt strcasecmp strchr strcspn strdup strpbrk strspn strstr]) # Set PACKAGE_DATA_DIR in config.h. if test "x${prefix}" = "xNONE"; then AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR,"${ac_default_prefix}/share/${PACKAGE}", [package_data_dir is in default]) else AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${prefix}/share/${PACKAGE}", [package_data_dir is in prefix]) fi AC_CONFIG_FILES([Makefile doc/Makefile rules/Makefile scripts/Makefile share/Makefile src/Makefile tlf.1]) AC_OUTPUT tlf_1.1.5/README0000664000175000017500000000246112072353226011424 0ustar jtnjtnTlf ham radio contest logger - Summary ====================================== Tlf is a console (ncurses) mode general purpose CW/VOICE keyer, logging and contest program for hamradio. It supports the CQWW, the WPX, the ARRL-DX , the ARRL-FD, the PACC and the EU SPRINT contests (single operator) as well as a LOT MORE basic contests, general QSO and DXpedition mode. It interfaces with a morse code generator, your sound card, a number of radios, and with a DX Cluster. Tlf can project cluster data into the excellent Xplanet program, written by Hari Nair. Contest operation mimics the popular TR-Log program for DOS, the output file is TR- as well as CABRILLO compatible. The user interface was designed with over 30 years of experience in CW contesting. The program was written for console mode on purpose, to make it run also on smaller machines, or remotely via a modem link. See 'man tlf' for detailed documentation. See also doc/README for details, and the INSTALL file for an quick installation guide. Contribution ------------ * There is a mailing list at tlf-devel@nongnu.org (see http://lists.nongnu.org/mailman/listinfo/tlf-devel) * You are also welcome on the wiki at http://tlf.wikispaces.com * If you want to contribute clone the repo, make changes and send us a patch or pull request. tlf_1.1.5/configure0000775000175000017500000060776312105506434012471 0ustar jtnjtn#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.68 for tlf 1.1.5. # # Report bugs to . # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software # Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV export CONFIG_SHELL case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and rein@couperus.com $0: es tb@forth-ev.de about your system, including any $0: error possibly output before this message. Then install $0: a modern shell, or manually run the script under such a $0: shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='tlf' PACKAGE_TARNAME='tlf' PACKAGE_VERSION='1.1.5' PACKAGE_STRING='tlf 1.1.5' PACKAGE_BUGREPORT='rein@couperus.com es tb@forth-ev.de' PACKAGE_URL='' ac_unique_file="config.h.in" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS HAMLIB_LIBS HAMLIB_CFLAGS EGREP GREP CPP PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC host_os host_vendor host_cpu host build_os build_vendor build_cpu build GLIB_LIBS GLIB_CFLAGS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dependency_tracking enable_hamlib ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR GLIB_CFLAGS GLIB_LIBS CPP HAMLIB_CFLAGS HAMLIB_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # 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 tlf 1.1.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/tlf] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of tlf 1.1.5:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-hamlib Add support for hamradio control libraries Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path PKG_CONFIG_LIBDIR path overriding pkg-config's built-in search path GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config GLIB_LIBS linker flags for GLIB, overriding pkg-config CPP C preprocessor HAMLIB_CFLAGS C compiler flags for HAMLIB, overriding pkg-config HAMLIB_LIBS linker flags for HAMLIB, overriding pkg-config 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 . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF tlf configure 1.1.5 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## -------------------------------------------------- ## ## Report this to rein@couperus.com es tb@forth-ev.de ## ## -------------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func 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 tlf $as_me 1.1.5, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu am__api_version='1.11' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac # 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" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $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". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='tlf' VERSION='1.1.5' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' ac_config_headers="$ac_config_headers config.h" # Checks for programs. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # Checks for libraries. if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB" >&5 $as_echo_n "checking for GLIB... " >&6; } if test -n "$GLIB_CFLAGS"; then pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$GLIB_LIBS"; then pkg_cv_GLIB_LIBS="$GLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-2.0") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0" 2>&1` else GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLIB_PKG_ERRORS" >&5 as_fn_error $? "Package requirements (glib-2.0) were not met: $GLIB_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables GLIB_CFLAGS and GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables GLIB_CFLAGS and GLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details" "$LINENO" 5; } else GLIB_CFLAGS=$pkg_cv_GLIB_CFLAGS GLIB_LIBS=$pkg_cv_GLIB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for atan in -lm" >&5 $as_echo_n "checking for atan in -lm... " >&6; } if ${ac_cv_lib_m_atan+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char atan (); int main () { return atan (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_m_atan=yes else ac_cv_lib_m_atan=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_atan" >&5 $as_echo "$ac_cv_lib_m_atan" >&6; } if test "x$ac_cv_lib_m_atan" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBM 1 _ACEOF LIBS="-lm $LIBS" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_create in -lpthread" >&5 $as_echo_n "checking for pthread_create in -lpthread... " >&6; } if ${ac_cv_lib_pthread_pthread_create+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpthread $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_create (); int main () { return pthread_create (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_pthread_pthread_create=yes else ac_cv_lib_pthread_pthread_create=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_create" >&5 $as_echo "$ac_cv_lib_pthread_pthread_create" >&6; } if test "x$ac_cv_lib_pthread_pthread_create" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBPTHREAD 1 _ACEOF LIBS="-lpthread $LIBS" fi # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 $as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_join (); int main () { return pthread_join (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 $as_echo "$acx_pthread_ok" >&6; } if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all. acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # pthread: Linux, etcetera # --thread-safe: KAI C++ case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthread or # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 $as_echo_n "checking whether pthreads work without any flags... " >&6; } ;; -*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 $as_echo_n "checking whether pthreads work with $flag... " >&6; } PTHREAD_CFLAGS="$flag" ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 $as_echo_n "checking for the pthreads library -l$flag... " >&6; } PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 $as_echo "$acx_pthread_ok" >&6; } if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: threads are created detached by default # and the JOINABLE attribute has a nonstandard name (UNDETACHED). { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 $as_echo_n "checking for joinable pthread attribute... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int attr=PTHREAD_CREATE_JOINABLE; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ok=PTHREAD_CREATE_JOINABLE else ok=unknown fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test x"$ok" = xunknown; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int attr=PTHREAD_CREATE_UNDETACHED; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ok=PTHREAD_CREATE_UNDETACHED else ok=unknown fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then $as_echo "#define PTHREAD_CREATE_JOINABLE \$ok" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ok}" >&5 $as_echo "${ok}" >&6; } if test x"$ok" = xunknown; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: we do not know how to create joinable pthreads" >&5 $as_echo "$as_me: WARNING: we do not know how to create joinable pthreads" >&2;} fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 $as_echo_n "checking if more special flags are required for pthreads... " >&6; } flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 $as_echo "${flag}" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with cc_r # Extract the first word of "cc_r", so it can be a program name with args. set dummy cc_r; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_PTHREAD_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_PTHREAD_CC="cc_r" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_PTHREAD_CC" && ac_cv_prog_PTHREAD_CC="${CC}" fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 $as_echo "$PTHREAD_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else PTHREAD_CC="$CC" fi # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then $as_echo "#define HAVE_PTHREAD 1" >>confdefs.h : else acx_pthread_ok=no fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -lncurses" >&5 $as_echo_n "checking for initscr in -lncurses... " >&6; } if ${ac_cv_lib_ncurses_initscr+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lncurses $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char initscr (); int main () { return initscr (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_ncurses_initscr=yes else ac_cv_lib_ncurses_initscr=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ncurses_initscr" >&5 $as_echo "$ac_cv_lib_ncurses_initscr" >&6; } if test "x$ac_cv_lib_ncurses_initscr" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBNCURSES 1 _ACEOF LIBS="-lncurses $LIBS" else as_fn_error $? "needs ncurses library" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for update_panels in -lpanel" >&5 $as_echo_n "checking for update_panels in -lpanel... " >&6; } if ${ac_cv_lib_panel_update_panels+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lpanel $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char update_panels (); int main () { return update_panels (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_panel_update_panels=yes else ac_cv_lib_panel_update_panels=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_panel_update_panels" >&5 $as_echo "$ac_cv_lib_panel_update_panels" >&6; } if test "x$ac_cv_lib_panel_update_panels" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBPANEL 1 _ACEOF LIBS="-lpanel $LIBS" else as_fn_error $? "needs ncurses panel library" "$LINENO" 5 fi # Checks for header files. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in arpa/inet.h fcntl.h memory.h netdb.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time.h syslog.h termios.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Check whether --enable-hamlib was given. if test "${enable_hamlib+set}" = set; then : enableval=$enable_hamlib; case "${enableval}" in yes) wanthamlib=true ;; no) wanthamlib=false ;; # *)   AC_MSG_ERROR([[bad value ${enableval} for --enable-hamlib]]) ;; esac else wanthamlib=false fi if test "x${wanthamlib}" != "xfalse"; then hamlib_modules="hamlib >= 1.2.8" pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HAMLIB" >&5 $as_echo_n "checking for HAMLIB... " >&6; } if test -n "$HAMLIB_CFLAGS"; then pkg_cv_HAMLIB_CFLAGS="$HAMLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$hamlib_modules\""; } >&5 ($PKG_CONFIG --exists --print-errors "$hamlib_modules") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_HAMLIB_CFLAGS=`$PKG_CONFIG --cflags "$hamlib_modules" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$HAMLIB_LIBS"; then pkg_cv_HAMLIB_LIBS="$HAMLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$hamlib_modules\""; } >&5 ($PKG_CONFIG --exists --print-errors "$hamlib_modules") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then pkg_cv_HAMLIB_LIBS=`$PKG_CONFIG --libs "$hamlib_modules" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then HAMLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$hamlib_modules" 2>&1` else HAMLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$hamlib_modules" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$HAMLIB_PKG_ERRORS" >&5 as_fn_error $? "Hamradio control libraries 1.2.8 or later not found..." "$LINENO" 5 elif test $pkg_failed = untried; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "Hamradio control libraries 1.2.8 or later not found..." "$LINENO" 5 else HAMLIB_CFLAGS=$pkg_cv_HAMLIB_CFLAGS HAMLIB_LIBS=$pkg_cv_HAMLIB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } CFLAGS="$CFLAGS $HAMLIB_CFLAGS"; LIBS="$LIBS $HAMLIB_LIBS"; fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lhamlib" >&5 $as_echo_n "checking for main in -lhamlib... " >&6; } if ${ac_cv_lib_hamlib_main+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lhamlib $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_hamlib_main=yes else ac_cv_lib_hamlib_main=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_hamlib_main" >&5 $as_echo "$ac_cv_lib_hamlib_main" >&6; } if test "x$ac_cv_lib_hamlib_main" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBHAMLIB 1 _ACEOF LIBS="-lhamlib $LIBS" else as_fn_error $? "Hamradio control libraries not found..." "$LINENO" 5 fi for ac_header in hamlib/rig.h do : ac_fn_c_check_header_mongrel "$LINENO" "hamlib/rig.h" "ac_cv_header_hamlib_rig_h" "$ac_includes_default" if test "x$ac_cv_header_hamlib_rig_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_HAMLIB_RIG_H 1 _ACEOF else as_fn_error $? "Hamlib headers not found..." "$LINENO" 5 fi done $as_echo "#define WANT_HAMLIB 1" >>confdefs.h echo "enabling hamlib support" else $as_echo "#define WANT_HAMLIB 0" >>confdefs.h echo "disabling hamlib support" fi if test "${ac_cv_c_compiler_gnu}" = "yes"; then CFLAGS="${CFLAGS} -Wall" fi # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5 $as_echo_n "checking for stdbool.h that conforms to C99... " >&6; } if ${ac_cv_header_stdbool_h+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef bool "error: bool is not defined" #endif #ifndef false "error: false is not defined" #endif #if false "error: false is not 0" #endif #ifndef true "error: true is not defined" #endif #if true != 1 "error: true is not 1" #endif #ifndef __bool_true_false_are_defined "error: __bool_true_false_are_defined is not defined" #endif struct s { _Bool s: 1; _Bool t; } s; char a[true == 1 ? 1 : -1]; char b[false == 0 ? 1 : -1]; char c[__bool_true_false_are_defined == 1 ? 1 : -1]; char d[(bool) 0.5 == true ? 1 : -1]; /* See body of main program for 'e'. */ char f[(_Bool) 0.0 == false ? 1 : -1]; char g[true]; char h[sizeof (_Bool)]; char i[sizeof s.t]; enum { j = false, k = true, l = false * true, m = true * 256 }; /* The following fails for HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ _Bool n[m]; char o[sizeof n == m * sizeof n[0] ? 1 : -1]; char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; /* Catch a bug in an HP-UX C compiler. See http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html */ _Bool q = true; _Bool *pq = &q; int main () { bool e = &s; *pq |= q; *pq |= ! q; /* Refer to every declared value, to avoid compiler optimizations. */ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + !m + !n + !o + !p + !q + !pq); ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdbool_h=yes else ac_cv_header_stdbool_h=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 $as_echo "$ac_cv_header_stdbool_h" >&6; } ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" if test "x$ac_cv_type__Bool" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE__BOOL 1 _ACEOF fi if test $ac_cv_header_stdbool_h = yes; then $as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" if test "x$ac_cv_type_mode_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define mode_t int _ACEOF fi ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" if test "x$ac_cv_type_pid_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define pid_t int _ACEOF fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" if test "x$ac_cv_type_ssize_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define ssize_t int _ACEOF fi # Checks for library functions. if test $ac_cv_c_compiler_gnu = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5 $as_echo_n "checking whether $CC needs -traditional... " >&6; } if ${ac_cv_prog_gcc_traditional+:} false; then : $as_echo_n "(cached) " >&6 else ac_pattern="Autoconf.*'x'" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Autoconf TIOCGETP _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "$ac_pattern" >/dev/null 2>&1; then : ac_cv_prog_gcc_traditional=yes else ac_cv_prog_gcc_traditional=no fi rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include Autoconf TCGETA _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "$ac_pattern" >/dev/null 2>&1; then : ac_cv_prog_gcc_traditional=yes fi rm -f conftest* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5 $as_echo "$ac_cv_prog_gcc_traditional" >&6; } if test $ac_cv_prog_gcc_traditional = yes; then CC="$CC -traditional" fi fi for ac_func in strftime do : ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" if test "x$ac_cv_func_strftime" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STRFTIME 1 _ACEOF else # strftime is in -lintl on SCO UNIX. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 $as_echo_n "checking for strftime in -lintl... " >&6; } if ${ac_cv_lib_intl_strftime+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lintl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char strftime (); int main () { return strftime (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_intl_strftime=yes else ac_cv_lib_intl_strftime=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 $as_echo "$ac_cv_lib_intl_strftime" >&6; } if test "x$ac_cv_lib_intl_strftime" = xyes; then : $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h LIBS="-lintl $LIBS" fi fi done for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 $as_echo_n "checking for GNU libc compatible malloc... " >&6; } if ${ac_cv_func_malloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_malloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif int main () { return ! malloc (0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_malloc_0_nonnull=yes else ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes; then : $as_echo "#define HAVE_MALLOC 1" >>confdefs.h else $as_echo "#define HAVE_MALLOC 0" >>confdefs.h case " $LIBOBJS " in *" malloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;; esac $as_echo "#define malloc rpl_malloc" >>confdefs.h fi for ac_func in bzero floor ftruncate gethostbyname memset mkfifo putenv select socket sqrt strcasecmp strchr strcspn strdup strpbrk strspn strstr do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Set PACKAGE_DATA_DIR in config.h. if test "x${prefix}" = "xNONE"; then cat >>confdefs.h <<_ACEOF #define PACKAGE_DATA_DIR "${ac_default_prefix}/share/${PACKAGE}" _ACEOF else cat >>confdefs.h <<_ACEOF #define PACKAGE_DATA_DIR "${prefix}/share/${PACKAGE}" _ACEOF fi ac_config_files="$ac_config_files Makefile doc/Makefile rules/Makefile scripts/Makefile share/Makefile src/Makefile tlf.1" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by tlf $as_me 1.1.5, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ tlf config.status 1.1.5 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "rules/Makefile") CONFIG_FILES="$CONFIG_FILES rules/Makefile" ;; "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;; "share/Makefile") CONFIG_FILES="$CONFIG_FILES share/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "tlf.1") CONFIG_FILES="$CONFIG_FILES tlf.1" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi tlf_1.1.5/tlf.1.in0000664000175000017500000006624512072353226012032 0ustar jtnjtn.\" .TH "tlf" "1" "version @VERSION@" "Rein Couperus es Thomas Beierlein" "Hamradio" .SH "NAME" .B tlf \fP - Contest keyer/logging program for Ham Radio .SH "SYNOPSIS" \fBtlf\fR \fI[option]\fR .SH "OPTIONS" .TP \fB\-f\fR Start with non-default configuration file (tlf -fPA0R) \fR Defaults to logcfg.dat in actual working directory. .TP \fB\-h\fR Show summary of options and exit. .TP \fB\-s\fR Synchronize log with other node ( tlf -suser:password@host/dir/logfilename) .TP \fB\-V\fR Output version information and exit. .TP \fB\-v\fR Verbose startup. .TP \fB\-d\fR Debug rigctl. .TP \fB\-n\fR Start without packet/cluster. .SH "DESCRIPTION" \fBtlf\fR is a console (ncurses) mode general purpose CW keyer, -logging and -contest program for hamradio. It supports the CQWW, the WPX, the ARRL-DX , the ARRL-FD, the PACC and the EU SPRINT contests as well as a lot more basic contests, general QSO and DXpedition mode. It interfaces with a morse code generator, a number of radios via the hamlib library, and with a DX Cluster. Tlf can project DX cluster data into the excellent Xplanet program, written by Hari Nair. .P Contest operation mimics the popular TR-Log program for DOS, the output file is TRlog-compatible. The log can be exported in ADIF or cabrillo format. .P The program was written for console mode on purpose, to make it run also on smaller machines, or remotely via ssh or a modem link. .P Since tlf-0.9.21 the cwdaemon-0.9 is fully supported, featuring direct mode for the keyboard and output to parallel and serial ports and speed and weight control from the keyboard, and band info output on the parallel port. .P For rig control tlf works with Hamlib (v. >=1.2.3), you can find it at Sourceforge.com. .P Tlf provides full ip networking between tlf nodes, syncing/distributing log, packet data, frequency data, local talk, serial numbers, time sync etc... .P .SH "USAGE" .TR Tlf has been written for \fBconsole mode\fR. If you want to run tlf from a terminal in X, you will probably get the best results if you set TERM=linux and use an linux console terminal. Both KDE and GNOME terminals have a facility to start an X linux console. An Xterm will give unreadable colours, you will have to set different colours in the logcfg.dat file. Also F1 does not work in Xterm, which is not compatible with linux consoles. Other keys (sometimes F4 and F5) may not work in your xterm, YMMV. There are excellent results with the latest KDE and GNOME consoles (I prefer vi colours). As tlf uses ncurses to format its display you must use a proper font. (The Linux font works o.k. ). If you have problems, try the linux text console first and work from there... Normally you start or restart tlf in fast mode with \fBtlf\fR. During debugging of a logcfg.dat file you can start in verbose mode, to have a look at the startup messages. From version tlf-0.9.3 you can load different config files with \fBtlf -f\fR. If you have the packet cluster enabled you will first see the packet screen. Log in with your callsign and switch to tlf with \fB:\fR. You can come back to the packet screen later with the same command from the call input field. You can stop tlf with the \fB:EXIT\fR command, the \fB:QUIT\fR command or with \fBCtrl-c\fR, \fBAlt-q\fR or \fBAlt-x\fR. At restart tlf recalculates the score, which may take some time depending on the number of qso's in the logfile and the speed of your system. Tlf takes the points as they are in the log, and calculates the multiplier from either callsign or exchange field (depending on the contest). .SH "COMMANDS" .TR .B :ADIf writes adif file (*.adif) .TR .B :CHAr Input number of characters for CW auto-start. Default is 0 (off). You can also start sending the first part of the call by hitting 'space' of 'down-arrow'. This works only in CW CONTEST modes. .TR .B :CHEck, :NOCheck dupe check window on|off .TR .B :CQDelay Change cqdelay (in 1/2 seconds, with up/down arrow) .TR .B :CLOff No cluster info (non-assisted contest operation) .TR .B :CLUster, :MAP Show cluster window or bandmap .TR .B :CONtest Toggle contest mode on/off .TR .B :CTY, :ZONe, :MULt Show needed country multipliers, zones, multipliers per continent (depends on contest) .TR .B :CWMode, :SSBmode, :DIGimode switch trx to CW|SSB|Digimode mode .TR .B :DEBug_tty Debug routine for rig links. .TR .B :EDIt Edit the log with your favourite editor (the editor (vi|joe|e3|MC) can be set in logcfg.dat .TR .B :EXIt Exit tlf. .TR .B :FILter Filter cluster info (announce, dx-spots, all) .TR .B :FREq Show frequency or band/score info of your other stations... .TR .B :HELp Show online help (displays a file .B help.txt in the working directory). .TR .B :INFo network status .TR .B :MESsage Edit cw messages .B :MODe Toggle trx mode (CW|SSB|DIG) .TR .B :PACket Switch to the packet terminal (switch back to tlf with ":") .TR .B :QUIT Quit tlf .TR .B :REConnect Reopens the connection to the DX cluster in case it got dropped. .TR .B :REScore Recalculates the values in the score window (needed e.g. after deleting or editing QSOs). .TR .B :RITclear toggle rit reset after QSO on/off .TR .B :SET, :CFG Edit parameters in logcfg.dat file and reload it. .TR .B :SCAn Enter SCAN function (return with ESCAPE) .TR .B :SCOre Toggle score window on/off .TR .B :SCVolume (0 ... 99) Adjust soundcard volume for sidetone (up/down) .TR .B :SIMulator Toggle simulator mode. In simulator mode you can work a complete CQWW CW contest in TRlog mode. Set CONTEST=cqww. .TR .B :SOUnd The SOUND recorder is a utility to record the voice keyer messages and enables you to record the complete contest in chunks of 1 hour to the hard drive. It does this in the directory: ~/tlf/soundlogs. The sound recorder uses a script called .B soundlog which has to be located in ~/tlf/soundlogs. You find it in the .B scripts directory. If your soundcard is different from /dev/dsp you can use the .B SC_DEVICE parameter in the logcfg.dat file (my soundcard is at SC_DEVICE=/dev/dsp1). The file extension is .au, the sun ulaw format. The recorder produces < 60 MB per hour. This means you can record a complete cqww in less than 3 GB. If your disk cannot handle this, ftp the soundfile to a server every hour.... .P .B F1 ... F12, s, c will record the voice keyer message for that key. .P 1: Start contest recording to ddhhmm.au .P 2: Stop contest recording .P 3: Play back contest recording ddhh[mm][xx] xx is the offset from the start of the file e.g.: 2110 will start from beginning of the day 21 hr 10:00 file. 21100013:00 will start from day 21, hh 10, mm 00, + 13 minutes: 0 seconds To make sure you get a new file every hour make a cron job to run every hour with: .B /usr/bin/pkill -f sox > /dev/null 2> /dev/null If you run this job every 10 minutes you get sound records of 10 minutes long. .P Once started the recorder will run until the lock file .B ~/.VRlock is removed. .TR .B :SYNc Synchronize the logfile of this node with the logfile pointed to by parameter SYNCFILE=. Tlf will wget the logfile from the relevant node, make a dated backup of your local logfile, and merge the 2 files. The score will be recalculated. .TR .B :TONe Set PC sidetone frequency (300 - 900, 0 = Off) .TR .B :TRXcontrol toggle trxcontrol on/off (default off, only makes sense with rigcontrol capability) .TR .B :VIEw View the log with LESS .TR .B :WRIte Write cabrillo file for selected contests (CQ and ARRL contests). Other contests may work, you have to experiment. .SH "KEYS" The keymap refers to the linux text console. It may be slightly different on X terminals. Turn off any key recognition by the terminal for its own purposes (menu access, help display, ....). Pay special attention to the Fx- and Alt- keys. Moreover on some systems you must set \fB\TERM=linux\fR\ or \fB\TERM=rxvt\fR. This also works under vnc. .TR .B Pgup Increase CW speed (from call and exchange fields). If field not empty and CHANGE_RST is set: change RST value .TR .B Ctrl-Pgup Increase Auto_CQ delay (+1/2 sec). Set Auto_CW delay to message length + pause length. This is because tlf does not know when the cwdaemon is ready... .TR .B Pg-down Decrease CW speed (from call and exchange fields) If field not empty and CHANGE_RST is set: change RST value. .TR .B Ctrl-Pgdown Decrease Auto_CQ delay (-1/2 sec). .TR .B F1-F11 Send CW, RTTY or VOICE message .TR .B F12 Start Auto_CQ (sends F12 message) .TR .B Tab Switch between call input and exchange fields .TR .B + Toggle CQ/S&P mode (TRlog mode) or Send F3 + log qso(CT mode) .TR .B Left-Arrow Change band if callsign field empty. (enter edit mode if callsign present, leave edit mode with ENTER or ESC) .TR .B Right-Arrow Change band .TR .B ENTER Smart key for contest mode: Calls cq, Calls station, Sends exchange, Logs the qso .TR .B Backslash log qso w/o CW output; .TR .B ; Insert note in log .TR .B , Keyboard on. This works only when the call input field is empty. use ctrl-k if it isn't. .TR .B ESCAPE Return to call input field, keyboard off, stop cw, reset call and exchange (universal undo) .TR .B '"' (double quote) Send talk message to other tlf nodes .TR .B - (minus) Delete last qso (Use :res(core) to correct scoring number afterward). .TR .B Up-arrow Edit last qso: Insert, overwrite, and delete; + log view .TR .B = (equal) Confirm last call .TR .B _ (underscore) Confirm last exchange .TR .B { In RTTY (DIGIMODE), keyboard mode switch TX on .TR .B } In RTTY (DIGIMODE), keyboard mode switch TX off (RX) .TR .B \ (backslash) In RTTY (DIGIMODE), keyboard mode switch controller to command mode (back to operating mode with 'k enter' .TR .B # trx qrg -> mem, mem -> trx qrg .TR .B ! - Get a new shell. Come back with 'exit'. .TR .B . - Change bandmap filter configuration. You can filter to show spots from all or own band only, from all/own mode only and if you want to see dupes or not (see the according help display). .TR .B Ctrl-a add spot to bandmap and broadcast it to local net .TR .B Ctrl-b send info to cluster. .TR .B Ctrl-c Quit tlf .TR .B Ctrl-d Stop tlf .TR .B Ctrl-f Set frequency. Use UP/DOWN-Arrow for 100hz steps and PgUP/PgDwn for 500hz steps. Back with ESC. .TR .B Ctrl-g grab next dx spot from bandmap .TR .B Ctrl-k Keyboard (CW and RTTY) .TR .B Ctrl-p Muf display .TR .B Ctrl-q xoff (linux terminal function) .TR .B Ctrl-r Toggle lp0-pin 14 (Mic/Soundcard switch | trx1/trx2 switch) .TR .B Ctrl-s xon (linux terminal function) .TR .B Ctrl-t Show talk messages .TR .B Ctrl-z Stop tlf .TR .B Alt-0 ... Alt-9 send CW messages .TR .B Alt-a Cycle cluster window: NOCLUSTER->CLUSTER->BANDMAP->... .TR .B Alt-b Band up .TR .B Alt-c Toggle display of checkwindow .TR .B Alt-e Enter qso edit mode .TR .B Alt-g Grab first spot from bandmap which has the characters in the call input field in its call. Allow to selectively grab a special call. .TR .B Alt-h Show help .TR .B Alt-i Show talk messages .TR .B Alt-j Show other local stations frequencies .TR .B Alt-k Keyboard (CW and RTTY) .TR .B Alt-m Show multipliers .TR .B Alt-n Add Note to log .TR .B Alt-p Toggle PTT (via cwdaemon) .TR .B Alt-q Exit tlf .TR .B Alt-r Toggle score window .TR .B Alt-s Toggle score window .TR .B Alt-t Tune your rig (via cwdaemon). Activates PTT and Key output for 6 seconds. Stop with any key. .TR .B Alt-v Band down (Change speed in CT compatibility mode) .TR .B Alt-w Set CW weight .TR .B Alt-x Leave tlf .TR .B Alt-z Show zones worked .SH "PREFERENCES" .TR Tlf can be fully configured by editing the logcfg.dat file. Normally you keep one logcfg.dat file, setting up your call, the logfilename, the ports and addresses for packet, the rig, the network etc., and a separate rules file per contest. The logcfg.dat file can be edited from within tlf by the \fB:CFG\fR or \fB:SET\fR commands. You can set your favourite editor (joe | vi | e3 | MC) in the logcfg.dat file. You connect the rules file by using the statement RULES= in logcfg.dat. Tlf will first look in the working directory for a logcfg.dat file, and if it cannot find one it will look in @prefix@/share/@PACKAGE@. Make sure you edit the logcfg.dat file to hold your call and your preferred system configuration. .SH "LOGCFG.DAT statements" .TR .TR .B RULES= Name of the rules file to load. It helps if you name the rules file according to the contest you want to describe. .TR .B SYNCFILE=user:password@host/dir/syncfile (wget syntax). File on remote host you want to synchronize with. .TR .B CTCOMPATIBLE Does not use the TRlog qso sequence, but +, Insert and Enter to log the qso. The default is the TRlog sequence which uses "+" to switch between RUN and S&P modes, and just ENTER to call and log the qso. .TR .B TLFCOLORx= Defaults: TLFCOLOR1=23 (Header and footer) TLFCOLOR2=67 (Pop up windows) TLFCOLOR3=70 (Log window) TLFCOLOR4=57 (Markers/dupe colour) TLFCOLOR5=43 (Input fields) TLFCOLOR6=63 (Window frames) The numbers in octal, fg/bg or bg/fg (you have to try it). You should only specify these if you don't agree with the standard colours of tlf. In some Terminals you can set a special profile for tlf with your own colours... Another way is to define the colors is via the .Xdefault file. .TR .B EDITOR= Editor used to edit the log or logcfg.dat .TR .B CALL= Your call used in messages, and used to determine your country, zone and continent. .TR .B TIME_OFFSET=<0> (0...23) Used to shift the tlf time with respect to the computer clock. Normally 0. .TR .B TIME_MASTER This node transmits the time over the network (only one master allowed!) .TR .B ADDNODE= Adds an ip address to which we broadcast stuff. (WARNING: Only add addresses of other nodes). .TR .B THISNODE= Node designator. If tlf hears it's own node ID on the network it will exit and ask you to pick another one!! .TR .B LANDEBUG Switches on the debug function. Dumps all tlf net traffic received on this node into a file named "debuglog" in the working directory. This log can be used as a backup log for the whole network, as it is easy to retrieve qso data, cluster messages, gab messages etc. after the contest. I have it on all the time!! .TR .B NETKEYER Switches the cw keyer on. Only the ip networked keyer cwdaemon is actively supported. You may also need the keyer for PTT or Band info output. .TR .B NETKEYERPORT= (default = 6789) .TR .B NETKEYERHOST= (default = 127.0.0.1, localhost) .TR .B MFJ1278_KEYER= Switches supprt for the MFJ1278B multi-mode controller on. The 1278 supports CW as well as RTTY contesting. Fixed baud rate 9600 Baud. .TR .B CWSPEED= (4...69) .TR .B WEIGHT=<-45...50> Only for NETKEYER. .TR .B TXDELAY= (0...50) .TR .B SOUNDCARD Use soundcard for sidetone output .TR .B SIDETONE_VOLUME= (0...99) Set soundcard sidetone volume (default=70). A value of 0 turns off sidetone output (even for the console speaker). .TR .B CQDELAY= (3...60) Use a value which is message length + listening time!! .TR .B CWTONE= (0...999) A value of 0 switches the sidetone off (!!! Due to a bug in cwdaemon it also turns off the .B Alt-t tune function. Use .B SIDETONE_VOLUME = 0 instead). .TR .B BANDOUTPUT Outputs band information to pins 2, 7, 8, 9 on the parallel port. Output is 1 (160m), 2 (80m) ... 9 (10m). This format is compatible with the standard interface for antenna switches, band filters etc... .TR .B BANDOUTPUT=124181818 Output pin 2 for 160, 30, 17 and 12, pin 7 for 80, pin 8 for 40, and pin 9 for 20, 15 and 10. This comes in handy when you have 3 dipoles and a 3-band beam (...). .TR .B NO_BANDSWITCH_ARROWKEYS This will prevent unwanted band switching when you are not using rig control. Band up=alt-b, band down = alt-v (Trlog compatible). .TR .B TELNETHOST= e.g. claudia.esrac.ele.tue.nl or 131.155.192.179 .TR .B TELNETPORT= e.g. 8000 .TR .B TNCPORT= You can use e.g. /dev/ttyS0, /dev/ttyUSB1, etc... anything that looks like a tty. .TR .B TNCSPEED= Tlf supports 1200, 2400, 4800 and 9600 Baud .TR .B FIFO_INTERFACE The fifo interface is used when you want to receive cluster info from the network, of from another source. The fifo interface uses a fifo in the working directory called /fBclfile/fR. Anything you dump into this fifo will be displayed by the packet interface. .TR .B RADIO_CONTROL Switches the radio interface on. The rig interface makes use of the Hamlib library which supports a lot of different rigs.. .TR .B RIGMODEL= Look at the Hamlib stuff for the NUMBER of your rig... .TR .B RIGSPEED= Speed of the serial port. .TR .B RIGPORT= You can use e.g. /dev/ttyS0, /dev/ttyUSB1, etc... anything that looks like a tty. RPC rig daemon users should have RIGMODEL=1901 and RIGPORT=localhost. In this case RIGSPEED is ignored. .TR .B RIGCONF= Will send rig configuration parameters to Hamlib E.g.: RIGCONF=civaddr=0x40,retry=3,rig_pathname=/dev/ttyS0 .TR .B RIT_CLEAR Clears the RIT after logging the qso. This only works if the rig, and the hamlib routine supports it. (It works for the OMNI 6+). .TR .B CWBANDWIDTH= Sets the cw bandwidth of your rig when changing bands. If unset or 0 the default bandwidth (as determined by hamlib) is used. (You have to use a valid bandwidth for your rig!). .TR .B SC_DEVICE= Sound card device for scan function (e.g. /dev/dsp0) .TR .B S_METER= Audio s-meter calibration values for the scan function e.g. S_METER=20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 .TR .B SSBMODE Start tlf in ssb mode (default is CW) .TR .B RTTYMODE Start tlf in RTTY mode (defaul is CW) .TR .B GMFSK=/home/youruser/gMFSK.log Tell miniterm where to get the data .TR .B DIGIMODEM=/home/youruser/gmfsk_autofile Tell tlf where to send the macros .TR .B CLUSTER Show cluster window at startup. .TR .B CLUSTERLOGIN=yourcall Automatic login for the telnet client. .TR .B CLUSTER_LOG Write clusterlog to disk. .TR .B BANDMAP Shows cluster bandmap on startup. Use '.' to change bandmap filtering. .TR .B BANDMAP=, Show cluster bandmap on startup and set start values for filtering. string parsed for 'B' - only own band 'M' - only own mode 'D' - do not show dupes 'S' - skip dupes during grab_next (ctrl-g) livetime for new spots in second (number >=30) .TR .B SCOREWINDOW Show the score window (same as Alt-R cmd) .TR .B CHECKWINDOW Show the country/call check window .TR .B PARTIALS Show a list of possible contest calls .TR .B USE_PARTIALS Use the auto-complete utility (takes some practise...). Tlf will complete the call as soon as it is unique in the database. This can of course lead to strange effects, but in my experience there are far more hits than misses. Sometimes you must edit the call because it has locked on a unique call.... Try it, and switch it off when you don't like it. .TR .B LOGFREQUENCY Put frequency (kHZ) into qso number to enable logging of frequency (only qso and dxped mode) .TR .B IGNOREDUPES Enable to make multiple qsos in a contest .TR .B SUNSPOTS= Set the sunspots value which is used to do a rough calculation of the MUF. If the cluster interface is used the SSN will be updated by WWV or WCY messages. .TR .B SFI= Set SFI used to calculate SSN. The SSN value is used to do a rough calculation of the MUF. If the packet interface is used the SSN will be updated by WWV or WCY messages. .TR .B CHANGE_RST If set in logcfg.dat, Pg-up and Pg-down will change RST instead of CW speed if field is not empty. Default: off. .TR .B NOB4 Don't send automatic "qso b4" message (default: on) .TR .B NOAUTOCQ No automatic cq when pressing enter or F12. .TR .B MARKERS= Generate marker file for Xplanet. Xplanet will show the last 8 spots on an azimuthal map. See the relevant xplanet documentation. Use azimuthal projection, and center the map on your qth. .SH "RULES" .TR The contest rules can be put into separate files. Tlf will first look for a directory called "rules/" in the working directory, and a file "". If tlf cannot find that it will look into the directory @prefix@/share/@PACKAGE@/rules. A rules file contains contest specific content like multipliers, point, messages etc. The rules file overrides the logcfg.dat file. .B WARNING! It is your own reponsibility to try these rules well BEFORE the contest. The author of tlf cannot possible check all rules for all contests :) and during the contest the author is contesting (we are in it for the fun, remember...). .B CONTEST=xxxxx Name of the contest (same as the file name). Some contests, like cqww and wpx, are pre-programmed. look for the relevant rules file in @prefix@/share/tlf/rules. .TR .B LOGFILE= Mandatory .TR .B CONTEST_MODE Sets contest mode. Uncomment for normal qso logging. .TR .B CQWW_M2 Put the node ID into the logline (just after the qso number) to support Multi/2 operation where the station logging the qso must be in the cabrillo file. This can also be used for M/1 and M/M, to enable post-contest analysis of the nodes. .TR .B Macro characters in the messages % = your call, @ = hiscall, # = serial number, [ = RST , + = increase cw speed, - = decrease cw speed , * = AR, '=' = BT, < = SK, ( = KN, ! = SN, & = AS, > = BK .TR .B F1= CQ message, (e.g. CQ de PA0R TEST) .TR .B F2= S&P call message, (e.g. @ de %) .TR .B F3= Exchange message, (e.g. @ ++5NN--#) .TR .B F4= TU message, (e.g. TU 73 %) .TR .B F5= Call of the other station (@) .TR .B F6= Your call ("%") .TR .B F7= QSO B4 message (e.g. @ sri qso b4 gl) .TR .B F8= AGN .TR .B F9= '?' .TR .B F10= QRZ message (QRZ?) .TR .B F11= QRZ message (QRZ?) .TR .B F12= Auto-CQ message (e.g. +++TEST %---) .TR .B CQ_TU_MSG= Auto Exchange message in CQ mode (TRlog mode), (e.g. TU %) .TR .B S&P_TU_MSG= Auto Exchange message in S&P mode (TRlog mode), (e.g. TU 5NN #) .TR .B ALT_0=<...> ... ALT_9=<...> 9 further cw messages .TR .B SHORT_SERIAL Uses short form for serial number (599=5NN, 001=TT1) .TR .B LONG_SERIAL Uses long form for serial number (default) .TR .B VKM1= ... VKM12= Like F1 ... F12, for phone. .TR .B VKSPM= Auto Exchange voice message in S&P mode (TRlog mode) .TR .B VKCQM= Auto Exchange voice message in CQ mode (TRlog mode) .TR .B ONE_POINT One (1) point per QSO. .TR .B TWO_POINTS Two points per QSO. .TR .B THREE_POINTS Three points per QSO .TR .B SSBPOINTS= Points per SSB QSO .TR .B CWPOINTS= Points per CW QSO .TR .B MY_COUNTRY_POINTS= Points for own DXCC entity (often zero :-) .TR .B MY_CONTINENT_POINTS= Points for countries in own continent. .TR .B DX_POINTS= Points for station in other continents .TR .B 2EU3DX_POINTS 2 point for own continent, 3 points for other continents (outdated, see MY_CONTINENT_POINTS and DX_POINTS). .TR .B COUNTRY_LIST_POINTS= Points for countries in country list .TR .B USE_COUNTRYLIST_ONLY Zero points for countries not in list .TR .B COUNTRYLIST= (e.g. Scandinavia:SM,LA,OZ,OH) .TR .B COUNTRYLIST= File with list of prefixes. .TR .B PORTABLE_MULT_2 Multiply points x2 for portable stations (e.g. R1 field day) .TR .B LOWBAND_DOUBLE Double all points for lowband qso (40-80-160) (can be combined with any other value). .TR .B WYSIWYG_MULTIBAND Exchange is multiplier, per band, whatever you enter. Tlf builds its own list of multipliers. .TR .B WYSIWYG_ONCE Exchange is multiplier, whatever you enter. Counts once for the whole contest (not per band). .TR .B WAZMULT Multiplier is the CQ zone (per band). .TR .B ITUMULT Multiplier is the ITU zone (per band). .TR .B PFX_MULT Multiplier is prefix (once per contest, not per band. .TR .B COUNTRY_MULT Multiplier is the DXCC entity (per band) .TR .B MULT_LIST= Name of multipliers file (often sections, provinces, states, counties). May contain comment lines starting with '#' in first column. .TR .B SECTION_MULT Multiplier is section from multipliers file. .TR .B SERIAL+SECTION Exchange is serial number and section, multipler is section from multiplier file. Mults count per band. .TR .B SERIAL+GRID4 Exchange is serial number and grid (e.g. JO21QI), multipler is 4-character grid (JO21). Mults count per band. .TR .B DX_&_SECTIONS Multiplier is DXCC country or section from multiplier file. .TR .B RECALL_MULTS Exchange can be recycled, will be filled into exchange field when it is known( see also INITIAL_EXCHANGE) .TR .B INITIAL_EXCHANGE= Format: INITIAL_EXCHANGE=exchanges.txt The file must contain a comma-separated list of exchanges, if e.g. the exchange is the name of the operator: PA0R,rein PG4I,joop OK1RR,martin If RECALL_MULTS is set, tlf will look in this list for the exchange and fill it in for you. There are various contests which have a standard exchange, like e.g. the FOC Marathon. The module also recognises embedded calls (CT3/PA0R/QRP). .TR .B CONTINENT_EXCHANGE Exchange is continent (NA, SA, EU, AS, AF, OC) .TR .B SERIAL_EXCHANGE Exchange is serial number (formats exchange field) .TR .B MIXED Station can be worked both in SSB and CW .TR .B SSBMODE Start tlf in SSB mode .SH "FILES" .TR \fB@prefix@/share/@PACKAGE@/logcfg.dat\fR is a recent example of the configuration file tlf needs to know what to do. Tlf won't start without one. \fBCopy it into the working directory\fP and edit it before use. You should do your experiments well *before* the contest... It contains e.g. your call, name of the log file, info about ports for cw, packet or rig control, contest rules, points, multipliers etc. etc.. \fB@prefix@/share/@PACKAGE@/rules/contestname\fR contains the rules of the various contests. You can easily write one for your favourite contest making use of the various multiplier and points capabilities.. Check it before the contest and message to tlf-devel@nongnu.org if anything is wrong. \fB@prefix@/share/@PACKAGE@/cty.dat\fR contains a flat ascii data base of info about countries. Tlf-1.1.0 contains an actual version from december 2011 (tnx Martin OK1RR). This is the same file as used by CT or TRlog. \fB@prefix@/share/@PACKAGE@/mastercalls\fR contains a flat ascii data base of contest callsigns (> 25.000), which is rather old. \fBsection files\fR contain a flat ascii data base of multpliers like states, sections, provinces, d.istricts, names, ages, etc... Some are available at the tlf project download site (\fBhttp://www.iae.nl/users/reinc/TLF-0.2.html)\fR. They are invoked by including MULT_LIST= in the rules file. .SH "DOCUMENTATION" .TR An operation manual (a little bit outdated) is available in html format at the tlf old project page (\fBhttp://sharon.esrac.ele.tue.nl/pub/linux/ham/tlf/)\fR. .SH "AUTHORS" \fBtlf\fR was written by Rein Couperus aka but maintained from 2009 on by Thomas Beierlein . Lots of valuable contributions from PG4I (Joop PA4TU) , PA3FWM, LZ3NY, VA3DB, OM4AA, OK1RR, DH5FS, G4KNO and various anonymous contributors... Tnx all for improving tlf!! .P Beta testers and feedback are always welcome !!! .SH "DOCUMENTATION" .TR Bug reports to tlf-devel@nongnu.org tlf_1.1.5/install-sh0000755000175000017500000003325612105506435012553 0ustar jtnjtn#!/bin/sh # install - install a program, script, or datafile scriptversion=2011-01-19.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # 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. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for `test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for `test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # 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 $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: tlf_1.1.5/COPYING0000664000175000017500000004311012072353226011573 0ustar jtnjtn 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. Copyright (C) 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. , 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. tlf_1.1.5/rules/0000775000175000017500000000000012105506436011673 5ustar jtnjtntlf_1.1.5/rules/wpx0000664000175000017500000000160212072353226012433 0ustar jtnjtn################## # CQ WPX Contest # ################## # CONTEST=wpx LOGFILE=wpx.log CONTEST_MODE # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ ++5NN--# F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN # # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # SHORT_SERIAL # ####### END ##################### tlf_1.1.5/rules/arrlss0000664000175000017500000000227412072353226013131 0ustar jtnjtn################################################ # The ARRL SWEEPSTAKES contest needs a # # multiplier file containing the sections # # which are used as a multiplier in the # # directory you start tlf from (arrlsections). # ################################################ # CONTEST=arrl_ss LOGFILE=ss.log MULT_LIST=arrlsections CONTEST_MODE # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ CQ DE % % K F2=@ DE % F3=@ # A CT 83 F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU UR # A CT 83 # ALT_0=message alt 0 ALT_1=nr is # # ALT_2=prec? ALT_3=ur section? ALT_4=ck is 83 83 ALT_5=sec is CT CT #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ####### END ##################### tlf_1.1.5/rules/cqww0000664000175000017500000000304612072353226012602 0ustar jtnjtn################################# # # # CQWW CONTEST # # # ################################# # CONTEST=cqww LOGFILE=cqww.log CONTEST_MODE # ################################## # # # CW Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ ++5NN--14 F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN 14 # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ################################# # # # Voice Keyer Files # # (F1 to F12) # ################################# # #VKM1=cq.wav (examples...) #VKM2= #VKM3=/home/rein/tlf/rst.wav #VKM4=/home/rein/tlf/qsl.wav #VKM5=/home/rein/tlf/73.wav #VKM6=/home/rein/tlf/call.wav #VKM7= #VKM8= #VKM9=/home/rein/tlf/agn.wav #VKM10=/home/rein/tlf/qrz.wav #VKM11=/home/rein/tlf/spreturn.wav #VKM12=/home/rein/tlf/cq2.wav #VKSPM=/home/rein/tlf/spreturn.wav (S&P return message) #VKCQM=/home/rein/tlf/qsl.wav (CQ mode return message) # ####### END ##################### tlf_1.1.5/rules/dxped0000664000175000017500000000160212072353226012721 0ustar jtnjtn################### # DXPEDITION mode # ################### # CONTEST=dxped LOGFILE=qso.log CONTEST_MODE # # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % K F2=@ DE % F3=@ 5NN F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % UP S&P_TU_MSG=TU UR 5NN # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # #SEND_DE # ####### END ##################### tlf_1.1.5/rules/spdx_sp0000664000175000017500000000214112072353226013274 0ustar jtnjtn######################################### # SPDX contest for stations outside SP # # PA0R, 3.10.2003 # ######################################### # CONTEST=spdx_sp LOGFILE=spdx.log CONTEST_MODE ################################# MY_COUNTRY_POINTS=0 MY_CONTINENT_POINTS=1 DX_POINTS=3 COUNTRY_MULT SERIAL_EXCHANGE NOB4 # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ ++5NN--B F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN B # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ####### END ##################### tlf_1.1.5/rules/arrldx_dx0000664000175000017500000000176712072353226013620 0ustar jtnjtn############################### # ARRL DX CONTEST (DX side) # ############################### # CONTEST=arrldx_dx LOGFILE=arrltest.log CONTEST_MODE # MULT_LIST=arrldx_mults COUNTRYLIST=W,VE USE_COUNTRYLIST_ONLY COUNTRY_LIST_POINTS=3 SECTION_MULT RECALL_MULTS # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ ++5NN--1TT F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN 1TT # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # tlf_1.1.5/rules/lzdx0000664000175000017500000000174412072353226012605 0ustar jtnjtn################# # LZ DX CONTEST # # by LZ3NY # ################# # CONTEST=lzdx LOGFILE=lzdx.log CONTEST_MODE # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ LZ DE % % K F2=@ DE % F3=@ ++5NN--SF F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN SF # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # MIXED # COUNTRYLIST=LZ MY_COUNTRY_POINTS=1 MY_CONTINENT_POINTS=1 DX_POINTS=3 COUNTRY_LIST_POINTS=10 ITUMULT WYSIWYG_MULTIBAND tlf_1.1.5/rules/pacc_pa0000664000175000017500000000167012072353226013210 0ustar jtnjtn# PACC contest for stations inside PA0 # ######################################## CONTEST=pacc_pa logfile=pacc.log CONTEST_MODE # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ ++5NN--NB F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN NB # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ################################# NOB4 ####### END ##################### tlf_1.1.5/rules/Makefile.in0000664000175000017500000004512212105506436013744 0ustar jtnjtn# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = rules DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(rulesdir)" DATA = $(rules_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GREP = @GREP@ HAMLIB_CFLAGS = @HAMLIB_CFLAGS@ HAMLIB_LIBS = @HAMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ RULES_FILES = arrl10m_dx arrldx_dx arrldx_usa arrlfd arrlss contest cqww \ dxped eusprint lzdx pacc_pa pacc_dx qso spdx_dx spdx_sp ssa_mt \ template wpx SUBDIRS = rulesdir = $(pkgdatadir)/rules rules_DATA = $(RULES_FILES) EXTRA_DIST = $(RULES_FILES) CLEANFILES = *~ all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu rules/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu rules/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-rulesDATA: $(rules_DATA) @$(NORMAL_INSTALL) test -z "$(rulesdir)" || $(MKDIR_P) "$(DESTDIR)$(rulesdir)" @list='$(rules_DATA)'; test -n "$(rulesdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(rulesdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(rulesdir)" || exit $$?; \ done uninstall-rulesDATA: @$(NORMAL_UNINSTALL) @list='$(rules_DATA)'; test -n "$(rulesdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(rulesdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(rulesdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-rulesDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-rulesDATA .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic ctags \ ctags-recursive distclean distclean-generic distclean-tags \ distdir dvi dvi-am html html-am info info-am install \ install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-rulesDATA install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ uninstall-rulesDATA # 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: tlf_1.1.5/rules/qso0000664000175000017500000000207412072353226012423 0ustar jtnjtn###################################################### # General qso mode (no contest procedure, no points) # # by PA0R 4.10.2003 # ###################################################### # CONTEST=qso LOGFILE=qso.log # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ CQ DX DE % % K F2=@ DE % F3=@ DE % R OM TU FER CALL = UR 5NN 5NN HW? K F4=TU 73 ES GL F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=CQ CQ DX DE % % K # CQ_TU_MSG=TU ES 73 % S&P_TU_MSG=TU 5NN GL # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ####### END ##################### tlf_1.1.5/rules/Makefile.am0000664000175000017500000000042012072353226013723 0ustar jtnjtnRULES_FILES = arrl10m_dx arrldx_dx arrldx_usa arrlfd arrlss contest cqww \ dxped eusprint lzdx pacc_pa pacc_dx qso spdx_dx spdx_sp ssa_mt \ template wpx SUBDIRS = rulesdir = $(pkgdatadir)/rules rules_DATA = $(RULES_FILES) EXTRA_DIST = $(RULES_FILES) CLEANFILES = *~ tlf_1.1.5/rules/arrl10m_dx0000664000175000017500000000171112072353226013567 0ustar jtnjtn############################### # ARRL 10m CONTEST (DX side) # ############################### # CONTEST=arrl10m_dx LOGFILE=arrl10m_dx.log CONTEST_MODE SSBPOINTS=2 CWPOINTS=4 MIXED DX_&_SECTIONS MULT_LIST=arrl10m_mults # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ % % TEST F2= % F3=@ +++5NN---# F4=TU F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU +++5NN---# # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # tlf_1.1.5/rules/template0000664000175000017500000000413112072353226013430 0ustar jtnjtn######################################## # TEMPLATE containing most parameters # # for defining rules for a contest # ######################################## # CONTEST=xxxxxxx LOGFILE=xxxxxxx CONTEST_MODE # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ ++5NN--# F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN # # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # #SHORT_SERIAL #LONG_SERIAL # #SEND_DE # ################################# # # # CONTEST PARAMETERS # # (roll your own... ) # ################################# # #CALLUPDATE # #MIXED # #------------------------------- # Can exchange be recycled? # e.g. impossible if it is a serial # number... # #RECALL_MULTS # # format serial number: (001) # #SERIAL_EXCHANGE # #------------------------------- # Multiplier type: # #WYSIWYG_MULTIBAND # (makes its own multiplier list # on the go...) # #WYSIWYG_ONCE # (same, but mults do not count # per band..) # # #MULT_LIST=arrlsections #MULT_LIST=us_canada_states #SERIAL_SECTIONS #DX_&_SECTIONS #SECTION_MULT #POWERMULT_5 #POWERMULT_2 # #PORTABLE_MULT_2 # ################################# # # # POINTS LIST # # # ################################# # # How may points per qso? # #ONE_POINT #TWO_POINTS #THREE_POINTS #2EU3DX_POINTS # #USE_COUNTRYLIST_ONLY #COUNTRYLIST=SP_DX:SP,HA #COUNTRY_LIST_POINTS=10 #MY_COUNTRY_POINTS=2 #MY_CONTINENT_POINTS=5 #DX_POINTS=10 # # ####### END #####################tlf_1.1.5/rules/eusprint0000664000175000017500000000166012072353226013472 0ustar jtnjtn########################### # European SPRINT contest # ########################### # CONTEST=sprint LOGFILE=eusprint.log CONTEST_MODE # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ de % # REIN F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=@ DE % TU # REIN # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # SHORT_SERIAL # ####### END ##################### tlf_1.1.5/rules/ssa_mt0000664000175000017500000000202112072353226013077 0ustar jtnjtn################################################ # SSA_MT CONTEST # ################################################ # CONTEST=ssa_mt LOGFILE=ssa.log #MULT_LIST=ssamults SERIAL+GRID4 CONTEST_MODE TWO_POINTS # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ CQ DE % % K F2=@ DE % F3=@ # JO65AA F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU UR # JO65AA # #ALT_0=message alt 0 #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ####### END ##################### tlf_1.1.5/rules/spdx_dx0000664000175000017500000000222612072353226013271 0ustar jtnjtn######################################### # SPDX contest for stations outside SP # # PA0R, 3.10.2003 # ######################################### # CONTEST=spdx_dx LOGFILE=spdx.log CONTEST_MODE ################################# MULT_LIST=spdxmults COUNTRYLIST=SP USE_COUNTRYLIST_ONLY COUNTRY_LIST_POINTS=3 SECTION_MULT RECALL_MULTS SERIAL_EXCHANGE SHORT_SERIAL NOB4 # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ SP DE % TEST F2=@ DE % F3=@ ++5NN--# F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN # # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ####### END ##################### tlf_1.1.5/rules/pacc_dx0000664000175000017500000000223012072353226013214 0ustar jtnjtn######################################### # PACC contest for stations outside PA0 # # PA0R, 3.10.2003 # ######################################### # CONTEST=pacc_dx LOGFILE=paccdx.log CONTEST_MODE ################################# MULT_LIST=paccmults COUNTRYLIST=PA USE_COUNTRYLIST_ONLY COUNTRY_LIST_POINTS=1 SECTION_MULT RECALL_MULTS SERIAL_EXCHANGE SHORT_SERIAL NOB4 # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ PA DE % TEST F2=@ DE % F3=@ ++5NN--# F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN # # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ####### END ##################### tlf_1.1.5/rules/arrldx_usa0000664000175000017500000000162612072353226013767 0ustar jtnjtn############################### # ARRL DX CONTEST (Stateside) # ############################### # CONTEST=arrldx_usa LOGFILE=arrltest.log CONTEST_MODE # RECALL_MULTS # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ DE % TEST F2=@ DE % F3=@ ++5NN--PA F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN PA # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # tlf_1.1.5/rules/contest0000664000175000017500000000161412072353226013277 0ustar jtnjtn######################## # General contest mode # ######################## # CONTEST=contest LOGFILE=qso.log CONTEST_MODE # # ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=TEST DE % K F2=@ DE % F3=@ 5NN# F4=TU F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=TEST % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU UR 5NN # # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # #SEND_DE # ####### END ##################### tlf_1.1.5/rules/arrlfd0000664000175000017500000000234112072353226013070 0ustar jtnjtn########################## # ARRL Field day contest # # PA0R 3.10.2003 # ########################## # CONTEST=arrlfd LOGFILE=fd.log CONTEST_MODE ################################## # # # Messages F1= to F12= # # Message CQ_TU_MSG= # # Message S&P_TU_MSG= # # # # % = call v # # @ = hiscall # # # = serial # # [ = RST # # + = increase cw speed # # - = decrease cw speed # # # ################################## # F1=CQ CQ FD DE % % K F2=@ DE % F3=@ 5NN 3ACT F4=TU 73 F5= @ F6=% F7=@ SRI QSO B4 GL F8=AGN F9= ? F10= QRZ? F11= PSE K F12=++++TEST---- % % # CQ_TU_MSG=TU % S&P_TU_MSG=TU 5NN 3ACT # #ALT_0= #ALT_1= #ALT_2= #ALT_3= #ALT_4= #ALT_5= #ALT_6= #ALT_7= #ALT_8= #ALT_9= # ################################# # # # Voice Keyer Files # # (F1 to F12) # ################################# # #VKM1=cq.wav #VKM2= #VKM3= #VKM4= #VKM5= #VKM6= #VKM7= #VKM8= #VKM9= #VKM10= #VKM11= #VKM12= #VKSPM= (S&P return message) #VKCQM= (CQ mode return message) # ONEPOINT # tlf_1.1.5/config.guess0000755000175000017500000012743212105506435013067 0ustar jtnjtn#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. timestamp='2012-02-10' # This file 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, see . # # 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. # Originally written by Per Bothner. Please send patches (context # diff format) to and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-gnueabi else echo ${UNAME_MACHINE}-unknown-linux-gnueabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-gnu exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: tlf_1.1.5/.gitignore0000664000175000017500000000031612072353226012531 0ustar jtnjtnMakefile Makefile.in *.[oa] tlf tlf.1 autom4te.cache aclocal.m4 config.guess config.h config.log config.status config.sub configure depcomp install-sh missing src/.deps src/cscope.out src/.gdbinit stamp-h1 tlf_1.1.5/NEWS0000664000175000017500000013242112072353226011243 0ustar jtnjtntlf-1.1.5 ========= Minor maintenance release. New features: - Report line number for badly formatted lines in initial exchange file. That makes it easier to find the problem for files with a lot of entries. Thanks Mario DH5YM for reporting the problem. - Allow to set SIDETONE_VOLUME to 0 independent from choosen sidetone device. Due to a bug in cwdaemon-0.9.4 setting SIDETONE to 0 switches off the sidetone but also the keying. So please... !!! Set SIDETONE_VOLUME = 0 to switch off sidetone output !!! Bug fixes: - Fix display of zone and section in searchlog window - Correct handling of function keys to send messages in digimode. Old code allowed function keys only during call input. New code supports them also in exchange field. tlf-1.1.4 ========= Minor maintenance release. New features: - ask for confirmation about reported problems in config files to give you time to recognize the problems. - Rework of digimode handling together with fldigi. Fix digimode receive routine 'rx_rtty()', make miniterm output more robust and update miniterm also while the cursor is in the exchange field. Drop some unneeded newlines for each function key macro. - Minor corrections and additions to the man page Bug fixes: - Old version segfaults in 'searchlog' function if a really long callsign filled the input field. - Parsing logic for special characters in own exchange (# ...) do not rely anymore on a trailing NL to the exchange macro. - Fix sidetone control. Recognize CWTONE=0 in logcfg.dat, work around a bug in cwdaemon which does not allow to switch tone back on afterwards. - Stop flickering cursor between input or exchange field and dupe searchwindow. - Fix Alt-t (tune) function to switch tuning on for 6 seconds (can be stopped early with any key press). !!Be aware that there are some problems in different cwdaemon versions (no PTT keying, no chance to stop tuning early, ...). Working with the maintainer to fix it. tlf-1.1.3 ========= Bugfix release. Old tlf-1.1.2 contained a bug in the parsing logic for logcfg.dat and rules files. It failed to recognize some keywords if there was a similar one with the same beginning (e.g. CLUSTERLOGIN got not recognized as there is also a CLUSTER keyword). i Furthermore it complained about empty lines in that files with: 'Keyword '' not supported'. Thanks to David N1EA and Marting OK1RR for pointing that out. Bug fixes: - Implemented new and much more robust parsing logic for keywords. Reworked and rechecked also all parameter handling to allow a better failure handling. - tlf no longer complains about empty lines in config files. - Add support for '~' expansion for '-f' command line switch. (Thanks N1EA). Something like 'tlf -f~/mydir/logcfg.dat' is working now. - Add description of reset of CW bandwidth during band switch and CWBANDWIDTH= keyword to man page. Furthermore a some cleanup and internal changes are made to simplify future maintenance, e.g.: - Cleanup of unused variables and comments. - Fix configure-script to abort if no ncurses lib is installed. - Rename 'configure.in' into 'configure.ac' as former will be no longer accepted by automake-1.13 tlf-1.1.2 ========= Minor maintenance release. New features: - Add ARRL 10m Contest rules for DX stations. - Provide more actual multiplier files for arrldx and arrl10m contests. - Add a better recognition of unkown keywords in config file. Bug fixes: - Fix recongnition of COUNTRY_LIST keyword. - fix a sgfault problem in exchange handling. tlf-1.1.1 ========= Minor maintenance release. New features: - New doc/README.ssb gives some good hints how to use TLF on SSB contest. Thansk Andy, G4KNO for contributing. Bug fixes: - Fix spelling of unmute command in scripts/play_vk. Tnx G4KNO - Make sure that no packet related functions get called if started with 'tlf -n' - Fix segfault during build of logline if not in contest mode - esp. 'RULES=qso' - Fix display of background for partials when leaving call edit mode tlf-1.1.0 ========= Major release. Besides a lot of fixed bugs it provides some new features and internal improvements. Thanks to all of you for pointing out bugs, submitting ideas and testing. To name some without any order of ranks: Ben NJ8J, Martin OK1RR, Fred DM3MF,i Andy G4KNO, Rob N6ROB and Graham VE3GTC. New features: - move tlf sources to public github repository (http://github.com/TLF/tlf) - implement a new bandmap function (see doc/New_Bandmap.txt for details) * move score display in upper right corner of display to make room for the bandmap * Ctrl-A adds an observed station as spot to the bandmap and broadcasts it to other stations in the LAN * Drop old SPOTLIST display (superseded by new bandmap) - changes in logcfg.dat handling !Fix your contest rules! * allow >9 points for any point scoring * drop old unneeded keywords (MANY_CALLS, SPOTLIST, FILTER) * fixed keywords for CQ_TU_MSG, VKCQM and VKSPM according to manual * BANDMAP=, allows configuration of the new bandmap display (see man page) - Send VKCQM and VKSPM voice messages after end of QSO in SSB. - Use external user adaptable script 'play_vk' for playing of SSB voice key messages - add list of 'usa_canada' states and general 'contest' rules file to installation files - drop special handling for TenTec ORION (correctly handled by hamlib in meantime) - changed handling of comments for WYSIWYG_ONCE and WYSIWYG_MULTI Old code stopped multi recognition at first space in comment string. Changed to use whole string but strip trailing spaces. Was so back before tlf-0.9.21 - Better handling of lines from external multiplier file * Allow comment lines (starting with '#') * strip leading and trailing whitespace * drop empty lines - New actual cty.dat file (December 2011). Thanks Martin OK1RR. Fixed bugs: - segfaults due to a racing condition if heavy load on cluster - '+' and 'INSERT' keys in call and exchange input field respects CTCOMPATIBLE mode now - Allow edit of old QSO's only if call field is empty - Fix display of section in ARRL_SS and recognition of 'U' precedent - Fix upper boundaries for 160 and 40 meters. - Correct rescoring for WYSIWYG_* methods - keywords in logcfg.dat needs to start at column 0 - correction of spelling errors and drop of old infos from man page - a lot of fixes of old problems: * proper locking to prevent racing conditions * fix bad scoring of multis * correct position of pfx display in bottom line of check window * correct display of 1A stations in info line * wrong return value from searchcallarray * wrong handling of corner cases for some internal array scans Reworked internal structure: - did some modernisation of configure.ac - start to use ncurses panel functions for overlapping windows and glib-2 for effective handling of large data collections - switch cty data handling and mults_possible to growing arrays and therefore allowing unlimited number of entries - simplify and drop unneeded code tlf-1.0.5 ========= maintenance release * fixes some nasty racing condition between bandmap code and checkwindow. In result prefix in lower line of checkwindow got displayed wrong, but country was right. Thansk Martin OK1RR for reporting. tlf-1.0.4 ========= maintenance release * fix for wrong handling of recalled exchange (tnx OK1RR). New policy is a s follows - All calls from initial exchange file will be recognised even if part of a complex call, e.g. DL1CCL in LA/DL1CCL/p - All calls from former QSO's have to be exact including any pre- or postcombination - Now complete exchange will be recalled (not only first word) tlf-1.0.3 ========= maintenance release * fix buffer overflow in 'send_lan_message' * fix wrong count of points and qso's for last band entry (tnx OK1RR) tlf-1.0.2 ========= maintenance release * fix bug in sendto call in TLF-1.0.0 and 1.0.1. cwdaemon needs a zero terminated string. tlf-1.0.1 ========= maintenance release * fix logfile read error. Last QSO got read twice. * fix bug in cty.dat and in the routine which reads in the file Some prefixes from BY were not recognised. * fix calculation of sun up and down time in MUF prediction window. It is now based on longitude from country description in cty.dat instead of the former timezone difference. That should be more accurate now. tlf-1.0.0 ========= Major cleanup release. Fixes lot of buffer overruns in string handling, which stopped old version from working with new GCC and GLIBC. * Better recognition of hamlib install (tnx F8FCE) * Rewrote handling of initial exchange file. It now allows empty and comment lines (#) and spaces around the callsign. Leading space before comment gets ignored. * Changed ESC handling in comment and call input field: Does no longer wipe out call and exchange field if you started sending. * New callmaster and cty.dat file (tnx OK1RR). Bugfixes: * Fix input handling of notes. * Fix autocq handling. - First characters gets no longer swallowed. - CQDELAY from logcfg.dat is now handled correct. * fix calculation of sunrise and sunset times * fix calculation of QSO Rate * fix parsing for MARKERDOTS and MARKERCALL keywords in logcfg.dat * make Backspace and Delete-Keys the same to allow some more terminal input encodings tfl-0.9.31-2 ============ 'Possible calls' are now in top left corner, and share the space with the keyer. The 'possible calls' routine first checks the own log and then the callmasterdatabase. Calls can now be up to 12 characters tlf-0.9.31 ========== Fix for buffer overflow. 'Worked' window now searches from start of callsign. tlf-0.9.30 ========== Bug fixes: - exchange needed at least 1 character in dxped mode RTTY miniterm changed to display line feeds (reading formatted texst is easier) RTTY now sends linefeeds before and after the macro. tlf-0.9.29 ========== Bug fixes: - Date display error - Spurious character error - Malloc free error in socket.c I also included Fabian's patch to searchlog.c for testing...I like it. tlf-0.9.28 ========== Bug fixes (country indication did not work, wrong mults file for arrldx_dx). Added interface to gMFSK to enable RTTY contesting. Added new parameters for the logcfg.dat file: GMFSK (use gMFSK as an output device) RTTYMODE (start tlf in RTTY mode) DIGIMODEM=/home/youruser/gmfsk_autofile You need the special version of gMFSK which is used for pskmail (http://pskmail.wikispaces.com). Information on how to install this hacked version of gMFSK-0.6 is on the pskmail wiki. Tlf takes care of all contest related stuff, exactly as you are used to in CW mode... Yyou can use keyboard mode (Alt-K in CW mode) by switching to the gMFSK send field with "Alt-TAB". This toggles between tlf and gMFSK. This will be necessary until I have time to redo the gMFSK interface (a socket interface is on the todo list). tlf-0.9.27 ========== Bug fixes (segfault at startup at some systems) tlf-0.9.26 ========== Bug fix (segfault using the voice keyer). tlf-0.9.25 ========== Bug fix for non-hamlib compilation tlf-0.9.24 ========== - Code adaptation to compile with gcc-4.0 without warnings and segfaults (will compile on UBUNTU-5.10, FC4 etc..). tlf-0.9.23 ========== - New function: start cw before call is complete. In contest mode, you can start sending the call from the call window with 'space' or with 'down-arrow'. - New command: :CHAR asks for number of characters the call must have before sending starts. Default: 0 = OFF. If CHARS is 3, tlf starts sending as soon as you have input the first 3 letters of the call. If you are on slow speed you then have time to complete the call (including backspacing) before sending the first 3 letters is finished. This is of limited use when running above 40 wpm :) - incorporated patch from W9WI fixing a bug in the voice keyer. - changed cw speed control: now default active in call and exchange fields, even if field is not empty - changed qso save logic: RETURN now always logs the qso in SSB and in general qso mode. - New parameter: CHANGE_RST. If set in logcfg.dat, Pg-up and Pg-down will change RST instead of CW speed if field is not empty. Default: off. - fixed nasty bug which caused CQDELAY to start at 0 instead of the default in logcfg.dat - manpage updated for version 0.9.23 tlf-0.9.22 ========== This release fixes a bug to make it compatible with gcc-4.0 / AMD64 - The (local swedish) ssa_mt contest has changed its exchange format into serial number + 4-character grid field. This made it necessary to make a new parameter called SERIAL+GRID4. Tlf extracts the first 4 characters for the multiplier. Input format: e.g. 001 JO21QI, the mult will be JO21. The rules file has also been updated. - Man page updated for version 0.9.22. tlf-0.9.21 ========== This release includes all the patches I received over the last 6 month. Besides making the code more stable, it will enable compilation with gcc 3.4. Further it should be compatible with cwdaemon-0.9 (weighting -50...50). I also got a patch to cure a problem with the qso logic, 2x escape will now reset the qso logic as soon as the call field is empty again. TNX PG4I, VA3DB, OM4AA. Also the anonymous contributions I got through the bugtracker are very welcome!! - Changes: - the cw sidetone setting (TONE) in logcfg.dat has become CWTONE=... - a new parameter LOWBANDS_DOUBLE has been introduced (points x 2 for 40-80-160) - a new parameter CLUSTER_LOG has been introduced. When set the cluster messages are writteni to a 'clusterlog' file... this can be tailed to a terminal window (tail -f clusterlog) - the initial exchange function now also recognises embedded calls (PA/OK1RR/P) - The logcfg.dat template has been updated to version 0.9.21. - The manpage has been updated to version 0.9.21. tlf-0.9.20 ========== - Bug fixed: In cw keyboard, ENTER produced a newline - Bug fixed: In cw keyboard PgUp and PgDwn did not change the cw speed - Bug fixed: The ';' was missing in "note-in-log" if the LAN was not active - Bug fixed: Added to startmsg.c - Bugs fixed: Buffer size handling in various places (tnx for the patch !!) - Added OPEN BSD support to audio.c/h (tnx for the patch!) - Added test version of CWBANDWIDTH=xxx to set bandwidth from Hamlib when mode is switched: A value of 0 to switch off automatic mode switching A value of x for setting the bandwidth If the parameter is not there, PASSBAND_NORMAL is used (default) This test version works for cw only. tlf-0.9.19 ========== - Added INITIAL_EXCHANGE facility. Format: INITIAL_EXCHANGE=names.txt The file must contain a comma-separated list of exchanges, if e.g. the exchange is the name of the operator: PA0R,rein PG4I,joop OK1RR,martin The file can be any length. If RECALL_MULTS is set, tlf will look in this list for the exchange and fill it in for you. There are various contests which have a standard exchange, like e.g. the FOC Marathon. - Doubled the arrays for the cty.dat list, to enable larger-than-standard custom lists. Also set the max. number of mults to 500 per band (these values can be set in tlf.h at compile time). - The "note in log" (';') function will not indicate "Node 'X' , qsonumber" if the LAN is not active. tlf-0.9.18 ========== Version 0.9.18 only adds native support for the ten tec ORION, to bridge the time until Hamlib has an approriate driver. Use RIGMODEL=ORION if you have one. This works with or without Hamlib installed. Set RIGSPEED=57600. The driver uses the internal keyer of the ORION, so you don't need cwdaemon i either (unless you use the tlf voice keyer which uses cwdaemon's PTT output, or an automatic antenna switch controlled by tlf). - I also added a :debug_tty command to test rig links. tlf-0.9.17 ========== - New sound record feature" New command :SOUnd F1 ... F12, s, c will record the voice keyer message for that key 1: Start contest recording to ddhhmm.au 2: Stop contest recording 3: Play back contest recording ddhh[mm][xx] xx is the offset from the start of the file e.g.: 2110 will start from beginning of the day 21 hr 10:00 file. 21100013:00 will start from day 21, hh 10, mm 00, + 13 minutes: 0 seconds To make sure you get a new file every hour make a cron job to run i every hour with: /usr/bin/pkill -f sox > /dev/null 2> /dev/null Once started the recorder will run until the lock file ~/.VRlock is removed. - Bug fixes from the EA RTTY test: Rtty miniterminal improved... wrote to :info, :packet and :help screens S&P mode sent no call with F1 - Added new command :RTTY. This one will switch the MFJ1278B controller into RTTY mode. -- Fixes from the WPX-SSB contest (PI4TUE): Operator got into log view (LESS) and could not get out: tlf will not go from edit into log view anymore (use :VIEW) Operator gives out wrong serial number after the run stn updates the i number: the serial number to be given is now printed prominently below the call field. - Added new parameter: CLUSTERLOGIN=pi4tue-1 if this parameter is present tlf will automatically login a telnet cluster using the call mentioned. This makes it easier for non-linux users to start the program. - :HELP will show a file 'help.txt' instead of the man page. This file can be contest/operator specific. Make your own.... - Autocq: Tlf will stop sending as soon as a call is written into the call field - Tlf will now send LSB or USB to the rig, depending on band. In RTTY mode the rig stays in LSB, no matter which band. tlf-0.9.15 ========== - Added support for MFJ1278B multi-mode controller. You can now use your MFJ1278B as a CW output device with the same controls as for the software keyers (ctrl-k for keyboard mode, escape to leave keyboard mode, pgup for speed-up and pg-down for speed-down). The RTTY mode enables the RTTY contests with the same user interface as with the CW contests, also AMTOR is supported. New parameter for logcfg.dat: MFJ1278_KEYER=, e.g. MFJ1278_KEYER=/dev/ttyS0 New characters for RTTY keyboard mode: '{' TX '}' RX '\' Enter Command Mode 'K' Leave command mode. ',' (comma) or Ctrl-k to go into keyboard mode ESCAPE to leave keyboard mode. The '{' and '}' characters can also be embedded in the Contest messages e.g. F1={RYRY TEST DE % % PSE K} will transmit the message and switch back to RX. New command ':MINiterm' to toggle a 5 x 40 char terminal window on/off. This will only work in DIG mode. - Added experimental :SCAnner function (an idea of OK1RR) The SCAnner funtion combines the Frequency Control function of Hamlib with a rudimentary Audio S-Meter/plotter via the sound card. Just connect the rx output to the soundcard input and you are o.k. Two functions are supported by version 0.9.15: Band Scan Function - can be used as a 'second hand' to scan a band for activity with a separate receiver + computer. You give a Start frequency and a step frequency, and the "S-Meter" values are plotted. SWR scan function - with a simple noise bridge and a computer controlled rx as a frequenzy-stepped detector you can plot antenna swr or filter transfer characteristic. New parameters for logcfg.dat: SC_DEVICE= Sound card device, e.g. SC_DEVICE=/dev/dsp0 S_METER= Calibration curve for the Audio S-Meter. As the audio volume depends on the transfer characteristic of your rx (incl. AGC) you have to calibrate the S-Meter. With this parameter you can create a curve with 20 points e.g.: S_METER=20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 would create a linear curve with a max. value of 20. (Of course you will need something logarithmic). Maximum value = 255 (8 bits). ESCAPE to go back to the previous level. - Bug fixes by PA3FWM tlf-0.9.11 ========== - Added support for Cwdaemon-0.8 New parameters for logcfg.dat: - SOUNDCARD set sidetone output device to soundcard. - SIDETONE_VOLUME=<0 ... 99> set sidetone volume on soundcard - Changed auto-cq delay to 1/2 second increments. - updated cty.dat file (11/15 version) - added usa_canada_states file tlf-0.9.10 ========== - Added SSBPOINTS= to set points per SSB qso - Added CWPOINTS= to set points per CW qso - Extended pr_hostaddress string to hold 47 characters (for long host names) (try TELNETHOST=claudia.esrac.ele.tue.nl TELNETPORT=8000) tlf-0.9.9 ========= - Tlf now uses the original cty.dat file, not necessary to convert to ctydb.dat. - Bug fix: KH2/KK2H and KK2H/KH2 now both in GUAM. - Included the changes Bob N7XY made to cty.dat. Also added TO0O (in Martinique) tlf-0.9.8 ========= - Changed time-to-live default for DX spots to 30 minutes. This can be changed at compile time with the MAXMINUTES constant in cluster_bg.h - Added station ID to log line when logging from differentl nodes in the network. This enables post-contest analysis and log massage after the contest. CQWW_M2 must be set in logcfg.dat for this. - Added qso number and NODE ID to note in log for post contest analysis. - Added code to prevent double node id's in the network. If tlf hears it's own node id on the network, it will ask for another one. - Added :SYNc command, which will resync the logfile and recalculate the score without restarting the program. The automatic resync at program restart has been disabled, as it was generating too many problems. So the only way to resync the log is using the :SYNC command. - Added :REScore command, which will recalculate the score without having to restart the program. - Bug fix: /MM and /AM stations now have no country (no country multiplier value for cqww, only the zone), but do count for points. Tlf tries to calculate the continent from the zone. This is necessary to calculate the points. tlf-0.9.7 ========= - Added new parameter for logcfg.dat: SYNCFILE=user:password@host/dir/syncfile (wget syntax). When you start tlf with this parameter in logcfg.dat tlf will wget the logfile from the relevant node, make a dated backup of your local logfile, and merge the 2 files. WARNING: this contains the password of the remote machine so I also: - Added a new startup option for tlf: -s : tlf -suser:password@host/dir/syncfile will sync the local logfile at startup. - Added parameter to change colors (defaults remain as usual): TLFCOLOR1=23 (Header and footer) TLFCOLOR2=67 (Pop up windows) TLFCOLOR3=70 (Log window) TLFCOLOR4=57 (Markers/dupe colour) TLFCOLOR5=43 (Input fields) TLFCOLOR6=70 (Window frames) The numbers in octal, fg/bg or bg/fg (you have to try it). You should only specify these if you don't agree with the standard colours of tlf. - Call edit mode is now default INSERT mode (log edit remains OVERWRITE mode). - Bug fix: CE0Y/SP9DTP was wrongly located in Poland (also works for VP2E now :-) tlf-0.9.6 ========= - 2 x escape in the exchange field will return to call field and clear it. - Patch for configure.in to enable build under BSD (warning: tlf segfaults under BSD, the cause is being investigated). Tnx Joop PG4I - Changed cabrillo for serial + section multiplier (e.g. ssa mt contest) - Patch from LU4HKN to change version automatically in cabrillo file - Patch from Stephane F8CFE to add new parameter for rig control: RIGCONF=civaddr=0x40,retry=3,rig_pathname=/dev/ttyS0 which will send rig configuration info to Hamlib. - Added new parameter for logcfg.dat: SYNCFILE=user:password@host/dir/syncfile (wget syntax). When you start tlf with this parameter in logcfg.dat tlf will wget the logfile from the relevant node, make a dated backup of your local logfile, and merge the 2 files. WARNING: this contains the password of the remote machine so I also: - Added a new startup option for tlf: -s : tlf -suser:password@host/dir/syncfile will sync the local logfile at startup. - Added parameter to change colors (defaults remain as usual): TLFCOLOR1=23 (Header and footer) TLFCOLOR2=67 (Pop up windows) TLFCOLOR3=70 (Log window) TLFCOLOR4=57 (Markers/dupe colour) TLFCOLOR5=43 (Input fields) TLFCOLOR6=63 (Window frames) The numbers in octal, fg/bg or bg/fg (you have to try it). You should only specify these if you don't agree with the standard colours of tlf. - Call edit mode is now default INSERT mode (log edit remains OVERWRITE mode). - Bug fix: CE0Y/SP9DTP was wrongly located in Poland (also works for VP2E now :-) tlf-0.9.5 ========= - added SSA_MT contest (beta...) - added capital 'Y' to exit check. - added new parameter: NO_BANDSWITCH_ARROWKEYS this will prevent unwanted band switching when you are not using rig control. Band up=alt-b, band down = alt-v (Trlog compatible). - bug fix: qso number was increased on "notes" line - bug fix: zone number was overwritten by the network - bug fix: table overrun in packet modules when too many spots/h came in caused segfault. tlf-0.9.4 ========= - added band output routine for cwdaemon-0.7. New parameter: BANDOUTPUT to switch it on. Cwdaemon-0.7 will output band info on pins 2, 7,8 and 9 of the parallel port. 160m = 1, 80m = 2 .... 10m = 9. This is compatible with commercial band decoders. You can also use different coding: BANDOUTPUT=12484848 will put pin 9 high to switch your 3-bander etc... no need for a decoder, a few relays will do... unless you also want to switch your bandfilters. - known bugs: tlf seg faults when switching from the NEEDED band map to the spot list with very large band maps (the 10m bandmap had 150 entries during cqwwssb sunday afternoon) ce0y/sp9spt shows up as Poland instad of Easter Island... tlf-0.9.3 ========= - Bug fix: Speed setting from logcfg.dat erratic. Changed parameter to CWSPEED=xx (was SPEED=xx). - Bug fix: The auto cq function could not be stopped with ESCAPE - Changed parameter input for TNCPORT and RIGPORT. The parameters now accept direct path entry: e.g. RIGPORT=/dev/ttyS0 or TNCPORT=/dev/ttyUSB1. Tnx ZL2BSJ for the help. This adds USB capability to tlf... - Added parameter NOAUTOCQ which switches off the auto_cq function - Added parameter SSBMODE to start tlf in ssb mode (does not switch the rig). - Added possibility to have several logcfg.dat files: Start tlf with tlf -f. You can now have different configurations per operator. e.g. tlf -fPA0RCT, tlf -fHB9FBL etc... Tlf first looks at the -f parameter, and expects the file in the working directory (e.g. /home/yourcall/contest/2003/cqwwcw/logcfg.dat). The default filename is logcfg.dat. If there is no config file in the working directory tlf opens PACKAGE_DATA_DIR/logcfg.dat, READ ONLY (often needs root privileges). You will need to change the call and other parameters on that one. - :HELp now displays the manpage. - :INFo now also displays the relevant filenames, addresses, and ports. tlf-0.9.2 ========= - Added Adif export capability. The command :ADIf will write the logfile i properly (I hope) formatted to a file with a .adif suffix. - Fixed bug in cqww contest: when a new spot arrived the cq zone would be changed. - Added new method to handle contest rules (by LZ3NY): You can put general parameters, which are the same for all contests (call, keyer speed, window handling etc.) into logcfg.dat. Put CONTEST= into logcfdg.dat. Tlf now first looks if there is a directory "rules/" in the working directory, e.g. /home/yourcall/tlf/2003/cqwwcw. It then loads the file which contains the rules for that contest. If the directory "rules/" is not available there, tlf will look into /usr/local/share/tlf/rules, and try to load the file from there. If not available tlf will set the contest to "qso". This will make it easier to publish the rules files for various contests. If you programmed and tested a new contest, please send the rules file to PA0R@EUDXF.ORG so I can add it to the distribution. - Added support for MC editor (by LZ3NY) - Added QUIT command (by LZ3NY) - Added WAZMULT (by LZ3NY). Uses Cqzone as multiplier. - Added ITUMULT (by LZ5NY). Uses ITUzone as multiplier - Added CQDELAY parameter for setting cqdelay in logcfg.dat (by LZ3NY) - Added PFX_MULT (works like in wpx) - Added Dynamic check for users terminal type (defaults to rxvt) (by LZ3NY). - Added experimental support for xterm. Sometimes xterm starts with the wrong keyboard map. This is the case when the arrow keys don't work. Remedy (workaround) is to first switch into the shell (with "!") and back to tlf (with "exit"). The arrow keys as well as the function keys will now work in most cases. Please report irregularities to PA0R@EUDXF.ORG, I don't expect it to work everywhere. Also the color scheme is the best I could do with the standard colours of xterm. I prefer rxvt! - Changed cw keyer speed control back to pg-up/pg-down. Alt-v will only work in CT compatibility mode. - Changed cqdelay control to ctrl-pgup/ctrl-pgdown. Ctrl-pgup is not possible with TERM=linux, so I had to add a command :CQDelay which will do the same. - Added band switch control with Alt-v and Alt-b (to be compatible with TRLog), right/left arrow will work also - Added Alt-e control to enter edit qso's mode (to be compatible with TRLog), up-arrow will work also. tlf-0.9.1 ========= - Added PFX_MULT, wpx-style multiplier. - Added RXVT parameter (logcfg.dat) which sets the colours for using tlf in an rxvt terminal. tlf-0.9.0 ========== - Added experimental voice keyer support for soundcards, based on the sox package. The voice keyer works as soon as the mode is SSB and you have nominated at least 1 sound file. - added parameters to logcfg.dat for the voice keyer. They are e.g.: ################################# # # # Voice Keyer Files # # (F1 to F12) # ################################# # VKM1=cq.wav VKM2= VKM3=/home/rein/tlf/rst.wav VKM4=/home/rein/tlf/qsl.wav VKM5=/home/rein/tlf/73.wav VKM6=/home/rein/tlf/call.wav VKM7= VKM8= VKM9=/home/rein/tlf/agn.wav VKM10=/home/rein/tlf/qrz.wav VKM11=/home/rein/tlf/spreturn.wav VKM12=/home/rein/tlf/cq.au VKSPR=/home/rein/tlf/spreturn.wav (S&P return message) VKCWR=/home/rein/tlf/qsl.wav (CQ mode return message) # - You have to make your files off line. As tlf uses sox, most audio files can be played. - You can test the voice keyer capability with "play audiofile.xx". If that works you are o.k. I have used sox-12.17 for testing. - The voice keyer uses the same qso logic as TRlog in cw, you only have to say the call and press ENTER twice... (if the exchange is standard, like in the cqww) - If you want to use the PTT line, the cwdaemon must run as well. - You have to invent your own hardware interface to the trx (there are numerous examples floating around the net...) ** comments please ** tlf-0.8.23 ========== - bug fix: zone could not be changed from default in cqww tlf-0.8.22 ========== - Added -x option to use rxvt colours and keys. - Changed sections exchange check routine to accept 1 character mults. - Updated manpage tlf-0.8.21 ========== - Added TXDELAY (Turn On Delay) control for cwdaemon. The value of TOD from logcfg.dat is sent to the keyer at startup. Value range is 0 ... 50 ms (0 switches PTT off completely) - Added Alt-t command for TUNE (stops with any key) - Added Alt-p command for PTT on|off - Added Ctrl-r command to switch lp0-pin 14 on|off (SSB mic|SSS Soundcard) - Some cosmetic changes to the Alt-w (weight) dialogue tlf-0.8.20 ========== - Made tlf compatible wit hamlib-1.1.4 (new rig.h). - Added fast startup (now default). - Verbose startup with -v option - Version output with -V option - Debug mode with -d option (to check rigctl) - Added dialogue window for CW speed and weight setting (Alt-v and Alt-w). - Bug fixes for DX_&_SECTIONS multiplier for ARRL and CQ 160 meter contests (incl. cabrillo output). - Added manpage (tlf.1) tlf-0.8.19 ========== - Added flexible point parameters for logcfg.dat (tnx for contribution Mitko, LZ3NY): COUNTRYLIST=SP_DX:SP List of countries that have exceptional points. Format e.g. NRAUTEST:OH,OH0,OJ0M,SM,OZ,OY,OX etc... You can also give a file name, and put the country information into a file (same format). COUNTRY_LIST_POINTS=5 All countries in the list get 5 points USE_COUNTRYLIST_ONLY Only countries in the list get (5) points, all others 0. MY_COUNTRY_POINTS=1 My own country gets 1 point MY_CONTINENT_POINTS=2 Other countries in my continent get 2 points DX_POINTS=10 DX countries get 10 points The above only takes care of the points, not the multipliers!! You can combine this system with e.g. a WYSIWYG_MULTIBAND or a COUNTRY_MULT, a MULT_LIST or SECTIONS. Please try this well before the contest, so there is still time to make changes if needed!! - Added possibility to give > 9 points (e.g. CQWW-160m) - Added weight control (Alt-w) for netkeyer (-5 ... 5) - Tlf now sends weight from logcfg.dat to netkeyer at startup - Tlf now sends speed from logcfg.dat to netkeyer at startup - Startup works faster at restart tlf-0.8.18 ========== - fixed enter key in CTCOMPATIBLE mode - fixed bug in call entry INSERT mode: tlf would segfault if too many characters were added to a call - fixed bug: backspace would switch off score window tlf-0.8.17 ========== - fixed bug in arrl_usa contest: scoring was broken - fixed bug in arrl_usa contest: network scoring was broken - fixed bug in arrl_usa contest: cabrillo file showed exchange twice - fixed bug in getctydata: country of /QRP stations not recognized tlf-0.8.16 ========== - fixed the colors for the xplanet markerfile - introduced "markers only" possibility for small azimuthal xplanet display - introduced patch from LZ3NY (auto-B4 when hitting ENTER on a dupe). if you don't want it set NOB4 in logcfg.dat. The b4 message must be in F7. - fixed bug in searchlog which made P3A a dupe when you worked YP3A. - changed all pictures in the manual to png format. tlf-0.8.15 ======== - fixed bug leading to SEGFAULT when using shift_F1...F8 - quick fix for bug leading to segfault when tlf is started on a terminal with COLUMNS > 80 - shift_F1...F8 now starts change message for F1...F8 (shift_function key may not work at some terminals!!) - MARKERS= writes a marker file for Xplanet, containing the last 8 entries to the spot list or the bandmap (whichever is active). tlf-0.8.14 ======== - added section mult capability (exchange = mult = section from file) tlf-0.8.13 ======== - reworked bandmap. Goto bandmap with "." or "Alt_," switch between "all" and "needed" with "." scroll with up/down and pg-up/pgdown, leave with ESC. - colour coding for bandmap (only works for contest bands). - grab spot (ctrl-g) with empty call field takes last one in spot list - added "SERIAL+SECTION" multiplier capability for nrau (scandinavian) test - added "MULT_LIST=xxxxxx" capability for nrau test (flat ascii multiplier file (all caps) required in working directory) - fixed "TWO_POINTS" capability for nrau test - fixed ":mult" command to generalize "multipliers worked" display tlf-0.8.10a ========= - fixed bug "tlf does not start without a logfile" tlf-0.8.10 ======== Bug/unwanted feature fixes: - when adding a note ';', it kills the data in the current QSO field - when deleting last QSO '-', and the last QSO was a Note,   QSO's in SCORE window is wrong (QSO's count decremented while it   shouldn't) - when call field is empty, is TAB suposed to give a zone? - when editing last QSO '@', if I go right (with -> key) till end of line,   I'm stuck on next line. Acutally, If you enter "ggggggggggggggggggggggggg"   past the end of line, it will overflow to the next line. And there's no   solution to go back (ESC and :edit to fix it though) But the screen looks   ugly in the mean time. - tlf does not handle very well bogus .log text files. mostly FIXED, needs more work - entering edit last '@', and add an extra 9 to 59 report (I know this is   silly in SSB mode), you can replace the char but you cannot suppr the   extra 9 (either with del or backspace). - when editing call field with left key, it gets green on orange.   but when I do a replace (overwrite a char), the field looses color   back to yellow on blue, but I'm still in edit mode! - disable "ZONEDISPLAY is 1" message on ":zone" cmd - allow ENTER key in exchange field - backspace in edit field mode tlf-0.8.9 Beta for CT adepts..... ======= - after making some 3000 qso's with CT at CT9L in the cqww I added the most important CT commands to tlf. See the new Alt-H command for details... - The up-arrow will now lead into the qso editor as requested by CT freaks... - The CW keyer speed can be adjusted with Alt-V or from within the keyboard routine (Alt-K, ctrl-K or ,), with up/down arrow. - For CT compatibility mode (use Insert and + for running) uncomment the CTCOMPATIBLE command in logcfg.dat. There is NO S&P mode, and Enter will log the qso. (But you asked for it...) tlf-0.8.7 ======= - added time sync protocol for networked nodes. - add TIME_MASTER to logcfg.dat for the master station. - the "@" command now allows to edit the qso's visible (5 qso's). During edit mode LAN receive is stopped. Leave edit mode with enter, tab or esc. - changed insert mode for call edit. tlf-0.8.6 ======= - Bug fixes for CQWW-CW: - W/VE zones default according to all area - Fixed simulator to give right zone for W/VE call areas - Zone input with 1 or 2 characters now possible - Zone correction in exchange field (04 3 ) - Call correction in exchange field (04 W7KJ ) when CALLUPDATE is set in logcfg.dat - D4B, VP2E, VP2M, VP2V, PY0FF, NP2, WP2 now correctly scored - R1ANZ is now CE9 in zone 29 - TA1 is correctly placed in zone 20 (EU) - W2XXX/TI8 now handled correctly - Fixed segmentation fault when too many input chars in input field - Right tlf version in cabrillo file - Edit last qso can now be closed also with enter and tab. tlf-0.8.5 ======= - added parameter TIME_OFFSET= to logcfg.dat. It enables you to use the computer at local time, while tlf logs in utc. Use any value between -23 ... 23. In PA0 the value is -1 for winter time. - in cqww in-country qso's count 0 points also in NA. tlf-0.8.4 beta for arrl sweepstakes ======= - use CONTEST=arrl_ss in logcfg.dat - exchange input like TR, including call correction (needs spaces on both sides) in exchange field - if you want to use this "call update" feature, put CALLUPDATE in logcfg.dat. - put file "arrlsections" file in working directory - scores o.k. for single op and M/S - cabrillo output o.k., answer "A63KS" or whatever you used to "standard exchange" question - :MULt command gives worked multiplier list - 10 extra call memories (alt-0 to alt-9) programmable via logcfg.dat tlf-0.8.3 ======= - Added M2 category for cqww (cabrillo file + logfile) - Added CQWW_M2 command for logcfg.dat - Added LAN_DEBUG command for logcfg.dat (dumps logfile called "debuglog" into working directory, showing all LAN messages received (raw data) - fixed bug allowing "\" command to log blank qso tlf-0.8.2 ======= - Changed SSB log routine now mirrors CW routine with ENTER - fixed bug allowing logging a blank qso in SSB - updated callmaster and ctydb files tlf-0.8.1 ======= - Added serial number handling for e.g. wpx contest tlf-0.8.0 ======= - Added full network support via upd/ip, enabling M/M and M/S operation - Syncs/distributes log data, packet data, frequency data, local spots, local talk between tlf nodes tlf-0.7.4 ======= - fixed bug hiding the WARC bands - Added support for user mode cwdaemon (NETKEYER in logcfg.dat) See new logcfg.dat ( NETKEYER, NETKEYERPORT, NETKEYERHOST) . tlf-0.7.3 ======= - New command: " :simulator" starts a cw simulator for the cqww contest set CONTEST=cqww. - In simulator mode call CQ with F1 to start the run.... - Fixed a nasty bug which showed after working 20 JA stations. You can now go up to MAX_CALLS. tlf-0.7.2 ======= - It is now possible to compile tlf with or without Hamlib. - Use ./configure --enable-hamlib for Hamlib support. tlf-0.7.1 ======= - rig control now on ttyS0 and ttyS1 (logcfg.dat: RIGPORT=0 or RIGPORT=1) - grab spot (ctrl-g) now also works in spot mode tlf-0.7.0 beta test version with hamlib-1.1.3 integration ============================================ - all rig control related functions were changed to work with hamlib-1.1.3 - just compile hamlib-1.1.3 (./configure, make, make install, that's all!!) - this tlf version needs hamlib-1.1.3 library. You may have to do /sbin/ldconfig , so tlf can find the lib at startup !! - tested o.k. for the omni 6 plus. For the rit of the omni and icom rigs you need a patch. - grab spot (ctrl-G) only works in band map - add spot (ctrl-A) adds call in call field to bandmap - frequency conrol (ctrl-F): up/down arrow for 100 Hz, left/right arrow 20 Hz steps. escape goes back to normal mode - mode switch :SSB now gives right side band (USB, LSB) - I need reports on tlf/rig compatability (see Hamlib on source forge for lists) !! tlf-0.6.1 beta test version of telnet / tnc support ==================================================== - fixed bug gobbling up display when long buffers came in - added FIFO clfile - preliminary fix for band map display Use of FIFO input: - comment out the telnet and tnc interfaces in logcfg.dat - uncomment FIFO_INTERFACE - start e.g. call -r | tee /clfile tlf-0.6.0 beta test version of telnet / tnc support ==================================================== bugs: band map not ready (work in progress) - major rewrite to limit disk access in order to speed up various check functions - included telnet client and tnc/modem client for testing - ioctrl for serial port keyer by PA4TU included Telnet operation: ---------------- - provide internet connectivity to DX cluster (e.g. pi4tue) - in logcfg.dat uncomment TELNETHOST=131.155.192.179 - in logcfg.dat uncomment TELNETPORT=8000 - comment out #TNCPORT= - if there is connectivity tlf will connect to the cluster. login with your call. - Leave the telnet client with ":" in first column. - Open cluster window int tlf with ":CLUSTER" - send info to cluster with ctrl-b TNC operation ------------- - #Comment out the telnet options in logcfg.dat - Uncomment either TNCPORT=1 or TNCPORT=2 - Connect a tnc to either ttyS0 or ttyS1 - Set baud rate of tnc to 2400 Bd (fixed, will be made variable) Tlf will now startup into the tnc client. - leave tnc client with ":" in first column - open cluster window in tlf with ":CLU" - send info to tnc with ctrl-b Go back to telnet or tnc client with ":PACKET" you can enter view mode with up-arrow/down-arrow (100 lines max.) Please report bugs to pa0rct@amsat.org tlf-0.5.4.5 =========== - several code changes to speed up dupe check (see ChangeLog) tlf-0.5.4.4 =========== - several code changes to speed up check partials - changed cqww dx scoring for NA stns (2 pts for own cty) tlf-0.5.4.3 ========= - Added MIXED capability - Added :CWMODE, :SSBMODE, and :DIGIMODE commands - Fixed :WRITE command for wysiwig mults (cabrillo output) - Wrote "Howto make your own contest" (in /doc) tlf-0.5.4.2 =========== Bug fix: - fixed wysiwyg_once and wysiwyg_multi - command "\" (log qso without cw) now also works in the exchange field. tlf-0.5.4.1 ======== Bug fixes for debian floppy version: - delete last qso - write cabrillo file (o.k. in original 0.5.4) tlf-0.5.4 ======== Major changes with respect to version tlf-0.5.3 are: - addition of support for e3 editor (for debian mini distro) - bug fix: SEG FAULT when cl3file was not yet present - bug fix: when using /P call continent was not calculated (R1 fd) tlf-0.5.3 ======== Major changes with respect to version tlf-0.5.0 are: - addition of region 1 fieldday contest - complete overhaul of "edit last qso" - auto_complete now gives a warning if the call is locked - added new parameters for "universal" contest - bug fix: 2 point mode for wpx and cqww (NA stns) It is now possible to create your own contest. E.g. for the r1fieldday you can enter the following in logcfg.dat: #dissable all standard contests CONTEST=fieldday COUNTRY_MULT (dxcc countries = multiplier) 2EU3DX_POINTS (2 points for qso's in own continent, 3 for DX) PORTABLE_MULT_2 (4 or 6 points for qso with portable stations) tlf-0.5.2 ======== Major changes with respect to version tlf-0.5.0 are: - Autoconf and automake support - New parameter MANY_CALLS gives you 50 partial calls if you need it - Call edit now includes INSERT and DELETE functions (see the manual..) - New parameters POWERMULT introduced for the arrlfd contest tlf-0.5.0 ========= Major changes with respect to version TLF-0.4.5 are: - Globalisation of the directory structure - Partial call / auto-complete function (optional) - Flush logfile to disk after each qso - Some bug fixes. - Final check on wpx-cw - Added Arrl-fd test version (for hf) - Arrl-fd needed a DIG mode The new directory structure: //.../ separate directory per contest (r/w) /bin binaries and scripts /share/tlf callmaster, ctydb, default templates /share/tlf/doc documentation /share/tlf/examples template config files per contest /share/tlf/src source code /tmp/tlf all temporary files tlf_1.1.5/Makefile.in0000664000175000017500000006437312105506436012623 0ustar jtnjtn# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in $(srcdir)/tlf.1.in \ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ config.guess config.sub depcomp install-sh missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = tlf.1 CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } man1dir = $(mandir)/man1 am__installdirs = "$(DESTDIR)$(man1dir)" NROFF = nroff MANS = $(man_MANS) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GREP = @GREP@ HAMLIB_CFLAGS = @HAMLIB_CFLAGS@ HAMLIB_LIBS = @HAMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = doc rules src share scripts CLEANFILES = *~ man_MANS = tlf.1 all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then rm -f stamp-h1; else :; fi @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 tlf.1: $(top_builddir)/config.status $(srcdir)/tlf.1.in cd $(top_builddir) && $(SHELL) ./config.status $@ install-man1: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" @list=''; test -n "$(man1dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_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 case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(MANS) config.h installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(man1dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-man install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-man1 install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-man uninstall-man: uninstall-man1 .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ dist-lzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ distcheck distclean distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-man1 \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \ tags-recursive uninstall uninstall-am uninstall-man \ uninstall-man1 # 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: tlf_1.1.5/datastructures0000664000175000017500000000303112072353226013536 0ustar jtnjtnFolgende Datenstrukturen werden von TLF verwendet: 1. ie_list Enthält Calls und vordefinierten Exchange aus IE_LIST z.Zt. als verkettete Liste realisiert. - add members during start of pgm - never delete - search call and copy according exchange if found - z.Zt. Array -> könnte sortiert und binär durchsucht werden - besser als binärer Baum oder Hash sinnvoll 2. Dupes i.e. already worked stations Enthält call, exchange, band mask and country für alle gearbeiteten Stationen - z.Zt. mittels folgender Teilfelder realisiert: * callarray - Das Call * call_band - Bitfeld mit gearbeiteten Bändern * call_exchange - letzter Exchange * call_country - bisher nicht genutzt - Feld mit Größe MAX_CALLS - verwendet für recall_exchange und Suche nach partials, loadbandmap - recall_exchange könnte sortiertes Array sinnvoll nutzen - partials benötigt Zugriff auf alle calls - Insert bei addcall und readcalls - Delete z.Z. gar nicht 3. prefixes_worked array - Wird nur für WPX contest benutzt - genutzt von add_pfx - readcalls liest LOG von disk komplett ein und baut Statistiken auf. - Feld mit Grösse MAX_CALLS - Insert bei add_pfx und readcalls - Delete z.Zt. nicht - Suche nur ob Prefix schon vorhanden (für makelogline) 4. Multiplier file mults_possible - will be constructed only once after start of Tlf - contains list of possible sections, multipliers or similar - switched to growing GPtrArray (Sep11) * callmasterarray - Nutzer: CW Simulator, searchlog * log data * cluster data * lan data * CTY data tlf_1.1.5/missing0000755000175000017500000002415212105506435012141 0ustar jtnjtn#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2012-01-06.13; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 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, see . # 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. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -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 --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one 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 help2man touch the output file 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] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. 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 $msg. You should only need it if you modified \`${configure_ac}'. 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 $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. 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_ac}` 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 $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. 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 ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. 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 test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. 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 test $# -ne 1; then eval LASTARG=\${$#} case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. 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." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. 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 prerequisites 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 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: tlf_1.1.5/config.h.in0000664000175000017500000001160212072353226012564 0ustar jtnjtn/* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the header file. */ #undef HAVE_ARPA_INET_H /* Define to 1 if you have the `bzero' function. */ #undef HAVE_BZERO /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the `floor' function. */ #undef HAVE_FLOOR /* Define to 1 if you have the `ftruncate' function. */ #undef HAVE_FTRUNCATE /* Define to 1 if you have the `gethostbyname' function. */ #undef HAVE_GETHOSTBYNAME /* Define to 1 if you have the header file. */ #undef HAVE_HAMLIB_RIG_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `hamlib' library (-lhamlib). */ #undef HAVE_LIBHAMLIB /* Define to 1 if you have the `m' library (-lm). */ #undef HAVE_LIBM /* Define to 1 if you have the `ncurses' library (-lncurses). */ #undef HAVE_LIBNCURSES /* Define to 1 if you have the `panel' library (-lpanel). */ #undef HAVE_LIBPANEL /* Define to 1 if you have the `pthread' library (-lpthread). */ #undef HAVE_LIBPTHREAD /* Define to 1 if your system has a GNU libc compatible `malloc' function, and to 0 otherwise. */ #undef HAVE_MALLOC /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET /* Define to 1 if you have the `mkfifo' function. */ #undef HAVE_MKFIFO /* Define to 1 if you have the header file. */ #undef HAVE_NETDB_H /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD /* Define to 1 if you have the `putenv' function. */ #undef HAVE_PUTENV /* Define to 1 if you have the `select' function. */ #undef HAVE_SELECT /* Define to 1 if you have the `socket' function. */ #undef HAVE_SOCKET /* Define to 1 if you have the `sqrt' function. */ #undef HAVE_SQRT /* Define to 1 if stdbool.h conforms to C99. */ #undef HAVE_STDBOOL_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strcasecmp' function. */ #undef HAVE_STRCASECMP /* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the `strcspn' function. */ #undef HAVE_STRCSPN /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the `strftime' function. */ #undef HAVE_STRFTIME /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strpbrk' function. */ #undef HAVE_STRPBRK /* Define to 1 if you have the `strspn' function. */ #undef HAVE_STRSPN /* Define to 1 if you have the `strstr' function. */ #undef HAVE_STRSTR /* Define to 1 if you have the header file. */ #undef HAVE_SYSLOG_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_IOCTL_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_TERMIOS_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if the system has the type `_Bool'. */ #undef HAVE__BOOL /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* package_data_dir is in prefix */ #undef PACKAGE_DATA_DIR /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to the necessary symbol if this constant uses a non-standard name on your system. */ #undef PTHREAD_CREATE_JOINABLE /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* No Hamlib */ #undef WANT_HAMLIB /* Define to rpl_malloc if the replacement function should be used. */ #undef malloc /* Define to `int' if does not define. */ #undef mode_t /* Define to `int' if does not define. */ #undef pid_t /* Define to `unsigned int' if does not define. */ #undef size_t /* Define to `int' if does not define. */ #undef ssize_t tlf_1.1.5/Makefile.am0000664000175000017500000000011212072353226012567 0ustar jtnjtnSUBDIRS = doc rules src share scripts CLEANFILES = *~ man_MANS = tlf.1 tlf_1.1.5/scripts/0000775000175000017500000000000012105512655012230 5ustar jtnjtntlf_1.1.5/scripts/Makefile.in0000664000175000017500000003000412105506436014272 0ustar jtnjtn# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = scripts DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(bindir)" SCRIPTS = $(bin_SCRIPTS) SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GREP = @GREP@ HAMLIB_CFLAGS = @HAMLIB_CFLAGS@ HAMLIB_LIBS = @HAMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SCRIPT_FILES = soundlog play_vk bin_SCRIPTS = $(SCRIPT_FILES) EXTRA_DIST = $(SCRIPT_FILES) CLEANFILES = *~ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu scripts/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu scripts/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n' \ -e 'h;s|.*|.|' \ -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) { files[d] = files[d] " " $$1; \ if (++n[d] == $(am__install_max)) { \ print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ else { print "f", d "/" $$4, $$1 } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binSCRIPTS: @$(NORMAL_UNINSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 's,.*/,,;$(transform)'`; \ dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(SCRIPTS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binSCRIPTS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binSCRIPTS .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-binSCRIPTS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am uninstall uninstall-am uninstall-binSCRIPTS # 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: tlf_1.1.5/scripts/soundlog0000755000175000017500000000035612072353226014012 0ustar jtnjtn#!/bin/sh while [[ -f /home/rein/.VRlock ]] do filename="/home/rein/tlf/soundlogs/"`eval date +%d%H%M`".au" if test -f $filename then sleep 10s else rec -w -r 8000 -d /dev/dsp1 $filename > /dev/null 2> /dev/null fi done tlf_1.1.5/scripts/play_vk0000755000175000017500000000206012072353226013617 0ustar jtnjtn#!/bin/sh # Part of the TLF contest logging program for amateur radio operators # by Rein Coperous PA0R and Thomas Beierlein DL1JBE 2011. # # 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. # These script is responsible for playing voice key message files # on the command of the TLF main program. # It gets called as 'play_vk filename' and plays the content of # the audio file 'filename' on the default sound device. # # You can adapt it to your convenience to # - mute or unmute your microphone # - play different file formats or # - use another output device # # An executable copy of 'play_vk' in your contest directory (containing the # logcfg.dat file) can be adapted and has precedence over the standard install # mute mic #amixer -c 0 set Mic mute -q # play file on the default sound device play $1 -q 2>/dev/null #unmute mic #amixer -c 0 set Mic unmute -q tlf_1.1.5/scripts/Makefile.am0000664000175000017500000000015712072353226014267 0ustar jtnjtnSCRIPT_FILES = soundlog play_vk bin_SCRIPTS = $(SCRIPT_FILES) EXTRA_DIST = $(SCRIPT_FILES) CLEANFILES = *~ tlf_1.1.5/share/0000775000175000017500000000000012105506436011643 5ustar jtnjtntlf_1.1.5/share/cty.dat0000664000175000017500000022407012072353226013141 0ustar jtnjtnSov Mil Order of Malta: 15: 28: EU: 41.90: -12.43: -1.0: 1A: 1A; Spratly Islands: 26: 50: AS: 9.88: -114.23: -8.0: 1S: 1S,9M0,BV9S; Monaco: 14: 27: EU: 43.73: -7.40: -1.0: 3A: 3A; Agalega & St. Brandon: 39: 53: AF: -10.45: -56.67: -4.0: 3B6: 3B6,3B7; Mauritius: 39: 53: AF: -20.35: -57.50: -4.0: 3B8: 3B8; Rodriguez Island: 39: 53: AF: -19.70: -63.42: -4.0: 3B9: 3B9; Equatorial Guinea: 36: 47: AF: 1.70: -10.33: -1.0: 3C: 3C; Annobon: 36: 52: AF: -1.43: -5.62: -1.0: 3C0: 3C0; Fiji: 32: 56: OC: -17.78: -177.92: -12.0: 3D2: 3D2; Conway Reef: 32: 56: OC: -22.00: -175.00: -12.0: 3D2/c: 3D20CR; Rotuma: 32: 56: OC: -12.48: -177.08: -12.0: 3D2/r: 3D2AG/P,3D2RI; Swaziland: 38: 57: AF: -26.65: -31.48: -2.0: 3DA: 3DA; Tunisia: 33: 37: AF: 35.40: -9.32: -1.0: 3V: 3V,TS; Vietnam: 26: 49: AS: 15.80: -107.90: -7.0: 3W: 3W,XV; Guinea: 35: 46: AF: 11.00: 10.68: 0.0: 3X: 3X; Bouvet: 38: 67: AF: -54.42: -3.38: -1.0: 3Y/b: 3Y0E; Peter I Island: 12: 72: SA: -68.77: 90.58: 4.0: 3Y/p: 3Y0X; Azerbaijan: 21: 29: AS: 40.45: -47.37: -4.0: 4J: 4J,4K; Georgia: 21: 29: AS: 42.00: -45.00: -4.0: 4L: 4L,UF6V; Montenegro: 15: 28: EU: 42.50: -19.28: -1.0: 4O: 4O; Sri Lanka: 22: 41: AS: 7.60: -80.70: -5.5: 4S: 4P,4Q,4R,4S; ITU HQ Geneva: 14: 28: EU: 46.17: -6.05: -1.0: 4U1I: 4U0I,4U1I,4U2I,4U3I,4U4I,4U5I,4U6I,4U7I,4U8I,4U9I; United Nations HQ: 05: 08: NA: 40.75: 73.97: 5.0: 4U1U: 4U1U; Vienna Intl Ctr: 15: 28: EU: 48.20: -16.30: -1.0: *4U1V: 4U1V; Timor-Leste: 28: 54: OC: -8.80: -126.05: -9.0: 4W: 4W; Israel: 20: 39: AS: 31.32: -34.82: -2.0: 4X: 4X,4Z; Libya: 34: 38: AF: 27.20: -16.60: -2.0: 5A: 5A; Cyprus: 20: 39: AS: 35.00: -33.00: -2.0: 5B: 5B,C4,H2,P3; Tanzania: 37: 53: AF: -5.75: -33.92: -3.0: 5H: 5H,5I; Nigeria: 35: 46: AF: 9.87: -7.55: -1.0: 5N: 5N,5O; Madagascar: 39: 53: AF: -19.00: -46.58: -3.0: 5R: 5R,5S,6X; Mauritania: 35: 46: AF: 20.60: 10.50: 0.0: 5T: 5T; Niger: 35: 46: AF: 17.63: -9.43: -1.0: 5U: 5U; Togo: 35: 46: AF: 8.40: -1.28: 0.0: 5V: 5V; Samoa: 32: 62: OC: -13.93: 171.70: 11.0: 5W: 5W; Uganda: 37: 48: AF: 1.92: -32.60: -3.0: 5X: 5X; Kenya: 37: 48: AF: 0.32: -38.15: -3.0: 5Z: 5Y,5Z; Senegal: 35: 46: AF: 15.20: 14.63: 0.0: 6W: 6V,6W; Jamaica: 08: 11: NA: 18.20: 77.47: 5.0: 6Y: 6Y; Yemen: 21: 39: AS: 15.65: -48.12: -3.0: 7O: 7O; Lesotho: 38: 57: AF: -29.22: -27.88: -2.0: 7P: 7P; Malawi: 37: 53: AF: -14.00: -34.00: -2.0: 7Q: 7Q; Algeria: 33: 37: AF: 28.00: -2.00: -1.0: 7X: 7R,7T,7U,7V,7W,7X,7Y; Barbados: 08: 11: NA: 13.18: 59.53: 4.0: 8P: 8P; Maldives: 22: 41: AS: 4.15: -73.45: -5.0: 8Q: 8Q; Guyana: 09: 12: SA: 6.02: 59.45: 4.0: 8R: 8R; Croatia: 15: 28: EU: 45.18: -15.30: -1.0: 9A: 9A; Ghana: 35: 46: AF: 7.70: 1.57: 0.0: 9G: 9G; Malta: 15: 28: EU: 35.88: -14.42: -1.0: 9H: 9H; Zambia: 36: 53: AF: -14.22: -26.73: -2.0: 9J: 9I,9J; Kuwait: 21: 39: AS: 29.38: -47.38: -3.0: 9K: 9K,NLD; Sierra Leone: 35: 46: AF: 8.50: 13.25: 0.0: 9L: 9L; West Malaysia: 28: 54: AS: 3.95: -102.23: -8.0: 9M2: 9M2,9M4,9W2,9W4,9M6XX/2,9M8DX/2; East Malaysia: 28: 54: OC: 2.68: -113.32: -8.0: 9M6: 9M6,9M8,9M9,9W6,9W8,9M4CBP,9M4CRB,9M4CWS; Nepal: 22: 42: AS: 27.70: -85.33: -5.75: 9N: 9N; Rep. of Congo: 36: 52: AF: -3.12: -23.03: -1.0: 9Q: 9O,9P,9Q,9R,9S,9T; Burundi: 36: 52: AF: -3.17: -29.78: -2.0: 9U: 9U; Singapore: 28: 54: AS: 1.37: -103.78: -8.0: 9V: 9V,S6; Rwanda: 36: 52: AF: -1.75: -29.82: -2.0: 9X: 9X; Trinidad & Tobago: 09: 11: SA: 10.38: 61.28: 4.0: 9Y: 9Y,9Z; Botswana: 38: 57: AF: -22.00: -24.00: -2.0: A2: 8O,A2; Tonga: 32: 62: OC: -21.22: 175.13: -13.0: A3: A3; Oman: 21: 39: AS: 23.60: -58.55: -4.0: A4: A4; Bhutan: 22: 41: AS: 27.40: -90.18: -6.0: A5: A5; United Arab Emirates: 21: 39: AS: 24.00: -54.00: -4.0: A6: A6; Qatar: 21: 39: AS: 25.25: -51.13: -3.0: A7: A7; Bahrain: 21: 39: AS: 26.03: -50.53: -3.0: A9: A9; Pakistan: 21: 41: AS: 30.00: -70.00: -5.0: AP: 6P,6Q,6R,6S,AP,AQ,AR,AS; Scarborough Reef: 27: 50: AS: 15.08: -117.72: -8.0: BS7: BS7H; Taiwan: 24: 44: AS: 23.72: -120.88: -8.0: BV: BM,BN,BO,BP,BQ,BU,BV,BW,BX; Pratas Island: 24: 44: AS: 20.70: -116.70: -8.0: BV9P: BM9P,BN9P,BO9P,BP9P,BQ9P,BU9P,BV9P,BW9P,BX9P; China: 24: 44: AS: 36.00: -102.00: -8.0: BY: 3H,3I,3J,3K,3L,3M,3N,3O,3P,3Q,3R,3S,3T,3U,B0(23)[42],B2,B3,B4,B5,B6,B7,B8, B9(23)[43],BA,BA0(23)[42],BA9(23)[43],BD,BD0(23)[42],BD9(23)[43],BG, BG0(23)[42],BG9(23)[43],BH,BH0(23)[42],BH9(23)[43],BI,BJ,BJ0(23)[42], BJ9(23)[43],BL,BL0(23)[42],BL9(23)[43],BT,BT0(23)[42],BT9(23)[43],BY, BY0(23)[42],BY9(23)[43],BZ,BZ0(23)[42],BZ9(23)[43],XS,B1,B2A[33],B2B[33], B2C[33],B2D[33],B2E[33],B2F[33],B2G[33],B2H[33],B2I[33],B2J[33],B2K[33], B2L[33],B2M[33],B2N[33],B2O[33],B2P[33],B3G(23)[33],B3H(23)[33], B3I(23)[33],B3J(23)[33],B3K(23)[33],B3L(23)[33],B6Q[43],B6R[43],B6S[43], B6T[43],B6U[43],B6V[43],B6W[43],B6X[43],B7A[43],B7B[43],B7C[43],B7D[43], B7E[43],B7F[43],B7G[43],B7H[43],B7Q[43],B7R[43],B7S[43],B7T[43],B7U[43], B7V[43],B7W[43],B7X[43],B8A[43],B8B[43],B8C[43],B8D[43],B8E[43],B8F[43], B8G[43],B8H[43],B8I[43],B8J[43],B8K[43],B8L[43],B8M[43],B8N[43],B8O[43], B8P[43],B8Q[43],B8R[43],B8S[43],B8T[43],B8U[43],B8V[43],B8W[43],B8X[43], B9A(24)[43],B9B(24)[43],B9C(24)[43],B9D(24)[43],B9E(24)[43],B9F(24)[43], B9S(23)[42],B9T(23)[42],B9U(23)[42],B9V(23)[42],B9W(23)[42],B9X(23)[42], BA2A[33],BA2B[33],BA2C[33],BA2D[33],BA2E[33],BA2F[33],BA2G[33],BA2H[33], BA2I[33],BA2J[33],BA2K[33],BA2L[33],BA2M[33],BA2N[33],BA2O[33],BA2P[33], BA3G(23)[33],BA3H(23)[33],BA3I(23)[33],BA3J(23)[33],BA3K(23)[33], BA3L(23)[33],BA6Q[43],BA6R[43],BA6S[43],BA6T[43],BA6U[43],BA6V[43], BA6W[43],BA6X[43],BA7A[43],BA7B[43],BA7C[43],BA7D[43],BA7E[43],BA7F[43], BA7G[43],BA7H[43],BA7Q[43],BA7R[43],BA7S[43],BA7T[43],BA7U[43],BA7V[43], BA7W[43],BA7X[43],BA8A[43],BA8B[43],BA8C[43],BA8D[43],BA8E[43],BA8F[43], BA8G[43],BA8H[43],BA8I[43],BA8J[43],BA8K[43],BA8L[43],BA8M[43],BA8N[43], BA8O[43],BA8P[43],BA8Q[43],BA8R[43],BA8S[43],BA8T[43],BA8U[43],BA8V[43], BA8W[43],BA8X[43],BA9A(24)[43],BA9B(24)[43],BA9C(24)[43],BA9D(24)[43], BA9E(24)[43],BA9F(24)[43],BA9S(23)[42],BA9T(23)[42],BA9U(23)[42], BA9V(23)[42],BA9W(23)[42],BA9X(23)[42],BD2A[33],BD2B[33],BD2C[33], BD2D[33],BD2E[33],BD2F[33],BD2G[33],BD2H[33],BD2I[33],BD2J[33],BD2K[33], BD2L[33],BD2M[33],BD2N[33],BD2O[33],BD2P[33],BD3G(23)[33],BD3H(23)[33], BD3I(23)[33],BD3J(23)[33],BD3K(23)[33],BD3L(23)[33],BD6Q[43],BD6R[43], BD6S[43],BD6T[43],BD6U[43],BD6V[43],BD6W[43],BD6X[43],BD7A[43],BD7B[43], BD7C[43],BD7D[43],BD7E[43],BD7F[43],BD7G[43],BD7H[43],BD7Q[43],BD7R[43], BD7S[43],BD7T[43],BD7U[43],BD7V[43],BD7W[43],BD7X[43],BD8A[43],BD8B[43], BD8C[43],BD8D[43],BD8E[43],BD8F[43],BD8G[43],BD8H[43],BD8I[43],BD8J[43], BD8K[43],BD8L[43],BD8M[43],BD8N[43],BD8O[43],BD8P[43],BD8Q[43],BD8R[43], BD8S[43],BD8T[43],BD8U[43],BD8V[43],BD8W[43],BD8X[43],BD9A(24)[43], BD9B(24)[43],BD9C(24)[43],BD9D(24)[43],BD9E(24)[43],BD9F(24)[43], BD9S(23)[42],BD9T(23)[42],BD9U(23)[42],BD9V(23)[42],BD9W(23)[42], BD9X(23)[42],BG2A[33],BG2B[33],BG2C[33],BG2D[33],BG2E[33],BG2F[33], BG2G[33],BG2H[33],BG2I[33],BG2J[33],BG2K[33],BG2L[33],BG2M[33],BG2N[33], BG2O[33],BG2P[33],BG3G(23)[33],BG3H(23)[33],BG3I(23)[33],BG3J(23)[33], BG3K(23)[33],BG3L(23)[33],BG6Q[43],BG6R[43],BG6S[43],BG6T[43],BG6U[43], BG6V[43],BG6W[43],BG6X[43],BG7A[43],BG7B[43],BG7C[43],BG7D[43],BG7E[43], BG7F[43],BG7G[43],BG7H[43],BG7Q[43],BG7R[43],BG7S[43],BG7T[43],BG7U[43], BG7V[43],BG7W[43],BG7X[43],BG8A[43],BG8B[43],BG8C[43],BG8D[43],BG8E[43], BG8F[43],BG8G[43],BG8H[43],BG8I[43],BG8J[43],BG8K[43],BG8L[43],BG8M[43], BG8N[43],BG8O[43],BG8P[43],BG8Q[43],BG8R[43],BG8S[43],BG8T[43],BG8U[43], BG8V[43],BG8W[43],BG8X[43],BG9A(24)[43],BG9B(24)[43],BG9C(24)[43], BG9D(24)[43],BG9E(24)[43],BG9F(24)[43],BG9S(23)[42],BG9T(23)[42], BG9U(23)[42],BG9V(23)[42],BG9W(23)[42],BG9X(23)[42],BH2A[33],BH2B[33], BH2C[33],BH2D[33],BH2E[33],BH2F[33],BH2G[33],BH2H[33],BH2I[33],BH2J[33], BH2K[33],BH2L[33],BH2M[33],BH2N[33],BH2O[33],BH2P[33],BH3G(23)[33], BH3H(23)[33],BH3I(23)[33],BH3J(23)[33],BH3K(23)[33],BH3L(23)[33],BH6Q[43], BH6R[43],BH6S[43],BH6T[43],BH6U[43],BH6V[43],BH6W[43],BH6X[43],BH7A[43], BH7B[43],BH7C[43],BH7D[43],BH7E[43],BH7F[43],BH7G[43],BH7H[43],BH7Q[43], BH7R[43],BH7S[43],BH7T[43],BH7U[43],BH7V[43],BH7W[43],BH7X[43],BH8A[43], BH8B[43],BH8C[43],BH8D[43],BH8E[43],BH8F[43],BH8G[43],BH8H[43],BH8I[43], BH8J[43],BH8K[43],BH8L[43],BH8M[43],BH8N[43],BH8O[43],BH8P[43],BH8Q[43], BH8R[43],BH8S[43],BH8T[43],BH8U[43],BH8V[43],BH8W[43],BH8X[43], BH9A(24)[43],BH9B(24)[43],BH9C(24)[43],BH9D(24)[43],BH9E(24)[43], BH9F(24)[43],BH9S(23)[42],BH9T(23)[42],BH9U(23)[42],BH9V(23)[42], BH9W(23)[42],BH9X(23)[42],BJ2A[33],BJ2B[33],BJ2C[33],BJ2D[33],BJ2E[33], BJ2F[33],BJ2G[33],BJ2H[33],BJ2I[33],BJ2J[33],BJ2K[33],BJ2L[33],BJ2M[33], BJ2N[33],BJ2O[33],BJ2P[33],BJ3G(23)[33],BJ3H(23)[33],BJ3I(23)[33], BJ3J(23)[33],BJ3K(23)[33],BJ3L(23)[33],BJ6Q[43],BJ6R[43],BJ6S[43], BJ6T[43],BJ6U[43],BJ6V[43],BJ6W[43],BJ6X[43],BJ7A[43],BJ7B[43],BJ7C[43], BJ7D[43],BJ7E[43],BJ7F[43],BJ7G[43],BJ7H[43],BJ7Q[43],BJ7R[43],BJ7S[43], BJ7T[43],BJ7U[43],BJ7V[43],BJ7W[43],BJ7X[43],BJ8A[43],BJ8B[43],BJ8C[43], BJ8D[43],BJ8E[43],BJ8F[43],BJ8G[43],BJ8H[43],BJ8I[43],BJ8J[43],BJ8K[43], BJ8L[43],BJ8M[43],BJ8N[43],BJ8O[43],BJ8P[43],BJ8Q[43],BJ8R[43],BJ8S[43], BJ8T[43],BJ8U[43],BJ8V[43],BJ8W[43],BJ8X[43],BJ9A(24)[43],BJ9B(24)[43], BJ9C(24)[43],BJ9D(24)[43],BJ9E(24)[43],BJ9F(24)[43],BJ9S(23)[42], BJ9T(23)[42],BJ9U(23)[42],BJ9V(23)[42],BJ9W(23)[42],BJ9X(23)[42],BL2A[33], BL2B[33],BL2C[33],BL2D[33],BL2E[33],BL2F[33],BL2G[33],BL2H[33],BL2I[33], BL2J[33],BL2K[33],BL2L[33],BL2M[33],BL2N[33],BL2O[33],BL2P[33], BL3G(23)[33],BL3H(23)[33],BL3I(23)[33],BL3J(23)[33],BL3K(23)[33], BL3L(23)[33],BL6Q[43],BL6R[43],BL6S[43],BL6T[43],BL6U[43],BL6V[43], BL6W[43],BL6X[43],BL7A[43],BL7B[43],BL7C[43],BL7D[43],BL7E[43],BL7F[43], BL7G[43],BL7H[43],BL7Q[43],BL7R[43],BL7S[43],BL7T[43],BL7U[43],BL7V[43], BL7W[43],BL7X[43],BL8A[43],BL8B[43],BL8C[43],BL8D[43],BL8E[43],BL8F[43], BL8G[43],BL8H[43],BL8I[43],BL8J[43],BL8K[43],BL8L[43],BL8M[43],BL8N[43], BL8O[43],BL8P[43],BL8Q[43],BL8R[43],BL8S[43],BL8T[43],BL8U[43],BL8V[43], BL8W[43],BL8X[43],BL9A(24)[43],BL9B(24)[43],BL9C(24)[43],BL9D(24)[43], BL9E(24)[43],BL9F(24)[43],BL9S(23)[42],BL9T(23)[42],BL9U(23)[42], BL9V(23)[42],BL9W(23)[42],BL9X(23)[42],BT2A[33],BT2B[33],BT2C[33], BT2D[33],BT2E[33],BT2F[33],BT2G[33],BT2H[33],BT2I[33],BT2J[33],BT2K[33], BT2L[33],BT2M[33],BT2N[33],BT2O[33],BT2P[33],BT3G(23)[33],BT3H(23)[33], BT3I(23)[33],BT3J(23)[33],BT3K(23)[33],BT3L(23)[33],BT6Q[43],BT6R[43], BT6S[43],BT6T[43],BT6U[43],BT6V[43],BT6W[43],BT6X[43],BT7A[43],BT7B[43], BT7C[43],BT7D[43],BT7E[43],BT7F[43],BT7G[43],BT7H[43],BT7Q[43],BT7R[43], BT7S[43],BT7T[43],BT7U[43],BT7V[43],BT7W[43],BT7X[43],BT8A[43],BT8B[43], BT8C[43],BT8D[43],BT8E[43],BT8F[43],BT8G[43],BT8H[43],BT8I[43],BT8J[43], BT8K[43],BT8L[43],BT8M[43],BT8N[43],BT8O[43],BT8P[43],BT8Q[43],BT8R[43], BT8S[43],BT8T[43],BT8U[43],BT8V[43],BT8W[43],BT8X[43],BT9A(24)[43], BT9B(24)[43],BT9C(24)[43],BT9D(24)[43],BT9E(24)[43],BT9F(24)[43], BT9S(23)[42],BT9T(23)[42],BT9U(23)[42],BT9V(23)[42],BT9W(23)[42], BT9X(23)[42],BY2A[33],BY2B[33],BY2C[33],BY2D[33],BY2E[33],BY2F[33], BY2G[33],BY2H[33],BY2I[33],BY2J[33],BY2K[33],BY2L[33],BY2M[33],BY2N[33], BY2O[33],BY2P[33],BY3G(23)[33],BY3H(23)[33],BY3I(23)[33],BY3J(23)[33], BY3K(23)[33],BY3L(23)[33],BY6Q[43],BY6R[43],BY6S[43],BY6T[43],BY6U[43], BY6V[43],BY6W[43],BY6X[43],BY7A[43],BY7B[43],BY7C[43],BY7D[43],BY7E[43], BY7F[43],BY7G[43],BY7H[43],BY7Q[43],BY7R[43],BY7S[43],BY7T[43],BY7U[43], BY7V[43],BY7W[43],BY7X[43],BY8A[43],BY8B[43],BY8C[43],BY8D[43],BY8E[43], BY8F[43],BY8G[43],BY8H[43],BY8I[43],BY8J[43],BY8K[43],BY8L[43],BY8M[43], BY8N[43],BY8O[43],BY8P[43],BY8Q[43],BY8R[43],BY8S[43],BY8T[43],BY8U[43], BY8V[43],BY8W[43],BY8X[43],BY9A(24)[43],BY9B(24)[43],BY9C(24)[43], BY9D(24)[43],BY9E(24)[43],BY9F(24)[43],BY9S(23)[42],BY9T(23)[42], BY9U(23)[42],BY9V(23)[42],BY9W(23)[42],BY9X(23)[42],BZ2A[33],BZ2B[33], BZ2C[33],BZ2D[33],BZ2E[33],BZ2F[33],BZ2G[33],BZ2H[33],BZ2I[33],BZ2J[33], BZ2K[33],BZ2L[33],BZ2M[33],BZ2N[33],BZ2O[33],BZ2P[33],BZ3G(23)[33], BZ3H(23)[33],BZ3I(23)[33],BZ3J(23)[33],BZ3K(23)[33],BZ3L(23)[33],BZ6Q[43], BZ6R[43],BZ6S[43],BZ6T[43],BZ6U[43],BZ6V[43],BZ6W[43],BZ6X[43],BZ7A[43], BZ7B[43],BZ7C[43],BZ7D[43],BZ7E[43],BZ7F[43],BZ7G[43],BZ7H[43],BZ7Q[43], BZ7R[43],BZ7S[43],BZ7T[43],BZ7U[43],BZ7V[43],BZ7W[43],BZ7X[43],BZ8A[43], BZ8B[43],BZ8C[43],BZ8D[43],BZ8E[43],BZ8F[43],BZ8G[43],BZ8H[43],BZ8I[43], BZ8J[43],BZ8K[43],BZ8L[43],BZ8M[43],BZ8N[43],BZ8O[43],BZ8P[43],BZ8Q[43], BZ8R[43],BZ8S[43],BZ8T[43],BZ8U[43],BZ8V[43],BZ8W[43],BZ8X[43], BZ9A(24)[43],BZ9B(24)[43],BZ9C(24)[43],BZ9D(24)[43],BZ9E(24)[43], BZ9F(24)[43],BZ9S(23)[42],BZ9T(23)[42],BZ9U(23)[42],BZ9V(23)[42], BZ9W(23)[42],BZ9X(23)[42]; Nauru: 31: 65: OC: -0.52: -166.92: -12.0: C2: C2; Andorra: 14: 27: EU: 42.58: -1.62: -1.0: C3: C3; Gambia: 35: 46: AF: 13.40: 16.38: 0.0: C5: C5; Bahamas: 08: 11: NA: 24.25: 76.00: 5.0: C6: C6; Mozambique: 37: 53: AF: -18.25: -35.00: -2.0: C9: C8,C9; Chile: 12: 14: SA: -30.00: 71.00: 4.0: CE: 3G,CA,CB,CC,CD,CE,XQ,XR,3G7[16],3G8[16],CA7[16],CA8[16],CB7[16],CB8[16], CC7[16],CC8[16],CD7[16],CD8[16],CE7[16],CE8[16],XQ7[16],XQ8[16],XR7[16], XR8[16]; San Felix Island: 12: 14: SA: -26.28: 80.07: 4.0: CE0X: 3G0X,CA0X,CB0X,CC0X,CD0X,CE0X,XQ0X,XR0X; Easter Island: 12: 63: SA: -27.10: 109.37: 6.0: CE0Y: 3G0,CA0,CB0,CC0,CD0,CE0,XQ0,XR0; Juan Fernandez Islands: 12: 14: SA: -33.60: 78.85: 4.0: CE0Z: 3G0Z,CA0Z,CB0Z,CC0Z,CD0Z,CE0Z,XQ0Z,XR0Z; Antarctica: 13: 74: SA: -90.00: 0.00: 0.0: CE9: 3Y[73],ANT(29)[69],AX0(39)[69],AY1Z[73],AY2Z[73],AY3Z[73],AY4Z[73], AY5Z[73],AY6Z[73],AY7Z[73],AY8Z[73],AY9Z[73],FT0Y(30)[70],FT1Y(30)[70], FT2Y(30)[70],FT4Y(30)[70],FT5Y(30)[70],FT8Y(30)[70],LU1Z[73],LU2Z[73], LU3Z[73],LU4Z[73],LU5Z[73],LU6Z[73],LU7Z[73],LU8Z[73],LU9Z[73], R1AN(29)[69],RI1AN(29)[69],VI0(39)[69],VK0(39)[69],ZL5(30)[71], ZM5(30)[71],ZS7(38)[67],K9PET/KC4,3Y8XSA(38)[67],8J1RL(39)[67], CE9VPM[73],DP1POL(38)[67],II0MZ(30)[71],KC4AAA(39),KC4AAC[73], KC4USB(12),KC4USV(30)[71],OH2FFP/P(38)[67],OR4TN(38)[67], R1ANP(39)[69],R1ANR(38)[67],RI1ANA(39)[69],RI1ANC(29)[70], RI1ANR(38)[67],VK0BFG(29)[70],VP8ADE/B[73],VP8DLM[73],VP8DMH[73], ZS6KX/7(38)[67]; Cuba: 08: 11: NA: 21.50: 80.00: 5.0: CM: CL,CM,CO,T4; Morocco: 33: 37: AF: 32.00: 5.00: 0.0: CN: 5C,5D,5E,5F,5G,CN; Bolivia: 10: 12: SA: -17.00: 65.00: 4.0: CP: CP,CP2[14],CP3[14],CP4[14],CP5[14],CP6[14],CP7[14]; Portugal: 14: 37: EU: 39.50: 8.00: 0.0: CT: CQ,CR,CS,CT; Madeira Islands: 33: 36: AF: 32.75: 16.95: 0.0: CT3: CQ2,CQ3,CQ9,CR3,CR9,CS3,CS9,CT3,CT9; Azores: 14: 36: EU: 38.70: 27.23: 1.0: CU: CQ1,CQ8,CR1,CR2,CR8,CS4,CS8,CT8,CU; Uruguay: 13: 14: SA: -33.00: 56.00: 3.0: CX: CV,CW,CX; Sable Island: 05: 09: NA: 43.93: 59.90: 4.0: CY0: CY0; St. Paul Island: 05: 09: NA: 47.00: 60.00: 4.0: CY9: CY9; Angola: 36: 52: AF: -12.50: -18.50: -1.0: D2: D2,D3; Cape Verde: 35: 46: AF: 16.00: 24.00: 1.0: D4: D4; Comoros: 39: 53: AF: -11.63: -43.30: -3.0: D6: D6; Germany: 14: 28: EU: 51.00: -10.00: -1.0: DL: DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM,DN,DO,DP,DQ,DR,DL0CUX/LV; Philippines: 27: 50: OC: 13.00: -122.00: -8.0: DU: 4D,4E,4F,4G,4H,4I,DU,DV,DW,DX,DY,DZ; Eritrea: 37: 48: AF: 15.00: -39.00: -3.0: E3: E3; Palestine: 20: 39: AS: 31.28: -34.27: -2.0: E4: E4; North Cook Islands: 32: 62: OC: -10.02: 161.08: 10.0: E5/n: E51WL; South Cook Islands: 32: 62: OC: -21.90: 157.93: 10.0: E5/s: E5; Bosnia-Herzegovina: 15: 28: EU: 44.32: -17.57: -1.0: E7: E7; Spain: 14: 37: EU: 40.37: 4.88: -1.0: EA: AM,AN,AO,EA,EB,EC,ED,EE,EF,EG,EH,EA9JS/7; Balearic Islands: 14: 37: EU: 39.60: -2.95: -1.0: EA6: AM6,AN6,AO6,EA6,EB6,EC6,ED6,EE6,EF6,EG6,EH6,EA5IIG/6,EA7DUT/6; Canary Islands: 33: 36: AF: 28.10: 15.40: 0.0: EA8: AM8,AN8,AO8,EA8,EB8,EC8,ED8,EE8,EF8,EG8,EH8,EA5RKL/8; Ceuta and Melilla: 33: 37: AF: 35.90: 5.27: -1.0: EA9: AM9,AN9,AO9,EA9,EB9,EC9,ED9,EE9,EF9,EG9,EH9; Ireland: 14: 27: EU: 53.13: 8.02: 0.0: EI: EI,EJ; Armenia: 21: 29: AS: 40.40: -44.90: -4.0: EK: EK; Liberia: 35: 46: AF: 6.50: 9.50: 0.0: EL: 5L,5M,6Z,A8,D5,EL; Iran: 21: 40: AS: 32.00: -53.00: -3.5: EP: 9B,9C,9D,EP,EQ; Moldova: 16: 29: EU: 47.00: -29.00: -2.0: ER: ER; Estonia: 15: 29: EU: 59.00: -25.00: -2.0: ES: ES; Ethiopia: 37: 48: AF: 9.00: -39.00: -3.0: ET: 9E,9F,ET; Belarus: 16: 29: EU: 54.00: -28.00: -2.0: EU: EU,EV,EW; Kyrgyzstan: 17: 30: AS: 41.70: -74.13: -6.0: EX: EX,EX2P[31],EX2Q[31],EX6P[31],EX6Q[31],EX7P[31],EX7Q[31],EX8P[31], EX8Q[31]; Tajikistan: 17: 30: AS: 38.82: -71.22: -5.0: EY: EY; Turkmenistan: 17: 30: AS: 38.00: -58.00: -5.0: EZ: EZ; France: 14: 27: EU: 46.00: -2.00: -1.0: F: F,HW,HX,HY,TH,TM,TP,TQ,TV,TW; Guadeloupe: 08: 11: NA: 16.13: 61.67: 4.0: FG: FG; Mayotte: 39: 53: AF: -12.88: -45.15: -3.0: FH: FH,TO4M; St. Barthelemy: 08: 11: NA: 17.90: 62.83: 4.0: FJ: FJ; New Caledonia: 32: 56: OC: -21.50: -165.50: -11.0: FK: FK; Chesterfield Islands: 30: 56: OC: -19.87: -158.32: -11.0: FK/c: FK8IK/C; Martinique: 08: 11: NA: 14.70: 61.03: 4.0: FM: FM,TO5A,TO5T,TO7A,TO8A; French Polynesia: 32: 63: OC: -17.65: 149.40: 10.0: FO: FO,TX6T,TX6T/P; Austral Islands: 32: 63: OC: -23.37: 149.48: 10.0: FO/a: FO/F6CTL; Clipperton Island: 07: 10: NA: 10.28: 109.22: 8.0: FO/c: TX5C; Marquesas Islands: 31: 63: OC: -8.92: 140.07: 9.5: FO/m: TX7M; St. Pierre & Miquelon: 05: 09: NA: 46.77: 56.20: 3.0: FP: FP; Reunion: 39: 53: AF: -21.12: -55.48: -4.0: FR: FR; Glorioso: 39: 53: AF: -11.55: -47.28: -4.0: FR/g: FT5G; Juan de Nova & Europa: 39: 53: AF: -17.05: -42.72: -3.0: FR/j: FT5E,FT5J; Tromelin: 39: 53: AF: -15.88: -54.50: -4.0: FR/t: FT5T; French St. Martin: 08: 11: NA: 18.08: 63.03: 4.0: FS: FS; Crozet: 39: 68: AF: -46.42: -51.75: -5.0: FT5W: FT0W,FT1W,FT2W,FT4W,FT5W,FT8W; Kerguelen: 39: 68: AF: -49.00: -69.27: -5.0: FT5X: FT0X,FT1X,FT2X,FT4X,FT5X,FT8X; Amsterdam & St. Paul: 39: 68: AF: -37.85: -77.53: -5.0: FT5Z: FT0Z,FT1Z,FT2Z,FT4Z,FT5Z,FT8Z; Wallis & Futuna Islands: 32: 62: OC: -13.30: 176.20: -12.0: FW: FW; French Guiana: 09: 12: SA: 4.00: 53.00: 3.0: FY: FY,TO5G; England: 14: 27: EU: 52.77: 1.47: 0.0: G: 2,G,M,ZH,ZI,ZJ; Isle of Man: 14: 27: EU: 54.20: 4.53: 0.0: GD: 2D,2T,GD,GT,MD,MT,GB5TD; Northern Ireland: 14: 27: EU: 54.73: 6.68: 0.0: GI: 2I,2N,GI,GN,MI,MN,GB0SPD,GB1SPD,GB2SPD,GB5SPD; Jersey: 14: 27: EU: 49.22: 2.18: 0.0: GJ: 2H,2J,GH,GJ,MH,MJ; Scotland: 14: 27: EU: 56.82: 4.18: 0.0: GM: 2A,2M,2S,GA,GM,GS,MA,MM,MS,GB0SSB,GB1KLD,GB1OL,GB2CHC,GB2GNL,GB2LBN, GB2LT,GB2MOF,GB2OWM,GB2SWF,GB3SWF,GB4SWF,GB5CC,GB80GD,GM6WRW/P, MM0YHB/P; Shetland and Fair Isle: 14: 27: EU: 60.50: 1.50: 0.0: *GM/s: 2Z,GZ,MZ,2M0ZET,2M1ANT,2M1ASQ,2M1ODL,G0FBJ,GB0HFC,GB0OS,GB2ELH, GB2ZET,GB4SI,GM0CXQ,GM0CYJ,GM0DJI,GM0EKM,GM0ILB,GM0JDB,GM0MZD, GM0OMV,GM0VFA,GM1BYL,GM1CBQ,GM1KKI,GM1MXN,GM1ZNR,GM3KLA,GM3RFR, GM3SJA,GM3STU,GM3UPU,GM3WCH,GM3WHT,GM3XPQ,GM3ZET,GM3ZNM,GM3ZXH, GM4AGX,GM4CAQ,GM4DQD,GM4ENK,GM4FNA,GM4FNE,GM4GPN,GM4GPP,GM4GQD, GM4GQM,GM4IPK,GM4JPI,GM4KJQ,GM4LBE,GM4LER,GM4PXG,GM4SLV,GM4SRU, GM4SSA,GM4SWU,GM4WXQ,GM4YEL,GM4ZHL,GM6RTO,GM6VZB,GM6WVI,GM6YQA, GM7AFE,GM7GWW,GM7RKD,GM8LNH,GM8MMA,GM8YEC,GS3ZET,GS4WAB/P,MA1FJM, MM0LSM,MM0XAU,MM0ZAL,MM0ZCG,MM1FJM,MM3ZET,MM5PSL,MM6ACW,MM6SJK, MS0ZCG,MS0ZET; Guernsey: 14: 27: EU: 49.45: 2.58: 0.0: GU: 2P,2U,GP,GU,MP,MU; Wales: 14: 27: EU: 52.28: 3.73: 0.0: GW: 2C,2W,2X,2Y,GC,GW,MC,MW,GB0HEL,GB0MPA,GB0PLB,GB0RS,GB100GGM,GB1CDS, GB2GGM,GB2LSA,GB2RSC,GB2TD,GB4BPL,GB4MBC,GB4MD,GB4MDI,GB4SDD, GB50RSARS,GB5FI; Solomon Islands: 28: 51: OC: -9.00: -160.00: -11.0: H4: H4; Temotu: 32: 51: OC: -10.72: -165.80: -11.0: H40: H40; Hungary: 15: 28: EU: 47.12: -19.28: -1.0: HA: HA,HG; Switzerland: 14: 28: EU: 46.87: -8.12: -1.0: HB: HB,HE; Liechtenstein: 14: 28: EU: 47.13: -9.57: -1.0: HB0: HB0,HE0; Ecuador: 10: 12: SA: -1.40: 78.40: 6.0: HC: HC,HD; Galapagos Islands: 10: 12: SA: -0.78: 91.03: 6.0: HC8: HC8,HD8; Haiti: 08: 11: NA: 19.02: 72.18: 5.0: HH: 4V,HH; Dominican Republic: 08: 11: NA: 19.13: 70.68: 4.0: HI: HI; Colombia: 09: 12: SA: 5.00: 74.00: 5.0: HK: 5J,5K,HJ,HK; San Andres/Providencia: 07: 11: NA: 12.55: 81.72: 5.0: HK0/a: 5J0,5K0,HJ0,HK0; Malpelo Island: 09: 12: SA: 3.98: 81.58: 5.0: HK0/m: 5J0M,5K0M,HJ0M,HK0M,HK0NA,HK0TU; South Korea: 25: 44: AS: 36.23: -127.90: -9.0: HL: 6K,6L,6M,6N,D7,D8,D9,DS,DT,HL,KL9K; North Korea: 25: 44: AS: 39.78: -126.30: -9.0: HM: HM,P5,P6,P7,P8,P9; Panama: 07: 11: NA: 9.00: 80.00: 5.0: HP: 3E,3F,H3,H8,H9,HO,HP; Honduras: 07: 11: NA: 15.00: 87.00: 6.0: HR: HQ,HR; Thailand: 26: 49: AS: 12.60: -99.70: -7.0: HS: E2,HS; Vatican City: 15: 28: EU: 41.90: -12.47: -1.0: HV: HV; Saudi Arabia: 21: 39: AS: 24.20: -43.83: -3.0: HZ: 7Z,8Z,HZ,HZ1SBS/J; Italy: 15: 28: EU: 42.82: -12.58: -1.0: I: I; African Italy: 33: 37: AF: 35.67: -12.67: -1.0: *IG9: IG9,IH9; Sardinia: 15: 28: EU: 40.15: -9.27: -1.0: IS: IM0,IS,IW0U,IW0V,IW0W,IW0X,IW0Y,IW0Z,II0SB,IQ0AH,IQ0SS,IY0GA; Sicily: 15: 28: EU: 37.50: -14.00: -1.0: *IT9: IB9,ID9,IE9,IF9,II9,IJ9,IO9,IQ9,IR9,IT9,IU9,IW9,IZ9; Djibouti: 37: 48: AF: 11.75: -42.35: -3.0: J2: J2; Grenada: 08: 11: NA: 12.13: 61.68: 4.0: J3: J3; Guinea-Bissau: 35: 46: AF: 12.02: 14.80: 0.0: J5: J5; St. Lucia: 08: 11: NA: 13.87: 61.00: 4.0: J6: J6; Dominica: 08: 11: NA: 15.43: 61.35: 4.0: J7: J7; St. Vincent: 08: 11: NA: 13.23: 61.20: 4.0: J8: J8; Japan: 25: 45: AS: 36.40: -138.38: -9.0: JA: 7J,7K,7L,7M,7N,8J,8K,8L,8M,8N,JA,JE,JF,JG,JH,JI,JJ,JK,JL,JM,JN,JO,JP,JQ, JR,JS,AGJ50,HTR50,IEJ50,ISG50,KJP50,KTD50,MMD50,MNY50,OGN50,OKA50,SHI50, TRA50,UEO50,7N4RHO/BM; Minami Torishima: 27: 90: OC: 24.28: -153.97: -10.0: JD/m: JD1/JG8NQJ,JD1BME,JD1BMM,JG8NQJ/JD1; Ogasawara: 27: 45: AS: 27.05: -142.20: -9.0: JD/o: JD1; Mongolia: 23: 32: AS: 46.77: -102.17: -7.0: JT: JT,JU,JV,JT2[33],JT3[33],JU2[33],JU3[33],JV2[33],JV3[33]; Svalbard: 40: 18: EU: 78.00: -16.00: -1.0: JW: JW; Bear Island: 40: 18: EU: 74.43: -19.08: -1.0: *JW/b: JW4GHA; Jan Mayen: 40: 18: EU: 71.05: 8.28: 1.0: JX: JX; Jordan: 20: 39: AS: 31.18: -36.42: -2.0: JY: JY; United States: 05: 08: NA: 37.88: 89.00: 5.0: K: AA,AB,AC,AD,AE,AF,AG,AI,AJ,AK,K,N,W,4U1WB(5)[8],AA4DD(4)[8],AA4N(4)[8], AA4YL(4)[8],AA7CP(4)[7],AB4GG(4)[8],AB4IQ(4)[8],AC4CA(4)[7], AC6NN(5)[8],AC8Y(5)[8],AD1C(4)[7],AD4EB(4)[8],AD7MQ(4)[6], AD8J(5)[8],AE7AP(4)[6],AG3R(4)[8],AG3V(4)[7],AG4CZ(4)[8],AG4W(4)[8], AH2DT(4)[6],AI1P(4)[7],AI4DB(4)[8],AJ4A(4)[8],AJ4F(4)[7], K0COP(5)[8],K0DQ(5)[8],K0DXC(4)[8],K0IP(3)[6],K0JJ(3)[6], K0LUZ(5)[8],K0PJ(3)[6],K0TQ(4)[8],K0TV(5)[8],K0ZR(5)[8],K1DW(4)[7], K1GU(4)[8],K1KD(4)[7],K1LT(4)[8],K1TN(4)[8],K2HT(4)[7],K2PO(3)[6], K2RD(3)[6],K2RP(3)[6],K2UR(4)[8],K2VCO(3)[6],K3FIV(3)[6],K3GP(4)[8], K3IE(4)[8],K3JWI(4)[8],K3TD(4)[7],K3WA(4)[8],K3WT(4)[7],K4AB(4)[8], K4AMC(4)[8],K4APG(4)[8],K4BP(4)[8],K4BX(4)[8],K4CWW(4)[8], K4CX(4)[8],K4DZR(4)[8],K4EDI(4)[8],K4EJQ(4)[8],K4FT(4)[8], K4FXN(4)[8],K4HAL(4)[8],K4IE(4)[8],K4IQJ(4)[8],K4IU(4)[7], K4LTA(4)[8],K4MCK(4)[8],K4MGE(4)[8],K4NO(4)[8],K4NVJ(4)[8], K4PJ(4)[8],K4RO(4)[8],K4SPO(4)[8],K4TD(4)[8],K4WI(4)[8],K4WW(4)[8], K4XU(3)[6],K4ZGB(4)[8],K5AUP(5)[8],K5EK(5)[8],K5KG(5)[8],K5RQ(5)[8], K5RR(3)[6],K5VIP(5)[8],K5ZD(5)[8],K6ND(5)[8],K6NDV(5)[8],K6PJ(4)[6], K6RM(5)[8],K6SXA(4)[7],K6XT(4)[7],K7ABV(4)[6],K7BG(4)[6],K7CS(5)[8], K7IA(4)[7],K7JNX(5)[8],K7KU(4)[7],K7OM(5)[8],K7RB(4)[7],K7RE(4)[7], K7RSM(4)[7],K7SCX(4)[7],K7SV(5)[8],K7TD(4)[7],K7VU(4)[7],K8BN(3)[6], K8CN(5)[8],K8FC(5)[8],K8GU(5)[8],K8IA(3)[6],K8JQ(5)[8],K8LF(5)[8], K8NYG(5)[8],K8NZ(5)[8],K8OM(4)[7],K8OQL(5)[8],K8PO(5)[8],K8YC(5)[8], K9AIH(5)[8],K9BWI(4)[7],K9CHP(5)[8],K9DU(4)[7],K9JF(3)[6], K9JM(3)[6],K9JWV(3)[6],K9MBB(4)[7],K9MWM(4)[7],K9OM(5)[8], K9RS(5)[8],K9WZB(3)[6],K9YC(3)[6],KA2EYH(4)[8],KA3DRR(3)[6], KA4OTB(4)[8],KA4R(4)[8],KA4TEU(4)[8],KA8Q(5)[8],KB7Q(4)[6], KB8V(5)[8],KC4HW(4)[8],KC4SAW(4)[8],KC4WQ(4)[8],KC8GCR(5)[8], KD4POJ(4)[7],KD4SN(4)[8],KE1B(3)[6],KE1BYL(3)[6],KE2VB(3)[6], KE3D(4)[7],KE4KWE(4)[8],KE4KY(4)[8],KE4UNA(4)[8],KE4YVD(4)[8], KE7X(4)[6],KF6A(4)[8],KF7CG(4)[8],KG0F(3)[6],KG4CUY(4)[8], KG4MGE(4)[8],KG9JP(3)[6],KH6GN(4)[8],KH6OU(5)[8],KI4EEY(4)[8], KI4EZC(4)[8],KI7MT(4)[6],KJ4AOM(4)[8],KJ4BIX(4)[8],KJ4EEW(4)[8], KJ4FDV(4)[8],KK6MC(4)[7],KK9A(5)[8],KK9O(5)[8],KL1SF(3)[6], KL7IZC(3)[6],KL7JR(5)[8],KL7OO(3)[6],KL7QR(3)[6],KL7SK(3)[6], KL7VK(3)[6],KL7WP(3)[6],KM4DR(4)[7],KM4JA(4)[8],KN4Q(4)[8], KN5H(3)[6],KO4OL(4)[8],KO4PU(4)[8],KO4XJ(4)[8],KO7X(4)[7], KQ1X(4)[8],KR4F(4)[8],KR5X(5)[8],KS4L(4)[8],KS4X(4)[8],KS5A(3)[6], KS7T(4)[6],KT0P(5)[8],KU1CW(4)[7],KU1YL(4)[7],KU4A(4)[8],KU8E(5)[8], KV4T(4)[8],KW4JS(4)[8],KY0W(3)[6],KY4F(4)[8],KY5R(4)[8],KZ2V(3)[6], N1CC(4)[7],N1JM(3)[6],N1LU(4)[8],N1WQ(4)[7],N2BJ(4)[8],N2IC(4)[7], N2NS(3)[6],N2OPW(4)[8],N2WN(4)[8],N3BUO(4)[7],N3CO(4)[8], N3FAW(3)[6],N3RC(4)[6],N3XRU(3)[6],N3ZZ(3)[6],N4AAI(4)[8], N4ARO(4)[8],N4AU(4)[8],N4BCB(4)[8],N4BCD(4)[8],N4DTF(4)[8], N4DW(4)[8],N4IJ(4)[7],N4IR(4)[8],N4JF(4)[8],N4JIK(4)[8],N4KG(4)[8], N4KZ(4)[8],N4NM(4)[8],N4NO(4)[8],N4NTQ(4)[8],N4OGW(4)[8],N4QS(4)[8], N4TZ(4)[8],N4UC(4)[8],N4UW(4)[8],N4VI(4)[7],N4VN(4)[8],N4VV(4)[8], N4ZI(4)[8],N4ZZ(4)[8],N5BF(3)[6],N5KO(3)[6],N5LZ(3)[6],N5VI(5)[8], N6AR(5)[8],N7DF(4)[7],N7DR(4)[7],N7EO(5)[8],N7FF(4)[7],N7FLT(4)[6], N7GVV(4)[8],N7IV(4)[7],N7IX(4)[7],N7KA(4)[7],N7MB(4)[8],N7MZW(4)[7], N7NG(4)[7],N7US(4)[8],N8AJN(4)[7],N8CL(5)[8],N8II(5)[8],N8MPX(5)[8], N8NA(5)[8],N8PR(5)[8],N8RA(5)[8],N8RR(5)[8],N8WXQ(5)[8],N9CM(5)[8], N9HDE(4)[7],N9MM(4)[7],N9NC(5)[8],NA2U(3)[6],NA4C(4)[8],NA4K(4)[8], NA4W(4)[8],NB4M(4)[8],NB7V(4)[6],ND2T(3)[6],ND4X(4)[8],ND8N(3)[6], NE4M(4)[8],NE8J(5)[8],NE9Z(4)[7],NG7A(5)[8],NH6Z(3)[6],NJ4I(4)[8], NL7CQ(4)[7],NM4K(4)[8],NN4MM(4)[8],NN4US(4)[8],NN7A(4)[7], NO2D(4)[7],NO9E(5)[8],NP3D(5)[8],NQ4U(4)[8],NR7DX(4)[6],NS0I(5)[8], NS2X(4)[8],NU4B(4)[8],NV4B(4)[8],NX1P(3)[6],NX9T(5)[8],NY6DX(5)[8], W0BR(5)[8],W0IZ(4)[8],W0JLC(5)[8],W0PAN(3)[6],W0PV(5)[8], W0QQG(5)[8],W0UCE(5)[8],W0YK(3)[6],W0YR(5)[8],W1ESE(3)[6], W1NN(4)[8],W1RH(3)[6],W1ZD(3)[6],W2OO(4)[8],W2VJN(3)[6],W2VKT(3)[6], W3CP(3)[6],W3HDH(4)[8],W4BCG(4)[8],W4BCU(4)[8],W4BK(4)[8], W4DAN(4)[8],W4DVG(4)[8],W4EEH(4)[8],W4EF(3)[6],W4GHD(4)[8], W4GKM(4)[8],W4HOD(4)[8],W4HZD(4)[8],W4JHC(4)[7],W4JSI(4)[8], W4KW(4)[8],W4LC(4)[8],W4LSC(3)[6],W4LWW(4)[8],W4NBS(4)[8], W4NI(4)[8],W4NJK(3)[6],W4NZ(4)[8],W4PHS(4)[8],W4PV(4)[8],W4RK(4)[7], W4RRE(4)[8],W4RYW(4)[8],W4TGB(4)[8],W4TKI(4)[8],W4UAL(4)[8], W4UAT(3)[6],W4UT(4)[8],W5DQ(3)[6],W5JBO(3)[6],W5JBV(5)[8], W5JR(5)[8],W5MPC(5)[8],W5MX(4)[8],W5UHQ(4)[8],W5XB(5)[8], W6AAN(5)[8],W6GMT(4)[7],W6HGF(5)[8],W6IHG(5)[8],W6KGP(4)[7], W6LFB(4)[7],W6NWS(5)[8],W6PU(4)[7],W6SAI(4)[8],W6UB(4)[8], W6XR(5)[8],W7DO(5)[8],W7HJ(5)[8],W7IMP(5)[8],W7IY(5)[8],W7JI(4)[7], W7KF(4)[6],W7KU(4)[7],W7THY(4)[7],W8AEF(3)[6],W8AKS(5)[8], W8FJ(5)[8],W8FN(4)[7],W8HGH(5)[8],W8IVF(5)[8],W8JI(5)[8], W8OHT(5)[8],W8QZA(3)[6],W8TK(3)[6],W8WEJ(5)[8],W8ZA(5)[8], W9CF(3)[6],W9KB(5)[8],W9LHG(4)[7],W9NGA(3)[6],W9UK(5)[8],W9XQ(4)[7], WA0KDS(3)[6],WA0WWW(3)[6],WA1FCN(4)[8],WA1PMA(3)[6],WA1UJU(4)[8], WA3C(4)[8],WA4JA(4)[8],WA4SM(4)[8],WA4WLI(4)[8],WA5VGI(3)[6], WA8OJR(5)[8],WA8QYJ(5)[8],WA8WV(5)[8],WA8ZBT(4)[7],WB3JFS(3)[6], WB4YDL(4)[8],WB4YDY(4)[8],WB5NMZ(4)[8],WB8BPU(5)[8],WB8YYY(5)[8], WB9KPT(5)[8],WC2Z(4)[8],WC7S(4)[7],WC7V(4)[6],WD8CQB(5)[8], WF4U(3)[6],WF7T(4)[8],WG7Y(4)[7],WJ9B(3)[6],WK5X(5)[8],WL7OU(4)[7], WO4O(4)[8],WP2B(4)[7],WR1Q(4)[8],WS6K(4)[8],WS9M(5)[8],WT5L(5)[8], WT9Q(4)[7],WU9B(3)[6],WW2Y(4)[7],WX4MM(4)[8],WX4TM(4)[8],WY5I(5)[8], WY7FD(4)[7],WY7LL(4)[7],WY7SS(4)[7],WZ4F(4)[8]; Guantanamo Bay: 08: 11: NA: 20.00: 75.00: 5.0: KG4: KG4; Northern Mariana Islands: 27: 64: OC: 15.18: -145.72: -10.0: KH0: AH0,KH0,NH0,WH0; Baker & Howland Islands: 31: 61: OC: 0.00: 176.00: 12.0: KH1: AH1,KH1,NH1,WH1; Guam: 27: 64: OC: 13.37: -144.70: -10.0: KH2: AH2,KH2,NH2,WH2,KG6DX,N2NL; Johnston Island: 31: 61: OC: 16.72: 169.53: 10.0: KH3: AH3,KH3,NH3,WH3,KJ6BZ; Midway Island: 31: 61: OC: 28.20: 177.37: 11.0: KH4: AH4,KH4,NH4,WH4; Palmyra & Jarvis Islands: 31: 61: OC: 5.87: 162.07: 11.0: KH5: AH5,KH5,NH5,WH5; Kingman Reef: 31: 61: OC: 6.40: 162.40: 11.0: KH5K: AH5K,KH5K,NH5K,WH5K; Hawaii: 31: 61: OC: 19.67: 155.57: 10.0: KH6: AH6,AH7,KH6,KH7,NH6,NH7,WH6,WH7,AH0A,K4XV,K9FD,KB6EGA,KL3FN,N6KB, NH2IF; Kure Island: 31: 61: OC: 29.00: 178.00: 10.0: KH7K: AH7K,KH7K,NH7K,WH7K; American Samoa: 32: 62: OC: -14.32: 170.78: 11.0: KH8: AH8,KH8,NH8,WH8; Swains Island: 32: 62: OC: -11.05: 171.25: 11.0: KH8/s: KH8SI; Wake Island: 31: 65: OC: 19.28: -166.63: -12.0: KH9: AH9,KH9,NH9,WH9; Alaska: 01: 01: NA: 63.87: 153.78: 8.0: KL: AL,KL,NL,WL,AH0AH,KH0NF,KH0NG,N7ZYS; Navassa Island: 08: 11: NA: 18.40: 75.00: 5.0: KP1: KP1,NP1,WP1; U.S. Virgin Islands: 08: 11: NA: 17.73: 64.80: 4.0: KP2: KP2,NP2,WP2,KV4BT,KV4BW,KV4CF,KV4FZ; Puerto Rico: 08: 11: NA: 18.18: 66.55: 4.0: KP4: KP3,KP4,NP3,NP4,WP3,WP4,KB2OPM,KC2TE,KH2RU,KP2Z; Desecheo Island: 08: 11: NA: 18.08: 67.88: 4.0: KP5: KP5,NP5,WP5; Norway: 14: 18: EU: 61.00: -9.00: -1.0: LA: LA,LB,LC,LD,LE,LF,LG,LH,LI,LJ,LK,LL,LM,LN; Argentina: 13: 14: SA: -34.80: 65.92: 3.0: LU: AY,AZ,L1,L2,L3,L4,L5,L6,L7,L8,L9,LO,LP,LQ,LR,LS,LT,LU,LV,LW,AY0V[16], AY0W[16],AY0X[16],AY0Y[16],AY1V[16],AY1W[16],AY1X[16],AY1Y[16],AY2V[16], AY2W[16],AY2X[16],AY2Y[16],AY3V[16],AY3W[16],AY3X[16],AY3Y[16],AY4V[16], AY4W[16],AY4X[16],AY4Y[16],AY5V[16],AY5W[16],AY5X[16],AY5Y[16],AY6V[16], AY6W[16],AY6X[16],AY6Y[16],AY7V[16],AY7W[16],AY7X[16],AY7Y[16],AY8V[16], AY8W[16],AY8X[16],AY8Y[16],AY9V[16],AY9W[16],AY9X[16],AY9Y[16],AZ0V[16], AZ0W[16],AZ0X[16],AZ0Y[16],AZ1V[16],AZ1W[16],AZ1X[16],AZ1Y[16],AZ2V[16], AZ2W[16],AZ2X[16],AZ2Y[16],AZ3V[16],AZ3W[16],AZ3X[16],AZ3Y[16],AZ4V[16], AZ4W[16],AZ4X[16],AZ4Y[16],AZ5V[16],AZ5W[16],AZ5X[16],AZ5Y[16],AZ6V[16], AZ6W[16],AZ6X[16],AZ6Y[16],AZ7V[16],AZ7W[16],AZ7X[16],AZ7Y[16],AZ8V[16], AZ8W[16],AZ8X[16],AZ8Y[16],AZ9V[16],AZ9W[16],AZ9X[16],AZ9Y[16],L20V[16], L20W[16],L20X[16],L20Y[16],L21V[16],L21W[16],L21X[16],L21Y[16],L22V[16], L22W[16],L22X[16],L22Y[16],L23V[16],L23W[16],L23X[16],L23Y[16],L24V[16], L24W[16],L24X[16],L24Y[16],L25V[16],L25W[16],L25X[16],L25Y[16],L26V[16], L26W[16],L26X[16],L26Y[16],L27V[16],L27W[16],L27X[16],L27Y[16],L28V[16], L28W[16],L28X[16],L28Y[16],L29V[16],L29W[16],L29X[16],L29Y[16],L30V[16], L30W[16],L30X[16],L30Y[16],L31V[16],L31W[16],L31X[16],L31Y[16],L32V[16], L32W[16],L32X[16],L32Y[16],L33V[16],L33W[16],L33X[16],L33Y[16],L34V[16], L34W[16],L34X[16],L34Y[16],L35V[16],L35W[16],L35X[16],L35Y[16],L36V[16], L36W[16],L36X[16],L36Y[16],L37V[16],L37W[16],L37X[16],L37Y[16],L38V[16], L38W[16],L38X[16],L38Y[16],L39V[16],L39W[16],L39X[16],L39Y[16],L40V[16], L40W[16],L40X[16],L40Y[16],L41V[16],L41W[16],L41X[16],L41Y[16],L42V[16], L42W[16],L42X[16],L42Y[16],L43V[16],L43W[16],L43X[16],L43Y[16],L44V[16], L44W[16],L44X[16],L44Y[16],L45V[16],L45W[16],L45X[16],L45Y[16],L46V[16], L46W[16],L46X[16],L46Y[16],L47V[16],L47W[16],L47X[16],L47Y[16],L48V[16], L48W[16],L48X[16],L48Y[16],L49V[16],L49W[16],L49X[16],L49Y[16],L50V[16], L50W[16],L50X[16],L50Y[16],L51V[16],L51W[16],L51X[16],L51Y[16],L52V[16], L52W[16],L52X[16],L52Y[16],L53V[16],L53W[16],L53X[16],L53Y[16],L54V[16], L54W[16],L54X[16],L54Y[16],L55V[16],L55W[16],L55X[16],L55Y[16],L56V[16], L56W[16],L56X[16],L56Y[16],L57V[16],L57W[16],L57X[16],L57Y[16],L58V[16], L58W[16],L58X[16],L58Y[16],L59V[16],L59W[16],L59X[16],L59Y[16],L60V[16], L60W[16],L60X[16],L60Y[16],L61V[16],L61W[16],L61X[16],L61Y[16],L62V[16], L62W[16],L62X[16],L62Y[16],L63V[16],L63W[16],L63X[16],L63Y[16],L64V[16], L64W[16],L64X[16],L64Y[16],L65V[16],L65W[16],L65X[16],L65Y[16],L66V[16], L66W[16],L66X[16],L66Y[16],L67V[16],L67W[16],L67X[16],L67Y[16],L68V[16], L68W[16],L68X[16],L68Y[16],L69V[16],L69W[16],L69X[16],L69Y[16],L70V[16], L70W[16],L70X[16],L70Y[16],L71V[16],L71W[16],L71X[16],L71Y[16],L72V[16], L72W[16],L72X[16],L72Y[16],L73V[16],L73W[16],L73X[16],L73Y[16],L74V[16], L74W[16],L74X[16],L74Y[16],L75V[16],L75W[16],L75X[16],L75Y[16],L76V[16], L76W[16],L76X[16],L76Y[16],L77V[16],L77W[16],L77X[16],L77Y[16],L78V[16], L78W[16],L78X[16],L78Y[16],L79V[16],L79W[16],L79X[16],L79Y[16],L80V[16], L80W[16],L80X[16],L80Y[16],L81V[16],L81W[16],L81X[16],L81Y[16],L82V[16], L82W[16],L82X[16],L82Y[16],L83V[16],L83W[16],L83X[16],L83Y[16],L84V[16], L84W[16],L84X[16],L84Y[16],L85V[16],L85W[16],L85X[16],L85Y[16],L86V[16], L86W[16],L86X[16],L86Y[16],L87V[16],L87W[16],L87X[16],L87Y[16],L88V[16], L88W[16],L88X[16],L88Y[16],L89V[16],L89W[16],L89X[16],L89Y[16],L90V[16], L90W[16],L90X[16],L90Y[16],L91V[16],L91W[16],L91X[16],L91Y[16],L92V[16], L92W[16],L92X[16],L92Y[16],L93V[16],L93W[16],L93X[16],L93Y[16],L94V[16], L94W[16],L94X[16],L94Y[16],L95V[16],L95W[16],L95X[16],L95Y[16],L96V[16], L96W[16],L96X[16],L96Y[16],L97V[16],L97W[16],L97X[16],L97Y[16],L98V[16], L98W[16],L98X[16],L98Y[16],L99V[16],L99W[16],L99X[16],L99Y[16],LO0V[16], LO0W[16],LO0X[16],LO0Y[16],LO1V[16],LO1W[16],LO1X[16],LO1Y[16],LO2V[16], LO2W[16],LO2X[16],LO2Y[16],LO3V[16],LO3W[16],LO3X[16],LO3Y[16],LO4V[16], LO4W[16],LO4X[16],LO4Y[16],LO5V[16],LO5W[16],LO5X[16],LO5Y[16],LO6V[16], LO6W[16],LO6X[16],LO6Y[16],LO7V[16],LO7W[16],LO7X[16],LO7Y[16],LO8V[16], LO8W[16],LO8X[16],LO8Y[16],LO9V[16],LO9W[16],LO9X[16],LO9Y[16],LP0V[16], LP0W[16],LP0X[16],LP0Y[16],LP1V[16],LP1W[16],LP1X[16],LP1Y[16],LP2V[16], LP2W[16],LP2X[16],LP2Y[16],LP3V[16],LP3W[16],LP3X[16],LP3Y[16],LP4V[16], LP4W[16],LP4X[16],LP4Y[16],LP5V[16],LP5W[16],LP5X[16],LP5Y[16],LP6V[16], LP6W[16],LP6X[16],LP6Y[16],LP7V[16],LP7W[16],LP7X[16],LP7Y[16],LP8V[16], LP8W[16],LP8X[16],LP8Y[16],LP9V[16],LP9W[16],LP9X[16],LP9Y[16],LQ0V[16], LQ0W[16],LQ0X[16],LQ0Y[16],LQ1V[16],LQ1W[16],LQ1X[16],LQ1Y[16],LQ2V[16], LQ2W[16],LQ2X[16],LQ2Y[16],LQ3V[16],LQ3W[16],LQ3X[16],LQ3Y[16],LQ4V[16], LQ4W[16],LQ4X[16],LQ4Y[16],LQ5V[16],LQ5W[16],LQ5X[16],LQ5Y[16],LQ6V[16], LQ6W[16],LQ6X[16],LQ6Y[16],LQ7V[16],LQ7W[16],LQ7X[16],LQ7Y[16],LQ8V[16], LQ8W[16],LQ8X[16],LQ8Y[16],LQ9V[16],LQ9W[16],LQ9X[16],LQ9Y[16],LR0V[16], LR0W[16],LR0X[16],LR0Y[16],LR1V[16],LR1W[16],LR1X[16],LR1Y[16],LR2V[16], LR2W[16],LR2X[16],LR2Y[16],LR3V[16],LR3W[16],LR3X[16],LR3Y[16],LR4V[16], LR4W[16],LR4X[16],LR4Y[16],LR5V[16],LR5W[16],LR5X[16],LR5Y[16],LR6V[16], LR6W[16],LR6X[16],LR6Y[16],LR7V[16],LR7W[16],LR7X[16],LR7Y[16],LR8V[16], LR8W[16],LR8X[16],LR8Y[16],LR9V[16],LR9W[16],LR9X[16],LR9Y[16],LS0V[16], LS0W[16],LS0X[16],LS0Y[16],LS1V[16],LS1W[16],LS1X[16],LS1Y[16],LS2V[16], LS2W[16],LS2X[16],LS2Y[16],LS3V[16],LS3W[16],LS3X[16],LS3Y[16],LS4V[16], LS4W[16],LS4X[16],LS4Y[16],LS5V[16],LS5W[16],LS5X[16],LS5Y[16],LS6V[16], LS6W[16],LS6X[16],LS6Y[16],LS7V[16],LS7W[16],LS7X[16],LS7Y[16],LS8V[16], LS8W[16],LS8X[16],LS8Y[16],LS9V[16],LS9W[16],LS9X[16],LS9Y[16],LT0V[16], LT0W[16],LT0X[16],LT0Y[16],LT1V[16],LT1W[16],LT1X[16],LT1Y[16],LT2V[16], LT2W[16],LT2X[16],LT2Y[16],LT3V[16],LT3W[16],LT3X[16],LT3Y[16],LT4V[16], LT4W[16],LT4X[16],LT4Y[16],LT5V[16],LT5W[16],LT5X[16],LT5Y[16],LT6V[16], LT6W[16],LT6X[16],LT6Y[16],LT7V[16],LT7W[16],LT7X[16],LT7Y[16],LT8V[16], LT8W[16],LT8X[16],LT8Y[16],LT9V[16],LT9W[16],LT9X[16],LT9Y[16],LU0V[16], LU0W[16],LU0X[16],LU0Y[16],LU1V[16],LU1W[16],LU1X[16],LU1Y[16],LU2V[16], LU2W[16],LU2X[16],LU2Y[16],LU3V[16],LU3W[16],LU3X[16],LU3Y[16],LU4V[16], LU4W[16],LU4X[16],LU4Y[16],LU5V[16],LU5W[16],LU5X[16],LU5Y[16],LU6V[16], LU6W[16],LU6X[16],LU6Y[16],LU7V[16],LU7W[16],LU7X[16],LU7Y[16],LU8V[16], LU8W[16],LU8X[16],LU8Y[16],LU9V[16],LU9W[16],LU9X[16],LU9Y[16],LV0V[16], LV0W[16],LV0X[16],LV0Y[16],LV1V[16],LV1W[16],LV1X[16],LV1Y[16],LV2V[16], LV2W[16],LV2X[16],LV2Y[16],LV3V[16],LV3W[16],LV3X[16],LV3Y[16],LV4V[16], LV4W[16],LV4X[16],LV4Y[16],LV5V[16],LV5W[16],LV5X[16],LV5Y[16],LV6V[16], LV6W[16],LV6X[16],LV6Y[16],LV7V[16],LV7W[16],LV7X[16],LV7Y[16],LV8V[16], LV8W[16],LV8X[16],LV8Y[16],LV9V[16],LV9W[16],LV9X[16],LV9Y[16],LW0V[16], LW0W[16],LW0X[16],LW0Y[16],LW1V[16],LW1W[16],LW1X[16],LW1Y[16],LW2V[16], LW2W[16],LW2X[16],LW2Y[16],LW3V[16],LW3W[16],LW3X[16],LW3Y[16],LW4V[16], LW4W[16],LW4X[16],LW4Y[16],LW5V[16],LW5W[16],LW5X[16],LW5Y[16],LW6V[16], LW6W[16],LW6X[16],LW6Y[16],LW7V[16],LW7W[16],LW7X[16],LW7Y[16],LW8V[16], LW8W[16],LW8X[16],LW8Y[16],LW9V[16],LW9W[16],LW9X[16],LW9Y[16],LU1DZ/D, LU1YY/XA[16],LU2AVW/D,LU2CHP/D,LU2DJB/J,LU2DVI/H,LU2FP/F,LU2HOD/D, LU3FV/F,LU4DBT/XA[16],LU4ETN/F,LU4HOD/F,LU5DEM/W[16],LU5DGI/W[16], LU5DX/H,LU5FZ/F,LU6EE/XA[16],LU6FE/H,LU7FM/F,LU7JMS/J,LU8DZE/D, LU9JMG/J,LU9XPA/L,LW2EIY/H,LW3DKO/D; Luxembourg: 14: 27: EU: 50.00: -6.00: -1.0: LX: LX; Lithuania: 15: 29: EU: 55.45: -23.63: -2.0: LY: LY; Bulgaria: 20: 28: EU: 42.83: -25.08: -2.0: LZ: LZ; Peru: 10: 12: SA: -10.00: 76.00: 5.0: OA: 4T,OA,OB,OC; Lebanon: 20: 39: AS: 33.83: -35.83: -2.0: OD: OD; Austria: 15: 28: EU: 47.33: -13.33: -1.0: OE: 4U1V,OE; Finland: 15: 18: EU: 63.78: -27.08: -2.0: OH: OF,OG,OH,OI,OJ,OH7QA/S; Aland Islands: 15: 18: EU: 60.13: -20.37: -2.0: OH0: OF0,OG0,OH0,OI0; Market Reef: 15: 18: EU: 60.00: -19.00: -2.0: OJ0: OJ0; Czech Republic: 15: 28: EU: 50.00: -16.00: -1.0: OK: OK,OL; Slovak Republic: 15: 28: EU: 49.00: -20.00: -1.0: OM: OM; Belgium: 14: 27: EU: 50.70: -4.85: -1.0: ON: ON,OO,OP,OQ,OR,OS,OT; Greenland: 40: 05: NA: 74.00: 42.78: 3.0: OX: OX,XP; Faroe Islands: 14: 18: EU: 62.07: 6.93: 0.0: OY: OW,OY; Denmark: 14: 18: EU: 56.00: -10.00: -1.0: OZ: 5P,5Q,OU,OV,OZ; Papua New Guinea: 28: 51: OC: -9.50: -147.12: -10.0: P2: P2; Aruba: 09: 11: SA: 12.53: 69.98: 4.0: P4: P4; Netherlands: 14: 27: EU: 52.28: -5.47: -1.0: PA: PA,PB,PC,PD,PE,PF,PG,PH,PI; Curacao: 09: 11: SA: 12.17: 69.00: 4.0: PJ2: PJ2; Bonaire: 09: 11: SA: 12.20: 68.25: 4.0: PJ4: PJ4; St. Eustatius & Saba: 08: 11: NA: 17.57: 63.10: 4.0: PJ5: PJ5,PJ6; Sint Maarten: 08: 11: NA: 18.07: 63.07: 4.0: PJ7: PJ7; Brazil: 11: 12: SA: -10.00: 53.00: 3.0: PY: PP,PQ,PR,PS,PT,PU,PV,PW,PX,PY,ZV,ZW,ZX,ZY,ZZ,PP1[15],PP2[15],PP3[15], PP4[15],PP5[15],PP6[13],PP7[13],PQ2[13],PQ3[15],PQ4[15],PQ8[13],PR3[15], PR4[15],PR7[13],PR8[13],PS3[15],PS4[15],PS7[13],PS8[13],PT2[13],PT3[15], PT4[15],PT7[13],PT9[15],PU3[15],PU4[15],PV3[15],PV4[15],PW3[15],PW4[15], PX3[15],PX4[15],PY1[15],PY2[15],PY3[15],PY4[15],PY5[15],PY6[13],PY7[13], PY8[13],PY9[13],ZV3[15],ZV4[15],ZW3[15],ZW4[15],ZX3[15],ZX4[15],ZY3[15], ZY4[15],ZZ3[15],ZZ4[15]; Fernando de Noronha: 11: 13: SA: -3.85: 32.43: 2.0: PY0F: PP0F,PQ0F,PR0F,PS0F,PT0F,PU0F,PV0F,PW0F,PX0F,PY0F,PY0Z,ZV0F,ZW0F,ZX0F, ZY0F,ZY0R,ZY0Z,ZZ0F; St. Peter & St. Paul: 11: 13: SA: 0.00: 29.00: 2.0: PY0S: PP0S,PQ0S,PR0S,PS0S,PT0S,PU0S,PV0S,PW0S,PX0S,PY0S,ZV0S,ZW0S,ZX0S,ZY0S, ZZ0S; Trindade & Martim Vaz: 11: 15: SA: -20.50: 29.32: 2.0: PY0T: PP0M,PP0T,PQ0M,PQ0T,PR0M,PR0T,PS0M,PS0T,PT0M,PT0T,PU0M,PU0T,PV0M,PV0T, PW0M,PW0T,PX0M,PX0T,PY0M,PY0T,ZV0M,ZV0T,ZW0M,ZW0T,ZX0M,ZX0T,ZY0M,ZY0T, ZZ0M,ZZ0T; Suriname: 09: 12: SA: 4.00: 56.00: 3.0: PZ: PZ; Franz Josef Land: 40: 75: EU: 80.68: -49.92: -3.0: R1FJ: FJL,R1FJ,RI1FJ; Malyj Vysotskij: 16: 29: EU: 60.28: -28.62: -3.0: R1MV: MVI,R1MV,RI1MV; Western Sahara: 33: 46: AF: 24.82: 13.85: 0.0: S0: S0; Bangladesh: 22: 41: AS: 24.12: -89.65: -6.0: S2: S2,S3; Slovenia: 15: 28: EU: 46.00: -14.00: -1.0: S5: S5; Seychelles: 39: 53: AF: -4.67: -55.47: -4.0: S7: S7; Sao Tome & Principe: 36: 47: AF: 0.22: -6.57: 0.0: S9: S9; Sweden: 14: 18: EU: 61.20: -14.57: -1.0: SM: 7S,8S,SA,SB,SC,SD,SE,SF,SG,SH,SI,SJ,SK,SL,SM; Poland: 15: 28: EU: 52.28: -18.67: -1.0: SP: 3Z,HF,SN,SO,SP,SQ,SR; Sudan: 34: 48: AF: 14.47: -28.62: -3.0: ST: 6T,6U,ST; Republic of South Sudan: 34: 48: AF: 4.85: -31.60: -3.0: ST0: ST0R; Egypt: 34: 38: AF: 26.28: -28.60: -2.0: SU: 6A,6B,SS,SU; Greece: 20: 28: EU: 39.78: -21.78: -2.0: SV: J4,SV,SW,SX,SY,SZ,SV9DRU/1; Mount Athos: 20: 28: EU: 40.00: -24.00: -2.0: SV/a: SV2ASP/A; Dodecanese: 20: 28: EU: 36.17: -27.93: -2.0: SV5: J45,SV5,SW5,SX5,SY5,SZ5,SV0XAN/5,SV0XBZ/5,SV0XCA/5,SV9DJO/5,SX65AP, SX65AP/5; Crete: 20: 28: EU: 35.23: -24.78: -2.0: SV9: J49,SV9,SW9,SX9,SY9,SZ9,SV0LB,SV0XAI/9,SV0XBN/9,SV0XBZ/9,SV0XCC/9; Tuvalu: 31: 65: OC: -8.50: -179.20: -12.0: T2: T2; Western Kiribati: 31: 65: OC: 1.42: -173.00: -12.0: T30: T30; Central Kiribati: 31: 62: OC: -2.83: 171.72: -13.0: T31: T31; Eastern Kiribati: 31: 61: OC: 1.80: 157.35: -14.0: T32: T32; Banaba: 31: 65: OC: -0.88: -169.53: -12.0: T33: T33; Somalia: 37: 48: AF: 2.03: -45.35: -3.0: T5: 6O,T5; San Marino: 15: 28: EU: 43.95: -12.45: -1.0: T7: T7; Palau: 27: 64: OC: 7.45: -134.53: -9.0: T8: T8; Asiatic Turkey: 20: 39: AS: 39.18: -35.65: -2.0: TA: TA,TB,TC,YM; European Turkey: 20: 39: EU: 41.02: -28.97: -2.0: *TA1: TA1,TB1,TC1,YM1; Iceland: 40: 17: EU: 64.80: 18.73: 0.0: TF: TF; Guatemala: 07: 11: NA: 15.50: 90.30: 6.0: TG: TD,TG; Costa Rica: 07: 11: NA: 10.00: 84.00: 6.0: TI: TE,TI; Cocos Island: 07: 11: NA: 5.52: 87.05: 6.0: TI9: TE9,TI9; Cameroon: 36: 47: AF: 5.38: -11.87: -1.0: TJ: TJ; Corsica: 15: 28: EU: 42.00: -9.00: -1.0: TK: TK; Central African Rep: 36: 47: AF: 6.75: -20.33: -1.0: TL: TL; Congo: 36: 52: AF: -1.02: -15.37: -1.0: TN: TN; Gabon: 36: 52: AF: -0.37: -11.73: -1.0: TR: TR; Chad: 36: 47: AF: 15.80: -18.17: -1.0: TT: TT; Cote d'Ivoire: 35: 46: AF: 7.58: 5.80: 0.0: TU: TU; Benin: 35: 46: AF: 9.87: -2.25: -1.0: TY: TY; Mali: 35: 46: AF: 18.00: 2.58: 0.0: TZ: TZ; European Russia: 16: 29: EU: 56.00: -37.00: -3.0: UA: R,U,R1N[19],R1O[19],R1P[20],R1Y[19],R1Z[19],R4H[30],R4I[30],R4W[30], R8F(17)[30],R8G(17)[30],R8X(17)[19],R9F(17)[30],R9G(17)[30],R9X(17)[19], RA1N[19],RA1O[19],RA1P[20],RA1Y[19],RA1Z[19],RA4H[30],RA4I[30],RA4W[30], RA8F(17)[30],RA8G(17)[30],RA8X(17)[19],RA9F(17)[30],RA9G(17)[30], RA9X(17)[19],RC1N[19],RC1O[19],RC1P[20],RC1Y[19],RC1Z[19],RC4H[30], RC4I[30],RC4W[30],RC8F(17)[30],RC8G(17)[30],RC8X(17)[19],RC9F(17)[30], RC9G(17)[30],RC9X(17)[19],RD1N[19],RD1O[19],RD1P[20],RD1Y[19],RD1Z[19], RD4H[30],RD4I[30],RD4W[30],RD8F(17)[30],RD8G(17)[30],RD8X(17)[19], RD9F(17)[30],RD9G(17)[30],RD9X(17)[19],RF1N[19],RF1O[19],RF1P[20], RF1Y[19],RF1Z[19],RF4H[30],RF4I[30],RF4W[30],RF8F(17)[30],RF8G(17)[30], RF8X(17)[19],RF9F(17)[30],RF9G(17)[30],RF9X(17)[19],RG1N[19],RG1O[19], RG1P[20],RG1Y[19],RG1Z[19],RG4H[30],RG4I[30],RG4W[30],RG8F(17)[30], RG8G(17)[30],RG8X(17)[19],RG9F(17)[30],RG9G(17)[30],RG9X(17)[19],RI1N[19], RI1O[19],RI1P[20],RI1Y[19],RI1Z[19],RI4H[30],RI4I[30],RI4W[30], RI8F(17)[30],RI8G(17)[30],RI8X(17)[19],RI9F(17)[30],RI9G(17)[30], RI9X(17)[19],RJ1N[19],RJ1O[19],RJ1P[20],RJ1Y[19],RJ1Z[19],RJ4H[30], RJ4I[30],RJ4W[30],RJ8F(17)[30],RJ8G(17)[30],RJ8X(17)[19],RJ9F(17)[30], RJ9G(17)[30],RJ9X(17)[19],RK1N[19],RK1O[19],RK1P[20],RK1Y[19],RK1Z[19], RK4H[30],RK4I[30],RK4W[30],RK8F(17)[30],RK8G(17)[30],RK8X(17)[19], RK9F(17)[30],RK9G(17)[30],RK9X(17)[19],RL1N[19],RL1O[19],RL1P[20], RL1Y[19],RL1Z[19],RL4H[30],RL4I[30],RL4W[30],RL8F(17)[30],RL8G(17)[30], RL8X(17)[19],RL9F(17)[30],RL9G(17)[30],RL9X(17)[19],RM1N[19],RM1O[19], RM1P[20],RM1Y[19],RM1Z[19],RM4H[30],RM4I[30],RM4W[30],RM8F(17)[30], RM8G(17)[30],RM8X(17)[19],RM9F(17)[30],RM9G(17)[30],RM9X(17)[19],RN1N[19], RN1O[19],RN1P[20],RN1Y[19],RN1Z[19],RN4H[30],RN4I[30],RN4W[30], RN8F(17)[30],RN8G(17)[30],RN8X(17)[19],RN9F(17)[30],RN9G(17)[30], RN9X(17)[19],RO1N[19],RO1O[19],RO1P[20],RO1Y[19],RO1Z[19],RO4H[30], RO4I[30],RO4W[30],RO8F(17)[30],RO8G(17)[30],RO8X(17)[19],RO9F(17)[30], RO9G(17)[30],RO9X(17)[19],RP1N[19],RP1O[19],RP1P[20],RP1Y[19],RP1Z[19], RP4H[30],RP4I[30],RP4W[30],RP8F(17)[30],RP8G(17)[30],RP8X(17)[19], RP9F(17)[30],RP9G(17)[30],RP9X(17)[19],RQ1N[19],RQ1O[19],RQ1P[20], RQ1Y[19],RQ1Z[19],RQ4H[30],RQ4I[30],RQ4W[30],RQ8F(17)[30],RQ8G(17)[30], RQ8X(17)[19],RQ9F(17)[30],RQ9G(17)[30],RQ9X(17)[19],RR1N[19],RR1O[19], RR1P[20],RR1Y[19],RR1Z[19],RR4H[30],RR4I[30],RR4W[30],RR8F(17)[30], RR8G(17)[30],RR8X(17)[19],RR9F(17)[30],RR9G(17)[30],RR9X(17)[19],RT1N[19], RT1O[19],RT1P[20],RT1Y[19],RT1Z[19],RT4H[30],RT4I[30],RT4W[30], RT8F(17)[30],RT8G(17)[30],RT8X(17)[19],RT9F(17)[30],RT9G(17)[30], RT9X(17)[19],RU1N[19],RU1O[19],RU1P[20],RU1Y[19],RU1Z[19],RU4H[30], RU4I[30],RU4W[30],RU8F(17)[30],RU8G(17)[30],RU8X(17)[19],RU9F(17)[30], RU9G(17)[30],RU9X(17)[19],RV1N[19],RV1O[19],RV1P[20],RV1Y[19],RV1Z[19], RV4H[30],RV4I[30],RV4W[30],RV8F(17)[30],RV8G(17)[30],RV8X(17)[19], RV9F(17)[30],RV9G(17)[30],RV9X(17)[19],RW1N[19],RW1O[19],RW1P[20], RW1Y[19],RW1Z[19],RW4H[30],RW4I[30],RW4W[30],RW8F(17)[30],RW8G(17)[30], RW8X(17)[19],RW9F(17)[30],RW9G(17)[30],RW9X(17)[19],RX1N[19],RX1O[19], RX1P[20],RX1Y[19],RX1Z[19],RX4H[30],RX4I[30],RX4W[30],RX8F(17)[30], RX8G(17)[30],RX8X(17)[19],RX9F(17)[30],RX9G(17)[30],RX9X(17)[19],RY1N[19], RY1O[19],RY1P[20],RY1Y[19],RY1Z[19],RY4H[30],RY4I[30],RY4W[30], RY8F(17)[30],RY8G(17)[30],RY8X(17)[19],RY9F(17)[30],RY9G(17)[30], RY9X(17)[19],RZ1N[19],RZ1O[19],RZ1P[20],RZ1Y[19],RZ1Z[19],RZ4H[30], RZ4I[30],RZ4W[30],RZ8F(17)[30],RZ8G(17)[30],RZ8X(17)[19],RZ9F(17)[30], RZ9G(17)[30],RZ9X(17)[19],U1N[19],U1O[19],U1P[20],U1Y[19],U1Z[19],U4H[30], U4I[30],U4W[30],U8F(17)[30],U8G(17)[30],U8X(17)[19],U9F(17)[30], U9G(17)[30],U9X(17)[19],UA1N[19],UA1O[19],UA1P[20],UA1Y[19],UA1Z[19], UA4H[30],UA4I[30],UA4W[30],UA8F(17)[30],UA8G(17)[30],UA8X(17)[19], UA9F(17)[30],UA9G(17)[30],UA9X(17)[19],UB1N[19],UB1O[19],UB1P[20], UB1Y[19],UB1Z[19],UB4H[30],UB4I[30],UB4W[30],UB8F(17)[30],UB8G(17)[30], UB8X(17)[19],UB9F(17)[30],UB9G(17)[30],UB9X(17)[19],UC1N[19],UC1O[19], UC1P[20],UC1Y[19],UC1Z[19],UC4H[30],UC4I[30],UC4W[30],UC8F(17)[30], UC8G(17)[30],UC8X(17)[19],UC9F(17)[30],UC9G(17)[30],UC9X(17)[19],UD1N[19], UD1O[19],UD1P[20],UD1Y[19],UD1Z[19],UD4H[30],UD4I[30],UD4W[30], UD8F(17)[30],UD8G(17)[30],UD8X(17)[19],UD9F(17)[30],UD9G(17)[30], UD9X(17)[19],UE1N[19],UE1O[19],UE1P[20],UE1Y[19],UE1Z[19],UE4H[30], UE4I[30],UE4W[30],UE8F(17)[30],UE8G(17)[30],UE8X(17)[19],UE9F(17)[30], UE9G(17)[30],UE9X(17)[19],UF1N[19],UF1O[19],UF1P[20],UF1Y[19],UF1Z[19], UF4H[30],UF4I[30],UF4W[30],UF8F(17)[30],UF8G(17)[30],UF8X(17)[19], UF9F(17)[30],UF9G(17)[30],UF9X(17)[19],UG1N[19],UG1O[19],UG1P[20], UG1Y[19],UG1Z[19],UG4H[30],UG4I[30],UG4W[30],UG8F(17)[30],UG8G(17)[30], UG8X(17)[19],UG9F(17)[30],UG9G(17)[30],UG9X(17)[19],UH1N[19],UH1O[19], UH1P[20],UH1Y[19],UH1Z[19],UH4H[30],UH4I[30],UH4W[30],UH8F(17)[30], UH8G(17)[30],UH8X(17)[19],UH9F(17)[30],UH9G(17)[30],UH9X(17)[19],UI1N[19], UI1O[19],UI1P[20],UI1Y[19],UI1Z[19],UI4H[30],UI4I[30],UI4W[30], UI8F(17)[30],UI8G(17)[30],UI8X(17)[19],UI9F(17)[30],UI9G(17)[30], UI9X(17)[19]; Kaliningrad: 15: 29: EU: 54.82: -21.60: -2.0: UA2: R2F,R2K,RA2,RC2F,RC2K,RD2F,RD2K,RF2F,RF2K,RG2F,RG2K,RI2F,RI2K,RJ2F,RJ2K, RK2F,RK2K,RL2F,RL2K,RM2F,RM2K,RN2F,RN2K,RO2F,RO2K,RP2F,RP2K,RQ2F,RQ2K, RR2F,RR2K,RT2F,RT2K,RU2F,RU2K,RV2F,RV2K,RW2F,RW2K,RX2F,RX2K,RY2F,RY2K, RZ2F,RZ2K,U2F,U2K,UA2,UB2,UC2,UD2,UE2,UF2,UG2,UH2,UI2,R2MWO; Asiatic Russia: 17: 30: AS: 67.18: -104.00: -7.0: UA9: R0,R8(17)[30],R9,RA0,RA8(17)[30],RA9,RB0,RB8(17)[30],RB9,RC0,RC8(17)[30], RC9,RD0,RD8(17)[30],RD9,RE0,RE8(17)[30],RE9,RF0,RF8(17)[30],RF9,RG0, RG8(17)[30],RG9,RH0,RH8(17)[30],RH9,RI0,RI8(17)[30],RI9,RJ0,RJ8(17)[30], RJ9,RK0,RK8(17)[30],RK9,RL0,RL8(17)[30],RL9,RM0,RM8(17)[30],RM9,RN0, RN8(17)[30],RN9,RO0,RO8(17)[30],RO9,RP0,RP8(17)[30],RP9,RQ0,RQ8(17)[30], RQ9,RR0,RR8(17)[30],RR9,RS0,RS8(17)[30],RS9,RT0,RT8(17)[30],RT9,RU0, RU8(17)[30],RU9,RV0,RV8(17)[30],RV9,RW0,RW8(17)[30],RW9,RX0,RX8(17)[30], RX9,RY0,RY8(17)[30],RY9,RZ0,RZ8(17)[30],RZ9,U0,U8(17)[30],U9,UA0, UA8(17)[30],UA9,UB0,UB8(17)[30],UB9,UC0,UC8(17)[30],UC9,UD0,UD8(17)[30], UD9,UE0,UE8(17)[30],UE9,UF0,UF8(17)[30],UF9,UG0,UG8(17)[30],UG9,UH0, UH8(17)[30],UH9,UI0,UI8(17)[30],UI9,R0P(18)[32],R0T(18)[32],R0V(18)[32], R8H(18)[31],R8I(18)[31],R8O(18)[31],R8P(18)[31],R8S(16)[30],R8T(16)[30], R8U(18)[31],R8V(18)[31],R8W(16)[30],R8Y(18)[31],R8Z(18)[31],R9I(18)[31], R9M(17)[30],R9P(18)[31],R9S(16),R9T(16),R9V(18)[31],R9W(16),RA0P(18)[32], RA0T(18)[32],RA0V(18)[32],RA8H(18)[31],RA8I(18)[31],RA8O(18)[31], RA8P(18)[31],RA8S(16)[30],RA8T(16)[30],RA8U(18)[31],RA8V(18)[31], RA8W(16)[30],RA8Y(18)[31],RA8Z(18)[31],RA9I(18)[31],RA9M(17)[30], RA9P(18)[31],RA9S(16),RA9T(16),RA9V(18)[31],RA9W(16),RC0P(18)[32], RC0T(18)[32],RC0V(18)[32],RC8H(18)[31],RC8I(18)[31],RC8O(18)[31], RC8P(18)[31],RC8S(16)[30],RC8T(16)[30],RC8U(18)[31],RC8V(18)[31], RC8W(16)[30],RC8Y(18)[31],RC8Z(18)[31],RC9I(18)[31],RC9M(17)[30], RC9P(18)[31],RC9S(16),RC9T(16),RC9V(18)[31],RC9W(16),RD0P(18)[32], RD0T(18)[32],RD0V(18)[32],RD8H(18)[31],RD8I(18)[31],RD8O(18)[31], RD8P(18)[31],RD8S(16)[30],RD8T(16)[30],RD8U(18)[31],RD8V(18)[31], RD8W(16)[30],RD8Y(18)[31],RD8Z(18)[31],RD9I(18)[31],RD9M(17)[30], RD9P(18)[31],RD9S(16),RD9T(16),RD9V(18)[31],RD9W(16),RF0P(18)[32], RF0T(18)[32],RF0V(18)[32],RF8H(18)[31],RF8I(18)[31],RF8O(18)[31], RF8P(18)[31],RF8S(16)[30],RF8T(16)[30],RF8U(18)[31],RF8V(18)[31], RF8W(16)[30],RF8Y(18)[31],RF8Z(18)[31],RF9I(18)[31],RF9M(17)[30], RF9P(18)[31],RF9S(16),RF9T(16),RF9V(18)[31],RF9W(16),RG0P(18)[32], RG0T(18)[32],RG0V(18)[32],RG8H(18)[31],RG8I(18)[31],RG8O(18)[31], RG8P(18)[31],RG8S(16)[30],RG8T(16)[30],RG8U(18)[31],RG8V(18)[31], RG8W(16)[30],RG8Y(18)[31],RG8Z(18)[31],RG9I(18)[31],RG9M(17)[30], RG9P(18)[31],RG9S(16),RG9T(16),RG9V(18)[31],RG9W(16),RI0P(18)[32], RI0T(18)[32],RI0V(18)[32],RI8H(18)[31],RI8I(18)[31],RI8O(18)[31], RI8P(18)[31],RI8S(16)[30],RI8T(16)[30],RI8U(18)[31],RI8V(18)[31], RI8W(16)[30],RI8Y(18)[31],RI8Z(18)[31],RI9I(18)[31],RI9M(17)[30], RI9P(18)[31],RI9S(16),RI9T(16),RI9V(18)[31],RI9W(16),RJ0P(18)[32], RJ0T(18)[32],RJ0V(18)[32],RJ8H(18)[31],RJ8I(18)[31],RJ8O(18)[31], RJ8P(18)[31],RJ8S(16)[30],RJ8T(16)[30],RJ8U(18)[31],RJ8V(18)[31], RJ8W(16)[30],RJ8Y(18)[31],RJ8Z(18)[31],RJ9I(18)[31],RJ9M(17)[30], RJ9P(18)[31],RJ9S(16),RJ9T(16),RJ9V(18)[31],RJ9W(16),RK0P(18)[32], RK0T(18)[32],RK0V(18)[32],RK8H(18)[31],RK8I(18)[31],RK8O(18)[31], RK8P(18)[31],RK8S(16)[30],RK8T(16)[30],RK8U(18)[31],RK8V(18)[31], RK8W(16)[30],RK8Y(18)[31],RK8Z(18)[31],RK9I(18)[31],RK9M(17)[30], RK9P(18)[31],RK9S(16),RK9T(16),RK9V(18)[31],RK9W(16),RL0P(18)[32], RL0T(18)[32],RL0V(18)[32],RL8H(18)[31],RL8I(18)[31],RL8O(18)[31], RL8P(18)[31],RL8S(16)[30],RL8T(16)[30],RL8U(18)[31],RL8V(18)[31], RL8W(16)[30],RL8Y(18)[31],RL8Z(18)[31],RL9I(18)[31],RL9M(17)[30], RL9P(18)[31],RL9S(16),RL9T(16),RL9V(18)[31],RL9W(16),RM0P(18)[32], RM0T(18)[32],RM0V(18)[32],RM8H(18)[31],RM8I(18)[31],RM8O(18)[31], RM8P(18)[31],RM8S(16)[30],RM8T(16)[30],RM8U(18)[31],RM8V(18)[31], RM8W(16)[30],RM8Y(18)[31],RM8Z(18)[31],RM9I(18)[31],RM9M(17)[30], RM9P(18)[31],RM9S(16),RM9T(16),RM9V(18)[31],RM9W(16),RN0P(18)[32], RN0T(18)[32],RN0V(18)[32],RN8H(18)[31],RN8I(18)[31],RN8O(18)[31], RN8P(18)[31],RN8S(16)[30],RN8T(16)[30],RN8U(18)[31],RN8V(18)[31], RN8W(16)[30],RN8Y(18)[31],RN8Z(18)[31],RN9I(18)[31],RN9M(17)[30], RN9P(18)[31],RN9S(16),RN9T(16),RN9V(18)[31],RN9W(16),RO0P(18)[32], RO0T(18)[32],RO0V(18)[32],RO8H(18)[31],RO8I(18)[31],RO8O(18)[31], RO8P(18)[31],RO8S(16)[30],RO8T(16)[30],RO8U(18)[31],RO8V(18)[31], RO8W(16)[30],RO8Y(18)[31],RO8Z(18)[31],RO9I(18)[31],RO9M(17)[30], RO9P(18)[31],RO9S(16),RO9T(16),RO9V(18)[31],RO9W(16),RP0P(18)[32], RP0T(18)[32],RP0V(18)[32],RP8H(18)[31],RP8I(18)[31],RP8O(18)[31], RP8P(18)[31],RP8S(16)[30],RP8T(16)[30],RP8U(18)[31],RP8V(18)[31], RP8W(16)[30],RP8Y(18)[31],RP8Z(18)[31],RP9I(18)[31],RP9M(17)[30], RP9P(18)[31],RP9S(16),RP9T(16),RP9V(18)[31],RP9W(16),RQ0P(18)[32], RQ0T(18)[32],RQ0V(18)[32],RQ8H(18)[31],RQ8I(18)[31],RQ8O(18)[31], RQ8P(18)[31],RQ8S(16)[30],RQ8T(16)[30],RQ8U(18)[31],RQ8V(18)[31], RQ8W(16)[30],RQ8Y(18)[31],RQ8Z(18)[31],RQ9I(18)[31],RQ9M(17)[30], RQ9P(18)[31],RQ9S(16),RQ9T(16),RQ9V(18)[31],RQ9W(16),RR0P(18)[32], RR0T(18)[32],RR0V(18)[32],RR8H(18)[31],RR8I(18)[31],RR8O(18)[31], RR8P(18)[31],RR8S(16)[30],RR8T(16)[30],RR8U(18)[31],RR8V(18)[31], RR8W(16)[30],RR8Y(18)[31],RR8Z(18)[31],RR9I(18)[31],RR9M(17)[30], RR9P(18)[31],RR9S(16),RR9T(16),RR9V(18)[31],RR9W(16),RT0P(18)[32], RT0T(18)[32],RT0V(18)[32],RT8H(18)[31],RT8I(18)[31],RT8O(18)[31], RT8P(18)[31],RT8S(16)[30],RT8T(16)[30],RT8U(18)[31],RT8V(18)[31], RT8W(16)[30],RT8Y(18)[31],RT8Z(18)[31],RT9I(18)[31],RT9M(17)[30], RT9P(18)[31],RT9S(16),RT9T(16),RT9V(18)[31],RT9W(16),RU0P(18)[32], RU0T(18)[32],RU0V(18)[32],RU8H(18)[31],RU8I(18)[31],RU8O(18)[31], RU8P(18)[31],RU8S(16)[30],RU8T(16)[30],RU8U(18)[31],RU8V(18)[31], RU8W(16)[30],RU8Y(18)[31],RU8Z(18)[31],RU9I(18)[31],RU9M(17)[30], RU9P(18)[31],RU9S(16),RU9T(16),RU9V(18)[31],RU9W(16),RV0P(18)[32], RV0T(18)[32],RV0V(18)[32],RV8H(18)[31],RV8I(18)[31],RV8O(18)[31], RV8P(18)[31],RV8S(16)[30],RV8T(16)[30],RV8U(18)[31],RV8V(18)[31], RV8W(16)[30],RV8Y(18)[31],RV8Z(18)[31],RV9I(18)[31],RV9M(17)[30], RV9P(18)[31],RV9S(16),RV9T(16),RV9V(18)[31],RV9W(16),RW0P(18)[32], RW0T(18)[32],RW0V(18)[32],RW8H(18)[31],RW8I(18)[31],RW8O(18)[31], RW8P(18)[31],RW8S(16)[30],RW8T(16)[30],RW8U(18)[31],RW8V(18)[31], RW8W(16)[30],RW8Y(18)[31],RW8Z(18)[31],RW9I(18)[31],RW9M(17)[30], RW9P(18)[31],RW9S(16),RW9T(16),RW9V(18)[31],RW9W(16),RX0P(18)[32], RX0T(18)[32],RX0V(18)[32],RX8H(18)[31],RX8I(18)[31],RX8O(18)[31], RX8P(18)[31],RX8S(16)[30],RX8T(16)[30],RX8U(18)[31],RX8V(18)[31], RX8W(16)[30],RX8Y(18)[31],RX8Z(18)[31],RX9I(18)[31],RX9M(17)[30], RX9P(18)[31],RX9S(16),RX9T(16),RX9V(18)[31],RX9W(16),RY0P(18)[32], RY0T(18)[32],RY0V(18)[32],RY8H(18)[31],RY8I(18)[31],RY8O(18)[31], RY8P(18)[31],RY8S(16)[30],RY8T(16)[30],RY8U(18)[31],RY8V(18)[31], RY8W(16)[30],RY8Y(18)[31],RY8Z(18)[31],RY9I(18)[31],RY9M(17)[30], RY9P(18)[31],RY9S(16),RY9T(16),RY9V(18)[31],RY9W(16),RZ0P(18)[32], RZ0T(18)[32],RZ0V(18)[32],RZ8H(18)[31],RZ8I(18)[31],RZ8O(18)[31], RZ8P(18)[31],RZ8S(16)[30],RZ8T(16)[30],RZ8U(18)[31],RZ8V(18)[31], RZ8W(16)[30],RZ8Y(18)[31],RZ8Z(18)[31],RZ9I(18)[31],RZ9M(17)[30], RZ9P(18)[31],RZ9S(16),RZ9T(16),RZ9V(18)[31],RZ9W(16),U0P(18)[32], U0T(18)[32],U0V(18)[32],U8H(18)[31],U8I(18)[31],U8O(18)[31],U8P(18)[31], U8S(16)[30],U8T(16)[30],U8U(18)[31],U8V(18)[31],U8W(16)[30],U8Y(18)[31], U8Z(18)[31],U9I(18)[31],U9M(17)[30],U9P(18)[31],U9S(16),U9T(16), U9V(18)[31],U9W(16),UA0P(18)[32],UA0T(18)[32],UA0V(18)[32],UA8H(18)[31], UA8I(18)[31],UA8O(18)[31],UA8P(18)[31],UA8S(16)[30],UA8T(16)[30], UA8U(18)[31],UA8V(18)[31],UA8W(16)[30],UA8Y(18)[31],UA8Z(18)[31], UA9I(18)[31],UA9M(17)[30],UA9P(18)[31],UA9S(16),UA9T(16),UA9V(18)[31], UA9W(16),UB0P(18)[32],UB0T(18)[32],UB0V(18)[32],UB8H(18)[31],UB8I(18)[31], UB8O(18)[31],UB8P(18)[31],UB8S(16)[30],UB8T(16)[30],UB8U(18)[31], UB8V(18)[31],UB8W(16)[30],UB8Y(18)[31],UB8Z(18)[31],UB9I(18)[31], UB9M(17)[30],UB9P(18)[31],UB9S(16),UB9T(16),UB9V(18)[31],UB9W(16), UC0P(18)[32],UC0T(18)[32],UC0V(18)[32],UC8H(18)[31],UC8I(18)[31], UC8O(18)[31],UC8P(18)[31],UC8S(16)[30],UC8T(16)[30],UC8U(18)[31], UC8V(18)[31],UC8W(16)[30],UC8Y(18)[31],UC8Z(18)[31],UC9I(18)[31], UC9M(17)[30],UC9P(18)[31],UC9S(16),UC9T(16),UC9V(18)[31],UC9W(16), UD0P(18)[32],UD0T(18)[32],UD0V(18)[32],UD8H(18)[31],UD8I(18)[31], UD8O(18)[31],UD8P(18)[31],UD8S(16)[30],UD8T(16)[30],UD8U(18)[31], UD8V(18)[31],UD8W(16)[30],UD8Y(18)[31],UD8Z(18)[31],UD9I(18)[31], UD9M(17)[30],UD9P(18)[31],UD9S(16),UD9T(16),UD9V(18)[31],UD9W(16), UE0P(18)[32],UE0T(18)[32],UE0V(18)[32],UE8H(18)[31],UE8I(18)[31], UE8O(18)[31],UE8P(18)[31],UE8S(16)[30],UE8T(16)[30],UE8U(18)[31], UE8V(18)[31],UE8W(16)[30],UE8Y(18)[31],UE8Z(18)[31],UE9I(18)[31], UE9M(17)[30],UE9P(18)[31],UE9S(16),UE9T(16),UE9V(18)[31],UE9W(16), UF0P(18)[32],UF0T(18)[32],UF0V(18)[32],UF8H(18)[31],UF8I(18)[31], UF8O(18)[31],UF8P(18)[31],UF8S(16)[30],UF8T(16)[30],UF8U(18)[31], UF8V(18)[31],UF8W(16)[30],UF8Y(18)[31],UF8Z(18)[31],UF9I(18)[31], UF9M(17)[30],UF9P(18)[31],UF9S(16),UF9T(16),UF9V(18)[31],UF9W(16), UG0P(18)[32],UG0T(18)[32],UG0V(18)[32],UG8H(18)[31],UG8I(18)[31], UG8O(18)[31],UG8P(18)[31],UG8S(16)[30],UG8T(16)[30],UG8U(18)[31], UG8V(18)[31],UG8W(16)[30],UG8Y(18)[31],UG8Z(18)[31],UG9I(18)[31], UG9M(17)[30],UG9P(18)[31],UG9S(16),UG9T(16),UG9V(18)[31],UG9W(16), UH0P(18)[32],UH0T(18)[32],UH0V(18)[32],UH8H(18)[31],UH8I(18)[31], UH8O(18)[31],UH8P(18)[31],UH8S(16)[30],UH8T(16)[30],UH8U(18)[31], UH8V(18)[31],UH8W(16)[30],UH8Y(18)[31],UH8Z(18)[31],UH9I(18)[31], UH9M(17)[30],UH9P(18)[31],UH9S(16),UH9T(16),UH9V(18)[31],UH9W(16), UI0P(18)[32],UI0T(18)[32],UI0V(18)[32],UI8H(18)[31],UI8I(18)[31], UI8O(18)[31],UI8P(18)[31],UI8S(16)[30],UI8T(16)[30],UI8U(18)[31], UI8V(18)[31],UI8W(16)[30],UI8Y(18)[31],UI8Z(18)[31],UI9I(18)[31], UI9M(17)[30],UI9P(18)[31],UI9S(16),UI9T(16),UI9V(18)[31],UI9W(16); Uzbekistan: 17: 30: AS: 41.40: -63.97: -5.0: UK: UJ,UK,UL,UM; Kazakhstan: 17: 30: AS: 48.17: -65.18: -5.0: UN: UN,UO,UP,UQ,UN0D[31],UN0F[31],UN0G[31],UN0J[31],UN0Q[31],UN0V[31], UN1D[31],UN1F[31],UN1G[31],UN1J[31],UN1Q[31],UN1V[31],UN2D[31],UN2F[31], UN2G[31],UN2J[31],UN2Q[31],UN2V[31],UN3D[31],UN3F[31],UN3G[31],UN3J[31], UN3Q[31],UN3V[31],UN4D[31],UN4F[31],UN4G[31],UN4J[31],UN4Q[31],UN4V[31], UN5D[31],UN5F[31],UN5G[31],UN5J[31],UN5Q[31],UN5V[31],UN6D[31],UN6F[31], UN6G[31],UN6J[31],UN6Q[31],UN6V[31],UN7D[31],UN7F[31],UN7G[31],UN7J[31], UN7Q[31],UN7V[31],UN8D[31],UN8F[31],UN8G[31],UN8J[31],UN8Q[31],UN8V[31], UN9D[31],UN9F[31],UN9G[31],UN9J[31],UN9Q[31],UN9V[31],UO0D[31],UO0F[31], UO0G[31],UO0J[31],UO0Q[31],UO0V[31],UO1D[31],UO1F[31],UO1G[31],UO1J[31], UO1Q[31],UO1V[31],UO2D[31],UO2F[31],UO2G[31],UO2J[31],UO2Q[31],UO2V[31], UO3D[31],UO3F[31],UO3G[31],UO3J[31],UO3Q[31],UO3V[31],UO4D[31],UO4F[31], UO4G[31],UO4J[31],UO4Q[31],UO4V[31],UO5D[31],UO5F[31],UO5G[31],UO5J[31], UO5Q[31],UO5V[31],UO6D[31],UO6F[31],UO6G[31],UO6J[31],UO6Q[31],UO6V[31], UO7D[31],UO7F[31],UO7G[31],UO7J[31],UO7Q[31],UO7V[31],UO8D[31],UO8F[31], UO8G[31],UO8J[31],UO8Q[31],UO8V[31],UO9D[31],UO9F[31],UO9G[31],UO9J[31], UO9Q[31],UO9V[31],UP0D[31],UP0F[31],UP0G[31],UP0J[31],UP0Q[31],UP0V[31], UP1D[31],UP1F[31],UP1G[31],UP1J[31],UP1Q[31],UP1V[31],UP2D[31],UP2F[31], UP2G[31],UP2J[31],UP2Q[31],UP2V[31],UP3D[31],UP3F[31],UP3G[31],UP3J[31], UP3Q[31],UP3V[31],UP4D[31],UP4F[31],UP4G[31],UP4J[31],UP4Q[31],UP4V[31], UP5D[31],UP5F[31],UP5G[31],UP5J[31],UP5Q[31],UP5V[31],UP6D[31],UP6F[31], UP6G[31],UP6J[31],UP6Q[31],UP6V[31],UP7D[31],UP7F[31],UP7G[31],UP7J[31], UP7Q[31],UP7V[31],UP8D[31],UP8F[31],UP8G[31],UP8J[31],UP8Q[31],UP8V[31], UP9D[31],UP9F[31],UP9G[31],UP9J[31],UP9Q[31],UP9V[31],UQ0D[31],UQ0F[31], UQ0G[31],UQ0J[31],UQ0Q[31],UQ0V[31],UQ1D[31],UQ1F[31],UQ1G[31],UQ1J[31], UQ1Q[31],UQ1V[31],UQ2D[31],UQ2F[31],UQ2G[31],UQ2J[31],UQ2Q[31],UQ2V[31], UQ3D[31],UQ3F[31],UQ3G[31],UQ3J[31],UQ3Q[31],UQ3V[31],UQ4D[31],UQ4F[31], UQ4G[31],UQ4J[31],UQ4Q[31],UQ4V[31],UQ5D[31],UQ5F[31],UQ5G[31],UQ5J[31], UQ5Q[31],UQ5V[31],UQ6D[31],UQ6F[31],UQ6G[31],UQ6J[31],UQ6Q[31],UQ6V[31], UQ7D[31],UQ7F[31],UQ7G[31],UQ7J[31],UQ7Q[31],UQ7V[31],UQ8D[31],UQ8F[31], UQ8G[31],UQ8J[31],UQ8Q[31],UQ8V[31],UQ9D[31],UQ9F[31],UQ9G[31],UQ9J[31], UQ9Q[31],UQ9V[31]; Ukraine: 16: 29: EU: 50.00: -30.00: -2.0: UR: EM,EN,EO,U5,UR,US,UT,UU,UV,UW,UX,UY,UZ; Antigua & Barbuda: 08: 11: NA: 17.07: 61.80: 4.0: V2: V2; Belize: 07: 11: NA: 16.97: 88.67: 6.0: V3: V3; St. Kitts & Nevis: 08: 11: NA: 17.37: 62.78: 4.0: V4: V4; Namibia: 38: 57: AF: -22.00: -17.00: -1.0: V5: V5; Micronesia: 27: 65: OC: 6.88: -158.20: -10.0: V6: V6; Marshall Islands: 31: 65: OC: 9.08: -167.33: -12.0: V7: V7; Brunei: 28: 54: OC: 4.50: -114.60: -8.0: V8: V8; Canada: 05: 09: NA: 44.35: 78.75: 5.0: VE: CF,CG,CJ,CK,VA,VB,VC,VE,VG,VX,XL,XM,CF2[4],CG2[4],CH1,CH2(2),CI0(2)[4], CI1(1)[2],CI2,CJ2[4],CK2[4],CY1,CY2(2),CZ0(2)[4],CZ1(1)[2],CZ2,VA2[4], VB2[4],VC2[4],VD1,VD2(2),VE2[4],VF0(2)[4],VF1(1)[2],VF2,VG2[4],VO1,VO2(2), VX2[4],VY0(2)[4],VY1(1)[2],VY2,XJ1,XJ2(2),XK0(2)[4],XK1(1)[2],XK2,XL2[4], XM2[4],XN1,XN2(2),XO0(2)[4],XO1(1)[2],XO2,VA2PL(2)[4],VE0MDL(3)[2], VE2AEJ(4)[4],VE2CSI(2)[4],VE2DXY(2)[4],VE2EKA(2)[4],VE2FK[9], VE2GSO(2)[4],VE2III(2)[4],VE2IM(2)[4],VE2TKH(2)[4],VY0PW(4)[3]; Australia: 30: 59: OC: -23.70: -132.33: -10.0: VK: AX,VH,VI,VJ,VK,VL,VM,VN,VZ,AX4[55],VH4[55],VI4[55],VJ4[55],VK4[55], VL4[55],VM4[55],VN4[55],VZ4[55]; Heard Island: 39: 68: AF: -53.08: -73.50: -5.0: VK0H: VK0IR; Macquarie Island: 30: 60: OC: -54.60: -158.88: -10.0: VK0M: AX/VK0TH,VK0TH; Cocos-Keeling: 29: 54: OC: -12.15: -96.82: -6.5: VK9C: AX9C,AX9Y,VH9C,VH9Y,VI9C,VI9Y,VJ9C,VJ9Y,VK9C,VK9Y,VL9C,VL9Y,VM9C,VM9Y, VN9C,VN9Y,VZ9C,VZ9Y,VK9AA; Lord Howe Island: 30: 60: OC: -31.55: -159.08: -10.5: VK9L: AX9L,VH9L,VI9L,VJ9L,VK9L,VL9L,VM9L,VN9L,VZ9L,VK9FLHI,VK9ZLH; Mellish Reef: 30: 56: OC: -17.40: -155.85: -10.0: VK9M: AX9M,VH9M,VI9M,VJ9M,VK9M,VL9M,VM9M,VN9M,VZ9M; Norfolk Island: 32: 60: OC: -29.03: -167.93: -11.5: VK9N: AX9,VH9,VI9,VJ9,VK9,VL9,VM9,VN9,VZ9; Willis Island: 30: 55: OC: -16.22: -150.02: -10.0: VK9W: AX9W,AX9Z,VH9W,VH9Z,VI9W,VI9Z,VJ9W,VJ9Z,VK9W,VK9Z,VL9W,VL9Z,VM9W,VM9Z, VN9W,VN9Z,VZ9W,VZ9Z; Christmas Island: 29: 54: OC: -10.48: -105.63: -7.0: VK9X: AX9X,VH9X,VI9X,VJ9X,VK9X,VL9X,VM9X,VN9X,VZ9X; Anguilla: 08: 11: NA: 18.23: 63.00: 4.0: VP2E: VP2E; Montserrat: 08: 11: NA: 16.75: 62.18: 4.0: VP2M: VP2M; British Virgin Islands: 08: 11: NA: 18.33: 64.75: 4.0: VP2V: VP2V; Turks & Caicos: 08: 11: NA: 21.77: 71.75: 5.0: VP5: VP5,VQ5; Pitcairn Island: 32: 63: OC: -24.35: 128.32: 8.0: VP6: VP6; Ducie Island: 32: 63: OC: -24.70: 124.80: 8.0: VP6/d: VP6DX; Falkland Islands: 13: 16: SA: -51.63: 58.72: 4.0: VP8: VP8; South Georgia: 13: 73: SA: -54.48: 37.08: 2.0: VP8/g: VP8DIF; South Shetland: 13: 73: SA: -62.08: 58.67: 4.0: VP8/h: CE9,XR9,DT8A,EA1CYK/P,HF0POL,I1SR; South Orkney: 13: 73: SA: -60.60: 45.55: 3.0: VP8/o: LU1ZA; South Sandwich: 13: 73: SA: -58.43: 26.33: 2.0: VP8/s: VP8THU; Bermuda: 05: 11: NA: 32.32: 64.73: 4.0: VP9: VP9; Chagos Islands: 39: 41: AF: -7.32: -72.42: -6.0: VQ9: VQ9; Hong Kong: 24: 44: AS: 22.28: -114.18: -8.0: VR: VR; India: 22: 41: AS: 22.50: -77.58: -5.5: VU: 8T,8U,8V,8W,8X,8Y,AT,AU,AV,AW,VT,VU,VV,VW; Andaman/Nicobar Islands: 26: 49: AS: 12.37: -92.78: -5.5: VU4: VU4; Lakshadweep: 22: 41: AS: 11.23: -72.78: -5.5: VU7: VU7; Mexico: 06: 10: NA: 24.00: 102.00: 6.0: XE: 4A,4B,4C,6D,6E,6F,6G,6H,6I,6J,XA,XB,XC,XD,XE,XF,XG,XH,XI; Revillagigedo: 06: 10: NA: 18.77: 110.97: 7.0: XF4: 4A4,4B4,4C4,6D4,6E4,6F4,6G4,6H4,6I4,6J4,XA4,XB4,XC4,XD4,XE4,XF0,XF4,XG4, XH4,XI4; Burkina Faso: 35: 46: AF: 12.00: 2.00: 0.0: XT: XT; Cambodia: 26: 49: AS: 12.93: -105.13: -7.0: XU: XU; Laos: 26: 49: AS: 18.20: -104.55: -7.0: XW: XW; Macau: 24: 44: AS: 22.10: -113.50: -8.0: XX9: XX9; Myanmar: 26: 49: AS: 20.00: -96.37: -6.5: XZ: XY,XZ; Afghanistan: 21: 40: AS: 34.70: -65.80: -4.5: YA: T6,YA; Indonesia: 28: 51: OC: -7.30: -109.88: -7.0: YB: 7A,7B,7C,7D,7E,7F,7G,7H,7I,8A,8B,8C,8D,8E,8F,8G,8H,8I,JZ,PK,PL,PM,PN,PO, YB,YC,YD,YE,YF,YG,YH,YB0[54],YB1[54],YB2[54],YB3[54],YB4[54],YB5[54], YB6[54],YB7[54],YB8[54],YC0[54],YC1[54],YC2[54],YC3[54],YC4[54],YC5[54], YC6[54],YC7[54],YC8[54],YD0[54],YD1[54],YD2[54],YD3[54],YD4[54],YD5[54], YD6[54],YD7[54],YD8[54],YE0[54],YE1[54],YE2[54],YE3[54],YE4[54],YE5[54], YE6[54],YE7[54],YE8[54],YF0[54],YF1[54],YF2[54],YF3[54],YF4[54],YF5[54], YF6[54],YF7[54],YF8[54],YG0[54],YG1[54],YG2[54],YG3[54],YG4[54],YG5[54], YG6[54],YG7[54],YG8[54],YH0[54],YH1[54],YH2[54],YH3[54],YH4[54],YH5[54], YH6[54],YH7[54],YH8[54]; Iraq: 21: 39: AS: 33.92: -42.78: -3.0: YI: HN,YI; Vanuatu: 32: 56: OC: -17.67: -168.38: -11.0: YJ: YJ; Syria: 20: 39: AS: 35.38: -38.20: -2.0: YK: 6C,YK; Latvia: 15: 29: EU: 57.03: -24.65: -2.0: YL: YL; Nicaragua: 07: 11: NA: 12.88: 85.05: 6.0: YN: H6,H7,HT,YN; Romania: 20: 28: EU: 45.78: -24.70: -2.0: YO: YO,YP,YQ,YR; El Salvador: 07: 11: NA: 14.00: 89.00: 6.0: YS: HU,YS; Serbia: 15: 28: EU: 44.00: -21.00: -1.0: YU: 4N,YT,YU; Kosova: 15: 28: EU: 42.67: -21.17: -1.0: *YU8: YU8/HB9BF; Venezuela: 09: 12: SA: 8.00: 66.00: 4.5: YV: 4M,YV,YW,YX,YY; Aves Island: 08: 11: NA: 15.67: 63.60: 4.0: YV0: 4M0,YV0,YW0,YX0,YY0; Zimbabwe: 38: 53: AF: -18.00: -31.00: -2.0: Z2: Z2; Macedonia: 15: 28: EU: 41.60: -21.65: -1.0: Z3: Z3; Albania: 15: 28: EU: 41.00: -20.00: -1.0: ZA: ZA; Gibraltar: 14: 37: EU: 36.15: 5.37: -1.0: ZB: ZB,ZG; UK Sov. Bases on Cyprus: 20: 39: AS: 35.32: -33.57: -2.0: ZC4: ZC4; Saint Helena: 36: 66: AF: -15.97: 5.72: 0.0: ZD7: ZD7; Ascension Island: 36: 66: AF: -7.93: 14.37: 0.0: ZD8: ZD8; Tristan da Cunha: 38: 66: AF: -37.13: 12.30: 0.0: ZD9: ZD9; Cayman Islands: 08: 11: NA: 19.32: 81.22: 5.0: ZF: ZF; Niue: 32: 62: OC: -19.03: 169.85: 11.0: ZK2: ZK2; Tokelau: 31: 62: OC: -9.40: 171.20: 10.0: ZK3: ZK3; New Zealand: 32: 60: OC: -41.83: -173.27: -12.0: ZL: ZK,ZL,ZM,ZL50GH; Chatham Islands: 32: 60: OC: -43.85: 176.48: -12.75: ZL7: ZL7,ZM7; Kermadec Islands: 32: 60: OC: -29.25: 177.92: -12.0: ZL8: ZL8,ZM8; Auckland & Campbell: 32: 60: OC: -50.73: -166.10: -12.0: ZL9: ZL9,ZM9; Paraguay: 11: 14: SA: -25.27: 57.67: 4.0: ZP: ZP; South Africa: 38: 57: AF: -29.07: -22.63: -2.0: ZS: H5,S4,S8,V9,ZR,ZS,ZT,ZU; Marion Island: 38: 57: AF: -46.88: -37.72: -3.0: ZS8: ZR8,ZS8,ZT8,ZU8;tlf_1.1.5/share/paccmults0000664000175000017500000000005112072353226013555 0ustar jtnjtnDR FL FR GD GR LB NB NH OV UT ZH ZL -end-tlf_1.1.5/share/ea_sections0000664000175000017500000000022012072353226014054 0ustar jtnjtnA AB AL AV B BA BI BU C CA CC CE CO CR CS CU GC GI GR GU H HU IB J L LE LO LU M MA ML MU NA O OU P PO S SA SE SG SO SS T TE TF TO V VA VI Z ZA tlf_1.1.5/share/Makefile.in0000664000175000017500000002665412105506436013725 0ustar jtnjtn# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = share DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(tlfdir)" DATA = $(tlf_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GREP = @GREP@ HAMLIB_CFLAGS = @HAMLIB_CFLAGS@ HAMLIB_LIBS = @HAMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ TLF_FILES = callmaster cty.dat logcfg.dat arrl10m_mults arrldx_mults \ arrlsections ea_sections paccmults spdxmults ssamults tlfdir = $(pkgdatadir) tlf_DATA = $(TLF_FILES) EXTRA_DIST = $(TLF_FILES) CLEANFILES = *~ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu share/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu share/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-tlfDATA: $(tlf_DATA) @$(NORMAL_INSTALL) test -z "$(tlfdir)" || $(MKDIR_P) "$(DESTDIR)$(tlfdir)" @list='$(tlf_DATA)'; test -n "$(tlfdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(tlfdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(tlfdir)" || exit $$?; \ done uninstall-tlfDATA: @$(NORMAL_UNINSTALL) @list='$(tlf_DATA)'; test -n "$(tlfdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(tlfdir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(tlfdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-tlfDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-tlfDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip install-tlfDATA installcheck installcheck-am \ installdirs maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ uninstall-am uninstall-tlfDATA # 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: tlf_1.1.5/share/arrlsections0000664000175000017500000000043412072353226014277 0ustar jtnjtnAB AK AL AR AZ BC CO CT DE EB EMA ENY EPA EWA GA IA ID IK IL IN KS KY LA LAX MAR MB MDC ME MI MN MO MS MT NC ND NE NFL NH NL NLI NM NNJ NNY NTX NV NWT OH OK ON OR ORG PAC PR QC RI SB SC SCV SD SDG SF SFL SJV SK SNJ SNY STX SV TN UT VA VE8 VI VT WCF WI WMA WNY WPA WTX WV WWA WY -end- tlf_1.1.5/share/callmaster0000664000175000017500000075374412072353226013741 0ustar jtnjtnAA0A AA0AW AA0BQ AA0CL AA0CX AA0DW AA0FO AA0K AA0MZ AA0N AA0NK AA0QZ AA0RS AA0W AA0YY AA1AR AA1BU AA1CA AA1JD AA1JM AA1K AA1KS AA1M AA1ME AA1O AA1ON AA1PL AA1QD AA1SB AA1SU AA1TR AA1TT AA1V AA1VA AA1VT AA1VX AA1WA AA1XV AA1YD AA1ZT AA2AD AA2DC AA2DR AA2DS AA2F AA2GS AA2IZ AA2JZ AA2KD AA2L AA2MF AA2MX AA2NA AA2NA/P AA2OI AA2UP AA2VK AA2WC AA2XB AA2YV AA2ZW AA3B AA3CS AA3DF AA3DW AA3E AA3I AA3JK AA3K AA3LX AA3RE AA3S AA3SJ AA3SL AA3TH AA3TL AA3VA AA4A AA4AK AA4AK/1 AA4CF AA4D AA4EA AA4FA AA4FL AA4FU AA4FX AA4GT AA4H AA4HV AA4II AA4KD AA4LR AA4MD AA4MJ AA4MM AA4N AA4NC AA4NU AA4PL AA4Q AA4QU AA4R AA4RP AA4S AA4SC AA4SD AA4U AA4UC AA4V AA4VV AA4V/VP9 AA4W AA4WO AA4XA AA4XS AA4XX AA4YL AA4ZU AA4ZZ AA5AM AA5AT AA5AU AA5B AA5BE AA5BT AA5C AA5CK AA5CO AA5EY AA5CH AA5JG AA5L AA5LA AA5N AA5R/C6A AA5SH AA5TB AA5VU AA5VZ AA5X AA6AD AA6CJ AA6DP AA6DW AA6DX AA6DY AA6EE AA6EV AA6E/1 AA6G AA6GZ AA6IO AA6JJ AA6K AA6PW AA6RR AA6VB AA6X AA6XV AA6XX AA6YQ AA6YX AA7A AA7AX AA7CP AA7CQ AA7DJ AA7DK AA7FG AA7FK AA7GS AA7IH AA7J AA7JV AA7ML AA7MN AA7MT AA7PJ AA7RV AA7UI AA7X AA8BV AA8DX AA8EB AA8EN AA8HH AA8HO AA8CH AA8IA AA8IN AA8JL AA8L AA8LL AA8M AA8NT AA8OY AA8R AA8TK AA8UL AA8YN AA9CN AA9D AA9DA AA9DY AA9F AA9GG AA9GR AA9IK AA9IX AA9KH AA9L AA9LC AA9NF AA9RN AA9RR AA9RT AA9SJ AA9SR AA9UF AA9VI AA9WJ AA9WS AA9YP AA9ZZ AB0CD AB0DI AB0JM AB0LR AB0OX AB0QN AB0RE AB0RX AB0S AB0TO AB0TX AB0UK AB0VK AB0X AB0YM AB0YW AB0Z AB0ZO AB1BR AB1BW AB1BX AB1CW AB1DD AB1EP AB1FY AB1HD AB1HL AB1HO AB1HZ AB1J AB1JB AB1JM AB1KE AB1KW AB1LG AB1NJ AB1U AB2DE AB2E AB2G AB2IO AB2KX AB2NI AB2RC AB2SR AB2TC AB2TS AB2UV AB2VI AB2WW AB2XW AB2YS AB2ZI AB2ZL AB2ZT AB2ZY AB3AH AB3AI AB3AP AB3CX AB3EN AB3FH AB3FX AB3GB AB3GY AB3HP AB3IC AB3S AB4AR AB4BJ AB4DF AB4G AB4GG AB4H AB4I AB4IQ AB4JK AB4LE AB4Q AB4RJ AB4SA AB4SF AB4SK AB4U AB4VF AB4VV AB4ZT AB5C AB5CC AB5DK AB5EU AB5GG AB5I AB5JN AB5JR AB5K AB5MM AB5NE AB5NX AB5RM AB5RT AB5TY AB5WF AB5WS AB5X AB5XP AB5XZ AB5YI AB5ZA AB5ZA/7 AB6CF AB6EZ AB6L AB6QM AB6QR AB6WM AB6Z AB7CB AB7E AB7FX AB7GP AB7LT AB7Q AB7R AB7RW AB7TJ AB8AL AB8BT AB8CI AB8CL AB8DF AB8EU AB8FJ AB8IT AB8JR AB8K AB8OJ AB8RL AB8S AB8SA AB8SG AB8TO AB8UL AB8WI AB8XE AB8XG AB8XX AB8YO AB8YY AB8YZ AB8ZX AB9AX AB9CA AB9DU AB9H AB9HE AB9HH AB9KZ AB9LA AB9M AB9ML AB9MP AB9NH AB9OS AB9QH AB9QT AB9QX AB9RC AB9SJ AB9SO AB9TA AB9TE AB9TU AB9V AB9VN AC0A AC0AX AC0B AC0BI AC0BR AC0BV AC0C AC0DQ AC0DS AC0E AC0GI AC0GJ AC0GQ AC0IU AC0JX AC0KK AC0LL AC0M AC0MW AC0NB AC0OJ AC0P AC0PD AC0PJ AC0PR AC0QG AC0W AC0X AC1AA AC1J AC1L AC1O AC2AA AC2AC AC2CP AC2FM AC2K AC2N AC2O AC2T AC3C AC3D AC4AH AC4BV AC4CA AC4CA/5 AC4IK AC4M AC4MO AC4PQ AC4PY AC4S AC4TO AC4TT AC4WC AC4YD AC4ZH AC5BX AC5K AC5N AC5O AC5P AC5SW AC5ZG AC5ZS AC6DD AC6DX AC6E AC6EA AC6FU AC6JA AC6LT AC6MV AC6N AC6NN AC6SL AC6T AC6VN AC6YY AC7A AC7AF AC7AP AC7CJ AC7GP AC7JM AC7JN AC7JW AC7JY AC7LK AC7MA AC7NK AC7NO AC7P AC7PN AC7T AC7VA AC7ZG AC8AC AC8AG AC8AP AC8AZ AC8BP AC8CY AC8E AC8EA AC8EI AC8G AC8JB AC8W AC8WV AC8Y AC8ZX AC9BP AC9S AC9X AD0H AD0RB AD1B AD1C AD1DX AD1L AD1N AD2AM AD2H AD2L AD2P AD2TM AD3J AD3PA AD4AA AD4C AD4CJ AD4EB AD4ES AD4G AD4IE AD4J AD4L AD4TJ AD4YQ AD4Z AD5A AD5C AD5CQ AD5EN AD5HR AD5HV AD5IT AD5LU AD5MD AD5MN AD5OW AD5Q AD5QB AD5UQ AD5VC AD5VJ AD5WB AD5WI AD5XD AD5XM AD5XQ AD5YJ AD5YU AD5ZA AD6BI AD6C AD6DK AD6E AD6FR AD6GI AD6HF AD6HV AD6KA AD6KH AD6KT AD6MT AD6OI AD6P AD6PB AD6RH AD6WL AD6Z AD6ZJ AD7AF AD7AJ AD7AV AD7BN AD7GL AD7HE AD7HI AD7J AD7JI AD7JX AD7KG AD7KI AD7KS AD7L AD7MD AD7MQ AD7OG AD7OV AD7RO AD7SF AD7SI AD7T AD7UP AD7UZ AD7VH AD7XG AD7XV AD7XZ AD7YT AD7ZZ AD8B AD8C AD8D AD8J AD8L AD8P AD8W AD9H AD9P AD9V AE0C AE0G AE1N AE1P AE1T AE2AA AE2J AE2JL AE2NG AE2T AE2X AE3E AE3J AE3T AE4CJ AE4CW AE4EC AE4NZ AE4O AE4PC AE4RV AE4T AE4TE AE4Y AE5AA AE5BR AE5CX AE5FT AE5GT AE5I AE5JG AE5JK AE5KM AE5KT AE5LO AE5LQ AE5MM AE5MT AE5OV AE5P AE5PW AE5RE AE5T AE5TD AE5X AE6C AE6GC AE6GE AE6K AE6OU AE6PP AE6QH AE6RF AE6RG AE6RR AE6RS AE6SX AE6XC AE6Y AE6YB AE6ZB AE6ZF AE6ZV AE7AB AE7AP AE7AW AE7CC AE7CJ AE7EE AE7EG AE7H AE7K AE7RW AE8M AE9C AE9F AE9H AE9K AE9Q AF0V AF1E AF1G AF1T AF2C AF2D AF2K AF2N AF2S AF3D AF3I AF3K AF3L AF3RH AF4AI AF4IB AF4JF AF4KL AF4MO AF4OD AF4OX AF4PP AF4RK AF4Z AF5K AF5M AF5P AF5Q AF5T AF5U AF5Z AF6AV AF6BJ AF6DD AF6EV AF6F AF6GL AF6JC AF6JP AF6JX AF6ME AF6MG AF6MO AF6MS AF6NE AF6NI AF6P AF6PA AF6PK AF6SA AF6SN AF6SY AF6T AF6TC AF6TS AF6TX AF6UZ AF6VQ AF6WF AF6WZ AF7DX AF7O AF7Z AF8A AF8C AF8RH AF8T AF8V AF9H AF9J AF9T AG0A AG0I AG0J AG0L AG0M AG1C AG1H AG1LE AG2M AG2T AG3G AG3L AG3R AG3V AG4CZ AG4GB AG4JO AG4K AG4M AG4NO AG4P AG4PJ AG4PZ AG4QX AG4TO AG4V AG4VS AG4W AG4WL AG4WY AG4XL AG4XR AG5T AG5W AG5Z AG6MB AG7N AG7T AG7U AG8U AG9A AG9C AG9S AH0/AH2Y AH0BT AH0S AH2DT AH2L AH2R AH2Y AH6EZ/W9 AH6FC AH6JD AH6N AH6NF AH6NM AH6RE AH6RR AH6V AH6WX AH6XX AH6ZZ AH7A AH7C AH7G AH7ZA AH8DX/W7 AI0L AI0M AI0O AI0Q AI1O AI1P AI1P/0 AI1V AI2C AI2I AI2IA AI2N AI2S AI2T AI3G AI3Q AI4AW AI4BJ AI4CJ AI4CM AI4CO AI4DB AI4FR AI4G AI4GP AI4GR AI4HH AI4IC AI4IO AI4JT AI4KM AI4LV AI4ME AI4MI AI4NW AI4OF AI4OH AI4OT AI4PF AI4PY AI4QQ AI4QR AI4QU AI4QY AI4RA AI4RF AI4RJ AI4SV AI4TE AI4UN AI4VE AI4W AI4WU AI4WW AI4YO AI5DX AI5G AI5M AI5P AI6L AI6O AI6V AI6YL AI6Z AI7H AI8P AI9I AI9K AI9L AI9P AI9T AJ0W AJ1E AJ1G AJ1I AJ1M AJ2T AJ3G AJ3M AJ3T AJ4A AJ4BT AJ4CD AJ4CG AJ4CU AJ4DX AJ4F AJ4FM AJ4FV AJ4GC AJ4GL AJ4HO AJ4HZ AJ4IM AJ4JD AJ4JQ AJ4JZ AJ4KF AJ4LM AJ4LU AJ4MW AJ4NM AJ4OA AJ4OV AJ4RK AJ4RW AJ4SQ AJ5C AJ5DW AJ5H AJ6T AJ6V AJ7EF AJ8B AJ8MH AJ8P AJ9C AJ9K AK0A AK0F AK0M AK0MR AK1N AK1Q AK1W AK2A AK2B AK2D AK2P AK2S AK3Q AK3V AK3W AK4DM AK4DW AK4I AK4IK AK4JH AK4K AK4MT AK4NC AK4RS AK4Z AK5AA AK5DX AK5V AK5X AK6DV AK6M AK6R AK6X AK7A AK7AT AK7AZ AK7DB AK7FF AK7G AK7G/6 AK7H AK7M AK7O AK7S AK7Y AK8A AK8D AK8E AK9F AK9I AK9L AK9N AK9N/7 AK9W AK9Y AL1G AL2F AL2V AL3K AL7B AL7BA/W8 AL7DX AL7FD AL7GA AL7HW/W4 AL7L AL7PQ AL7QQ AL7R AL7TC AL9A AM1A AM1C AM1G AM1Q AM1S AM1T AM1W AM2T AM3A AM3CS AM3EGB AM3M AM3SSB AM5A AM5B AM5BM AM5M AM5Q AM5SP AM7C AM7M AM7W AN1A AN1C AN1K AN1R AN2A AN2K AN3N AN4A AN5C AN5E AN5N AN5P AN5TN AN5W AN7LM AN8A AN8R AN8X AO1B AO1ET AO1J AO1K AO1L AO1T AO1Y AO2A AO2KY AO2R AO2V AO2W AO3A AO3DE AO3K AO3T AO4C AO4Y AO5A AO5B AO5GVZ AO5L AO5M AO5R AO5SP AO5T AO5V AO5W AO7A AO7AAW AO7H AO7O AO7T AO8A AO8HQ AO8T AT1HQ AU5JCB AY0DX AY4D AY5F AY7X AY8A AY9F A25HQ A25NW A31A A31KK A35A A35KL A35RK/P A41MX A41OO A45WG A45XR A47RS A61AB A61BK A61BM A61C A61KM A61M A61NA A61OO A62A A62ER A65BB A65BD A65BM A65BP A65CA A65DLH A7/M0FGA A71A A71BU A71BX A71CT A71CV A71EM A71FJ A73A A92GE A92GR BA1AN BA1GN BA1RB BA1SN BA2IA BA3AX BA4ALC BA4DL BA4CH BA4II BA4KP BA4QO BA4RC BA4RF BA4SD BA4SI BA4T BA4VE BA4WI BA4WW BA5AG BA5AL BA5AN BA5DX BA5HAM BA5RR BA6IT BA6IV BA6QD BA6QH BA7CK BA7IA BA7IN BA7IO BA7MG BA7MY BA8AG BA8BA BD1AQH BD1BYV BD1CAL BD1DQD BD1FBV BD1HW BD1ISI BD1RCR BD1TCC BD1WC BD2AO BD2BT BD2OB/7 BD2RJ BD2SH/7 BD2VWW BD3EO/1 BD3PCH BD4AGK BD4AHD BD4CB BD4CD BD4CZX BD4DVK BD4EXL BD4HF BD4HZ BD4IBW/4 BD4JUU BD4JZY BD4KUU BD4KYA BD4LGF BD4QH BD4SP BD4SQ BD4SS BD4SVB BD4SX BD4TD BD4TR BD4TU BD4WZH BD5BAJ BD5CFB BD5CFY BD5HST BD5HUI BD5WW BD6IQD BD6IVX BD6JJX BD6QDR BD6QMY BD7IBN BD7IN BD7IXG BD7JSQ BD7KBH BD7KQT BD7LDM BD7MSN BD7MVZ BD7NL BD7NWF BD7RDC BD8AIB BD8ATI BD9AFM BG1JR BG1QEX BG1TPD BG2TXV BG3MOU BG4AHD BG4AHF BG4DVK BG4ENK BG4EPV BG4MCG BG4MR BG4REA BG4TWS BG5FFK BG5HST BG6AHU BG6JEQ BG7BAH BG7IBS BG8IK BG9TX BH1IIA BH1IIJ BH4SFE BH4TMX BH7LMD BT4EXPO BT4NG BU2AC BU2AE BU2AI BU2AU BV0HQ BV0L BV1EK BV100ROC BV2A BV3FG BV4VQ BV4VR BV4VT BV7FC BW/DL3OCH BW2/JP1RIW BW2/KU1CW BW3/DJ3KR BX0WPX BX1AAB BX2ABD BX3AA BX4AD BX4AF BX4AQ BX5AA BX6AP BX8AAD BY1CW BY1DX BY1OK BY1QH BY1RX BY3CQ BY3MM BY4DX BY4HAM BY4IO BY4QA BY4SA BY5CD BY5HB BY6IC BY7KG BY8AC BY8DX B1C B1HQ B1P B1Z B3C B3HQ B4B B4HQ B4TB B4VE B5A B5TT B7HQ B7M B7P CA3KHZ CA3OEV CA5UBR CA6BMF CD1R CE0Y/SM6CUK CE1A CE1D CE1KR CE1/K7CA CE1TT CE1U CE1UGE CE1W CE1Z CE2HZ CE2/K0MD CE2LS CE2P CE2WZ CE3AA CE3BFZ CE3DNP CE3FZ CE3G CE3HQ CE3NR CE3PG CE3RR CE3W CE4B CE4CT CE4ETZ CE4SES CE4UJU CE4WW CE5JZO CE6SAX CE6TBN CE6VMO CE7/F6BFH/MM CK2AWR CK2DWA CK3AT CK3CUI CK3CW CK6BF CM2IR CM2ORO CM2QM CM2RVA CM3GW CM3RPN CM5FZ CM6RCR CM6YAC CM8CAD CM8GJ CN2A CN2BC CN2M CN2R CN2YF CN3A CN3R CN4P CN8KD CN8LI CN8SG CN8VO CN8WW CN8YE CN8YR CN8YZ CN8ZG CO2DT CO2EL CO2FU CO2GL CO2IZ CO2JD CO2JW CO2KY CO2NO CO2OT CO2VE CO2WF CO2WL CO3CJ CO3JN CO3LC CO3TJ CO4LS CO6CAC CO6CBF CO6LC CO6LP CO6RD CO6WD CO6WYR CO6YAC CO6YI CO7EH CO7PH CO7RR CO8AW CO8CML CO8CY CO8LY CO8TW CO8ZZ CP1FF CP1WG CP5RC CP6AA CP6XE CQ3L CQ3T CQ3Z CQ8L CQ8X CQ9T CR1M CR1Z CR2A CR2T CR2X CR3A CR3E CR3L CR3T CR5A CR5CQK CR5HQ CR5L CR5M CR5R CR5SBK CR5T CR5X CR6A CR6K CR6K/P CR6P CR6T CS1CRE CS2C CS2K CS2P CS2T CS5RBL CS7CQK CS9A CS9L CT1AGF CT1AHU CT1ANO CT1AOZ CT1BH CT1BNW CT1BOH CT1BOL CT1BOP CT1BWW CT1BXE CT1BXT CT1BYK CT1BZG CT1CDP CT1CJJ CT1CQK CT1DIN CT1DIZ CT1DJE CT1DOV CT1DVV CT1DRB CT1DWT CT1DZY CT1EAT CT1EBM CT1EEK CT1EGF CT1EGW CT1EHK CT1ELF CT1ELP CT1ELZ CT1END/P CT1ENQ CT1ENV CT1EOD CT1EPJ CT1ESG CT1ESV CT1ETW CT1ETX CT1EWA CT1FHL CT1FJK CT1FJL CT1FMX CT1FOQ CT1FUH CT1GC CT1GFK CT1GPQ CT1HBV CT1HMN CT1HZU CT1ILT CT1ISZ CT1IUA CT1IZW CT1JEY CT1JGA CT1JLZ CT1JRZ CT1JSP CT1YTS CT2CRP CT2FPE CT2GDW CT2GQN CT2GSN CT2HKN CT2HRB CT2IOV CT2IPG CT2IRY CT2ITR CT2IVH CT2JBG CT2JMR CT2JTR CT2JVP CT2JYX CT2KAL CT2KCG CT3AS CT3BD CT3CD CT3DL CT3DZ CT3EE CT3EN CT3FJ CT3FN CT3FQ CT3FT CT3HF CT3IA CT3KN CT3KU CT3KY CT3NT CT4DK CT4HA CT4NH CT4QB CT6P CT7A CT7ACG CT7/CU8AS/P CT7/DJ5YQ CT7E CT7/LZ3ND CT8K CT9/DK7TM CT9/DL1SBF CT9/DL3KWF CT9/DL3KWR CT9/DL3ZH CT9/G0TSM CT9K CT9L CT9M CU2A CU2AF CU2AP CU2CR CU2DX CU2JT CU2KG CU2X CU3EJ CU3HQ CU3/K4BWG CU3TRP CU5CQ CU6AY CU7AJ CU8A CU8AS CV5D CV5K CW3D CW5W CW7T CX1AA CX1AV CX1CCC CX1JJ CX1UI CX2ABP CX2AL CX2AQ CX2CC CX2DDP CX2DK CX2FT CX2TG CX3AL CX4AAJ CX4AD CX4BW CX4CR CX4DX CX5AZ CX5BW CX5TR CX6VM CX7TT CX9AU CX9BP CY2ZT/2 C31CA C31CT C37N C37NL C37URE C4DX C4I C4M C4N C4SV C4W C4Z C6AGN C6AKQ C6AKX C6ALT C6AMM C6AMS C6ANM C6APG C6AQQ C6ARR C6ASB C6ATA C6AUM C6AWL C91LW C91TX C91WW C98LW DA0A DA0CA DA0CCC DA0CW DA0HEL DA0HQ DA0I DA0R DA0X DA0YFD DA1MC DA2A DA2C DA2U DA2UN DA3A DA3T DA3X DA6TEC DA9L DB0HY DB1BAN DB1CD DB1NR DB1RLE DB1SMW DB1VQ DB1ZO DB2B DB2BJT DB2CTM DB2HV DB2KT DB2NQ DB2OJ DB3BE DB3BX DB3FS DB3KE DB3LO DB4BJ DB4BU DB4NNW DB4VI DB4VO DB5FW DB5PJ DB5SD DB6SI DB6VP DB6ZU DB7BU DB7HH DB7MA DB7QJ DB7TF DB7UQ DB8NI DB8VB DB9EV DB9EX DB9UH DC0GO DC0KK DC0NA DC0UH DC0VD DC1EX DC1HPS DC1HR DC1JAG DC1NSK DC1RJJ DC1RS DC1SK DC1SV DC1XM DC1YB DC2CB DC2CT DC2CW DC2IP DC2KN DC2OD DC2VE DC2YY DC3FR DC3HB DC3RJ DC3SW DC3TS DC3ZB DC4A DC4DD DC5IMM DC5JQ DC6A DC6CX DC6CZ DC6KW DC6MY DC6NY DC6OAF DC6RN DC7CCC DC7KM DC7NF DC7OH DC8QT DC8RU DC8SG DC8TS DC8WPA DC9MA DC9PI DC9TH DC9ZB DC9ZP DD0ARN DD0D DD0DRK DD0VD DD0VR DD0ZL DD0ZN DD1DZ DD1IM DD1JN DD1LD DD1LI DD1MAT DD1OP DD1RB DD1UDW DD1UN DD1YGB DD2D DD2FJ DD2JA DD2ML DD2NU DD3D DD3DZ DD3NJ DD3QD DD3SAT DD3WW DD4B DD4BY DD4DA DD4DJ DD5A DD5AJ DD5FZ DD5JK DD5KG DD5M DD5T DD5XL DD6PS DD7GK DD7VA DD7ZT DD8JJ DD8SM DD8VX DD9DAG DD9EN DD9HK DD9LW DD9NT DD9PS DD9WG DF0AS DF0AW DF0BAU DF0BFW DF0BV DF0CG DF0CI DF0DA DF0DBP DF0DG DF0DJ DF0DOX DF0DS DF0DX DF0FFH DF0HO DF0HQ DF0II DF0II/P DF0IT DF0M DF0PT DF0SAX DF0SL DF0SQ DF0SX DF0TX DF0WLG DF1AG DF1AL DF1ASG DF1BN DF1DT DF1DX DF1HE DF1HF DF1IAQ DF1IC DF1JM DF1KBN DF1KSP DF1LON DF1MA DF1MDX DF1MM DF1NP DF1OE DF1OLS DF1OM DF1PH DF1PU DF1PY DF1QQ DF1QR DF1SD DF1SZ DF1TJ DF1VB DF1VU DF1XC DF2AJ DF2AP DF2BO DF2BR DF2CK DF2CQ DF2EY DF2FM DF2FU DF2GH DF2GW DF2HL DF2CH DF2IAX DF2IY DF2KD DF2KK DF2KU DF2LH DF2MC DF2MG DF2MM DF2NJ DF2NS DF2NU DF2NV DF2OK DF2OU DF2PH DF2PI DF2PN DF2PY DF2QC DF2QZ DF2RG DF2TG DF2TT DF2UA DF2UD DF2UQ DF2UU DF2WY DF3AX DF3CB DF3DK DF3EH DF3GE DF3GY DF3HD DF3IS DF3IU DF3JM DF3JO DF3KF DF3KT DF3KV DF3MC DF3OL DF3PN DF3QG DF3SM DF3SS DF3TE DF3XZ DF3ZE DF4BV DF4EU DF4FD DF4FQ DF4IE DF4KC DF4PA DF4PD DF4TD DF4TS DF4UM DF4WC DF4WG DF4XF DF4ZK DF4ZL DF4ZW DF4ZY DF5A DF5AN DF5AU DF5BM DF5BX DF5FF DF5FL DF5HG DF5HOA DF5KT DF5LR DF5LW DF5PK DF5PP DF5RF DF5SF DF5SR DF5UL DF5WBA DF5WN DF5WW DF5YA DF5ZV DF6AD DF6DBF DF6EH DF6EX DF6FK DF6FR DF6IC DF6JC DF6JF DF6LQ DF6MU DF6PB DF6PW DF6QB DF6QC DF6QN DF6QP DF6QV DF6RI DF6RK DF6TC DF6VL DF6WE DF6WM DF6WR DF6YC DF6ZY DF7AA DF7BL DF7DF DF7EF DF7EM DF7FC DF7GB DF7GG DF7IR DF7IS DF7JC DF7JU DF7LA DF7NR DF7OG DF7OM DF7PW DF7PX DF7SF DF7TH DF7TT DF7TU DF7TW DF7TY DF7WT DF7XH DF7ZM DF7ZS DF8AA DF8AE DF8BB DF8CS DF8DHG DF8DT DF8DU DF8FT DF8HS DF8JB DF8JE DF8JK DF8KN DF8QB DF8ST DF8TI DF8TM DF8TY DF8UO DF8WA DF8XC DF8ZH DF9DD DF9DM DF9EY DF9FR DF9FS DF9FT DF9GH DF9GR DF9KF DF9KQ DF9LJ DF9OB DF9OO DF9QT DF9RD DF9SH DF9TF DF9TS DF9VH DF9VJ DF9WB DF9WP DF9XV DF9YC DF9YY DF9ZP DF9ZW DG0AAE DG0AM DG0CC DG0CG DG0DG DG0DRF DG0DZ DG0EK DG0GCS DG0KS DG0KT DG0LHI DG0OBU DG0OJO DG0OM DG0YS DG1ATN DG1BQC DG1CMZ DG1DHW DG1EA DG1FKA DG1FSK DG1GJH DG1HUD DG1IU DG1LS DG1MDQ DG1MHC DG1NI DG1NOE DG1NPM DG1PU DG1RPU DG1VL DG1YBN DG1YFF DG2BHB DG2BWG DG2EBW DG2GAW DG2JA DG2JT DG2KO DG2NMF DG2NMH DG2RSF DG2SEW DG2SRL DG2TOM DG2UA DG2US DG2YIR DG3DAT DG3DBO DG3EK DG3FAW DG3FK DG3GAQ DG3LAL DG3LCH DG3LSM/P DG3MDE DG3NCZ DG3NEC DG3OBK DG3RCE DG3SBJ DG3YCC DG4FCN DG4FDQ DG4KAD DG4MR DG4NAT DG4NEC DG4R DG4YGW DG5AA DG5AAP DG5BKL DG5BKM DG5DBT DG5EKE DG5FFF DG5HFS DG5KX DG5LAC DG5MEX DG5MLA DG5MMQ DG5MMW DG5OBB DG5PY DG5SBK DG5YIS DG6CA DG6CA/P DG6DAF DG6MIB DG6NBW DG6OAG DG6PU DG6PW DG6PY/P DG6SFU DG7DBN DG7DBR DG7FF DG7JB DG7JG DG7KR DG7LAE DG7MAQ DG7OBV DG7RO DG7UAC DG7XO DG8AM DG8DBW DG8DP DG8EV DG8FAY DG8FBV DG8FI DG8KAJ DG8MH DG8NCY DG8NFB DG8NGC DG8OP DG8RAN DG8VE DG8YFM DG9AK DG9BBZ DG9BHU DG9KB DG9MA DG9MDM DG9MEH DG9MEX DG9NAO DG9SEH DG9SQ DG9VH DG9YCA DH0DX DH0GDS DH0GHU DH0GSU DH0JAE DH0KAA DH0MWH DH0PAZ DH1AC DH1GD DH1JG DH1NAS DH1NJS DH1OAD DH1OK DH1PAL DH1PS DH1TS DH1TST DH1UQ DH1UZ DH1YAE DH2DAM DH2DAS DH2FW DH2KS DH2MA DH2MS DH2PC DH2PG DH2PL DH2URF DH2WQ DH2YAZ DH3FAN DH3FAW DH3FEN DH3FR DH3MD DH3MG DH3MIT DH3RB DH3RM DH3SW DH3UN DH3YC DH4BM DH4FAW DH4GK DH4JU DH4PAA DH4PSG DH4SG DH5AO DH5FA DH5HS DH5JB DH5JG DH5MK DH5MM DH5NT DH5PK DH6AB DH6AN DH6BH DH6DAO DH6FBP DH6JL DH6KS DH6LAS DH6UFB DH7ACI DH7KU DH7LF DH7PR DH7RD DH7SA DH8ACF DH8BAT DH8BQA DH8IJ DH8KV DH8MS DH8VV DH8WE DH9FAV DH9FAW DH9GCD DH9JK DH9NBU DH9SB DJ0A DJ0ACA DJ0ACY DJ0AH DJ0BE DJ0CC DJ0DO DJ0DX DJ0FX DJ0GD DJ0IF DJ0JE DJ0JG DJ0MCZ DJ0MDR DJ0MCH DJ0MY DJ0QN DJ0QS DJ0RU DJ0SP DJ0TP DJ0VZ DJ0YI DJ1AA DJ1AIB DJ1BC DJ1BV DJ1BWH DJ1CT DJ1CW DJ1EH DJ1FZ DJ1HF DJ1KJ DJ1MD DJ1MH DJ1MM DJ1ND DJ1OJ DJ1PE DJ1PQ DJ1QL DJ1RK DJ1RKS DJ1SD DJ1TO DJ1TU DJ1TW DJ1VT DJ1WJ DJ1XT DJ1YF DJ1YFK DJ1YJ DJ1ZH DJ1ZU DJ2AX DJ2BC DJ2BW DJ2C DJ2CW DJ2FR DJ2GM DJ2GMS DJ2HD DJ2HL DJ2IA DJ2IE DJ2JI DJ2KUA DJ2ML DJ2MM DJ2MX DJ2NR DJ2PJ DJ2PR DJ2QV DJ2RG DJ2SL DJ2ST DJ2SX DJ2TH DJ2TI DJ2UP DJ2VO DJ2XC DJ2XO DJ2YA DJ2YE DJ3AA DJ3AK DJ3AN DJ3DQ DJ3EF DJ3EZ DJ3FK DJ3GE DJ3GG DJ3HJ DJ3HW DJ3IW DJ3JB DJ3JD DJ3KJ DJ3KR DJ3LE DJ3NK DJ3OB DJ3OS DJ3PP DJ3RA DJ3SH DJ3ST DJ3TK DJ3TU DJ3VF DJ3WE DJ3XA DJ3XD DJ3XK DJ3ZF DJ4AK DJ4AX DJ4BG DJ4DN DJ4DY DJ4EN DJ4EY DJ4FZ DJ4GX DJ4IC DJ4IM DJ4JF DJ4KW DJ4LK DJ4MH DJ4MJ DJ4MM DJ4MO DJ4MZ DJ4OQ DJ4PI DJ4PK DJ4PT DJ4QG DJ4QO DJ4SN DJ4SO DJ4UR DJ4VP DJ4WJ DJ4WM DJ4WS DJ4WT DJ4XD DJ4XR DJ4YA DJ5AA DJ5AN DJ5AV DJ5AZ DJ5BT DJ5BV DJ5CL DJ5DC DJ5DN DJ5DT DJ5EU DJ5FZ DJ5GK DJ5HD DJ5IR DJ5IW DJ5JH DJ5JK DJ5KB DJ5KW DJ5KX DJ5KZ DJ5LY DJ5MF DJ5MN DJ5MS DJ5MW DJ5MY DJ5OW DJ5PZ DJ5QE DJ5QK DJ5QV DJ5RE DJ5RQ DJ5TD DJ5TH DJ5TT DJ5UZ DJ5VB DJ5WG DJ6BQ DJ6BZ DJ6CB DJ6FO DJ6GK DJ6GR DJ6HB DJ6HP DJ6JB DJ6JH DJ6KH DJ6KS DJ6LW DJ6MD DJ6NI DJ6NT DJ6OI DJ6OL DJ6OV DJ6OZ DJ6QT DJ6RA DJ6RN DJ6TB DJ6TK DJ6UP DJ6VM DJ6XB DJ6XG DJ6XV DJ6YD DJ6YL DJ6YX DJ6ZC DJ6ZJ DJ6ZM DJ7A DJ7AT DJ7BA DJ7EC DJ7ED DJ7ER DJ7FM DJ7IK DJ7JB DJ7JC DJ7LB DJ7LH DJ7OM DJ7OQ DJ7PA DJ7PI DJ7PR DJ7PT DJ7PW DJ7R DJ7RJ DJ7RL DJ7RST DJ7SW DJ7TW DJ7UD DJ7UN DJ7UO DJ7WG DJ7WW DJ7XB DJ7YM DJ7YP DJ7YR DJ7YT DJ7ZL DJ8BD DJ8CG DJ8EE DJ8EF DJ8EL DJ8ES DJ8EW DJ8FR DJ8GE DJ8LX DJ8MP DJ8NK DJ8NU DJ8OG DJ8QA DJ8QP DJ8RI DJ8RS DJ8RX DJ8RZ DJ8SW DJ8TK DJ8UL DJ8UV DJ8VC DJ8VI DJ8WI DJ8WK DJ9A DJ9AO DJ9BO DJ9CB DJ9CN DJ9CW DJ9DL DJ9DZ DJ9EG DJ9ER DJ9EU DJ9FB DJ9FG DJ9GS DJ9HX DJ9IE DJ9IO DJ9JD DJ9JX DJ9JY DJ9KM DJ9MH DJ9MT DJ9ON DJ9RQ DJ9RR DJ9SO DJ9UJ DJ9UM DJ9UN DJ9UP DJ9VA DJ9VS DJ9WJ DJ9XB DJ9ZB DK0A DK0AE DK0ALC DK0ALK DK0AT DK0BM DK0C DK0CN DK0CO DK0CU DK0ED DK0EE DK0FC DK0FL DK0GYB DK0HEL DK0HF DK0HUN DK0IA DK0IPA DK0IU DK0IW DK0IZ DK0MBB DK0MIT DK0MM DK0MN DK0OD DK0OG DK0PC DK0PM DK0PO DK0RX DK0SU DK0TZ DK0V DK0VX DK0WK DK0WL DK0WW DK0XB DK0YA DK0YB DK1A DK1AA DK1AC DK1AF DK1AQ DK1AUP DK1AW DK1AX DK1BN DK1BT DK1BX DK1DN DK1EI DK1ER DK1FB DK1FT DK1FW DK1GW DK1HKU DK1HO DK1II DK1IP DK1IZ DK1JU DK1KC DK1KF DK1KH DK1LRS DK1M DK1MA DK1MF DK1MM DK1NKW DK1NO DK1ODE DK1PG DK1PZ DK1QC DK1QH DK1QO DK1QV DK1RS DK1SI DK1TF DK1TR DK1TS DK1TX DK1VFA DK1WA DK1WB DK1WER DK1WU DK1WZ DK1XC DK1YP DK1YY DK2AI DK2AJ DK2AR DK2AT DK2AY DK2BH DK2BJ DK2BL DK2CF DK2CX DK2DB DK2DD DK2DH DK2ELF DK2FG DK2GZ DK2HZ DK2IX DK2JP DK2LO DK2NPM DK2NZ DK2OY DK2PR DK2PS DK2QF DK2RT DK2RZ DK2SF DK2SG DK2SZ DK2TA DK2TG DK2TX DK2VA DK2VM DK2WC DK2WM DK2YI DK2YL DK2ZO DK3AX DK3BN DK3BT DK3CC DK3DG DK3DM DK3DUA DK3FB DK3FW DK3GG DK3GI DK3HA DK3HV DK3JC DK3KD DK3KN DK3LT DK3NU DK3PM DK3QM DK3QN DK3QZ DK3RA DK3RED DK3T DK3TL DK3UA DK3UO DK3UZ DK3W DK3WG DK3WI DK3WJ DK3WM DK3WN DK3WW DK3YD DK4A DK4AN DK4BY DK4CR DK4DS DK4EF DK4FG DK4GKR DK4IO DK4IS DK4JPC DK4JT DK4K DK4KI DK4KL DK4KW DK4LEH DK4LI DK4LX DK4M DK4MO DK4MX DK4NJ DK4QT DK4RL DK4RM DK4RW DK4SC DK4TP DK4UD DK4US DK4UV DK4VF DK4VW DK4VY DK4WA DK4WF DK4WW DK4YF DK4YJ DK4ZZ DK5AD DK5AI DK5AL DK5AN DK5CCA DK5CS DK5D DK5DC DK5DQ DK5DS DK5E DK5EC DK5EQ DK5EZ DK5FF DK5FT DK5GT DK5HB DK5HZ DK5II DK5IM DK5IR DK5JA DK5JM DK5JX DK5KMA DK5LO DK5M DK5MB DK5MJ DK5MO DK5MV DK5ON DK5OS DK5PF DK5PQ DK5PR DK5QN DK5RO DK5SF DK5ST DK5TX DK5VA DK5WB DK5WL DK5WMA DK5WN DK5WO DK5XG DK5XI DK5ZO DK5ZX DK6AH DK6AJ DK6AN DK6AO DK6AR DK6AS DK6AV DK6AY DK6BT DK6CQ DK6CS DK6HD DK6HW DK6IM DK6IR DK6MO DK6NF DK6OR DK6PW DK6QW DK6RF DK6RS DK6TA DK6TP DK6TV DK6UZ DK6WA DK6WH DK6WL DK6XR DK6XZ DK7AN DK7AW DK7BT DK7CX DK7DV DK7DY DK7FP DK7FS DK7FZ DK7GH DK7HA DK7CH DK7IF DK7JQ DK7KR DK7MCX DK7MD DK7OM DK7PE DK7RC DK7SP DK7SS DK7TM DK7UM DK7UU DK7VW DK7YY DK7ZB DK7ZH DK7ZT DK8AF DK8AX DK8CC DK8CX DK8DV DK8EY DK8FA DK8FD DK8FS DK8IF DK8IL DK8IZ DK8JB DK8KF DK8MCT DK8MZ DK8NC DK8NG DK8NI DK8NM DK8NT DK8NX DK8OL DK8PX DK8QY DK8RE DK8SR DK8SX DK8TP DK8TU DK8VK DK8YY DK8ZB DK9AP DK9BW DK9CG DK9CL DK9CR DK9DA DK9ETM DK9FEC DK9HE DK9HN DK9IP DK9JI DK9JS DK9KC DK9KX DK9LB DK9LJ DK9MH DK9MS DK9NCX DK9NM DK9OR DK9OY DK9PS DK9PY DK9PZ DK9QD DK9SF DK9TN DK9UMA DK9VA DK9WB DK9WI DK9ZQ DL0AA DL0ABK DL0AO DL0AS DL0ASD DL0AT DL0AZ DL0BI DL0BIT DL0BL DL0BMW DL0BO DL0BOV DL0BV DL0CS DL0DAB DL0DEF DL0DO DL0DSA DL0DWE DL0EH DL0EKO DL0ER DL0ERF DL0ERP DL0ERZ DL0F DL0FC DL0FOR DL0FR DL0FTL DL0FU DL0GD DL0GDP DL0GER/P DL0GL DL0HA DL0HFC DL0HN DL0HNF DL0HSC DL0II DL0IL DL0IR DL0IV DL0KB DL0KCT DL0KK DL0KU DL0KW DL0KWH DL0LC DL0LN DL0MB DL0MET DL0MFS DL0MFX DL0ML DL0N DL0NG DL0NP DL0NS DL0NZ DL0OS DL0P DL0PB DL0PE DL0QQ DL0RM/P DL0SN DL0SOP DL0SP DL0TD DL0TE DL0TUM DL0UM DL0VLA DL0VLP DL0VN DL0VV DL0WAE DL0WB DL0WH DL0WW DL0XA DL0XM DL0XX DL0YE DL1A DL1AB DL1ABJ DL1AGS DL1AH DL1AIW DL1AKL DL1AKP DL1AKU DL1AKZ DL1ALA DL1ALB DL1ALN DL1AMH DL1AMQ DL1ANA DL1AO DL1AOB DL1AOP DL1AP DL1APQ DL1APW DL1APX DL1AQU/P DL1AQY DL1ARD DL1ARH DL1ARJ DL1ARS DL1ASA DL1ASF DL1ASP DL1ATR DL1AUZ DL1AVA DL1AVF DL1AVH DL1AVK DL1AVU DL1AWC DL1AWM DL1AXX DL1AYU DL1AZA DL1AZI DL1AZK DL1AZZ DL1BA DL1BAM DL1BBP DL1BFR DL1BI DL1BKI DL1BKK DL1BKT DL1BRL DL1BUG DL1BUT DL1BWU DL1BYL DL1BYZ DL1BZA DL1CC DL1CF DL1CJ/P DL1CLM DL1CW DL1DA DL1DAW DL1DBR DL1DBV DL1DCT DL1DF DL1DF/P DL1DH DL1DQW DL1DQY DL1DQZ DL1DRE DL1DSN DL1DSW DL1DTC DL1DTF DL1DTL DL1DUO DL1DUS DL1DVE DL1DWL DL1DWR DL1DXA DL1DXF DL1EAL DL1ECG DL1ECK DL1EEC DL1EEZ DL1EF DL1EFD DL1EHR DL1EJA DL1EJD DL1EK DL1EKG DL1EKO DL1EL DL1ELX DL1ELY DL1EMY DL1EOT DL1ET DL1EV DL1EZ DL1FCU DL1FDK DL1FDL DL1FKA DL1FMG DL1FYV DL1FZZ DL1GBQ DL1GCY DL1GDS DL1GHJ DL1GKC DL1HAA DL1HBD DL1HBL DL1HCM DL1HIK DL1HQE DL1HRY DL1HSI DL1HSR DL1HTX DL1HTY DL1HUH DL1IA DL1IAO DL1ICB DL1II DL1JB DL1JCM DL1JDQ DL1JDU DL1JEL DL1JFM DL1JGG DL1JGO DL1JIU DL1JKK DL1JML DL1JNA DL1JPF DL1JSO DL1KAS DL1KCQ DL1KLO DL1KSE DL1KSE/P DL1KUN DL1KUR DL1KVS DL1KWK DL1KZA DL1LAE DL1LAF DL1LH DL1LOD DL1LQA DL1LQR DL1LRA DL1LRI DL1LSH DL1LTK DL1MAJ DL1MDU DL1MDV DL1MEV DL1MGB DL1MHJ DL1MIM DL1MUC DL1NE DL1NEO DL1NFC DL1NFG DL1NGS DL1NHW DL1NKS DL1NPG DL1NRC DL1NUB DL1NUX DL1OD DL1OJ DL1OLI DL1PF DL1PR DL1PT DL1QP DL1QQ DL1QW DL1RCD DL1REM DL1RG DL1RLB DL1RMO DL1RNT DL1ROJ DL1ROT DL1RPC DL1RTD DL1RTL DL1RTS DL1RWS DL1RYD DL1SA DL1SAN DL1SBF DL1SE DL1SEC DL1SGH DL1SCH DL1SMA DL1SP DL1SRS DL1ST DL1STG DL1SVA DL1SWB DL1SWT DL1SXB DL1THB DL1TKB DL1TKL DL1TL DL1TPY DL1TRK DL1TS DL1TTX DL1UP DL1USB DL1VDL DL1VF DL1VFR DL1VJL DL1VRL DL1VTL DL1WA DL1WH DL1XP DL1XT DL1XW DL1XX DL1YAL DL1YAW DL1YCZ DL1YD DL1YEF DL1YEN DL1YFF DL1YGH DL1Z DL1ZBO DL1ZU DL2A DL2AA DL2AGB DL2AJB DL2AL DL2AMD DL2ANM DL2ARD DL2ARG DL2ARN DL2ASB DL2AWA DL2AWB DL2AXA DL2AXM DL2AYJ DL2AYK DL2BAQ DL2BBV DL2BIS DL2BM DL2BQD DL2BUM DL2BWG DL2BWH DL2BWO DL2CBB DL2CC DL2CK DL2DCD DL2DCX DL2DIE DL2DQL DL2DRM DL2DRU DL2DSL DL2DTJ DL2DTL DL2DUA DL2DVE DL2DWP DL2DX DL2DXA DL2DYL DL2EAB DL2F DL2FAG DL2FCA DL2FCB DL2FDL DL2FK DL2FP DL2GAR DL2GBB DL2GF DL2GGE DL2GWZ DL2HAE DL2HCB DL2HJ DL2HRE DL2HRF DL2HRT DL2HUM DL2HVM DL2HWA DL2HWB DL2HWH DL2HWI DL2HX DL2HYH DL2CHN DL2IAN DL2IPU DL2JAA DL2JAW DL2JIM DL2JKE DL2JLB DL2JRM DL2JT DL2JX DL2KDW DL2KQ DL2KUA DL2KUF DL2KUZ DL2LI DL2LMS DL2LRT DL2LSM DL2LTM DL2LZ DL2MDU DL2MDZ DL2MGF DL2MIH DL2MIJ DL2MJ DL2MLU DL2MM DL2MSA DL2MST DL2MWB DL2NAI DL2NBH DL2NBU DL2NBY DL2NC DL2NEA DL2NEE DL2NEW DL2NFC DL2NO DL2NY DL2OBN DL2OBO DL2OCE DL2OE DL2OM DL2PAN DL2QB DL2QT DL2RBB DL2RMC DL2RPS DL2RSH DL2RTJ DL2RTL DL2RU DL2RUG DL2SAX DL2SBF DL2SER DL2SEW DL2SUB DL2SWB DL2SWI DL2SWN DL2SWR DL2SWW DL2TG DL2TI DL2TOS DL2UH DL2UR DL2UX DL2VA DL2VB DL2VBN DL2VK DL2VLA DL2VM DL2VNL DL2VPF DL2VPO DL2VRL DL2VSF DL2VVL DL2VWR DL2WB DL2WJT DL2XB DL2YCA DL2YED DL2YET DL2YL DL2YMG DL2YMR DL2ZA DL2ZAE DL2ZBO DL2ZL DL2ZN DL3ABL DL3AG DL3AH DL3ALI DL3AMB DL3AMW DL3ANK DL3AO DL3APK DL3APO DL3AQJ DL3ARH DL3ARK DL3ARM DL3AS DL3AVI DL3AWB DL3AYJ DL3AZI DL3BAL DL3BBY DL3BCR DL3BCU DL3BQA DL3BRA DL3BRE DL3BUE DL3BVA DL3BXX DL3CA DL3DBC DL3DBY DL3DCQ DL3DRN DL3DTH DL3DUE DL3DXF DL3DXX DL3EA DL3EBX DL3EDA DL3EEE DL3EK DL3FBB DL3FBJ DL3FCG DL3FDT DL3FF DL3FSC DL3G DL3GA DL3GCB DL3GD DL3GER DL3HAA DL3HRT DL3HRW DL3HRZ DL3HSC DL3HWD DL3HXX DL3IAC DL3JA DL3JAN DL3JFN DL3JH DL3JJ DL3JON DL3JPN DL3JRA DL3KDC DL3KDS DL3KF DL3KO DL3KUD DL3KUF DL3KUM DL3KVR DL3KWF DL3KWR DL3KZA DL3LA DL3LAB DL3LBM DL3LE DL3MBG DL3MBJ DL3MBX DL3MCO DL3MDJ DL3MGK DL3MGN DL3MR DL3MVC DL3NAA DL3NCR DL3NCS DL3NDD DL3NDP DL3NGN DL3NSM DL3OAU DL3OBQ DL3OBW DL3OCF DL3OH DL3OHB DL3OR DL3PA DL3PN DL3PU DL3QQ DL3RAD DL3RCF DL3RCG DL3RDM DL3RSB DL3SAF DL3SBD DL3SCN DL3SDN DL3SEM DL3SWS DL3SZ DL3TC DL3TD DL3TNA DL3VDL DL3VL DL3VTA DL3VTL DL3VZL DL3WKG DL3XM DL3XS DL3YA DL3YAF DL3YCX DL3YDP DL3YDY DL3YEE DL3YHM DL3YM DL3ZAI DL3ZH DL3ZI DL3ZM DL3ZZA DL4A DL4AAE DL4AC DL4ALI DL4AO DL4BBJ DL4BCJ DL4CC DL4CF DL4CW DL4DBG DL4DBM DL4DCE DL4DCL DL4DG DL4DKM DL4DQA DL4DTL DL4DZL DL4EAX DL4EBA DL4EBV DL4EBW DL4EDB DL4EPM DL4FAP DL4FBZ DL4FDI DL4FDM DL4FF DL4FCH DL4FN DL4FO DL4GBA DL4GN DL4HG DL4HG/P DL4HRH DL4HRM DL4HSI DL4HTK DL4HWI DL4CH DL4IAH DL4IAL DL4IAZ DL4IW DL4JLM DL4JMN DL4JNB DL4JU DL4JWU DL4JYT DL4KCA DL4KG DL4KUG DL4KW DL4LAM DL4LAX DL4LBK DL4LBM DL4MAQ DL4MAU DL4MBY DL4MCA DL4MCF DL4MDO DL4ME DL4MEV DL4MFC DL4MFF DL4MH DL4MHA DL4MN DL4MNG DL4MP DL4NBE DL4NEG DL4NER DL4NN DL4NT DL4NY DL4OCE DL4OCH DL4OL DL4PU/P DL4PY DL4R DL4RAK DL4RAT DL4RCK DL4RDJ DL4RDP DL4RU DL4RX DL4SDW DL4SL DL4SUN DL4SVA DL4SZB DL4TJ DL4TL DL4TZ DL4UCS DL4UL DL4UNY DL4VAI DL4VAQ DL4VBU DL4VCG DL4VCR DL4VM DL4VQ DL4WA DL4WD DL4WDK DL4WG DL4XU DL4YAO DL4YAR DL4YBP DL4YIH DL4YR DL4YY DL4ZA DL4ZB DL4ZBG DL4ZBY DL4ZM DL5AI DL5ALW DL5AMF DL5AN DL5ANE DL5ANS DL5ANT DL5AOJ DL5ARM DL5ARZ DL5ASE DL5ASK DL5AWI DL5AX DL5AXJ DL5AXX DL5AYI DL5AZA DL5BAW DL5BCF DL5CD DL5CF DL5CK DL5CL DL5CN DL5CO DL5CR DL5CT DL5CW DL5CX DL5DBH DL5DCL DL5DD DL5DF DL5DRM DL5DSM DL5DWF DL5DXS DL5DZ DL5EBF DL5FAC DL5FAM DL5FCV DL5FCZ DL5FR DL5FU DL5GAC DL5GBG DL5GCH DL5HAB DL5HN DL5HP DL5IAH DL5IAO DL5IC DL5IO DL5JAB DL5JAG DL5JAG/P DL5JAN DL5JBW DL5JH DL5JRA DL5JS DL5JSP DL5JWL DL5KM DL5KMS DL5KUA DL5KUD DL5KUR DL5KUS DL5KUT DL5KVV DL5L DL5LBY DL5LS DL5LWM DL5MAE DL5MC DL5MEV DL5MG DL5MGH DL5MK DL5ML DL5MLO DL5MO DL5MU DL5MX DL5NA DL5NDX DL5NO DL5NUA DL5OAB DL5OAS DL5OB DL5OCD DL5PW DL5QS DL5QY DL5RBW DL5RDI DL5RDO DL5RDP DL5RJ DL5RK DL5RM DL5RMH DL5RU DL5SBA DL5SE DL5SL DL5ST DL5SVB DL5SWB DL5SZB DL5SZB/P DL5UR DL5VW DL5VZ DL5WC DL5WG DL5WK DL5WS DL5WW DL5WX DL5XAT DL5XJ DL5XL DL5YAS DL5YBZ DL5YCI DL5YEE DL5YL DL5YM DL5YYM DL5ZA DL5ZAA DL5ZB DL5ZBA DL5ZBO DL5ZG DL5ZL DL5ZL/P DL6AAF DL6AAO DL6ABB DL6ABN DL6AG DL6AN DL6AP DL6AST DL6ATI DL6ATM DL6AWJ DL6AZ DL6BBT DL6BJ DL6BLD DL6BQE DL6BR DL6BS DL6CGB DL6CGX DL6CMK DL6CNG DL6CWL DL6CX DL6DCD DL6DH DL6DSA DL6DVU DL6EAQ DL6ERD DL6ET DL6EZ DL6FA DL6FAN DL6FAX DL6FBH DL6FBL DL6FBR DL6FCB DL6GV DL6HCF DL6HRW DL6IAN DL6IY DL6JCB DL6JGN DL6JI DL6JZ DL6KAC DL6KCR DL6KHW DL6KO DL6KR DL6KT DL6KVA DL6KWN DL6LW DL6MDG DL6MFK DL6MGR DL6MHG DL6MHW DL6MIG DL6MN DL6MRS DL6MTA DL6MWG DL6NAL DL6NAL/P DL6NBR DL6NCY DL6NDW DL6NEF DL6NWA DL6OA DL6OAA DL6OCM DL6ON DL6OO DL6OZ DL6PO DL6QW DL6RAI DL6RAW DL6RAW/P DL6RBG DL6RBH DL6RBO DL6SFR DL6SRD DL6TK DL6TQ DL6UAA DL6UAM DL6UBM DL6UEF DL6UGF DL6UHA DL6UHD DL6UKL DL6UM DL6UMF DL6UNF DL6UOF DL6USA DL6VK DL6VRG DL6WT DL6XA DL6XX DL6XZ DL6YCU DL6YDH DL6YFG DL6YN DL6ZBN DL6ZFG DL6ZXG DL60DARC DL7AAG DL7ACN DL7AEV DL7AFY DL7AMU DL7ANR DL7AOJ DL7AOS DL7APK DL7APT DL7AQT DL7AQU DL7ARJ DL7ARM DL7ARV DL7AT DL7ATR DL7AU DL7AXM DL7BA DL7BC DL7BPM DL7BQ DL7BW DL7BY DL7CB DL7CK DL7CM DL7CO DL7CU DL7CX DL7DAX DL7DCL DL7DJ DL7DS DL7DZ DL7ED DL7EDH DL7ET DL7F DL7FA DL7FAZ DL7FCQ DL7FN DL7GEM DL7GN DL7GP DL7GW DL7HT DL7HU DL7HZ DL7IO DL7JAN DL7JOM DL7JRD DL7JV DL7LG DL7LX DL7LZ DL7OD DL7OK DL7ON DL7PA DL7PD DL7PV DL7QU DL7QW DL7RAG DL7RV DL7SAQ DL7SBV DL7SI DL7SLB DL7SP DL7TJ DL7UAJ DL7UCW DL7UCX DL7UDA DL7UDG DL7UEB DL7UFN DL7UG DL7UGN DL7UGO DL7UIO DL7UK DL7UKA DL7ULM DL7UM DL7UMK DL7UMK/P DL7UPF DL7UPN DL7URH DL7USA DL7USW DL7UVO DL7UWE DL7UWR DL7UXG DL7VAF DL7VAI DL7VBJ DL7VEE DL7VFM DL7VHP DL7VIO DL7VKG DL7VMM DL7VOE DL7VPE DL7VPO DL7VRG DL7VSN DL7VX DL7XR DL7XT DL7XU DL7YAD DL7YS DL7YY DL8AAE DL8AAM DL8AAV DL8ABK DL8AWK DL8AX DL8BED DL8BU DL8CA DL8CKL DL8CN DL8CO DL8CWA DL8DAS DL8DAZ DL8DBW DL8DUL DL8DW DL8DWW DL8DX DL8DXF DL8DXL DL8DXW DL8DYL DL8DZV DL8EAQ DL8FD DL8FL DL8FP DL8HA DL8HCO DL8HK DL8IH DL8JDX DL8JEW DL8JS DL8KAC DL8KJ DL8KX DL8LAS DL8LBK DL8LDN DL8MAS DL8MBS DL8MKG DL8MRE DL8NBE DL8NBJ DL8NCF DL8NCG DL8NU DL8OBF DL8OH DL8PG DL8QC DL8QS DL8R DL8RB DL8RBS DL8RCL DL8RDL DL8RJ DL8SAD DL8SAS DL8SCG DL8SCT DL8SH DL8TG DL8TL DL8TN DL8TR DL8UAA DL8UAT DL8UCC DL8UGF DL8UI DL8UIL DL8UKE DL8ULF DL8ULO DL8UNF DL8UO DL8UP DL8USA DL8UVG DL8UWE DL8VL DL8VN DL8VX DL8WAA DL8WAZ DL8WBB DL8WEM DL8WN DL8WX DL8XF DL8YAU DL8YBM DL8YH DL8YR DL8YS DL8ZAJ DL8ZU DL8ZVG DL9ABM DL9AJ DL9AKA DL9AWI DL9BBE DL9CE DL9CI DL9CM DL9CW DL9CX DL9DA DL9DAC DL9DAJ DL9DRA DL9DWR DL9DYL DL9ECA DL9EI DL9EO DL9FB DL9GCG DL9GFB DL9GMC DL9GMM DL9GMN DL9GR DL9GRE DL9GS DL9GTB DL9GTI DL9GTK DL9GWA DL9GWD DL9HB DL9HC DL9HD DL9HK DL9IE DL9IU DL9JBN DL9JN DL9JON DL9JSO DL9KI DL9LF DL9LM DL9MBI DL9MBZ DL9MCD DL9MDI DL9MEN DL9MFY DL9MKA DL9MKN DL9MRF DL9MS DL9MWG DL9NCR DL9NDS DL9NDV DL9NEF DL9NEI DL9NM DL9NO DL9OC DL9OHA DL9OLI DL9OM DL9PT DL9QJ DL9RAR DL9RBT DL9RCF DL9RT DL9SDP DL9SEV DL9SN DL9SUB DL9SXX DL9TJ DL9UJF DL9UO DL9US DL9WC DL9WJH DL9WO DL9XAW DL9YAJ DL9YBY DL9YCS DL9YDW DL9YX DL9ZAL DL9ZAP DL9ZEA DL9ZP DL9ZWG DM0E DM0Y DM1A DM1AM DM1DE DM1FS DM1LM DM1T DM1TT DM1YP DM2A DM2AF DM2AML DM2AUO DM2AWM DM2BM DM2BPG DM2BR DM2BRF DM2C DM2CF DM2DMI DM2DTH DM2DX DM2DXA DM2EV DM2FDO DM2GFN DM2GG DM2LB DM2ORI DM2RG DM2RN DM2RP DM2TO DM2TS DM2XO DM3A DM3B DM3BJ DM3CW DM3DA DM3DL DM3F DM3FF DM3FG DM3FZN DM3GH DM3HZN DM3K DM3KF DM3KTO DM3KXL DM3KZN DM3M DM3ML DM3MM DM3MR DM3PKK DM3PYA DM3RB DM3SCK DM3SU DM3VL DM3VPJ DM3W DM3WSO DM3XI DM3X/P DM3ZF DM4D DM4DB DM4DX DM4G DM4IM DM4KR DM4M DM4TI DM4TNF DM4WL DM4YWL DM5A DM5AA DM5BB DM5CT DM5DM DM5DX DM5EL DM5GI DM5HF DM5JBN DM5JF DM5JL DM5LK DM5MA DM5MM DM5R DM5T DM5TI DM5WF DM5WH DM5Z DM50KWF DM50PSF DM6DL DM6DX DM6HK DM6T DM6TM DM6YY DM7A DM7C DM7DX DM7MM DM7MRE DM7RM DM7XT DM9CCOL DM9JM DM9K DM9KT DM9LSB DN1CS DN1JC DN1SJ DN2LD DN2WH DN3AMH/P DN4NER DN5KID DN5PP DN6WT DO1AYJ DO1BEN DO1CDE DO1CO DO1CS DO1CTL DO1DEL DO1DJJ DO1DQ DO1DXX DO1FV DO1GM DO1HGS DO1IJB DO1IQ DO1JKB DO1JVA DO1KGS DO1KM DO1KRT DO1KUB DO1MGN DO1MKA DO1OHL DO1PKL DO1PM DO1RTO DO1SAJ DO1SJF DO1SKJ DO1SSB DO1THG DO1TU DO1UZ DO1VK DO1WHU DO1YCL DO1YHJ DO1YHN DO1YNM DO1YWF DO2BL DO2DC DO2GN DO2HO DO2JP DO2MGY DO2ML DO2MS DO2MX DO2OF DO2TC DO2TF DO2YPB DO3AH DO3BJ DO3BST DO3CM DO3ED DO3HEL DO3IR DO3KMF DO3LU DO3ME DO3MU DO3NN DO3NO DO3PKE DO3SP DO3UWE DO3VE DO3WBH DO3WG DO4AV DO4DW DO4DXA DO4HRE DO4JS DO4OD DO4TP DO4YU DO5AWE DO5DF DO5DGH DO5FE DO5HCS DO5KWH DO5LN DO5MCL DO5MST DO5OT DO5RT DO5SL DO5WA DO5WD DO6AL DO6GZ DO6HMA DO6JJ DO6KDS DO6MBA DO6NI DO6RO DO6SD DO6SR DO6TPG DO6YL DO7ADH DO7AF DO7DC DO7DSV DO7DU DO7FC DO7HS DO7JF DO7JF/P DO7JVB DO7LR DO7MAN DO7OM DO7RAF DO8AH DO8CW DO8MA DO8MM DO8OL DO8RW DO8TB DO8YX DO9BC DO9PL DO9ST DP1POL DP3D DP3E DP4D DP4K DP4M DP4N DP4P DP4W DP4X DP5A DP5E DP5M DP5W DP5X DP6A DP6T DP7A DP8P DP9A DP9I DP9Z DQ0A DQ1A DQ4Q DQ4T DQ4W DQ5T DQ6E DQ8N DR0K DR0X DR0Y DR1A DR1D DR1X DR10TCC DR12IAAF DR2C DR2K DR2N DR2P DR2Q DR2W DR20MVP DR2010L DR2010N DR2010O DR3R DR3W DR3X DR4A DR4G DR4O DR4T DR4W DR5A DR5L DR5N DR5O DR5X DR5Z DR6J DR6R DR60GER DR600UL DR7T DR775TMG DR8M DR800GRZ DR888PL DR9P DS0HAN DS1AFL DS1CPT DS1PEG DS1PRD DS1QMV DS1REE DS1RJI DS2GOO DS2GWM DS2JJV DS2KGJ DS2OQF DS3BNU/2 DS3FGV DS3MLG/2 DS4CNB DS4DBF DS4DBG DS4DRT DS4FMG DS4GCS DS4GEX DS4GGM DS4GKF DS4GKG DS4OVT DS5ACV DS5BRE DS5DNO DS5DYM DS5FNE DS5KJR DS5KOU DS5QLJ DS5TOS DS5UST DT0IT DT8A DU1AV DU1BP DU1EG DU1EV DU1/F2JD DU1HR DU1IVT DU1JI DU1LC DU1UGZ DU1VHY DU3NXE DU6BG DU7/PA0HIP DU9RG DV1JM DV1/JO7KMB DV1SDT DV1UBY DV1VSR DV5PO DV9XO DW1VKT DX1ARM DX1CW DX1DBT DX1HQ DX1J DX1M DX1PRS D4C D44AC D44BS EA1AAA EA1AAW EA1ABS EA1ABT EA1ACP EA1AHY EA1AKS EA1AP EA1APS EA1APV EA1AQ EA1AQE EA1AR EA1ASC EA1ASG EA1AST EA1AUS EA1AUT EA1AW EA1BAF EA1BFZ EA1BHR EA1BLA EA1BNF EA1BP EA1BRB EA1BTX EA1BXX EA1CBX EA1CCM EA1CCW EA1CDI EA1CF EA1CGK EA1CJ EA1CJF EA1CJH EA1CP EA1CQ EA1CRL EA1CS EA1CUB EA1DDU EA1DFP EA1DGG EA1DIW EA1DKV EA1DR EA1DRL EA1DVY EA1DZM EA1EA EA1EAU EA1EED EA1EJ EA1EMB EA1EPM EA1ET EA1EVR EA1EVS EA1EWC EA1EWY EA1EWY/P EA1EXE EA1EY EA1EYG EA1FAU EA1FBU EA1FD EA1FDI EA1GA EA1GAR EA1GAZ EA1GFT EA1GFY EA1GHT EA1GIB EA1GPL EA1GT EA1GWL EA1GWM EA1GY EA1HDD EA1HF EA1HFI EA1HLH EA1HLL EA1HOE EA1HRR EA1HV EA1IR EA1IT EA1JJ EA1JK EA1JO EA1JW EA1KC EA1KE EA1KY EA1MR EA1MX EA1ND EA1NE EA1NX EA1OD EA1OS EA1OT EA1PO EA1PP EA1QA EA1QK EA1QT EA1RG EA1RJ EA1RKA EA1RU EA1SA EA1SB EA1SZ EA1TI EA1TX EA1URF EA1URO EA1VIC EA1VT EA1WX EA1XT EA1YB EA1YG EA1YO EA1YR EA2AAZ EA2ABI EA2AFV EA2AOS EA2AP EA2ASB EA2AVM EA2AZ EA2BCJ EA2BD EA2BEF EA2BNU EA2BVV EA2CCG EA2CE EA2CIN EA2CJ EA2CQ EA2CTB EA2CXT EA2CYJ EA2DCF EA2DDP EA2DK EA2DNA EA2DNR EA2DOT EA2DPN EA2EA EA2GP EA2HA EA2IA EA2IF EA2JB EA2JE EA2KB EA2KP EA2KU EA2KV EA2KY EA2LU EA2MH EA2NN EA2OK EA2PI EA2QU EA2RC EA2RCF EA2RKG EA2RW EA2RY EA2SS EA2SW EA2TO EA2VE EA2VI EA2WD EA2YY EA3AAH EA3AEL EA3AGZ EA3AHZ EA3AIZ EA3AKA EA3ALV EA3ALZ EA3AMS EA3ANE EA3APS EA3AQL EA3AR EA3ATM EA3ATO EA3AV EA3AVV EA3AXM EA3AYK EA3AYQ EA3BCK EA3BFK EA3BHK EA3BJM EA3BOW EA3BOX EA3BT EA3CC EA3CCN EA3CEC EA3CEC/EA1 EA3CI EA3CS EA3CUU EA3CXG EA3/CX8CP EA3CZ EA3CZR EA3DBB EA3DEN EA3DTD EA3DUM EA3DW EA3DWS EA3EAN EA3/EA8TL EA3EBN EA3EDU EA3EEE EA3EGB EA3EIQ EA3EJI EA3EJJ EA3ELZ EA3ESE EA3ESJ EA3EU EA3EVL EA3EVR EA3EXP EA3EYD EA3EZD EA3FAG EA3FAR EA3FCQ EA3FF EA3FHC EA3FHP EA3FLS EA3FYD EA3GBA EA3GBU EA3GEG EA3GEO EA3GHZ EA3GI EA3GLB EA3GNP EA3GOD EA3GP EA3GUG EA3GUM EA3GXJ EA3GXL EA3GYE EA3GYK EA3GYK/5 EA3HAB EA3HAN EA3HCJ EA3HCL EA3HCY EA3HEU EA3HIG EA3HP EA3IM EA3IN EA3JJ EA3JL EA3JW EA3KN EA3KT EA3KU EA3/K1MM EA3LA EA3LD EA3LS EA3LX EA3MM EA3NA EA3NB EA3NE EA3NI EA3NJ EA3NO EA3NP EA3NT EA3NU EA3NW EA3NY EA3ODC EA3OH EA3OR EA3PT EA3QP EA3RCB EA3RKR EA3RR EA3SD EA3TA EA3TI EA3TJ EA3WD EA3WX EA3XQ EA4AFP EA4AGI EA4AK EA4AVM EA4AXG EA4AYD EA4AYU EA4BF EA4BGM EA4BHK EA4BM EA4BT EA4BV EA4BZ EA4CFY EA4CQT EA4CRP EA4CU EA4CVP EA4CW EA4CWN EA4DAT EA4DB EA4DEC EA4DEI EA4/DH1TW EA4DQX EA4DRV EA4DTN EA4DTV EA4DUT EA4DW EA4DX EA4/EA2NN EA4EER EA4EIY EA4EJR EA4EMC EA4EN EA4EPY EA4EQ EA4EQD EA4ERX EA4ESW EA4ETW EA4EUI EA4EUW EA4FJJ EA4FKZ EA4FL EA4FLS EA4FLY EA4FQO EA4FSL EA4FSW EA4FTP EA4GB EA4GV EA4HD EA4IJ EA4IK EA4IP EA4IS EA4JJ EA4KA EA4KD EA4KG EA4KR EA4KT EA4LG EA4LO EA4LU EA4MA EA4NP EA4NW EA4OA EA4RCT EA4RE EA4SG EA4TD EA4TG EA4TX EA4URA EA4UV EA4/UY7CW EA4WD EA4WP EA4WT EA4XT EA4YK EA4/YO8DHC EA4ZK EA4ZQ EA5ABH EA5AE EA5AER EA5AID EA5AIO EA5ARC EA5ASF EA5ASM EA5AT EA5ATK EA5AVL EA5AVW EA5AWJ EA5AX EA5BAH EA5BM EA5BS EA5BVS EA5BWR EA5BY EA5BZ EA5CCY EA5CEE EA5CLH EA5CP EA5CW EA5CZM EA5DB EA5DCL EA5DD EA5DF EA5DFV EA5DIT EA5/DJ1MH EA5DKU EA5/DL5EO EA5DM EA5DT EA5DY EA5EA EA5EH EA5EI EA5EM EA5EM/2 EA5EN EA5EOR EA5ET EA5EU EA5EV EA5EXK EA5FCW EA5FFC EA5FHC EA5FID EA5FJD EA5FKX EA5FL EA5FQ EA5FU EA5FV EA5FWW EA5FX EA5GF EA5GI EA5GIE EA5GIN EA5/GI3NVW EA5GL EA5GS EA5GSW EA5GTQ EA5GU EA5GUD EA5GUI EA5GVV EA5GVZ EA5GX EA5GXI EA5GZY EA5HAB EA5HEU EA5HIH EA5HJO EA5HKA EA5HKE EA5HKQ EA5HKS EA5HPX EA5HRM EA5HT EA5ID EA5IK EA5IY EA5JK EA5JW EA5KA EA5KB EA5KD EA5KGD EA5KI EA5KV EA5KY EA5LA EA5LK EA5LV EA5ON EA5OX EA5PS EA5QB EA5RM EA5RM/7 EA5RS EA5RU EA5SR EA5TD EA5TS EA5TT EA5UB EA5URB EA5/UT2XD EA5VN EA5WP EA5XA EA5XC EA5XY EA5YE EA5YJ EA5YT EA5YU EA6/AA5UK EA6AFM EA6AIV EA6AZ EA6BF EA6BH EA6DB EA6/DC2CW EA6DX EA6IB EA6ID EA6LP EA6NB EA6OM EA6SX EA6UN EA6UP EA6XQ EA6ZS EA7AAW EA7AE EA7AGX EA7AHA EA7AJR EA7AKK EA7ANM EA7ATX EA7AVP EA7AZA EA7BJ EA7BQX EA7CIX EA7CJN EA7CVF EA7CWA EA7/DL2FP/P EA7/DL3XO EA7ELY EA7EN EA7ESM EA7EU EA7FIQ EA7FR EA7FRX EA7FUN EA7GSU EA7GV EA7GWA EA7GYS EA7GYU EA7GZT EA7HCB EA7HCJ EA7HE EA7HEG EA7HF EA7HFH EA7HFI EA7HG EA7HGH EA7HHS EA7HHV EA7HKE EA7HLU EA7HNN EA7HOJ EA7HW EA7HXQ EA7HY EA7HYL EA7CHO EA7IBK EA7ICN EA7ICN/2 EA7IHD EA7IPP EA7ISH EA7IZJ EA7JB EA7JX EA7KB EA7KS EA7KW EA7LL EA7LM EA7LS EA7LU EA7MK EA7MT EA7NA EA7NL EA7NW EA7OR EA7OT EA7RM EA7RU EA7SG EA7ST EA7TG EA7TL EA7TV EA7UU EA7VJ EA7WA EA7WL EA7ZY EA8AH EA8AJO EA8AJY EA8AK EA8ANE EA8AQV EA8AVK EA8BEX EA8BGO EA8BMG EA8BPX EA8BQM EA8BTM EA8BVP EA8BZH EA8CAC EA8CDI EA8CDP EA8CER EA8CFY EA8CMS/P EA8CMX EA8CN EA8CNB EA8CNR EA8CPN EA8CQW EA8CSG EA8CST EA8CVW EA8DA EA8DD EA8DG EA8/DK5LM EA8/DL3KVR EA8/DL6MHW EA8/DL8NU EA8DP EA8/EA4SV EA8EU EA8EW EA8IK EA8KG EA8KK EA8KV EA8/LA8WF EA8LS EA8MQ EA8MT EA8NQ EA8/OH6CS EA8OM EA8/OX3XR EA8RY EA8TL EA8TT EA8TX EA8UK EA8UP EA8URL EA8VD EA8ZS EA9BO EA9EU EA9IE EA9PY EA9Z EB1APH EB1CFH EB1DJ EB1DMQ EB1EDT EB1ERK EB1EVX EB1IC EB1IFI EB1LA EB1TR EB1WW EB2BXL EB2CYQ EB2FWD EB2GFA EB2GMS EB2RA EB3CML EB3CW EB3DIP EB3EPP EB3EPR EB3EPR/2 EB3FLY EB3FSS EB3JT EB4FJV EB4GER EB5AL EB5ARP EB5BBA EB5CNK EB5CS EB5GGB EB5GIV EB5GMH EB5HRX EB5KAU EB5KB EB5RR EB5WC EB6AOK EB7ABJ EB7CIN EB7DX EB8AH EC1AAC EC1ABR EC1AE EC1AIJ EC1AJV EC1AQT EC1CSV EC1CT EC1CTV EC1DBO EC1DMY EC1KR EC1KV EC2ACC EC2ADT EC2ASL EC2BAD EC2DX EC3AAJ EC3ABB EC3AED EC3ACH EC3PL EC4AHH EC4AIU EC4CBZ EC4CLR EC5AB EC5AGM EC5APA EC5BZR EC5CR EC5CSW EC5CYI EC5EC EC5KB EC5WW EC6AAE EC6TK EC7AAG EC7ABV EC7ACV EC7AKV EC7AMT EC7AMY EC7AT EC7DDZ EC7DIK EC7DND EC7DNX EC7EAM EC8ABQ EC8ADS EC8ADW EC8AFM EC8AQQ EC8AUZ ED1APS ED1J ED1K ED1R ED1RCM ED1T ED2R ED2V ED4A ED4R/8 ED5CJX ED5D ED5J ED5M ED5R ED5T ED7AJR ED7D ED7H ED7K ED8D ED8R ED8T ED9NA EE1E EE1K EE1S EE2K EE2W EE3E EE3R EE3Y EE4E EE5E EE5G EE5I EE5J EE5R EE5T EE5U EE5V EE5W EE6E EE7D EE7E EE7J EE7K EE7R EE7X EE8E EE9K EE9Z EF1A EF1W EF3A EF3M EF5BM EF5F EF5G EF5K EF5W EF7A EF7R EF7W EF8A EF8G EF8M EF8N EF8R EF8T EF9K EG2R EG4M EG5A EG5T EG5W EG8GCA EH1K EH2R EH2WE EH5I EH5J EH5T EH7H EH7Z EI/EA3BOX EI/ON4EI EI/W5GN EI0A EI0CZ EI0HQ EI0W EI1DG EI2AJ EI2CA EI2CC EI2CL EI2CN EI2GLB EI2II EI2JD EI2JK EI2KA EI2KC EI2VNO EI2W EI3EBB EI3ENB EI3FDB EI3GC EI3GO EI3GRB EI3GYB EI3GZ EI3HA EI3IO EI3Y EI4BZ EI4CF EI4CF/P EI4DJB EI4DW EI4GAB EI4GK EI4GNB EI4GXB EI4GYB EI4HQ EI4IB EI4II EI4JZ EI4RX EI5AL EI5DI EI5DR EI5E EI5GJB EI5GM EI5GSB EI5JC EI5JQ EI5JZ EI6AK EI6AL EI6ARB EI6D EI6DX EI6FR EI6GEB EI6HB EI6IZ EI6JK EI6JY EI6KC EI6S EI7BA EI7CC EI7DMB EI7GM EI7GY EI7JK EI7JN EI7JQ EI7JZ EI7M EI8DD EI8EM EI8FH EI8GHB EI8GNB EI8GQB EI8GS EI8HL EI8IR EI8JB EI8JR EI8JX EI8KB EI9C EI9CJ EI9E EI9ES EI9FBB EI9FN EI9FVB EI9HX EI9JF EI9JU EI9KC EJ3Z EJ4II EJ6DX EJ8GQB EK0HQ EK3GM EK3SA EK6GB EK6LP EK6TA EK7DX EK8WA EK8ZZ EL2DX EL8RI EM0X EM5HQ EM50KFF EM7L EM9F EN7U EO1I EO3Q EO5I EO5M ER0FEO ER0/UT0FT ER0WW ER1DA ER1DAC ER1FF ER1LW ER1OO ER1RR ER1WK ER2KAG ER2RM ER3AU ER3CT ER3DX ER3HW ER3MM ER3R ER3ZZ ER4A ER4DX ER4KAA ER4LX ER4X ER5AA ER5AL ER5DX ER5GB ER5LL ER5WU ER6A ER7HQ ES0DJ ES0NW ES1A ES1AN ES1AR ES1CN ES1CR ES1CW ES1GO ES1LBK ES1LS ES1QD ES1RA ES1WN ES1WST ES1XQ ES2BH ES2BL ES2DJ ES2EZ ES2IPA ES2JL ES2MA ES2MC ES2TI ES3AX ES3BQ ES3RF ES3VI ES4A ES4IN ES4MM ES4NG ES4RD ES4RX ES4RZ ES5DB ES5EC ES5EP ES5G ES5GP ES5JR ES5MC ES5MG ES5NC ES5Q ES5QA ES5QD ES5QX ES5RIM ES5RR ES5RW ES5RY ES5TF ES5TV ES6CO ES6DO ES6KW ES6PA ES6Q ES6QZ ES6TX ES7ABD ES7FQ ES7FU ES7GM ES7GN ES7NY ES8DH ES8TJM ES8W ES8ZP ES9A ES9C ET3AA ET3SID EU1A EU1AD EU1AI EU1AZ EU1CL EU1DX EU1DZ EU1DZ/6 EU1EU EU1FC EU1UA EU1UN EU2EU EU2MM EU3AR EU4AA EU4AG EU4CQ EU4LY EU6AA EU6AF EU6MM EU6RO EU7SA EU7SR EU8KP EU8RZ EV1P EV1P/2 EV1R EV6DX EV6M EV6Z EV8DP EW1BA EW1DJ EW1DO EW1EA EW1IP EW1KT EW1NA EW1NM EW1OT EW1WZ EW1YL EW2A EW2AO EW2BX EW2DN EW2EG EW2EO EW2ES EW2MA EW2TT EW2WW EW3EA EW3EW EW3LN EW4AA EW4AB EW4AM EW4DX EW4KA EW4MM EW4PA EW5A EW6AF EW6AL EW6CU EW6DM EW6DX EW6EW EW6GF EW6GL EW6WA EW7AK EW7BR EW7DK EW7EW EW7KF EW7LE EW7LO EW8A EW8BQ EW8CD EW8CF EW8CY EW8DA EW8DD EW8DJ EW8DX EW8DZ EW8EW EW8KF EW8KY EW8MW EW8NN EW8OF EW8OG EW8OM EW8RR EW8ZO EX2A EX2M EX2T EX2U EX2X EX7ML EX8AB EX8AI EX8M EX8MAT EX8O EY7AB EY7AD EY7AF EY7BJ EY7ZA EY8AJ EY8BJ EY8CC EY8DD EY8/K4ZW EY8MM EY8/UA4LCQ E2E E20AS E20HHK E20WXA E20YLM E21AOY E21EIC E21EJC E21IZC E21YDP E51CG E51COF E51JD E51QQQ E51USA E7DX E7HQ E7SRRS E70JA E70M E70R E70T E71A E71DX E71EDV E71EZC E71GJK E71M E71S E71W E72B E72C E72DX E72MM E72U E72W E72X E73BB E73C E73DX E73ECJ E73ESP E73F E73M E73MJ E73MS E73O E73PY E73S E73T E73TTT E73U E73W E73X E73XL E73Y E73YL E74A E74AA E74AW E74BQ E74CN E74DT E74EBL E74EE E74FN E74GZ E74IO E74IW E74JS E74KC E74KM E74NR E74QA E74QG E74SD E74VT E74WN E74X E74Y E74ZZ E75A E75AZ E75MC E75MJ E75O E76C E77A E77BA E77C E77CFG E77DX E77E E77EZ E77G E77J E77K E77M E77O E77R E77U E77XZ E77Y E78ATM E78CB E78DX E78G E79D E79EA E79Z F/DJ7JC FG1PP F/G4BJM FG5DH FG5FI FG5FU FG5LA FG8AR FH8ND FJ/VE3EY FJ/WJ2O FK8CP FK8GM FK8KAB FM1AG FM1FV FM1HN FM5AN FM5BH FM5CD FM5CW FM5FJ FM5KC FM5LD FM5WD FM5WE FO/N6JA FO5QB FO5RH FO8RZ FR1AN FR1GZ FR5EC FR5GS FS5KA FT5GA FY/LA0BY FY1FL FY5FY FY5KE FY8DK F1ACK F1ACS F1ADG F1AEY F1AKK F1BAV F1BBK F1BGY F1BJD F1BLQ F1BOQ F1BRV F1CGN F1EAA F1EBN F1EIT F1EPQ F1FPL F1GTU F1HTU F1ICR F1ICS F1IEH F1ISJ F1IWH F1JGN F1JKJ F1JRD F1LPT F1MLN F1MUG F1MWV F1NGP F1NZC F1OET F1OKV F1OOG F1PDI F1PGZ F1PUX F1PYW F1RCX F1RHS F1RUK F1SAL F1SIU F1SMV F1TRE F1TZE F1TZG F1UIJ F1UJS F1UMO F1URL F1UVN F1VNR F2AI F2AR F2BF F2DX F2FZ F2GL F2JD F2LG F2LZ F2MA F2NH F2NZ/P F2QH F2RO F2SI F2TA F2VX F2WT F2YT F3AT F3CW F3MB F3NB F3OA F3TH F3TK F3VV F3VX F3WT F4ABC F4AGR F4APR F4AQG F4ARM F4ASK F4ASQ F4BCX F4BHW F4BIV F4BKB F4BKV F4BVO F4CDR F4CGJ F4CLB F4CPF F4CRE F4CUI F4CWN F4CWZ F4CYZ/P F4CZV F4DIA F4DLL F4DNW F4DRT F4DSK F4DTO F4DVX F4DXP F4DXW F4DXX F4EAN F4EEI F4EEJ F4EET F4EFL F4EGD F4EGG F4EGS F4EIZ F4EJW F4ELH/P F4ELU F4EMK F4EMN F4EMU F4ENJ F4ENK F4EOP F4EPR F4EPU F4EQA F4EQH F4ERS F4ETG F4EUG F4EUN F4EVR F4EVV F4EWP F4EWU F4EZJ F4FAO F4FBB F4FBP F4FDA F4FDR F4FEP F4FEY F4FFH F4FFN F4FFZ F4FHI F4FHM F4FHR F4FHT F4FHV F4FHZ F4FIP F4FJH F4FKJ F4FLF F4FLN F4FLQ F4FNL F4FNT F4FPF F4FPG F4FQH F4FRF F4FSB F4FSV F4FTS F4FWL F4GAJ F4GAR F4GBW F4GDI F4GGD F4JRC F4JVG F4MBZ F4OHA F4PCM F4RST F4SGU F4TTR F4UKP F4UQL F5AAR F5AD F5ADE F5AIB F5AKL F5AMH F5AQB F5ARU F5ASD F5AUZ F5AXG F5AZM F5BBD F5BEG F5BOY F5BTH F5BTH/P F5BZB F5CBQ F5CCX F5CDE F5CQ F5CT F5CUN F5CWU F5CYM F5CYS F5DM F5DRD F5DYD F5ELL F5ELL/P F5EOT F5FJ F5GFA F5GGL F5GN F5GPE F5HHW F5HNQ F5HRY F5HTR F5HUF F5HX F5HY F5CH F5IAE F5ICC F5IDB F5IDJ F5IEP F5IHP F5IHP/P F5IL F5ILS F5IN F5INJ F5IQA F5IQJ F5ISG F5IUZ F5IYJ F5IYU F5IZP F5JC F5JDG F5JFU F5JGA F5JIW F5JLH F5JLV F5JMI F5JRL F5JSD F5JSK F5JSQ F5JU F5JXU F5JY F5JYD F5KAR F5KAR/P F5KEQ F5KCH F5KIN F5KKD F5KLE F5KLP F5KSE F5LCU F5LDY F5LEN F5LGE F5LGF F5LIW F5LJA F5LLE F5LLN F5LMJ F5LMK F5LND F5LOW F5LPL F5LPY F5LQ F5LTH F5LVL F5LWF F5MA F5MAE F5MBM F5MFI F5MFO F5MFU F5MKD F5MLJ F5MMB F5MNK F5MOO F5MPN F5MQW F5MSB F5MSE F5MTR F5MUX F5MVT F5MWW F5MXH F5MXQ F5MZN F5NBK F5NBU F5NBX F5NCU F5NEH F5NEP F5NEV F5NKP F5NKX F5NLX F5NPS F5NQL F5NSL F5NTV F5NTZ F5NZY F5OAM F5OCL F5ODA F5ODF F5OEL F5OEV F5OGL F5OHH F5OHM F5OHS F5OHV F5OQL F5OTZ F5OVQ F5OWL F5OWT F5OZC F5OZF F5PAL F5PAU F5PBM F5PCV F5PEU F5PHP F5PHW F5PLC F5POJ F5PPO F5PQH F5PRH F5PTI F5PU F5PVK F5PWK F5PYJ F5PZR F5QE F5QF F5RAB F5RAV F5RBB F5RD F5RDK F5RDS/P F5RJK F5RJM F5RKC F5RKL F5RLW F5RMK F5RMN F5ROL F5ROX F5RPB F5RQQ F5RRS F5RUJ F5RWQ F5RXL F5SDH F5SGI F5SIH F5SJB F5SSK F5SVU F5SXD F5SZB F5TDB F5TDK F5TFU F5TGR F5TGW F5TIL F5TLN F5TLZ F5TMJ F5TO F5TRB F5TSB F5TSG F5TTI F5TXW F5UB F5UBH F5UFX F5UJK F5UKL F5UL F5UMP F5UMU F5UOW F5UQN F5USS F5UTN F5VBT F5VBU F5VFU F5VHE F5VHQ F5VHY F5VIF/P F5VIH F5VIM F5VJC F5VJK F5VKP F5VKT F5VLT F5VLV F5VML F5VMO F5VNB F5VU F5VV F5VW F5YD F5YJ F6AAP F6ABI F6ACD F6ACV F6AEW F6AFC F6AGQ F6AJH F6AML F6AOI F6AOJ F6API F6AQI F6AQO F6ARC F6ARQ F6ATP F6AUS F6AVP F6AXX F6BAT F6BBO F6BBQ F6BDM F6BEE F6BFH F6BGC F6BGG F6BGV F6BIP F6BIP/P F6BKI F6BKP F6BLP F6BNH F6BNX F6BPO F6BPZ F6BUL F6BVY F6BWJ F6BWO F6CBA F6CBH F6CBL F6CEL F6CFB F6CFT F6CKD F6CKE F6CLH F6CLQ F6CMG F6COA F6COW F6COZ F6CRP F6CRT F6CSO F6CTL F6CTT F6CVR F6CWA F6CWN F6CXJ F6CYT F6CZC F6CZV F6DAM F6DBX F6DDR F6DFY F6DFZ F6DGH F6DKQ F6DKV F6DLM F6DRP F6DSV F6DVH F6DYX F6DYY F6DZD F6DZU F6EAZ F6ECS F6EDO F6EHP F6EKI F6EKJ F6EMA F6EOQ F6EPO F6EPQ F6EQD F6EQZ F6EWX F6EXV F6EYB F6EZF F6EZR F6EZV F6FDR F6FGB F6FHO F6FLU F6FNA F6FNL F6FTB F6FYD F6GBP F6GCI F6GCP F6GEO F6GGO F6GID F6GIN F6GNZ F6GOX F6GPT F6GQO F6GUF F6GUU F6GYF F6GYU F6HAC F6HBR F6HHR F6HIQ F6HKA F6HMJ F6HMQ F6HQP F6HQY F6HRP F6CHT F6IFJ F6IGS F6IIT F6IOC F6IPQ F6IQA F6IRA F6IRA/P F6IRF F6IRG F6IRS F6ISQ F6ITD F6IZZ F6JOE F6JOE/P F6JXR F6KAR F6KBF F6KCP F6KDL F6KFA F6KFI F6KFV F6KHM F6KMB F6KMX F6KNB F6KPQ F6KPQ/P F6KRK F6KSV F6KUJ F6KUM/P F6PTT F6UIG F8AAB F8AAN F8ADM F8AEE F8AFC F8AKC F8AKS F8AOF F8AQK F8AQT F8ARK F8ASG F8ATM F8ATS F8BBL F8BBT F8BCS F8BDQ F8BDX F8BFU F8BJI F8BMG F8BMX F8BNN F8BNV F8BPN F8BUO F8BUY F8BXI F8CDM F8CFU F8CGL F8CIL F8CKH F8CMF F8CNX F8CRH F8CRS F8DBF F8DFP F8DHA F8DHB F8DHE F8DJV F8DKG F8DML F8DNX F8DOR F8DRE F8DVD F8DWH F8DYD F8DZU F8DZY F8EBY F8EEQ F8EMH F8EOI F8EZE F8FGZ F8FKD F8FLK F8FQJ F8FSK F8FSN F8FWM F8FY F8FZC F8CHK F8IXZ F8JZR F8KA F8KCF F8KDX F8KGH F8KGL/P F8KKH F8LKU F8MRQ F8NUH F8NZQ F8PMO F8VNU F8VNZ F8VOA F8XX F8ZW F9CI F9CZ F9DK F9EW F9IE F9JS F9KP F9NF F9OB F9OE F9OQ GA0DBW GA0FGI GA0NBM GA0WED GA2MP GA3TAL GA3WUX GA3YOR GA4AGL GA4XQJ GB2BP GB2DX GB50ATG GB50OT GB7HQ GC0EJE GD0AMD GD0IFU GD3TNS GD4EIP GD4IHC GD4KIN GD4WBY GD6IA GD7ARS GD8K GI0AIJ GI0EJU GI0KOW GI0KVQ GI0MXT GI0NCA GI0RQK GI0RTN GI0THZ GI0UVD GI3DZE GI3KDR GI3NVW GI3OQR GI3PDN GI3POS GI3SG GI4AAM GI4BQI GI4CFQ GI4DOH GI4DYE GI4EBS GI4FUE GI4FUM GI4JTF GI4KSH GI4MWA GI4NKB GI4OWA GI4SJQ GI4SNA GI4SZW GI4VIV GI4VKS GI4XSF GI5K GI6DEY GI6FHD GI6K GI7AXB GI7LHG GI7THH GI8HXY GJ2A GJ3WW GJ3YHU GJ4CBQ GJ6YB GJ7DNI GM0ADX GM0AXY GM0B GM0BKC GM0CDV GM0DBW GM0EGI GM0ELP GM0F GM0FGI GM0FNE GM0FSV GM0GAV GM0GMN GM0GOV GM0IIO GM0KWW GM0NAI GM0NBM GM0NKX GM0OAA GM0OGN GM0ONX GM0OQV GM0RML GM0SCA GM0TQJ GM0UDL GM0UUB GM0VIT GM0VRP GM0WED GM1DSK GM1F GM1J GM1SRX GM2T GM2V GM2Y GM3AXI GM3C GM3CFS GM3FDN GM3ITN GM3JKS GM3JOB GM3JQJ GM3JSX GM3LKY GM3LKY/P GM3MZX GM3NHQ GM3NSQ GM3OXX GM3POI GM3PPG GM3SEK GM3SVW GM3T GM3TAL GM3TCW GM3UA GM3UHT GM3VTH GM3VTY GM3W GM3WIJ GM3WOJ GM3WUX GM3YEH GM3YOR GM3YTS GM3ZBE GM3ZRT GM3ZXL GM4AFF GM4AGG GM4AGL GM4AUP GM4BKV GM4BRN GM4CFS GM4CUX GM4CXM GM4ESD GM4EVS GM4FAM GM4FDM GM4FFF GM4HQF GM4IKT GM4JR GM4JYB GM4KGK GM4KLN GM4LER GM4O GM4OSS GM4SDQ GM4SID GM4SLY GM4UBJ GM4ULS GM4UYE GM4UYZ GM4W GM4WLN GM4XMD GM4XQJ GM4YLN GM4YSN GM4YXI GM4ZJI GM4ZNC GM4ZUK GM5A GM5M GM5X GM6MD GM6NX GM6NX/P GM6VCV GM6VVG GM7A GM7AAJ GM7DAJ GM7KFS GM7OAW GM7R GM7TFN GM7TUD GM7UAU GM7V GM7VSB/P GM8GAX GM8SBH GR2HQ GS0TOW GU0SUP GU4EON GU4CHY GU4RUK GU4YOX GU6EFB GU8FBO GW0ANA GW0ETF GW0FEU GW0GEI GW0LBI GW0NPL GW0RYT GW0TKX GW0TSM GW0UDJ GW0VSW GW0VWD GW0WGK GW1CJJ GW1MVZ GW1YQM GW3CBA GW3HGL GW3JSV GW3JXN GW3KDB GW3KGV GW3LDC GW3LEW GW3LNR GW3MCS GW3NAS GW3NJW GW3R GW3SFC GW3SQX GW3UOF GW3XHG GW3XRM GW3YBX GW3YDX GW3YRP GW3YVC GW4AYJ GW4BKG GW4BLE GW4BVE GW4BZD GW4CQZ GW4EVX GW4HDF GW4MVA GW4OGO GW4OH GW4RDW GW4RIB GW4SKA GW4TPG GW4UWR GW5NF GW6JBN GW6NKG GW6PBW/P GW6PMC GW6W GW7BZR GW7ERI GW7X GW8GT GW8IQC GW8NBI GW9T GX3YNN GX4BJC/A GZ5Y GZ7V G0AAA G0ADH G0AEV G0AIX G0AJJ G0AKF G0AOJ G0AOZ G0AZE G0AZH G0AZS G0BFJ G0BHK G0BLB G0BNR G0BRC G0BWB G0BYJ G0CER G0CGL G0CKP G0CKV G0CLP G0CLP/P G0CMP G0CPA G0CTR G0CXW G0DAY G0DBE G0DCK G0DQS G0DRM G0DVJ G0DWO G0DWV G0DZM G0ECJ G0EFO G0EML G0EVQ G0EYO G0EYR G0FDJ G0FDU G0FHM G0FJS G0FPU G0FUN G0FWX G0FYX G0FZI G0GDA G0GDU G0GFQ G0GJS G0GKH G0GMS G0HDB G0HDV G0HIO G0HIS G0HIZ G0HJK G0HMN G0HOF G0HSA G0HVQ G0HZG G0IBN G0ICJ G0IDA G0IEE G0IIQ G0IUM G0IVZ G0IYH G0JHC G0JJG G0JVT G0KBL G0KDS G0KDZ G0KGU G0KJP G0KOM G0KRT G0KYA G0KYS G0LGJ G0LHZ G0LMX G0LRX G0LVX G0LWU G0LZL G0LZX G0LZY G0MBP G0MHC G0MLY G0MMI G0MNN G0MPR G0MRH G0MRY G0MTN G0MUR G0NDE G0NFH G0NOR G0NSL G0NUZ G0NXA G0NZI G0OGD G0OKD G0OKF G0ONH G0OPB G0OPH G0ORC G0ORG G0ORH G0ORS G0OTT G0PCF G0PHY G0PPM G0PSE G0PVR G0PZA G0RAF G0RAH G0REK G0RGJ G0RIF G0RPM G0RQL G0RRM G0RSQ G0RWW G0RXA G0SNG G0SWO G0THY G0TKZ G0TMX G0TOC G0TPH G0TRB G0TSM G0TYS G0TZZ G0UCP G0UGO G0UCH G0UII G0UIQ G0UJA G0UKB G0UKN G0UKX G0UQC G0UZP G0VDZ G0VGS G0VJG G0VOK G0VTI G0VXC G0VXE G0W G0WAT G0WFK G0WHO G0WOU G0WPH G0WPX G0WSA G0WSC G0WWD G0XDI G1A G1BHR G1DJI G1DPL G1DYN G1EFL G1FON G1HHD G1HLT G1IMS G1ISN G1KFB G1KHX G1MIE G1N G1OCN G1OCR G1PIE G1PIR G1RSC G1RVP G1SMT G1SSL G1T G1TIF G1TZC G1UGH G1VDP G1VNV G1WMJ G1XKZ G1XOW G1YLE G1YTV G2AA G2AFV G2B G2BKZ G2BOF G2CP G2DWB G2F G2FM G2FSR G2HDR G2HKU G2JL G2PA G2PB G2W G2YL G3ASG G3B G3BBR G3BDQ G3BFP G3BJ G3CCO G3CSA G3CWW G3DCZ G3DGW G3EKJ G3ESY G3FNZ G3FPQ G3GAF G3GEJ G3GGS G3GHN G3GJX G3GLL G3HAL G3HEJ G3HGE G3HMB G3HQT G3HRH G3HTA G3IAF G3ICO G3IEW G3IFB G3IGU G3IGZ G3IJA G3IJL G3ILO G3ILO/P G3IOE G3IQF G3ITH G3IZD G3JDT G3JFS G3JHS G3JIR G3JJG G3JJZ G3JKB G3JKY G3JMJ G3JMZ G3JNB G3JRM G3JUL G3JUX G3JXC G3JZL G3KAF G3KDP G3KHZ G3KIP G3KKJ G3KKP G3KLH G3KLO G3KLP G3KMA G3KMG G3KML G3KMQ G3KNU G3KOJ G3KOZ G3KSU G3KTH G3KTZ G3KWK G3KWY G3KYF G3KZR G3LAS G3LAZ G3LCS G3LDI G3LET G3LHJ G3LHS G3LIK G3LKY/P G3LKZ G3LLK G3LME G3LNC G3LNP G3LPS G3LPU G3LQP G3LUA G3LUW G3LVP G3LZQ G3MCK G3MEA G3MGW G3MIR G3MLO G3MPB G3MUO G3MXH G3MYI G3MZV G3NAE G3NBC G3NCN G3NDC G3NDJ G3NEO G3NFB G3NGD G3NIC G3NKC G3NKQ G3NKR G3NKS G3NLY G3NOH G3NPF G3NPZ G3NUG G3NWG G3NXT G3NYY G3NYY/P G3OAG G3OAY G3OCA G3OFA G3OGP G3OKA G3OLB G3OND G3OOU G3ORP G3ORY G3OTK/P G3OWO G3P G3PDH G3PGA G3PHO G3PHS G3PIA G3PJK G3PJT G3PJV G3PLP G3PQA G3PSM G3PXT G3PYI G3PYM G3QI G3RAU G3RCE G3RGD G3RHH G3RIK G3RIR G3RKJ G3RLE G3RMD G3RPB G3RSD G3RTE G3RTU G3RTY G3RUO G3RVM G3RWF G3RWL G3RXP G3RXQ G3RZF G3SDC G3SED G3SEM G3SEN G3SET G3SEW G3SGC G3SHF G3SJJ G3SJX G3SNN G3SNU G3SQH G3SVD G3SVK G3SVL G3SWC G3SWH G3SYM G3SZS G3SZU G3TA G3TBK G3TBU G3TDH G3TEV G3TEX G3TJE G3TKF G3TKK G3TLH G3TLY G3TQZ G3TTH G3TTJ G3TVW G3TWG G3TXF G3TZM G3UAA G3UAS G3UCK G3UDA G3UEG G3UFO G3UFY G3UHU G3UJE G3UKV G3ULN G3UML G3UMT G3USE G3UUV G3UYD G3V G3VA G3VAJ G3VAO G3VCA G3VCQ G3VCR G3VDB G3VDL G3VER G3VGR G3VIP G3VIR G3VKW G3VMW G3VMY G3VOT G3VOU G3VPS G3VPW G3VQO G3VTT G3VUS G3VXJ G3VYF G3VYI G3VZM G3WAB G3WCQ G3WCY G3WDS G3WEF G3WFM G3WGV G3WKL G3WKZ G3WMX G3WPD G3WPF G3WPH G3WRO G3WRR G3WVG G3WVO G3WW G3WYN G3WYW G3WZT G3XAN G3XAP G3XAQ G3XDY G3XGC G3XGD G3XLB G3XLW G3XMM G3XOV G3XPO G3XQX G3XSD G3XSV G3XTT G3XUD G3XVF G3XVN G3XVR G3XYC G3XYF G3XYP G3XZG G3XZQ G3YAJ G3YBO G3YBT G3YBY G3YEC G3YER G3YEU G3YFE G3YHV G3YIQ G3YJD G3YMC G3YNN G3YOA G3YPE G3YPN G3YRO G3YTY G3YXX G3YYD G3Z G3ZAY G3ZBU G3ZDF G3ZFC G3ZGC G3ZGC/A G3ZHE G3ZKN G3ZNR G3ZOH G3ZQH G3ZQQ G3ZRJ G3ZRS G3ZSS G3ZVW G4A G4ABX G4ACS G4ADJ G4ADR G4AEH G4AFJ G4AFS G4AFU G4AHJ G4AHK G4AJC G4ALD G4ALH G4AMN G4AMT G4AON G4APO G4AQG G4AQK G4ARI G4ASR G4ATA G4AXX G4AYR G4AZN G4BEE G4BJG G4BJM G4BUE G4BUO G4BVY G4BWF G4BXT G4BXY G4BYG G4BZP G4C G4CCZ G4CFW G4CGG G4CI G4CKH G4CLA G4CLN G4CMQ G4CUS G4CVC G4CWH G4CXQ G4CYB G4CZB G4CZP G4DBW G4DBX G4DCV G4DDL G4DDX G4DFI G4DJC G4DJJ G4DJX G4DOQ G4DRS G4DSD G4DYO G4DZL G4DZW G4EBK G4EDG G4EGU G4EHN G4EHT G4EKT G4ELJ G4ELY G4ELZ G4ENZ G4EOF/P G4ERW G4EZR G4EZT G4FAD G4FAL G4FFE G4FFN G4FKA G4FKG G4FKH G4FNL G4FOC G4FON G4FPA G4FSU G4FTC G4FTP G4FUF G4FVK G4GEE G4GIR G4GLV G4GSA G4GVB G4GVN G4HEE G4HFP G4HHJ G4HHX G4HOM G4HUN G4HVC G4HZV G4IIY G4IJD G4IKR G4ILO G4IPZ G4IUF G4IUP G4IWO G4IXF G4JKZ G4JRY G4JSR G4JZO G4KFT G4KGL G4KHG G4KHM G4KIU G4KLF G4KMH G4KNO G4KPN G4KRN G4KUE G4KZD G4LDL G4LIR G4LJU G4LMW G4LMX G4LPD G4LRP G4LWB G4LYM G4MEM G4MKP G4MKR G4MLA G4MUL G4MZJ G4NDM G4NFS G4NJW G4NKT G4NRZ G4NTN G4NXG G4OBB G4OBC G4OBK G4OCO G4OEC G4OGB G4OJB G4OPL G4ORC G4OSB G4OTU G4OWG G4OWT G4OYC G4PBP G4PEF G4PIQ G4PLE G4PLY G4PNC G4POF G4PTJ G4PWA G4RCD G4RCG G4RFC G4RFR G4RGK G4RKO G4RLS G4RNK G4RQI G4RRA G4RRM G4RUW G4RWD G4RYV G4SGI G4SJG G4SJX G4SMD G4SNU G4SOF G4STH G4TGK G4TNB G4TPO G4TQF G4TSH G4TSN G4TTS G4UDU G4UEL G4UFK G4UFU G4UJS G4UKP G4UZN G4VCJ G4VFG G4VHH G4VMM G4VMX G4VSS G4VTO G4VUA G4VUD G4VVP G4VXE G4WBV G4WFQ G4WGE G4WPD G4WQZ G4WUG G4WXZ G4WZI G4XDD G4XEX G4XPE G4XRV G4XRX G4YLO G4YPV G4YRF G4ZCG G4ZCS G4ZFE G4ZFJ G4ZGP G4ZIB G4ZOB G4ZOY G4ZUL G4ZVB G5D G5E G5FZ G5G G5KC G5KN G5LP G5N G5O G5W G5XW G5YC G6A G6AY G6BDV G6BOX G6CSY G6DZH G6EVD G6FLK G6IRR G6LSO G6LUG G6MC G6NUM G6NYG G6OKU G6OTZ G6PWY G6PZ G6RGA G6TEL G6TUH G6UBM G6UW G6UWK G6VS G6WWM G6WYH G6XN G6YGZ G6YKT G6ZAC G7AGZ G7AKM G7BHU G7BRZ G7BXG G7BXU G7BZD G7CLY G7DDN G7DPE G7EKJ G7FSI G7GPL G7ITD G7IYF G7KHV G7KMZ G7LRR G7MBH G7MJX G7N G7NAL G7NKS G7NOT G7OOD G7PVZ G7RAU G7RTI G7SKR G7SOZ G7SQC G7SQW G7SSE G7TGK G7TMU G7TPL G7TWC G7UOU G7UTB G7VJR G7VNN G7VRK G7WBX G7WFA G8AFN G8APB G8BIG G8BUN G8CCL G8CKT G8CMU G8CTJ G8DQP G8DVK G8DYT G8EYC G8FCQ G8FMJ G8FMJ/P G8GBY G8GHD G8GXP G8HBS G8HDS G8HGP G8HPW G8HQJ G8HXE G8JIT G8JXV G8KVP G8LBS G8LED G8LIK G8LOJ G8LRS G8MIA G8MKQ G8NRP G8OEF G8P G8PQ G8RCK G8UBJ G8ULM G8UXY G8VOI G8VTY G8WQE G8XDX G8XTJ G8XXJ G8ZRE G9M HA/YO5KAD/P HA0ANA HA0BW HA0BY HA0DD HA0ER HA0GK HA0HV HA0HW HA0IH HA0IL HA0IM HA0IT HA0IV HA0KLL HA0LC HA0LG HA0LP HA0LW HA0ML HA0MO HA0MS HA0NAR HA0NGT HA1A HA1AD HA1AG HA1AR HA1AV HA1BC HA1CA/P HA1CW HA1DAE HA1DK HA1FF HA1Q HA1RS HA1SD HA1SN HA1SU HA1TAB HA1TI HA1TNX HA1TO HA1VE HA1WD HA1XU HA1XY HA1YI HA1ZH HA1ZN HA1ZU HA1ZV HA1ZZ HA100KONE HA2EBE HA2EOA HA2EOD HA2EOJ HA2EQD HA2ERO HA2ESM HA2G HA2MJ HA2MN HA2NM HA2PP HA2QW HA2R HA2RQ HA2SG HA2SJ HA2VH HA2VR/P HA2YL HA25NAR HA3DMF HA3DX HA3E HA3FT HA3FTA HA3FZ HA3GE HA3GJ HA3GO HA3GQ HA3HF HA3HK HA3HO HA3HX HA3IS HA3JB HA3JO HA3LGB HA3LI HA3LN HA3MN HA3MU HA3MY HA3NU HA3/N1BCL HA3OD HA3OK HA3OU HA3OV HA3PT HA3RD HA3UU HA3YE HA4AA HA4FB HA4FV HA4FY HA4YF HA4YO HA5AB HA5AEZ HA5AF HA5AGS HA5AO HA5AQ HA5ARX HA5AWT HA5BA HA5BKV/P HA5BPS/P HA5BSW HA5BVG HA5CQ HA5DA HA5DE HA5FA HA5FM HA5FQ HA5GN HA5GO HA5GY HA5HH HA5JI HA5KDQ HA5KG HA5KID HA5KKC HA5KN HA5KQ HA5KY HA5LV HA5LZ HA5MK HA5MO HA5NB HA5OAF HA5OB HA5OM HA5OMM HA5OO HA5OV HA5OW HA5PP HA5PT HA5RDP HA5TI HA5UA HA5UK HA5UY HA5VJ HA5VZ HA5W HA5WA HA5X HA6D HA6FQ HA6IAM HA6IAY HA6IGM HA6KNX HA6KZS HA6M HA6NL HA6NN HA6NW HA6NY HA6OA HA6OD HA6OL HA6OZ HA6PF HA6PJ HA6PQ HA6PS/P HA6PX HA6QR HA6VA HA6VB HA6VH HA6WTM/P HA6ZQ HA7A HA7AVU HA7CN HA7GN HA7JDV HA7JQK HA7JTR HA7LJ HA7LW HA7MB HA7ML HA7MS HA7MW HA7MY HA7NK HA7PF HA7PL HA7PO HA7RY HA7SBQ HA7SG HA7SQ HA7TM HA7UG HA7UI HA7UL HA7UW HA7VK HA7YS HA7ZT HA8A HA8AAA HA8AL HA8AR HA8BE HA8BQ HA8BR HA8BT HA8CQ HA8DM HA8DT HA8EK HA8EN HA8EO HA8EV HA8FK HA8FM HA8GT HA8GY HA8IB HA8IC HA8IE HA8IH HA8JP HA8JV HA8KVK HA8KW HA8LKM HA8LLK HA8LNA HA8LNN HA8MD HA8MT HA8MV HA8PH HA8QB HA8QC HA8QZ HA8RC HA8RJ HA8RM HA8SSG HA8TI HA8TP HA8UT HA8V HA8VK HA8VX HA8WO HA8WP HA8WY HA8WZ HA8YU HA8ZB HA9DMD HA9PP HA9RC HA9RE HA9RT HA9RU HA9SU HB0CC HB0/DH2FW HB0/DJ9CB HB0/DK4YJ HB0/DK9TN HB0/F5LMJ HB0/HB9AON HB0/HB9LCW HB3YAV HB3YDJ HB3YFC HB3YFQ HB3YRB HB3YVF HB3YVZ HB4FE HB4FL HB9AA HB9AAL HB9AAP HB9AAQ HB9AAY HB9AAZ HB9ABB HB9ACC HB9ADC HB9AEP HB9AEV HB9AFH HB9AFI HB9AGA HB9AGH HB9AGO HB9AII HB9AIY HB9AJ HB9AJG HB9AJM HB9AJP HB9AJW HB9AKB HB9ALH HB9ALO HB9AMB HB9AMO HB9ANJ HB9ANM HB9AON HB9APJ HB9AQA HB9AQW HB9ARF HB9ARK HB9ARL HB9ATG HB9ATX HB9AUK HB9AUS HB9AVE HB9AVK HB9AWS HB9AYZ HB9AZZ HB9BAP HB9BEI HB9BGF HB9BHW HB9BHY HB9BIN HB9BIQ HB9BJJ HB9BJL HB9BLQ HB9BMY HB9BNK HB9BOO HB9BOS HB9BPV HB9BPX HB9BQP HB9BQY HB9BRJ HB9BRU HB9BTI HB9BTQ HB9BXE HB9BXQ HB9BYQ HB9BZA HB9CA HB9CAL HB9CAT HB9CBR HB9CCZ HB9CEI HB9CEX HB9CEY HB9CGL HB9CGO HB9CGW HB9CIC HB9CIN HB9CIP HB9CKM HB9CMG HB9CNR HB9CNU HB9CNY HB9COH HB9COJ HB9COP HB9COZ HB9CPS HB9CQL HB9CQS HB9CRV HB9CSM HB9CUK HB9CVE HB9CVQ HB9CXR HB9CXZ HB9CYT HB9CYV HB9CZF HB9CZR HB9DAI HB9DAX HB9DBK HB9DCL HB9DCM HB9DDE HB9DDO HB9DDS HB9DDZ HB9DES HB9DFD HB9DHA HB9DHG HB9DNG HB9DOS HB9DPO HB9DQH HB9DQJ HB9DRI HB9DRM HB9DRS HB9DSE HB9DSU HB9DUP HB9DUR HB9DUY HB9DVH HB9DVT HB9DVZ HB9DWL HB9DWR HB9DXA HB9EAZ HB9EBC HB9EDG HB9EDM HB9EDQ HB9EE HB9EFJ HB9EGA/P HB9EHJ HB9EHP HB9EHV HB9EI HB9EIY HB9EIZ HB9ELD HB9ELF HB9ELS HB9ELV HB9EP HB9EPH HB9EPM HB9ESC HB9ESS HB9ETR HB9FAI HB9FAP HB9FAQ HB9FAW HB9FBG HB9FBM HB9FBS HB9FBU HB9FMN HB9FMT HB9FMU HB9FNX HB9G HB9GCE HB9GL HB9H HB9HC HB9HFM HB9HFN HB9HI/P HB9HLM HB9HQ HB9HQA HB9HQX HB9CHY HB9ICC HB9IIO HB9IIY HB9IK HB9IQB HB9IQP HB9JBN HB9JF HB9JNM HB9JOE HB9JW HB9KAM HB9KAR HB9KBB HB9KNA HB9KNY HB9KOG HB9KT HB9LBL HB9LCW HB9LF HB9LL HB9MCF HB9MFM HB9MGX HB9MHR HB9MI HB9MKV HB9MZI HB9OAB HB9OCR HB9ODK HB9ODP HB9OK HB9ON HB9PGR HB9PJT HB9PL HB9PLW HB9PNR HB9QA HB9QR HB9QT HB9RDE HB9RE HB9RJD HB9RJG HB9RVE HB9SLO HB9SVT HB9TI HB9TKS HB9TLM HB9TMW HB9TNU HB9TNW HB9TOC HB9TON HB9TOX HB9TPK HB9TPT HB9TQL HB9TRT HB9TSA HB9TST HB9TSU HB9TSW HB9TTX HB9TUD HB9TVR HB9TWS HB9TWU HB9TWZ HB9TYJ HB9TZR HB9UU HB9VID HB9WDY HB9XAW HB9YBQ HB9YC HB9ZAG HB9ZCF HB9ZE HB9ZS HB9ZV HB9ZY HB9ZZ HC1HC HC1JQ HC1MD HC2A HC2AD HC2AQ HC2GF HC2GO HC2GT HC2S HC2SL HC5VF HC5WW HC7AE HC8A HC8GR HC8/K6AW HC8N HD2A HD2M HE8AAA HE8AFI HE8AOF HE8AUS HE8AWS HE8BIN HE8BRU HE8CIC HE8CSM HE8CUK HE8CXZ HE8CZF HE8DAX HE8DDE HE8DSY HE8DWR HE8EBC HE8EFJ HE8FAP HE8FR HE8HLM HE8MH HE8MXY HE8OK HE8PKP HE8TJM HE8TMW HE8TOC HE8TST HE8TSU HE8TUD HE8TUZ HE8WW HE8ZZ HF4K HF5ES HF50BORY HF65PW HF70M HF70W HF80B HF80IU HF80JMR HF94JEN HF94KE HG0A HG0HQ HG0R HG1A HG1DX HG1R HG1S HG1W HG1X HG1Z HG10P HG1848I HG2W HG2X HG3A HG3DX HG3FMZ HG3FUG HG3IPA HG3M HG3R HG3W HG30FHA HG4F HG4I HG400HV HG5A HG5C HG5O HG5XA HG6N HG6V HG6W HG6Y HG60VOTT HG7HQ HG7T HG8C HG8DX HG8K HG8N HG8R HG8W HG8YKO HG8Z HH2/I8UZA HI3A HI3CC HI3CCP HI3EPR HI3FVA HI3K HI3/LY3UM HI3T HI3TEJ HI3/W1JNZ HI8A HI8CJG HI8LAM HI8PJP HI8PLE HI8PLE/7 HK0/EA7HEJ HK0T HK1A HK1AA HK1J HK1KXA HK1KYR HK1N HK1NK HK1R HK1T HK1W HK1X HK3CQ HK3J HK3JJH HK3JJH/1 HK3/KC2LSD HK3LGO HK3O HK3OZ HK3Q HK3TU HK3UA HK3W HK4EB HK4SAN HK6P HK8EA HL0HQ HL0MBC HL1AV HL1CBH HL1IBG HL1IWD HL1/SP5AUC HL1VAU HL1/WX8C HL2AEJ HL2BM HL2CFY HL2DC HL2DYS HL2FDW HL2/KF6RCP HL2KV HL2KXT HL2LTX HL2MTK HL2OLN HL2PCU HL2QBT HL2ST HL2SU HL2UOK HL2UVH HL3AMO HL3EPH HL3IB HL3IUA HL4CCM HL4CEL HL4CJG HL4GKR HL4RBR HL4XM HL5AP HL5BLI HL5BMX HL5FKP HL5FXP HL5JCB HL5JGR HL5OC HL5QY HL5UOG HL5/VK6DXI HL5YI HL9A HP1AC HP1ALX HP1AVS HP1BYS HP1DCP HP1/IZ6BRN HP1RIS HP1WW HP1XX HP3AK HP3DX HP3FTD HP3TA HQ1L HQ2R HQ2T HQ2W HQ9R HR1/K2LCT HR1RTF HR2DMR HR2J HR2OAV HR9/WQ7R HS0AC HS0EHF HS0/W4ESF HS0ZBS HS0ZCW HS0ZCX HS0ZDG HS0ZDJ HS0ZDR HS0ZDX HS0ZDY HS0ZED HS0ZEE HS0ZFK HS0ZGD HS0ZGV HS0ZGW HS0ZHB HS0ZHC HS0ZHI HS0ZIN HS0ZIQ HS1CKC HS1CHB HS8JYX HS8KGG HT2N HV0A HV4NAC HZ1DG HZ1FS HZ1GW HZ1MD HZ1PS HZ1SK H2E H2Q H2T H22H H44MS H44MY H7A IA3IPY IB0R IC8AJU IC8C IC8FBU IC8OZM IC8POF IC8SCI IC8TEM IF9A IF9ZWA IG9D IG9/I2ADN IG9R IG9S IG9U IG9W IG9X IH9YMC II1H II1W II2C II2CV II2S II20CJ II3L II4A II5P II5W II7K II7M IK0ATK IK0AUO IK0BOU IK0BZE IK0CNA IK0EFR IK0EIE IK0ESW IK0FMB IK0FUX IK0FWI IK0GDG IK0GHB IK0HBN IK0HFO IK0HIT IK0CHU IK0IKE IK0IOL IK0ISD IK0IXI IK0JFW IK0JNI IK0LNN IK0MHR IK0MIB IK0NSF IK0OZD IK0OZH IK0PEA IK0PHY IK0PRG IK0PXC IK0RCY IK0SDQ IK0SXU IK0TUM IK0TWN IK0UTM IK0VJH IK0VKL IK0VSY IK0VTG IK0VVG IK0VXG IK0WHN IK0WRB IK0XBX IK0XFD IK0XIH IK0YQJ IK0YUT IK0YVV IK0ZSN IK1ADH IK1ASR IK1BBC IK1BHS IK1BPL IK1CCS IK1DFH IK1DPA IK1DQG IK1DQW IK1EZC IK1FLE IK1FVO IK1FXX IK1GKD IK1GKH IK1GPG IK1GPK IK1HSS IK1HXN IK1IXG IK1JJM IK1JNS IK1JTQ IK1JXY IK1LJO IK1LYQ IK1MDF IK1MEG IK1MJG IK1MNG IK1NEG IK1NPP IK1PMR IK1QBT IK1QFP IK1QHB IK1RAG IK1RGK IK1RKN IK1RKU IK1RQQ IK1SOW IK1SPE IK1SPR IK1TAZ IK1TJK IK1TWC IK1VCE IK1VDN IK1VEK IK1WEG IK1WGX IK1WJN IK1WJR IK1XHZ IK1XPK IK1YDB IK1YED IK1YEK IK1ZFO IK1ZNL IK1ZOE IK1ZOF IK1ZYO IK2AHB IK2AHG IK2AHR IK2AIT IK2ANI IK2AOO IK2APW IK2AQZ IK2AUK IK2AVH IK2BBU IK2BCP IK2BDR IK2BLA IK2BLS IK2BSK IK2BUF IK2CFD IK2CIK IK2CIO IK2CLB IK2CMN IK2CZQ IK2DAD IK2DED IK2DFZ IK2DJV IK2DKX IK2DPP IK2DZN IK2EAD IK2EBP IK2ECP IK2EGL IK2EKO IK2FCO IK2FIL IK2FIQ IK2FSS IK2GPQ IK2GWH IK2GZU IK2HBF IK2HDF IK2HKN IK2HKT IK2HLM IK2CHZ IK2IKW IK2ILH IK2IQD IK2JHD IK2JYT IK2JYW IK2LFD IK2LOL IK2LTR IK2MKM IK2MLS IK2MLY IK2MPR IK2NCF IK2NUX IK2NVE IK2PFL IK2PTR IK2QEB IK2QEI IK2QIK IK2QIN IK2QLX IK2QPR IK2REA IK2RGT IK2RLS IK2RMZ IK2RZP IK2RZQ IK2SAI IK2SAR IK2SAU IK2SGB IK2SGF IK2SND IK2SVF IK2TDM IK2TYP IK2UCK IK2UEC IK2UEK IK2UJF IK2UJS IK2UTT IK2UZQ IK2VFR IK2VFW IK2VIW IK2WFJ IK2WFN IK2WJT IK2WPO IK2WQK IK2WXQ IK2WXV IK2WYI IK2WYW IK2WZM IK2XDE IK2XDF IK2XEF IK2XRO IK2YCW IK2YFT IK2YGZ IK2YSJ IK2YXB IK2YXP IK2ZEC IK3AES IK3ASM IK3BTK IK3BVD IK3CST IK3DQU IK3DRO IK3DVY IK3GER IK3GES IK3GHW IK3GID IK3HHX IK3HMB IK3HUG IK3IUE IK3IUL IK3JBP IK3MLF IK3OBX IK3OCD IK3OGN IK3OII IK3ORD IK3OYY IK3PQG IK3PQH IK3QAR IK3RET IK3SCB IK3SHP IK3SSJ IK3SSO IK3SSW IK3STG IK3SWB IK3TPP IK3TZB IK3UMZ IK3UNA IK3UNA/1 IK3VBB IK3VUT IK3VUU IK3WOI IK3XJL IK3XJP IK3XTY IK3YBX IK4ALM IK4AUY IK4BHO IK4CIE IK4CLF IK4DCT IK4DCX IK4DRR IK4DRY IK4EWN IK4GBU IK4GME IK4GRO IK4HAQ IK4HKL IK4HLQ IK4ICS IK4JQO IK4JQS IK4LAI IK4MFM IK4MGP IK4NPD IK4NQW IK4OMU IK4PKK IK4PMB IK4QJF IK4RQE IK4RQJ IK4RVG IK4SPB IK4TVP IK4UNH IK4UOA IK4UPB IK4VET IK4VFB IK4WLA IK4WLU IK4WMB IK4WMH IK4XCL IK4XQT IK4YAZ IK4ZGO IK4ZHH IK5AAB IK5ACO IK5AFJ IK5AMB IK5BAF IK5BCM IK5BDG IK5DHL IK5DVW IK5EKB IK5EKL IK5FCK IK5FKF IK5FQX IK5GFC IK5GQK IK5HHA IK5IFH IK5IIY IK5JXR IK5MEJ IK5MEN IK5OJB IK5PVX IK5PWB IK5PWN IK5PWQ IK5QPV IK5ROP IK5RUN IK5SRF IK5TBI IK5TTA IK5UAN IK5UAN/5 IK5WGK IK5XLB IK5YJK IK5ZAJ IK5ZQC IK5ZTT IK5ZUB IK5ZWU IK6BGJ IK6CNM IK6CWQ IK6EIW IK6EUH IK6FAW IK6FTZ IK6FWJ IK6GQC IK6GTF IK6HRB IK6IHN IK6IJF IK6IKJ IK6LBV IK6LLJ IK6MNB IK6MND IK6NUZ IK6OIN IK6PTH IK6SIO IK6SNR IK6VXO IK6XEJ IK6YXM IK6ZER IK7BEF IK7BPV IK7CMY IK7FMQ IK7FPU IK7GFS IK7JTF IK7JWY IK7LMX IK7NXU IK7OFI IK7PTX IK7RVY IK7UFW IK7UXU IK7WPC IK7WPD IK7XLU IK7XLW IK7YCE IK7YTT IK7YZG IK8ARF IK8AWH IK8BIZ IK8BQE IK8DNJ IK8DUI IK8EJN IK8ENH IK8EPC IK8GYL IK8GYQ IK8HBA IK8HCG IK8HJC IK8HMJ IK8HTM IK8IOZ IK8IPL IK8JDH IK8JUY IK8LJA IK8LXI IK8MDK IK8MIG IK8MYJ IK8MYM IK8NBE IK8NII IK8NIJ IK8NRW IK8NSI IK8NSR IK8OFW IK8OZZ IK8PLE IK8QQO IK8RIJ IK8SCR IK8SEU IK8TEM IK8TEO IK8TVG IK8UND IK8WEJ IK8XFR IK8XIM IK8YDP IK8YFU IK8YJQ IK8YJQ/P IK8YOQ IM0C IM0/IK0FMB IN3ADW IN3ADW/P IN3AEF IN3AFT IN3BAO IN3BFW IN3BIY IN3BZY IN3DEI IN3DOV IN3EAR IN3FFN IN3FHE IN3HUU IN3IJL IN3IKF IN3IZT IN3JJI IN3JRZ IN3KCV IN3KMY IN3MNS IN3MOD IN3MQT IN3NJB IN3OWY/I2 IN3OWY/2 IN3PWE IN3QBR IN3QCI IN3REZ IN3TKF/4 IN3TLJ IN3UFW IN3VHA IN3VVK IN3VXH IN3WRR IN3XUG IN3XWE IN3YGW IN3YKS IN3ZNR IN3ZWF IO1A IO1T IO2A IO3B IO3J IO3N IO3O IO3P IO3R IO3T IO3X IO4T IO5A IO5O IO6A IO7J IO8V IP9BGS IQ0AL IQ0CI IQ0EF IQ0OS IQ0RM IQ1BP IQ1EE IQ1NO IQ1RY IQ1SM IQ1TO IQ2CJ IQ2CU IQ2LS IQ2MG IQ2VC IQ3CG IQ3FX IQ3GA IQ3GO IQ3ME IQ3MO IQ3PN IQ3RK IQ3SD IQ3TN IQ3UD IQ4AX IQ4FC IQ4RN IQ5AE IQ5DY IQ5FI IQ5LU IQ5MS IQ5PO IQ5PT IQ7AF IQ7DV IQ8LR IQ8MD IQ8PL IQ8PQ IQ8RB IQ8RB/1 IQ9BF IQ9DE IQ9GD IQ9NI IQ9PA IR0Z IR1A IR1C IR1G IR1I IR1K IR1M IR1R IR1W IR1Y IR2C IR2K IR2M IR2Y IR3C IR3W IR3X IR3Y IR3Z IR4B IR4E IR4M IR4T IR4X IR5T IR5X IR6D IR6T IR7A IR8A IR8P IR8R IR8W IR9P IR9W IR9X IR9Y IR9Z IS0A IS0AFM IS0ANY IS0B IS0BKS IS0DFC IS0EBO IS0GQX IS0GRB IS0/G1VNV IS0HQJ IS0IEK IS0IGV IS0/IK5EKB IS0/IT9VDQ IS0/K7QB IS0LFZ IS0LYN IS0NHT IS0/OK1CZ IS0/OL0A IS0OMH IS0RDY IS0RZG IS0SQJ IS0SWW IS0XDA IS0YEK IS0YTA IT9ABN IT9ABY IT9ACN IT9AJP IT9AQV IT9AST IT9AUG IT9AUH IT9AUT IT9AXQ IT9AXZ IT9BLB IT9BUN IT9CCQ IT9CJC IT9DFI IT9EJP IT9EJW IT9ELD IT9ESI IT9ESW IT9FGA IT9FXY IT9GAC IT9GSF IT9HBT IT9HLR IT9ICS IT9IFI IT9IMJ IT9INO IT9IYZ IT9IZY IT9JAV IT9JDH IT9JOF IT9JQY IT9KCD IT9LED IT9LKX IT9LNH IT9MNP IT9MRZ IT9MUO IT9MYY IT9NOV IT9PAD IT9PCU IT9PKO IT9PPG IT9PQJ IT9QDS IT9QQO IT9QQP IT9RBW IT9RGY IT9RKR IT9RWB IT9RYJ IT9RZU IT9SFT IT9SGN IT9SMU IT9SSI IT9STX IT9TFX IT9UFP IT9VDQ IT9VPT IT9WTY IT9XTP IT9YAO IT9YHR IT9YVO IT9ZAQ IT9ZAU IT9ZGY IT9ZIR IT9ZMX IT9ZRU IT9ZSB IT9ZVJ IT9ZVL IT9ZZO IU0R IU1A IU1HQ IU2A IU2HQ IU2P IU2R IU3AC IU4HQ IU5HQ IU8HQ IU9A IU9HQ IU9T IU9X IV3AOL IV3APV IV3ARJ IV3AVQ IV3AZV IV3BEI IV3BKH IV3BYT IV3CGJ IV3CTW IV3DSH IV3DXW IV3DYS IV3EAD IV3EFE IV3EHH IV3EPO IV3FAS IV3FIV IV3GOW IV3GTH IV3HYD IV3IDP IV3IFN IV3IFY IV3IQY IV3IUM IV3IXN IV3IYH IV3IZU IV3JCC IV3JVJ IV3JWY IV3KAS IV3KFB IV3KSE IV3KVC IV3KYQ IV3LNQ IV3MGN IV3MRK IV3NBA IV3NVB IV3NVN IV3NVN/P IV3OKO IV3PGQ IV3PRK IV3RAV IV3RAZ IV3RCH IV3RJT IV3RLB IV3RVN IV3SKB IV3TIQ IV3TMV IV3TQE IV3TRK IV3TUO IV3UHL IV3UT IV3VBM IV3VER IV3VSN IV3WJP IV3XHA IV3XHM IV3XNF IV3XPP IV3XWD IV3XZG IV3YER IV3YIB IV3YIM IV3YND IV3YYK IV3ZIZ IV3ZUY IV3ZXF IW0AFS IW0AGX IW0BCF IW0BLW IW0BMC IW0BNW IW0BSQ IW0BYL IW0BZD IW0CGT IW0CJE IW0DGJ IW0DJB IW0DUA IW0EAC IW0EFA IW0GTA IW0GVG IW0GXY IW0GYC IW0HBY IW0HEX IW0HLE IW0HLZ IW0HOU IW0HQE IW0QO IW0RVQ IW0SAF IW0UII IW1ARB IW1AWH IW1AYD IW1CKJ IW1CQ IW1DFU IW1DMC IW1ECY IW1FGY IW1FNW IW1FPK IW1FZR IW1GAL IW1GB IW1GJJ IW1GPT IW1PDP IW1PNJ IW1PPM IW1PUR IW1QLH IW1QN IW1RAX IW1RGP IW1RGS IW1RHR IW1RIU IW1RMD IW2AF IW2BAC IW2BAI IW2BNA IW2BZY IW2CAM IW2CLM IW2ETR IW2FIV IW2FND IW2FUT IW2GRA IW2HAJ IW2HUS IW2JRV IW2KIR IW2LHE IW2LLH IW2MJQ IW2MNT IW2MXY IW2MYG IW2MYH IW2MYV IW2MZX IW2NEF IW2NRI IW2NUI IW2NWV IW2NYG IW3AAD IW3BTR IW3EKH IW3EOL IW3GGU IW3GRG IW3GXW IW3HXR IW3IFJ IW3IIP IW3ILM IW3IMM IW3QAF IW3RQL IW3RUA IW3SGT IW3SMU IW3SOM IW3SQY IW3SRC IW3SRG IW3SSA IW4AOT IW4BTN IW4DQY IW4EGX IW4EQI IW5AB IW5ADB IW5ALG IW5BEN IW5BT IW5CBK IW5CI IW5CWA IW5DLY IW5DPF IW5ECP IW5EDI IW5EFX IW5EHY IW5EID IW5EIJ IW5ELA IW5ELL IW5ELR IW6AFT IW6ASD IW6ATQ IW6CJM IW6DGJ IW6DRH IW6NZY IW6PWC IW7BIM IW7DEC IW7EBE IW7ECJ IW7EDB IW7EFC IW8AWR IW8BAK IW8DCS IW8DON IW8EHK IW8ELR IW8EXE IW8FEA IW8PQ IW8QIE IW8RQA IW8RRF IW9ANR IW9BCW IW9CTR IW9DNI IW9FDD IW9FI IW9FRA IW9FRB IW9GRL IW9GUR IW9GYL IW9HEB IW9HHB IW9HII IW9HIK IW9HLI IW9HQP IX1BFL IX1CVF IY0GM IY1GM IY1GMN IY1NGM IY2M IY3GM IY3XX IY4FGM IY8GM IZ0ADG IZ0AEZ IZ0ARL IZ0BNR IZ0BNV IZ0BVU IZ0CEZ IZ0CGV IZ0CIV IZ0CLS IZ0COI IZ0DGZ IZ0DIB IZ0DKZ IZ0DXD IZ0DXI IZ0EGM IZ0EHL IZ0ESL IZ0EVK IZ0EYP IZ0EYP/8 IZ0FBJ IZ0FKE IZ0FUW IZ0FVD IZ0FVH IZ0FWD IZ0FWE IZ0FZM IZ0GIY IZ0GKB IZ0GMS IZ0GVR IZ0GXM IZ0GYP IZ0HAP IZ0CHD IZ0IIY IZ0INX IZ0KBA IZ0KBR IZ0KBW IZ0MJE IZ0MQN IZ0MTF IZ0MTV IZ0NRG IZ0OTB IZ0OVZ IZ0OWC IZ0PAD IZ0PAU IZ0PED IZ0PMV IZ0PSA IZ0PSC IZ0PTY IZ0PXT IZ0RCP IZ0RMV IZ0RPZ IZ0RTP IZ0TTE IZ1ANK IZ1ANU IZ1ANZ IZ1AOC IZ1AZA IZ1BCS IZ1BII IZ1BZS IZ1BZV IZ1CCE IZ1CCF IZ1CLA IZ1CQZ IZ1DBY IZ1DFG IZ1DGG IZ1DMI IZ1DNJ IZ1DNQ IZ1DUG IZ1DUI IZ1DXS IZ1FBC IZ1FHF IZ1FUM IZ1FYQ IZ1GAR IZ1GCM IZ1GCQ IZ1GCV IZ1GIP IZ1GJK IZ1GLO IZ1GLT IZ1GLX IZ1GQJ IZ1GWW IZ1GZF IZ1HBC IZ1HIV IZ1JKH IZ1JLF IZ1JLG IZ1JLN IZ1JLP IZ1JMN IZ1JTH IZ1KGY IZ1KIM IZ1LAD IZ1LBG IZ1LGV IZ1LHT IZ1MDJ IZ1MHL IZ1MHQ IZ1MHX IZ1MHY IZ1MKB IZ1MKP IZ1MKZ IZ1MLQ IZ1MRO IZ1NBX IZ1NES IZ1OMY IZ1OQB IZ1OSP IZ1PHT IZ1PKV IZ1PLU IZ1POA IZ1RFL IZ2ABI IZ2ABN IZ2ACD IZ2ACM IZ2AJE IZ2AMW IZ2AVK IZ2BKA IZ2BVL IZ2BZP IZ2CPO IZ2CSX IZ2DII IZ2DMV IZ2DPX IZ2DVI IZ2EAS IZ2EER IZ2EEV IZ2EID IZ2EVH IZ2EWM IZ2EWR IZ2FDY IZ2FFK IZ2FLX IZ2FME IZ2FOB IZ2FOS IZ2GIU IZ2GMT IZ2GNQ IZ2GOT IZ2GRG IZ2IHO IZ2IPF IZ2JCD IZ2JNN IZ2JPN IZ2JQP IZ2KPE IZ2KPI IZ2KRZ IZ2KTE IZ2KTF IZ2KXC IZ2LQD IZ2LSC IZ2MHT IZ2NBD IZ2NYY IZ2NZQ IZ2NZZ IZ2OBS IZ2ODM IZ2OHL IZ2OIF IZ2PCJ IZ2QBH IZ2QDC IZ2QKG IZ2RLO IZ2RPJ IZ2SDK IZ2SNY IZ3ALF IZ3ASB IZ3AWU IZ3BGL IZ3BJA IZ3BUG IZ3CAR IZ3CKG IZ3DBA IZ3DVU IZ3EAV IZ3EAX IZ3EAY IZ3EBA IZ3ENH IZ3EOU IZ3ERM IZ3ESV IZ3ETC IZ3ETU IZ3FJZ IZ3GFZ IZ3GHP IZ3GNG IZ3GOG IZ3GOM IZ3GOO IZ3GYS IZ3IBL IZ3JDL IZ3KIF IZ3KKE IZ3KMY IZ3KNK IZ3KSO IZ3KUY IZ3KVD IZ3LCF IZ3LES IZ3LHX IZ3LJG IZ3LQN IZ3LSZ IZ3LUF IZ3NPZ IZ3NVR IZ3NXC IZ3NYG IZ3NYS IZ3ODB IZ3PYL IZ3PZL/3 IZ3PZM IZ3QHA IZ3QHB IZ4AFW IZ4AIF IZ4AII IZ4AMS IZ4BBF IZ4BQV IZ4COW IZ4CZE IZ4DIG IZ4DIW IZ4DJD IZ4DLR IZ4DPV IZ4DUX IZ4DYP IZ4DYX IZ4DZD IZ4EFN IZ4EFP IZ4FTB IZ4FUA IZ4GOL IZ4GSE IZ4GWE IZ4HVM IZ4IFR IZ4IRO IZ4ISC IZ4IST IZ4JMA IZ4MJP IZ4NIC IZ4NKQ IZ4NSV IZ4ORN IZ4ORO IZ4OSG IZ4OSH IZ4OSM IZ4OUA IZ4OUL IZ4REF IZ5ASZ IZ5AXA IZ5BLP IZ5BRP IZ5BRW IZ5BSA IZ5CMG IZ5CMI IZ5CML IZ5DIY IZ5DKJ IZ5DKO IZ5DKR IZ5DMB IZ5EBL IZ5EKV IZ5EKX IZ5EME IZ5FSA IZ5FSO IZ5GRS IZ5HGI IZ5HPQ IZ5HQB IZ5HSK IZ5ICH IZ5IIN IZ5IJY IZ5ILC IZ5ILD IZ5ILF IZ5ILJ IZ5ILK IZ5ILU IZ5IMD IZ5IOM IZ5IOM/5 IZ5IOS IZ5IOW IZ5JMZ IZ5LDD IZ5MJO IZ5MKA IZ5MMB IZ5MMK IZ5MMR IZ5MOQ IZ5MXA IZ5NFC IZ5NFD IZ5NRF IZ5NSH IZ5OOP IZ5OPV IZ5OPX IZ5OQA IZ5OQX IZ5PNL IZ5PQT IZ5RKC IZ5RNC IZ5RYG IZ6AAW IZ6BTN IZ6BXV IZ6CLN IZ6CLZ IZ6DWH IZ6EIY IZ6ERS IZ6FHZ IZ6FXP IZ6GSB IZ6GSQ IZ6HRT IZ6HYR IZ6IMN IZ6INR IZ6JIH IZ6LOF IZ6NCN IZ6OVE IZ6TSA IZ7BAS IZ7CDE IZ7CRW IZ7DOK IZ7DOO IZ7ECL IZ7EDQ IZ7EQX IZ7EUB IZ7EVZ IZ7FLT IZ7FMM IZ7GAT IZ7HNO IZ7JVR IZ7KHR IZ7LDL IZ7MFY IZ7MYV IZ7NLN IZ7NMD IZ7OJY IZ7QLY IZ8AJU IZ8BFV IZ8BGY IZ8CCW IZ8CKT IZ8CLM IZ8DBJ IZ8DDL IZ8DEJ IZ8DGR IZ8DPL IZ8DSX IZ8DVD IZ8DWL IZ8EDJ IZ8EDL IZ8EEL IZ8EFD IZ8EKL IZ8EMB IZ8EMK IZ8EPX IZ8ESX IZ8ETW IZ8EWD IZ8FAV IZ8FBU IZ8FCX IZ8FDG IZ8FDH IZ8FFA IZ8FQO IZ8FSH IZ8FTW IZ8FWN IZ8GBH IZ8GBT IZ8GCB IZ8GCE IZ8GNR IZ8HUJ IZ8HXG IZ8IEV IZ8IFL IZ8ITT IZ8IYN IZ8JAI IZ8JDF IZ8JFL IZ8JPV IZ8LIP IZ8LKL IZ8LLH IZ8LLQ IZ8MBW IZ8MXB IZ8NGH IZ8NVV IZ8OFO IZ8OGR IZ8PPH IZ8PPI IZ8QIG I0AAF I0ABK I0AMU I0APV I0BYR I0CG I0CMD I0DJV I0DTK I0EKY I0GIA I0GXK I0HCJ I0IA I0JBL I0KHP I0KHY I0KNQ I0KWK I0LTX I0LYO I0MOC I0MOM I0MPF I0MWI I0NNY I0QM I0TIC I0UZF I0VPK I0XXR I0YKN I0YQV I0YR I0ZUT I0ZV I1ABT I1APQ I1BAY I1BEP I1BPU I1COB I1EIS I1FBJ I1FHA I1FLC I1FQH I1HJT I1HLP I1CHC I1IOQ I1JHS I1LBI I1LGR I1LSN I1MRH I1NVU I1OOQ I1OQI I1PLX I1POR I1QBI I1RB I1RJP I1SAF I1SCL I1UW I1WQR I1WXY I1XPQ I1XSG I1YGQ I1YRL I1YTO I1ZDW I1ZEU I1ZL I2AT I2AZ I2BBJ I2BJS I2BPP I2BZN I2CZQ I2DJX I2DMI I2EAY I2EGD I2GPT I2HXO I2JIM I2JIN I2JSB I2KAJ I2KBD I2KBW I2KMG I2MOV I2MQP I2NKR I2OGV I2PEI I2PJA I2PUS I2RBR I2RFJ I2ROO I2SVA I2TAO I2TFJ I2TZK I2UBI I2UCE I2VGW I2VRN I2VXJ I2WDB I2WIJ I2WSG I2XBO I2XIP I2XLF I2XVO I2YYO I2ZGA I2ZP I3BBK I3BLF I3COW I3CRW I3DBD I3EVK I3FDZ I3FIY I3GVN I3GWE I3ISM I3JRF I3JSS I3KAN I3MIQ I3MLU I3MU I3OKZ I3PVB I3PVE I3PXN I3QDK I3STS I3TGW I3THJ I3TXQ I3VAD I3VJW I3VRD I3VWK I3XMQ I3YEG I3ZNG I3ZSX I4ABF I4AUM I4AVG I4BMJ I4DVT I4DZ I4EAT I4ENO I4EUM I4FGG I4FTU I4FYF I4GAD I4GYG I4HRH I4IKW I4JEE I4JUQ I4KJW I4KMN I4KMW I4KRF I4LCK I4LEC I4MKN I4MNY I4NJM I4PZP I4QHD I4SJZ I4TJE I4UKS I4VEQ I4VIL I4VJC I4VOS I4WYE I4XNN I4YCE I4YEL I4YEY I4YSS I4YUG I4YYC I4ZGI I4ZQS I4ZSQ I5BOL I5DOF I5DUI I5ECW I5ESR I5FCK I5FLN I5FWT I5HLK I5IAR I5IHE I5/IZ2RPJ I5JFG I5JHW I5JKI/3 I5KAP I5KG I5LYJ I5MPK I5MXX I5NPH I5NSR I5OYY I5PFX I5REA I5RFD I5SDG I5VVA I5VXG I5WNN I5WNN/5 I5ZJK I5ZSS I5ZUF I6BDS I6BYQ I6CBI I6COJ I6DU I6FDJ I6FLD I6FPN I6JEI I6KIU I6NO I6ONE I6TIH I6VGA I7CSB I7PHH I7PXV I7WL I7/9A3A I8HAK I8IGS I8JOQ I8JYK I8KCI I8KFR I8KRC I8MSY I8NHJ I8OCA I8PND I8QJU I8QLI I8QLS I8SAT JA0AOQ JA0ARF JA0ASO JA0AVS JA0AXV JA0BES JA0BJY JA0BKX JA0BOV JA0CIY JA0CRI JA0CVC JA0DAI JA0DBQ JA0DBS JA0DNE JA0DOW JA0DSH JA0ED JA0EME JA0EPV JA0EQO JA0FMU JA0FNU JA0FSB JA0FSN JA0FVU JA0GCI JA0GJJ JA0GSG JA0GZZ JA0HSR JA0IND/1 JA0IOF JA0JHA JA0KAZ JA0KJD JA0KJE JA0LHU JA0LXP JA0MGR JA0MVW JA0NFP JA0NPQ JA0PE JA0QNJ JA0RCK JA0RUG JA0SI JA0TX JA0UFZ JA0UJL JA0UMV JA0UPW JA0UR JA0URR JA0UUA JA0VHI JA0XIR JA1AA JA1AAA JA1AAT JA1ACF JA1ADN JA1ADT JA1ADU JA1AEC JA1AFF JA1AFI JA1AJK JA1AKL JA1AKR JA1ALT JA1ALU JA1AML JA1ANF JA1ANG JA1ANR JA1ANT JA1APX JA1ARO JA1ATB JA1ATZ JA1AUD JA1AYO JA1AZR JA1AZW JA1BAN JA1BAQ JA1BAS JA1BFN JA1BHK JA1BJI JA1BK JA1BMA JA1BNL JA1BNW JA1BON JA1BOQ JA1BPA JA1BPN JA1BWA JA1BWD JA1BWT JA1CAQ JA1CC JA1CCA JA1CCO JA1CIA JA1CJI JA1CJP JA1CKA JA1CKE JA1CLW JA1CON JA1COP JA1CP JA1CPA JA1CPN JA1CPZ JA1CQK JA1CQT JA1CTB JA1CTZ JA1CXC JA1DBG JA1DCK JA1DDZ JA1DEU JA1DIO JA1DKT JA1DMX JA1DOF JA1DOT JA1DSI JA1DUA JA1DUH JA1DUP JA1DVN JA1DXE JA1ECN JA1EFY JA1EHV JA1EJY JA1ELY JA1EM JA1EMQ JA1EOD JA1EOG JA1ERB JA1ETN JA1EWE JA1FFO JA1FGB JA1FIO/1 JA1FK JA1FNA JA1FNO JA1FO JA1FRQ JA1FTW JA1FUI JA1FVJ JA1FVS JA1FWJ JA1FWY JA1GBC JA1GC JA1GCA JA1GDF JA1GFD JA1GHH JA1GHR JA1GHV JA1GLE JA1GTR JA1GVT JA1HFY JA1HG JA1HGX JA1HGY JA1HHL JA1HLF JA1HLR JA1HMK JA1HNW JA1HO JA1HP JA1HTD JA1HTK JA1HXJ JA1HYF JA1IAW JA1IDY JA1IE JA1IFB JA1IFD JA1IFP JA1IKA JA1IOA JA1IRH JA1ISA JA1IST JA1ITX JA1IUG JA1IVV JA1IVY JA1IWP JA1IXY JA1IZ JA1IZB JA1IZZ JA1JCF/1 JA1JKG JA1JLP JA1JNM JA1JQM JA1JQY JA1JXD JA1JXT JA1JXU JA1JYS JA1KEB JA1KEV JA1KGV JA1KI JA1KIH JA1KJW JA1KK JA1KLK JA1KLW JA1KPF JA1KPH JA1KVT JA1KW JA1KWB JA1KXT JA1KZK JA1KZP JA1LBZ JA1LHH JA1LLN/8 JA1LLY JA1LNZ JA1LPH JA1LPQ JA1LQL JA1LQV JA1LSP JA1LZB JA1LZR JA1MBJ JA1MCU JA1MFR JA1MJC JA1MJN JA1MLV JA1MOD JA1MRM JA1MSS JA1MUZ JA1MVK JA1MVR JA1MZL JA1MZM JA1NAA JA1NGD JA1NGW JA1NIJ JA1NIR JA1NLC JA1NLX JA1NPD JA1NRF JA1NRQ JA1NUT JA1NVF JA1NWD JA1NXG JA1NXV JA1NZK JA1OAF JA1OCA JA1OCZ JA1ODE JA1ODP JA1OHD JA1OHP JA1OJJ JA1OND JA1OQ JA1ORM JA1OSN/7 JA1OVD JA1OWP JA1OYD JA1OYY JA1OZK JA1PAH JA1PIN JA1PJS JA1PKS JA1PMN JA1PNA JA1POS JA1PRR JA1PRV JA1PS JA1PTJ JA1PTO JA1PVV JA1PVX JA1QCQ JA1QEU JA1QGT JA1QIW JA1QJE JA1QN JA1QNO JA1QOP JA1QS JA1QWT JA1QXC JA1QXY JA1RAC JA1RPK JA1RQT JA1RRA JA1RRR JA1RTX JA1RYC JA1RZD JA1SCE JA1SEV JA1SGU JA1SGX JA1SHE JA1SIM JA1SIN JA1SJT JA1SJV JA1SKE JA1SST JA1SVP JA1SYY JA1SZN JA1TBX JA1TFJ JA1TGO JA1TMG JA1TQE JA1TQP JA1TRC JA1TRL JA1UAT JA1UCC JA1UII JA1UOC JA1UPO JA1UPT JA1UQA JA1USO JA1UTC JA1UTQ JA1UTZ JA1UVO JA1UZG JA1UZQ JA1VCW JA1VDI JA1VGV JA1VJQ JA1VLK JA1VND JA1VPE JA1VRU JA1VRY JA1VUI JA1WDF JA1WHG JA1WLO JA1WPX JA1WQD JA1WQX JA1WRI JA1WSK JA1WSX JA1WTI JA1WUM JA1WWB JA1WWE JA1WWO JA1WZG JA1XFA JA1XGI JA1XIA JA1XMS JA1XPH JA1XPU JA1XRA JA1XRH JA1XTN JA1XTQ JA1XUY JA1XXI JA1XZF JA1YAI JA1YPA JA1YPD JA1YSW JA1ZGO JA1ZGP JA2AC JA2ACI JA2AEV JA2AH JA2AIB JA2AN JA2ANR JA2AO JA2ATE JA2AXB JA2AYH JA2BAY JA2BCE JA2BDR JA2BHQ JA2BIV JA2BJW JA2BL JA2BMW JA2BNN JA2BQX JA2BVL JA2BXP JA2BY JA2CBZ JA2CJN JA2CPD JA2CUS JA2CXF JA2CYL JA2DCN JA2DDA JA2DGQ JA2DGQ/3 JA2DHF JA2DLM JA2DNA JA2DO JA2DPQ JA2DXD JA2DYI JA2DZQ JA2ELH JA2EPW JA2EZR JA2FBC JA2FEA JA2FGE JA2FGL JA2FJP JA2FMN JA2FSM JA2FUA JA2FUJ JA2FVA JA2FWS JA2GAL JA2GDH JA2GHP JA2GTW JA2GWL JA2HCE JA2HO JA2HOL JA2HXV JA2IDJ JA2ITK JA2IU JA2IVK JA2IXS JA2JDY JA2JTN JA2JW JA2KCY JA2KGH JA2KIY JA2KKA JA2KLE JA2KOG JA2KPV JA2KPW JA2KSI JA2KTK JA2KVB JA2KVD JA2LCP JA2LHG JA2LPY JA2LWO JA2MEI/2 JA2MNB JA2MOG JA2MWV JA2MYA JA2NOV JA2NVM JA2ODB JA2OZI JA2OZJ JA2PAC JA2PFO JA2PJC JA2PSV JA2PVN JA2QOF JA2QQC JA2QVP JA2QXY JA2RGH JA2RJE JA2RPZ JA2TBS JA2TFU JA2TTH JA2UHR JA2UJ JA2UZE JA2VHG JA2VHO JA2VMU JA2VPO JA2VSU JA2VUP JA2VZL JA2WP JA2XCR JA2XQO JA2XYO JA2YKA JA2ZJW JA2ZS JA3AA JA3AER JA3AHY JA3AIC JA3AK JA3ALY JA3AMI JA3AOP JA3APU JA3APV JA3AVO JA3AYL JA3AYX JA3AZD JA3BBG JA3BCC JA3BCT JA3BDP JA3BHO JA3BIN JA3BJZ JA3BKP JA3BLN JA3BRI JA3BUM JA3BXZ JA3CCX JA3CG JA3CSZ JA3CZY JA3DAY JA3DLE/1 JA3DPX JA3DX JA3DXD JA3DXR/1 JA3EA JA3EEM JA3EGZ JA3EMU JA3EOE JA3ETD JA3EUB JA3EUF JA3EY JA3EZJ JA3FGJ JA3FRI JA3FSV JA3FYC JA3GMJ JA3GN JA3GSM JA3GW JA3HBC JA3HBF JA3HBP JA3HDM JA3HIL JA3HRV JA3HU JA3HZT JA3IDQ JA3IGZ JA3IKG JA3JFT JA3JM JA3JND JA3JOT JA3JP JA3KDJ JA3KGC JA3KKE JA3KNB JA3KRK JA3LCR JA3LEB JA3LEZ JA3LKE JA3LKU JA3LXH JA3LZC JA3MFE JA3MIB JA3MQY JA3MZB JA3NFA JA3NHL JA3NHW JA3NTE JA3OEA JA3OHY JA3OOK JA3OSA JA3PCQ JA3PNN JA3PPH JA3PQX JA3PST JA3PYC JA3PYH JA3QOS JA3RAR JA3RAZ JA3RK JA3RN JA3RQ JA3RWJ JA3TMM JA3TPK JA3TVM JA3USA JA3UWB JA3VPA JA3VUI JA3VXH JA3WKK JA3WLN JA3WMS JA3WNB JA3WPN JA3WU JA3XOG JA3YAA JA3YBK JA3YDK JA3YKC JA3YPD JA3YPL JA4AFT JA4AQR JA4AVO JA4AYU JA4AZY JA4BDY JA4BPW JA4BSZ JA4BVH JA4CBX JA4CMW JA4COF JA4CQS JA4CSJ JA4CUU JA4CZM JA4DC JA4DHN JA4DMB JA4DND JA4DPL JA4DQX JA4DWR JA4DZ JA4EBU JA4EE JA4ENP JA4EPE JA4EZA JA4EZP JA4FHE JA4FIQ JA4FJL JA4FKX JA4FM JA4FWI JA4GCF JA4GGR JA4GXS JA4GXX JA4HXZ JA4IQK JA4IU JA4JBZ JA4JIF JA4JY/3 JA4KRR JA4LAZ JA4LKB JA4LVG JA4LXY JA4MOK JA4MRL JA4NQD JA4OTK JA4PXE JA4RMX JA4RWN JA4TY JA4UDN JA4XHF/3 JA4XRN JA4XW JA4XY JA4YHX JA5ADR JA5AOA JA5APU JA5ATN JA5AUC JA5BEI JA5BEN JA5BIN JA5BQT JA5BVO JA5BZL JA5CB JA5CBO JA5CEX JA5CJZ JA5CN JA5CPJ JA5CTW JA5CUX JA5DBE JA5DQH JA5DVK JA5DWY JA5ERZ JA5EWH JA5EXW JA5EYW JA5FBZ JA5FDJ JA5FNX JA5FTL JA5GE JA5GSG JA5INF/1 JA5IU JA5IVG JA5JWQ JA5MXP JA5NLN JA5NNS JA5NPV JA5NSN JA5OP JA5RB JA5RVN JA5SRJ JA5SUD JA5TNF JA5UBW/3 JA5WIO JA5WNH JA5XPD JA5XPN JA5XTB JA6ACZ JA6AP JA6ARM JA6AUM JA6AVT JA6BCV JA6BDB JA6BEE JA6BGA JA6BJT JA6BJV JA6BLX JA6BMM JA6BVU JA6BWH JA6BZA JA6BZI JA6CBG JA6CDA JA6CDC JA6CFW JA6CLO JA6CM JA6CMI JA6CNH JA6CNL JA6COW JA6CRP JA6CUX JA6CYL/6 JA6DC JA6DH JA6DIJ JA6DSG JA6ECF/1 JA6EFT JA6EML JA6ETS JA6FBI JA6FFK JA6FGC JA6FHF JA6FOF JA6FUV JA6FXT/1 JA6GCE JA6GGD JA6GIJ JA6GT JA6GXP JA6HJW JA6HLU JA6HQT JA6IQG JA6JNF JA6JPS JA6JRE JA6KTY JA6LCJ JA6MYQ JA6NOC JA6OXT JA6PCH JA6QDU JA6QZ JA6REX JA6RCH JA6SBW JA6SHL JA6SRB JA6TIT JA6TMU JA6TWS JA6UDI JA6VDB JA6VI JA6VQA JA6VU JA6WFM JA6WIF JA6WJL JA6WW JA6XZS/1 JA6YG JA6ZPR JA7ACM JA7ACV JA7AEM JA7AGO JA7AHK JA7AKH JA7ARD JA7ARW JA7AUM JA7AXN JA7AXP JA7BAL JA7BCE JA7BJS JA7BLE JA7BME JA7BMR JA7BMW JA7BSV JA7BVH JA7BWT JA7BYP JA7BZU JA7CDK JA7CDV JA7COI JA7COK JA7CPW JA7DDK JA7DHJ/1 JA7DLE JA7DNJ JA7DOT JA7DY JA7EDZ JA7ESQ JA7EU JA7EVH JA7EYK JA7FAS JA7FEX JA7FNQ JA7FTR JA7GAP JA7GBS JA7GUT JA7GYP JA7GZM JA7HB JA7HTJ JA7HUC JA7HYS JA7IC JA7JH JA7JMX JA7JWF JA7KDC JA7KE JA7KQC JA7KVD JA7KY JA7LCL JA7LGE JA7LLL JA7LMU/1 JA7LMZ JA7MBT JA7MGP JA7MJ JA7MSQ JA7MYQ JA7ND JA7NI JA7NLW JA7NPV JA7NVF JA7NX JA7ODY JA7OEM JA7OOO JA7OUV JA7OWD JA7OXR JA7OXR/1 JA7OYM JA7OZW JA7PFC JA7PJC JA7QFU JA7QOU JA7QQJ JA7QVI JA7RHJ JA7RPC JA7RQK JA7RXU JA7SN JA7SSP JA7SUR/1 JA7TJ JA7UES/1 JA7VEI JA7VSO JA7WMO JA7WNA JA7WQJ JA7XBA JA7XBG JA7XRH JA7XVZ JA7XZZ JA7YAA JA7YCQ JA7YRR JA7ZP JA8AHA JA8AIN JA8AJE JA8APN JA8AWH JA8AZN JA8BAR JA8BBD JA8BKI JA8BNP JA8BXD JA8BZL JA8CAR JA8CDG JA8CEA JA8CJY JA8CMC JA8CNF JA8COE JA8CSY JA8CTO JA8DIV JA8DMB JA8DNV JA8ECS JA8EEK JA8EIA JA8EIU JA8EOT JA8EPO JA8FHM JA8GMZ JA8GWK JA8HYB JA8HZJ JA8IAF JA8IJI JA8ISU JA8IUB JA8JDQ JA8JMG JA8JTH JA8JYA JA8KMA JA8KNJ JA8KSF JA8KXA JA8LN JA8LRG JA8LSZ JA8MS JA8MXC JA8NF JA8NFV JA8NSF/1 JA8PDI JA8QO JA8RJE JA8RRF JA8RWU JA8RY JA8SCD JA8SPZ JA8TR JA8UON JA8WY JA8XOK JA8XWC JA8ZO JA9ABA JA9AGN JA9APS JA9APZ JA9ARC JA9AVA JA9BFM JA9BGL JA9BGQ JA9BJS JA9BKU JA9BMG JA9CCG JA9CGW JA9CNC JA9CWJ JA9CZE JA9DJH JA9DNS JA9DTV/1 JA9EJG JA9FAI JA9FHB JA9FO JA9FPI JA9GLW JA9CHI JA9IFF JA9IL JA9LJS JA9LX JA9MAT JA9NFO JA9NUN JA9PAK JA9PPC JA9RO JA9RPU JA9RRH JA9RT JA9SSY/1 JA9SSY/2 JA9SW JA9TQY JA9UR JA9XRL JA9ZMQ JD1BIA JD1BLY JD1BMM JE0EHE JE1ALA JE1AON JE1BQE JE1CAC JE1CJB JE1CKA JE1COB JE1CPB JE1CTM JE1DNL JE1EMU JE1EQS JE1FQV JE1FUX JE1GNG JE1GWO JE1GYL JE1GZB JE1HMC JE1HQE JE1IFV JE1JAC JE1KBV JE1KDM JE1KEY JE1KON JE1LDU JE1LET JE1LFR JE1LFX JE1LOI JE1LPZ JE1LRT JE1LZL JE1MHO JE1NGI JE1NVD JE1OHL JE1ORU JE1PGA JE1PNX JE1QYI JE1REU JE1RID JE1ROA JE1RRK JE1RXJ JE1RZR JE1SCF JE1SCJ JE1SGH JE1SHW JE1SPY JE1SSE JE1SYN JE1TBU JE1TNL JE1TRV JE1TSD JE1WYC JE1XUZ JE1YEM JE1ZWT JE2ATB JE2DJC JE2DOD JE2EHP JE2FUP JE2HCJ JE2HXL JE2ILG JE2KDN JE2LDW JE2LUN JE2LVG JE2MIR JE2OTM JE2OVG JE2PCY JE2PMC JE2QIZ JE2RDO JE2SOY JE2TLZ JE2UFF JE2UWN/1 JE2VLG JE2WGC JE2XJW JE3AGN JE3AOL JE3BXY JE3CXJ JE3EDJ JE3GUG JE3HHT JE3HWO JE3MTQ JE3RNC JE3UHV JE3VRJ JE3WUK JE3XNF JE4AEJ/1 JE4ICX/1 JE4JPQ JE4KQH JE4MHL JE4MZA JE4QGF JE4URN JE5CIL JE5JHZ JE5PTI JE5PTJ JE5QPH JE6CAJ JE6CMG JE6DBI JE6ETN JE6HUR JE6LMH JE6LXS JE6QUJ JE6TSP JE6TUU JE6URC JE6UWU JE7BUH JE7CJL JE7DMH JE7HYK JE7JDL JE7JYE JE7JZT JE7LKG JE7SOG JE7WBI JE7YSS JE8BKW JE8CIC JE8CLT JE8CRA JE8GNN JE8KGH/7 JE8KKX JE8TGI JE9CRJ JE9QMZ JF0EHX JF0POA JF1AGB JF1AZQ JF1CBT JF1DAJ JF1DMY JF1EGO JF1EGX JF1EUY JF1FFX JF1FSR JF1GUQ JF1GUT JF1GYX JF1GZZ JF1HJX JF1HYG JF1ISC/3 JF1IUA JF1IXE JF1JPB JF1KFR JF1KKV JF1KMC JF1KML JF1KSF JF1KUR JF1KWG JF1LCS JF1LLB JF1LMB JF1LWO JF1MAD JF1MQS JF1NHD JF1NZW JF1OLC JF1OPL JF1PJK JF1PTX JF1PYJ JF1QQK JF1RDH JF1RFZ JF1RQP JF1RWZ JF1RYU JF1SCB JF1SCB/7 JF1SEK JF1SPT JF1SQC JF1SVV JF1TEU JF1UVJ JF1VNR JF1VRR JF1VRU JF1VVR JF1VYX JF1WQC JF1WXN JF1XEP JF1YRK JF2BDK JF2CTY JF2DID JF2DND JF2DST JF2FIU JF2HPA JF2ICB JF2IKJ JF2IWL JF2KOZ JF2LVM JF2MBF JF2OHQ JF2OZH JF2PZY JF2QNM JF2RCX JF2RDG JF2RLD JF2SKV JF2UEE JF2UPM JF2VFN JF2VHS JF2VNV JF2WKE JF2WME JF2WTG JF2WXS JF2ZPA JF3AYR JF3BFS JF3BRE JF3EIG JF3GKE JF3ITH JF3IYW JF3KNW JF3KON JF3KQA JF3LOP JF3LPD JF3MTM JF3MYU JF3NDW JF3NKA JF3RDE JF3SAD JF3SKW JF3VAX JF4ETK JF4GWA JF4RKC JF6CHY JF6WTY JF6XHS JF7GDF JF7NXS JF7XKY JF8AOJ JF9EXF JF9JTS JF9KVT JF9MJU JG0AXT JG0EKW JG0EXP JG0GGI JG0TCL JG1AUI JG1BKX JG1DWG JG1EIQ JG1FGL JG1FKT JG1FMA JG1FUV JG1GCO JG1GGF JG1GGU JG1GUW JG1HJV JG1HQA JG1HUF JG1IEF JG1IGX JG1ILF JG1INV JG1IRX JG1IUF JG1IZA JG1JLA JG1MOH JG1OWV JG1PED JG1PST JG1RVN JG1SIS JG1SRB JG1THV JG1TLY JG1TVK JG1UKW JG1UWQ JG1UZD JG1VVU JG1WFY JG1WNO JG1WRT JG1XLZ JG1ZKO JG1ZUY JG2CNS JG2CNZ JG2GSY JG2KKG JG2KUT JG2LGM JG2NLN JG2REJ JG2SON JG2TSL JG3CKF/1 JG3CQJ JG3DOC JG3EWE JG3FEA JG3FZU JG3IWL JG3JLC JG3KUT JG3LGD JG3MBL JG3RXZ JG3SVP JG3TXD JG3UVN JG3WDN JG4AKL JG4OOU JG4QFG JG5DHX JG5UWK JG6FQW/1 JG6FUO JG6TPY JG6TXW JG7AFV JG7AMD JG7DLI JG7EHM JG7IJM JG7MFN JG7PSJ JG8FWH JG8QXB JG8TQL JH0ALB JH0BBE JH0BQX JH0CCK JH0CEO JH0EPI JH0EQN JH0EWT JH0EXA JH0GHZ JH0IEW JH0INP JH0JDV/0 JH0KHR JH0LSP JH0MGW JH0MHR JH0MMJ JH0MXV JH0NEC JH0NOS JH0NVX/1 JH0OXS JH0QIQ JH0QYS JH0RNN JH0SGJ JH0TIS JH0WMN JH0WMN/1 JH1ABP JH1ACA JH1AEP JH1AGU JH1AJT JH1APK JH1APZ JH1ARJ JH1AWJ JH1BED JH1BEL JH1BQL JH1BXR JH1BZJ JH1CBD JH1CCN JH1CML JH1CRF JH1CTQ JH1DGQ JH1DJD JH1DLD JH1DTX JH1DVG JH1DYV JH1EAQ JH1ECF JH1EEB JH1EGJ JH1ESR JH1EVD JH1EVE JH1EYM JH1FNU JH1FSF JH1FSL JH1FTL JH1FVE JH1GEV JH1GNU JH1GUL JH1GUO JH1GUO/4 JH1GZE JH1HDT JH1HGF JH1HGI JH1HIC JH1HJC JH1HMC JH1HTQ/2 JH1HXY JH1HYW JH1IAQ JH1IED JH1IOY JH1IVD JH1IWU JH1IXW JH1JBV JH1KIM JH1KZQ JH1LAH JH1LEM JH1LPZ JH1MDJ JH1MSB JH1MTR/4 JH1NBN JH1NPQ JH1NXU JH1NYM JH1OBS JH1OCC JH1OGC JH1OGT JH1OHZ JH1OLB JH1OTZ JH1OVY JH1PCE JH1PQD JH1PXY JH1QDB JH1QDF JH1QQN JH1QVW JH1RFM JH1RFZ JH1RGG JH1RNI JH1RRP JH1SAJ JH1SAR JH1SBE JH1SJN JH1SVO JH1SWD JH1TFE JH1TKB JH1TUB JH1TWT JH1TXG/9 JH1UGN JH1URT JH1VHU JH1VIG JH1VMI JH1WHA JH1WJR JH1WLY JH1WVJ JH1XFR JH1XUB JH1XUM JH1XUP JH1XUZ JH1XYB JH2AHZ JH2AMH JH2BAX JH2BNL JH2BTM JH2BUF JH2CMH JH2DBQ JH2DFJ JH2DTP JH2FXK JH2GAA JH2GSW JH2GZY JH2HUQ JH2CHT JH2IEE JH2KCE JH2KIL JH2LPY JH2MYN JH2NWP JH2OEY JH2PWM JH2PWY JH2QAY JH2QLC JH2RMU JH2UVL JH2WGI JH2XQY JH2XTV JH3AIU JH3BYX JH3CCT JH3CTQ JH3CUL JH3DMQ JH3EDG JH3EGA JH3EGA/1 JH3EQP JH3EXI JH3FUK JH3GCN JH3HGH JH3HYT JH3JUB JH3JYS JH3KHS JH3LFL/1 JH3OHO JH3PRR JH3PTC JH3QFY JH3SIF JH3UDD JH3VWN JH3WKE JH3XYP JH4AAG JH4ADV JH4BTI JH4CES JH4CPC JH4EYD JH4FRP JH4FUF JH4GLG JH4GNE JH4CHV JH4IFF JH4JNG JH4LBE JH4MIF JH4OQF JH4OYA JH4RCK/3 JH4RNY JH4RUF JH4SLF JH4UTP JH4UYB JH4VDP JH5AVM JH5BJU/3 JH5DAH JH5FIX JH5FXP JH5GEN JH5IRT JH5KAC JH5KDL JH5MXB JH6ANR JH6CDI JH6DUI JH6EGU JH6FTJ JH6JMM JH6JSR JH6LPQ JH6MBD JH6NBW JH6QFJ JH6REM JH6RGY JH6RKI JH6RON JH6SCA JH6TYD JH6WDG JH6WHN JH6WMJ JH6XOD JH7BMF JH7BVH JH7CUO JH7CVM JH7DHF JH7DNO JH7DUM JH7FMJ JH7GYG JH7GZF JH7HJL JH7IAJ JH7IMX JH7IPR/6 JH7IXX JH7JCX JH7KTI JH7MEX JH7NTJ JH7OUW JH7QXJ JH7RTQ JH7SCY JH7UFT JH7UJI JH7XGC JH7XGN JH7XGQ JH7XMO JH8BHR JH8BOE JH8CXW JH8CZB JH8DBI JH8DBJ JH8DHV JH8FAJ JH8FAJ/1 JH8FIH JH8FOR JH8GEU JH8JOM JH8JWF JH8JYV JH8LLE JH8RXM JH8SIT JH8SLS JH8UGL JH8WWP JH8WXF JH9AUB JH9BZY JH9CAV JH9JJD JH9KVF JH9MBQ JH9URT JI0LUL JI1AFG JI1ALP JI1ANI JI1AQY JI1AVY JI1BBN JI1BDQ JI1BHO JI1BJB JI1BXD JI1CPN JI1CQA JI1CZK JI1DCW JI1DQA JI1DSO JI1DXM JI1ETJ JI1FLB JI1FXS JI1HFJ JI1JPJ JI1KSL JI1KXL JI1LAI JI1LAT JI1LET JI1LNR JI1LVQ JI1MUT JI1NCZ JI1OAB JI1OUZ JI1OWY JI1QEW JI1QNX JI1QWE JI1QZQ JI1RAK JI1RXQ JI1SAI JI1UDD JI1VVB JI1XAC JI2HVT JI2IWB JI2IXA JI2KXK JI2LAL JI2MWH JI2TKX JI2TNT/9 JI2WYK JI2ZEY JI2ZJS JI3BAP JI3BFC JI3BKF JI3CJP JI3CWI JI3DNN JI3DST JI3DST/3 JI3DST/6 JI3FLA JI3FSI JI3ICP JI3JMG JI3JWV JI3KDH JI3KGS JI3KXB JI3KZD JI3MCM JI3OGI JI3OQO JI3QBQ JI4HKA JI4JGD JI4OHV JI4UEN/4 JI4VXI JI4WHS JI5KGQ JI6AVL JI6IKW JI7EMD JI7GYU JI7HAV JI7NUF JI7RRS JI7UUO JI8XLD JJ0FVP JJ0HEN JJ0JML JJ0KDW JJ0KRD JJ0MPI JJ0NCC JJ0PER JJ1CBY JJ1CZR JJ1ENZ JJ1FDS JJ1GQH JJ1IDW JJ1IVX JJ1LBJ JJ1LIB JJ1LRD JJ1MIX JJ1MZH JJ1OAS JJ1OFQ JJ1QLT JJ1RSH JJ1SKG JJ1TJD JJ1VGA JJ1VJB JJ1VRO JJ1VTE JJ1WSN JJ1WWL JJ1WWL/1 JJ1XKE JJ1XPJ JJ1ZEJ JJ2CJB JJ2EOB JJ2HCM JJ2IBN JJ2JQF JJ2JQF/1 JJ2LPV JJ2NKX JJ2ONH JJ2PUG JJ2TKX JJ2YDV JJ3DXD JJ3GPJ JJ3JHP JJ3JJL JJ3LLT JJ3OFL JJ3SHR JJ3TBB JJ3YBB JJ4CDW/4 JJ4ESI JJ4NZO/1 JJ5EFY JJ5GMJ JJ5GSY JJ6CZZ JJ6TWQ JJ7GCL JK1AFC JK1AII JK1BII JK1BQS JK1DHX JK1ECD JK1FFB JK1FNL JK1GKG JK1GMB JK1HWQ JK1JHB JK1KFO JK1KSB JK1LUY JK1MZT JK1NMJ JK1NSR JK1OAR JK1ODA JK1OLT JK1OPL JK1OXU JK1PDY JK1PIU JK1PLR JK1RAU JK1SDQ JK1SMY JK1TCV JK1THF JK1TMP JK1UKQ JK1UVP JK1VEL JK1WXM JK1YMM JK2AUC JK2KNR JK2MDV JK2TTP JK2VOC JK2VOC/BA4TB JK2VQR JK3AGC JK3AHS JK3GHE JK3GWT JK3HFN JK3HLP JK3JTJ JK3NSD JK3ZCR JK4KSD JK6JAB JK6SEW JK7RKF JK7UST JK8USI JL1ARC JL1ARF JL1BDI JL1BFC JL1BNE JL1BYZ JL1CNY JL1DUE JL1EBL JL1EDB JL1EEE JL1ELQ JL1GXO JL1HOV JL1IHE JL1JJD JL1KLG JL1LNC JL1MUT JL1MWI JL1MWY JL1OHO JL1OXH JL1QOC JL1RXW JL1SAM JL1UJJ JL1UTS JL1VFZ JL1WPQ JL1XMN JL2CZY JL2LPX JL2VZJ JL3CRS JL3JTD JL3MCM JL3QJQ JL3RDC JL3RNZ JL3RPD JL3RTA JL3SBE JL3TEQ JL3TMH JL3VUL/3 JL4BSE JL4HOZ JL4LWL JL4WYY JL6IPK JL6MSN JL6TKN JL7CTR JL7FBV/1 JL7SNM JL8AQH JL8GOV JL8MBF JL8VIV JM1AHX JM1BKZ JM1FHL JM1GHT JM1HJG JM1IMF JM1ISX JM1JZN JM1KLO JM1KNI JM1LKI JM1LQI JM1LRQ JM1LWY JM1NKT JM1QBY JM1RQS JM1RSV JM1SBU JM1SMY JM1TUY JM1TWR JM1UTT JM1UWB JM1XCW JM2LEI JM2LHB JM2RUV JM3APP JM3PLL JM3QML JM3ROY JM3UML JM3XZC JM4AHN JM4WUZ JM7NBS JM7OLW JN1BBO JN1BMX JN1CJS JN1DJY JN1GLB JN1IZK JN1IZR JN1KWR JN1LWD JN1MSO JN1NDY JN1NOP JN1NTK JN1PFH JN1RQV JN1WFF JN2AMD JN3DSH JN3IWE JN3LQP JN3MUC JN3SAC JN4FNZ JN4MIV JN4MMO JN6EPA JN6GBB JN6VSN JN7GLC JN7IIR JN7MLJ JN7TAN JO1ABS JO1COV JO1HJD JO1KCQ JO1KXP JO1KXP/1 JO1LVZ JO1NLN JO1OEL JO1QNO JO1QZI JO1RUQ JO1SIM JO1UOK JO1UTR JO1VRV JO1WIZ JO1WKO JO1WNV JO1WZM JO2EWL JO2JIW JO2VSU JO3AGQ JO3AXC JO3AYN JO3DDD JO3EVM JO3FKS JO3GZH JO3JYE JO3MXH JO3NJD JO3OMA JO3PSJ JO3PSJ/3 JO3PSJ/4 JO3QVT JO3RCK JO3TGL JO4BHU JO4CBO JO4CFV JO4CTB JO6XMM JO7AJQ JO7GVC JO7HAM JO7KJC JO7NFR JP1AEG JP1EWY JP1FPY JP1HDK JP1HUJ JP1IOF JP1IXV JP1JFG JP1KHY JP1PQD JP1PZE JP1QDH JP1SRG JP1TRJ JP2MRD JP3AZM JP3WAU JP6OGP JP7AWQ JQ1ABC JQ1AHZ/6 JQ1BNL JQ1BVI JQ1COB JQ1DPP JQ1DTT JQ1GXV JQ1NGT JQ1PCX JQ1QGM JQ1QKK JQ1RKI JQ1SUO JQ1TAR JQ1VDJ JQ1VDJ/1 JQ1YER JQ1YIW JQ1YWK JQ2EHD JQ2GYU JQ2HVN JQ2MUM JQ2OUL JQ2QHQ JQ2UMS JQ2UOZ JQ2VTH JQ2VVH JQ2WTT JQ3UDL JQ6CAA JQ6NAW JQ6QNQ JR0AMD JR0BUL JR0DZH JR0EQQ JR0ETA JR0GUY JR0GXA JR0KVU/1 JR0WZR JR1AHL JR1AHQ JR1ATA JR1AUK JR1BAS JR1BLX JR1BRS JR1BTG JR1BYO JR1CBC JR1CCT JR1CJD JR1CVU JR1DIU JR1DUP JR1ERU JR1FHP JR1FVI JR1GCN JR1GFX JR1GJP JR1GLL JR1GMK JR1GVP JR1HUA JR1IJV JR1IZM JR1IZM/1 JR1KQU JR1LEV JR1LZK JR1MQT JR1MRG JR1MTS JR1NAL JR1NHD JR1NKN JR1PST JR1RGX JR1TOK JR1TRK JR1UBR JR1UFN JR1UJX JR1UMO JR1VAY JR1WLR JR1YRI JR2AAN/2 JR2AGF JR2AGL JR2ALA JR2AWS JR2BOF JR2BQN JR2BYJ JR2DOL JR2DUM JR2ECF JR2FJC JR2MCN JR2MIN JR2MLV JR2NTC JR2NTC/2 JR2PAU JR2PMQ JR2PMT JR2SCJ JR2SCZ JR2SQU JR2TMB/1 JR2TRC JR2TZJ JR2UBS JR2VWD JR3AAZ JR3BOT JR3CNQ JR3EOI JR3FQB JR3GVH JR3HTK JR3HZW JR3IIR JR3JFZ JR3KAH JR3KQJ JR3NDM JR3NZC JR3OEH JR3PKO JR3QHQ JR3RGX JR3RIY JR3RWB JR3STX JR3SZZ/3 JR3TOE JR3UIC JR3VFU JR3VXR JR3XEX JR4ABB JR4DAH JR4DHK JR4DSM JR4FLW JR4GPA JR4HTZ JR4IMV JR4ISF/3 JR4LRY JR4NUN JR4OHO JR4PDP JR4PMX/1 JR4URW JR4VEV JR4XME JR5DPV JR5EPQ JR5GZV JR5HKM JR5HXU JR5JAQ JR5MYC JR5VHU JR5XPG JR5YBH JR6AG JR6AUC JR6BU JR6EZE JR6FC JR6FRV JR6GHN JR6GIM JR6HMJ/1 JR6IGU JR6IKD JR6LLN JR6OSY JR6SVM JR6VIX JR6YAA JR7AMZ JR7AQL JR7COP JR7DXN JR7FNT JR7FVO JR7IAD JR7IWL JR7MAZ JR7NFW JR7NXM JR7RZM JR7RZM/6 JR7TBZ JR7TEQ JR7UOL JR7VHZ JR7WAB JR7XGL JR7XKN JR7YGK JR8AMF JR8BHW JR8BRK JR8NOD JR8ORC JR8OXT JR8PPG JR8QFG JR8QVT/1 JR8SUB JR8VSE JR9CPT JR9GEX JR9GMS JR9LKE JR9NVB JR9SCH JS1DLC JS1JTX JS1KQQ JS1LQI JS1NDM JS1OHI JS1OKS JS1OYN JS1PDC JS2NYO JS2TSJ JS3CTQ JS3EOE JS3LSQ JS3OSI JS3QBP JS3QWI JS6DMT JS6GIM JS6RGY JS6RRR JS6RTJ JT0YPS JT1AA JT1BE JT1BH JT1BL JT1BV JT1BZ JT1C JT1CD JT1CJ JT1CO JT1CS JT1DA JT1R JT1T JT1ZO JT5DX JU1DX JU1F JU75BSI JV1A JW1CCA JW5E JW5HE JW5NM JW5X JW7QIA JW7XK JY4NE JY5CC JY6HQ J28AA J28JA J28OO J28RO J3/AA8LL J37K J37T J38A J38CW J38RF J38XJ J38XX J39BS J41E J42T J42WT J43J J43P J45KLN J46J J48HW J48OV J48P J49I J49XB J5UAP J68JA J68V J69MV J7N J7Y J79WE J79ZG J88DR KA0ADZ KA0AGC KA0ARA KA0BHO KA0BMX KA0CSW KA0EIC KA0FSP KA0HZP KA0LDG KA0LL KA0NES KA0P KA0PQW KA0UEH KA0UK KA0VXK KA1AMR KA1API KA1ARB KA1BSZ KA1C KA1CQR KA1DWX KA1EFO KA1EHR KA1ERL KA1GEU KA1GIJ KA1GMN KA1GVI KA1GYB KA1IE KA1IOR KA1J KA1JBE KA1JVR KA1LDS KA1LMR KA1LOR KA1MWP KA1OEO KA1OPD KA1OX KA1QAA KA1QBO KA1R KA1RVM KA1SAW KA1SWK KA1T KA1VF KA1VMG KA1VVT KA1VY KA1XC KA1YB KA1YMX KA1ZD KA2ANF KA2BKG KA2BZS KA2CYN KA2D KA2DZR KA2EKI KA2EYH KA2F KA2FHN KA2FIR KA2GYM KA2IBE KA2IBN KA2IVS KA2KGP KA2KON KA2LIM KA2MGE KA2MGI KA2NDX KA2NUE KA2OIG KA2OUO KA2OUS KA2QWC KA2RQS KA2RVO KA2VEE KA2VHY KA2YKN KA2ZOH KA3AFY KA3ANJ KA3ARF KA3BMU KA3BPN KA3BWP KA3CRC KA3DRR KA3EHL KA3EJJ KA3EQU KA3FZN KA3FZO KA3GEA KA3IRJ KA3IXG KA3J KA3JLW KA3JOI KA3L KA3LKM KA3MHM KA3MLS KA3MLU KA3MTT KA3NRX KA3P KA3PCX KA3PVA KA3QLF KA3S KA3SMF KA3UBG KA3UOL KA3VEB KA3VFW KA3YJU KA4AQM KA4BDW KA4BIX KA4BSZ KA4EMR KA4FDM KA4GFY KA4HKK KA4JPB KA4NWS KA4OTB KA4R KA4RRU KA4RUR KA4RXP KA4TEU KA4U KA4UDX KA4W KA4ZPF KA5BNS KA5CJJ KA5DWI KA5GCB KA5GIL KA5IAU KA5M KA5MWB KA5N KA5OAI KA5PRO KA5PVB KA5QMA KA5RAN KA5T KA5TCF KA5VEL KA5VFU KA5VVA KA5VZG KA5WSS KA5ZDE KA6BIM KA6BOI KA6BYR KA6C KA6CUU KA6DOW KA6GDT KA6HXI KA6JLT KA6MAL KA6MIB KA6MZE KA6NGR KA6PGY KA6SGT KA6T KA6UMQ KA6W KA7A KA7ARK KA7CVJ KA7FEF KA7HUO KA7JAS KA7KSP KA7LYQ KA7NWQ KA7NYE KA7PNH KA7R KA7SPS KA7T KA7U KA7W KA8CNI KA8CPO KA8ETK KA8F KA8FAN KA8HOK KA8JHD KA8JRJ KA8KGW KA8LCW KA8NAK KA8NJW KA8POZ KA8PTT KA8Q KA8SYV KA8WEM KA8WQL KA8ZPE KA9A KA9AJF KA9AQZ KA9BHD KA9CFD KA9CKK KA9CLP KA9DRW KA9DVX KA9EKJ KA9FON KA9FOX KA9FQG KA9FRH KA9GWM KA9IVY KA9JAC KA9KBO KA9KLR KA9KQH KA9MOM KA9NFE KA9O KA9OKH KA9OMY KA9OZP KA9P KA9RPR KA9SWE KA9UDA KA9UVY KA9VHG KA9WAR KA9ZAI KB0ARZ KB0B KB0COV KB0CQ KB0EO KB0FHP KB0GVI KB0HH KB0CH KB0IXX KB0JSH KB0JSH/T KB0L KB0LF KB0NES KB0NHW KB0NMQ KB0OLA KB0OXT KB0PAT KB0PKL KB0QBT KB0QEF KB0QH KB0R KB0SK KB0SMX KB0TLC KB0UBZ KB0UKM KB0UKW KB0USA KB0VE KB0VQD KB0VVT KB0WMQ KB0YH KB0YZR KB1CJ KB1CL KB1CWO KB1DK KB1DMX KB1DN KB1DQT KB1E KB1EE KB1EFS KB1EFS/2 KB1EHE KB1FCB KB1FJ KB1FRK KB1FRW KB1GKN KB1H KB1HFL KB1HIF KB1HIP KB1HNZ KB1IC KB1IKD KB1JDY KB1JUF KB1K KB1KGA KB1LIH KB1MCK KB1MH KB1MY KB1NA KB1NFI KB1NHV KB1NRB KB1NRI KB1NWH KB1ODO KB1OJT KB1OPV KB1OQH KB1OSI KB1OUV KB1OVA KB1OWT KB1P KB1PAJ KB1PHN KB1PLN KB1PSP KB1PXE KB1PXX KB1QEU KB1QOV KB1QU KB1RDL KB1REQ KB1RNX KB1RRX KB1RXA KB1SLN KB1SNB KB1SUA KB1SUN KB1T KB1TFR KB1TOC KB1TRQ KB1TY KB1W KB1XU KB2AMY KB2AYS KB2BSL KB2CKN KB2DKB KB2ESY KB2FEL KB2FM KB2HSH KB2IAU KB2JQC KB2JSG KB2KDY KB2KWD KB2M KB2MFS KB2MN KB2NB KB2PD KB2PIZ KB2RLH KB2RPV KB2SEO KB2SXT KB2TNH KB2URI KB2VMG KB2VRM KB2VUQ KB2WXV KB2ZPB KB3AAY KB3AF KB3ATF KB3ATI KB3CQU KB3CTX KB3CWQ KB3CXQ KB3DOR KB3ELT KB3EOJ KB3EXB KB3FJJ KB3FMO KB3FTE KB3GQK KB3GVV KB3HJK KB3HQN KB3IBT KB3IHX KB3ILS KB3IOG KB3IWV KB3KBJ KB3KIT KB3KJ KB3KJS KB3KOC KB3KOW KB3KXX KB3LBB KB3LFX KB3LIX KB3LNM KB3LTT KB3LVH KB3MHB/0 KB3MOW KB3MP KB3MXM KB3NKS KB3NPA KB3NSL KB3NXT KB3OJM KB3OK KB3ONQ KB3ONZ KB3OSP KB3OVB KB3P KB3PMY KB3QAQ KB3QBB KB3QGB KB3QIU KB3QLK KB3QWC KB3RBU KB3RFH KB3RH KB3RM KB3ROR KB3RPE KB3RRV KB3RRX KB3RTB KB3SIK KB3SJQ KB3TAW KB3TLI KB3TS KB3WK KB3X KB3Z KB4AZX KB4BHB KB4BR KB4C KB4CAU KB4CP KB4ET KB4FB KB4GYT KB4HF KB4HJQ KB4JHU KB4KBS KB4KBS/5 KB4MDD KB4MRX KB4OLM KB4PPE KB4QDQ KB4QQJ KB4REC KB4RGW KB4SAD KB4UF KB4USB KB4X KB4XK KB4ZAA KB4ZMR KB5AAB KB5AAM KB5B KB5DNR KB5DRJ KB5ENP KB5FCF KB5GA KB5HPL KB5IBY KB5IY KB5JO KB5LKE KB5LT KB5MRT KB5MZ KB5OS KB5OS/4 KB5REX KB5RXL KB5TAN KB5TMD KB5TX KB5U KB5UNX KB5VP KB5YEG KB5YIA KB5YLG KB5YN KB5YYK KB6A KB6ATT KB6ATZ KB6BYU KB6DL KB6FB KB6J KB6NAN KB6NFY KB6NU KB6OJE KB6QXR KB6RQZ KB7BGS KB7CJ KB7DQT KB7EEG KB7GP KB7HH KB7IQO KB7JMS KB7KLT KB7MBI KB7ME KB7N KB7NJV KB7OGE KB7PJ KB7PYF KB7Q KB7QFE KB7QKS KB7QOS KB7RUQ KB7SO KB7STO KB7TGR KB7TLE KB7UJI KB7ZR KB7ZTI KB8APA KB8DID KB8DP KB8ECG KB8F KB8FZY KB8GAE KB8HOC KB8KE KB8KIK KB8M KB8MNX KB8MOU KB8MYC KB8NNU KB8NOD KB8NTL KB8NTY KB8NUF KB8O KB8OCP KB8OEJ KB8OMG KB8OSB KB8OTH KB8O/2 KB8PFF KB8PGW KB8QAP KB8RTB KB8SB KB8SMD KB8TI KB8TL KB8TT KB8TWM KB8TXZ KB8TYJ KB8U KB8UEY KB8UHN KB8UUM KB8UUZ KB8V KB8VAO KB8VGD KB8VJL KB8X KB8ZGL KB8ZYE KB9AMG KB9AVX KB9AX KB9BIT KB9BNY KB9CYL KB9DFE KB9DVC KB9FBI KB9GKG KB9GSY KB9HGI KB9II KB9IIZ KB9IKY KB9JM KB9JOG KB9KAK KB9KEG KB9LHT KB9LIE KB9MI KB9MJN KB9MLE KB9NIV KB9NKM KB9ORH KB9OS KB9OWD KB9OZI KB9PVR KB9PWN KB9Q KB9RDS KB9RNO KB9S KB9SRE KB9UWR KB9UX KB9VT KB9WL KB9WQJ KB9XH KB9YGD KB9YGF KB9ZR KB9ZTF KB9ZUV KB9ZWB KC0ADP KC0AKY KC0BMF KC0CF KC0CRU KC0CWU KC0DEB KC0DWX KC0DX KC0EUX KC0EWX KC0GL KC0GLA KC0GXY KC0HPM KC0INP KC0JFY KC0JRW KC0M KC0MEZ KC0MKS KC0MO KC0MPQ KC0MS KC0NFB KC0NOX KC0OKO KC0ONP KC0PDX KC0PKA KC0PLZ KC0PPA KC0QBU KC0QG KC0QIE KC0QNA KC0RET KC0REY KC0RQH KC0RRP KC0SBV KC0SKR KC0STQ KC0SZU KC0TDQ KC0TRX KC0UFB KC0UJM KC0UUP KC0UUT KC0UXC KC0UYQ KC0V KC0VEU KC0VFO KC0VFP KC0VKN KC0VTJ KC0W KC0WCF KC0WKZ KC0WMN KC0YHU KC0YJO KC0YQQ KC0YRS KC0ZHF KC0ZNI KC0ZRX KC0ZSM KC0ZTC KC0ZXZ KC0ZZH KC1HD KC1JB KC1ME KC1MR KC1NN KC1SQ KC1SS KC1UX KC1V KC1XX KC1ZO KC2ANN KC2ANS KC2AQU KC2COB KC2DU KC2EE KC2EES KC2EMM KC2EVL KC2FOL KC2GLG KC2GNL KC2GOW KC2HO KC2HTV KC2HZM KC2HZW KC2IGE KC2IOS KC2IUR KC2JKU KC2JRQ KC2KME KC2KPK KC2KTZ KC2KXV KC2KY KC2KZJ KC2LMB KC2LMX KC2LR KC2LSD KC2LST KC2LXD KC2MBN KC2MBV KC2MCY KC2MDQ KC2MHE KC2MHY KC2MNV KC2MR KC2NB KC2NLF KC2NTV KC2NYU KC2OBN KC2OBS KC2OGR KC2OYY KC2PBJ KC2PBX KC2PCD KC2PCR KC2PGE KC2PJH KC2PJL KC2PLJ KC2PQI KC2PSR KC2PVM KC2Q KC2QEZ KC2QFR KC2QGK KC2QJB KC2QLA KC2QLJ KC2QXA KC2QYC KC2QYM KC2RDW KC2RIV KC2RJC KC2ROF KC2RXS KC2SCY KC2SGS KC2SJN KC2SKF KC2SKI KC2SPY KC2SPZ KC2SZ KC2TA KC2TAU KC2TEL KC2TYZ KC2UCJ KC2ULY KC2URV KC2USA KC2VMR KC2VVZ KC2ZA KC3EF KC3M KC3MX KC3N KC3OL KC3QU KC3R KC3RT KC3WX KC4AA KC4ABC KC4ART KC4ATU KC4AUF KC4CQS KC4D KC4EZN KC4FLT KC4FWS KC4GL KC4H KC4HW KC4IWI KC4JD KC4LLV KC4MYV KC4NPR KC4OOO KC4Q KC4QIH KC4QP KC4RN KC4RV KC4SAW KC4SSD KC4SW KC4SW/7 KC4TIX KC4TVN KC4TVZ KC4UCK KC4USV KC4VLO KC4VT KC4WQ KC4YAU KC4YBO KC4YCT KC4YTF KC4ZPB KC4ZUA KC5ADQ KC5BYE KC5EZ KC5FEN KC5FU KC5GB KC5GTS KC5GTT KC5H KC5LDO KC5LK KC5MAH KC5MC KC5MOL KC5NGX KC5NT KC5R KC5RUO KC5RWW KC5SLQ KC5T KC5TJT KC5UES KC5WA KC5YGC KC5YPU KC5ZFZ KC6AWX KC6G KC6M KC6MMU KC6OVG KC6P KC6R KC6SEH KC6UIX KC6UKO KC6VVT KC6X KC7CM KC7CPM KC7DB KC7EFP KC7EKU KC7ESB KC7GNM KC7H KC7HFL KC7ITP KC7J KC7KNY KC7KZ KC7MIQ KC7OO KC7PFR KC7PM KC7QR KC7STK KC7TA KC7UP KC7V KC7WDL KC7WWY KC7ZFP KC7ZKO KC7ZON KC7ZZ KC8ALZ KC8BLL KC8BOM KC8BYJ KC8CC KC8CPT KC8CY KC8EMF KC8FVE KC8GCR KC8GTX KC8HWL KC8IMB KC8IMV KC8IVC KC8JNL KC8JWS KC8KCU KC8KE KC8LA KC8LAU KC8LBZ KC8LTL KC8LUB KC8MGD KC8NIN KC8OBH KC8PKY KC8PSO KC8PX KC8QAE KC8QHT KC8RP KC8RQT KC8SQI KC8TEE KC8UAV KC8UNY KC8UR KC8UWG KC8UZM KC8VGG KC8WDT KC8WGA KC8WH KC8YEJ KC8YGH KC8YJB KC8YLD KC8YSG KC8YTY KC8YVF KC8YVP KC8ZTJ KC8ZVW KC9AHH KC9AMM KC9AOP KC9AQD KC9ARN KC9ARR KC9CDW KC9CRM KC9CRV KC9CSQ KC9CUK KC9DAO KC9DDF KC9DFU KC9DJQ KC9DKQ KC9ECI KC9ELU KC9EOQ KC9FAV KC9FLB KC9FOL KC9FQV KC9FQV/0 KC9FSH KC9FZT KC9G KC9GBX KC9GGV KC9GRD KC9GTN KC9GUP KC9GZB KC9HEK KC9HGW KC9HHT KC9HIU KC9HPA KC9HYL KC9CHG KC9ICP KC9IFT KC9IGB KC9IL KC9IOG KC9IRQ KC9IVJ KC9JFP KC9JH KC9JCH KC9JUY KC9KBB KC9KIO KC9KJJ KC9KKM KC9KNQ KC9KRX KC9KTV KC9LBO KC9LC KC9LDK KC9LDO KC9LET KC9LIF KC9LMO KC9LNH KC9LOH KC9LQS KC9LTV KC9LWF KC9LYP KC9MEA KC9MEO KC9MLN KC9MOT KC9MRW KC9MXI KC9MXM KC9MXQ KC9MZ KC9NBE KC9NEA KC9OAG KC9OLC KC9OP KC9OQO KC9OUT KC9OYE KC9PAU KC9PBQ KC9PDX KC9PEG KC9POO KC9PTD KC9PXJ KC9PYV KC9QPM KC9QQ KC9SZY KC9TS KC9YY KC9Z KC9ZO KC9ZZ KD0AA KD0AAA KD0AAT KD0ABR KD0ACO KD0ACR KD0AJB KD0AKI KD0AKN KD0AV KD0BJS KD0BLE KD0BSY KD0BTT KD0CA KD0CAO KD0CIU KD0CPA KD0CPH KD0CVZ KD0DAW KD0DDY KD0DOE KD0DOS KD0DRQ KD0DSU KD0EPN KD0EXQ KD0FLB KD0FQN KD0FW KD0GAV KD0GWI KD0HSF KD0HUC KD0IJW KD0INK KD0IZL KD0JBN KD0JLD KD0KUR KD0MKT KD0Q KD0R KD0S KD0UN KD0Y KD0ZZ KD1BD KD1CT KD1EU KD1J KD1LE KD1NA KD1XX KD1YV KD1ZX KD2A KD2HE KD2I KD2JA KD2JC KD2MU KD2MX KD2NE KD2NF KD2NL KD2RD KD3CQ KD3HN KD3KB KD3NB KD3RF KD3SB KD3TB KD3WK KD3Y KD4AMP KD4BPZ KD4D KD4EDG KD4ESV KD4EXY KD4FJ KD4FNI KD4FXL KD4GID KD4GNM KD4HXT KD4ICT KD4JMI KD4JRX KD4K KD4LCR KD4LHA KD4LN KD4MPN KD4MZM KD4N KD4NH KD4OFG KD4OZI KD4POJ KD4QFT KD4QMY KD4RE KD4RS KD4RSL KD4SM KD4SN KD4SUG KD4SUH KD4SVC KD4TDI KD4TNY KD4ULB KD4ULW KD4VHH KD4W KD4WKP KD4WQT KD5CQT KD5CVL KD5DLL KD5EDL KD5EJG KD5IKG KD5ITM KD5J KD5JAA KD5JGA KD5JHE KD5JKH KD5JWC KD5L KD5LEP KD5LNO KD5LPB KD5M KD5MHI KD5MMM KD5MTB KD5MUY KD5NFW KD5NXR KD5PGA KD5R KD5RA KD5RQB KD5RXN KD5SBO KD5SGL KD5SRW KD5TFK KD5TIO KD5UVV KD5VIJ KD5VVI KD5WKK KD5WZZ KD5YIA KD5YPC KD5YUK KD5YZU KD5ZAT KD5ZEZ KD6AF KD6AKC KD6DKC KD6EUG KD6FIL KD6GC KD6HTN KD6HWD KD6JHV KD6KVL KD6L KD6NL KD6NSA KD6OAT KD6PA KD6PQF KD6TR KD6UO KD6VKF KD6VKW KD6WKY KD7BVN KD7DCR KD7DEG KD7E KD7EHB KD7EX KD7GC KD7H KD7I KD7IBE KD7IIC KD7JGI KD7JZ KD7KMZ KD7KST KD7LRK KD7MDX KD7MSC KD7OWN KD7P KD7Q KD7RHI KD7RQI KD7RUS KD7RX KD7SWL KD7TQM KD7UO KD7VA KD7VIK KD7WIZ KD7WKP KD7YCU KD7YDL KD7YFG KD7YZ KD8A KD8ADO KD8AMN KD8AQ KD8BBK KD8BD KD8BIN KD8BWR KD8CAO KD8CDC KD8CGH KD8CMD KD8CMN KD8CQC KD8CTV KD8CVS KD8CWP KD8DCW KD8DGG KD8DHH KD8DHZ KD8DVY KD8DX KD8ECG KD8EER KD8ELX KD8EXU KD8EXX KD8EZS KD8EZU KD8FDO KD8FNA KD8FTH KD8FVX KD8FXB KD8GBK KD8GKR KD8GOX KD8GRG KD8GZG KD8HB KD8HDY KD8HFY KD8HHG KD8HMA KD8HNF KD8HNI KD8HSV KD8HXT KD8HXU KD8IIS KD8ILL KD8IOW KD8IZZ KD8JAM KD8JBD KD8JDC KD8JNJ KD8JNS KD8JRH KD8JTZ KD8JV KD8KEO KD8KFQ KD8KOR KD8LCD KD8LDT KD8LGW KD8LLJ KD8LMI KD8LW KD8LWR KD8LZT KD8MBH KD8MBI KD8MGI KD8OK KD8SQ KD9AC KD9B KD9GY KD9LA KD9LEH KD9MS KD9ST KD9SV KE0A KE0BZ KE0CT KE0ER KE0FJ KE0FK KE0G KE0H KE0L KE0LX KE0M KE0MD KE0MF KE0MT KE0N KE0PX KE0UF KE0UI KE0WM KE0Z KE0Z/VE4 KE1AF KE1AU KE1B KE1BYL KE1B/6 KE1F KE1FO KE1IH KE1JF KE1LI KE1Q KE1R KE1V KE2DX KE2EH KE2N KE2OI KE2QI KE2SD KE2U KE2UN KE2VB KE2VN KE2WY KE3C KE3CT KE3D KE3D/5 KE3FG KE3G KE3KD KE3OA KE3Q KE3VG KE3VV KE3X KE4AK KE4BFG KE4CAW KE4CAX KE4CEC KE4D KE4EQY KE4ERG KE4ETY KE4HX KE4I KE4KMG KE4KWE KE4KY KE4MBP KE4MYW KE4NU KE4NYH KE4OAR KE4OHB KE4OIC KE4OJH KE4OVN KE4P KE4PT KE4R KE4RQ KE4RUN KE4S KE4TG KE4TP KE4TTS KE4TWI KE4UNA KE4UW KE4VA KE4VQM KE4WBO KE4WLE KE4YLQ KE4YOH KE4YVD KE5AKL KE5AUI KE5BWG KE5C KE5CQJ KE5CVM KE5DLZ KE5DYG KE5FNA KE5FRF KE5FTY KE5FXE KE5HDE KE5HPY KE5HWE KE5IOV KE5ISO KE5JA KE5K KE5KCN KE5KZX KE5LLM/6 KE5LQ KE5LYW KE5MHV KE5MIS KE5MMT KE5MOZ KE5NCD KE5NQ KE5NYZ KE5OG KE5OKQ KE5ORW KE5OVE KE5OXS KE5PRL KE5PUH KE5PWL KE5PWR KE5QAR KE5QBZ KE5QKR KE5QWP KE5RBS KE5RFR KE5RHM KE5RON KE5RS KE5RXN KE5SBP KE5SNJ KE5SNK KE5SOF KE5SPE KE5TC KE5TQA KE5UTN KE5VDT KE5WUE KE5YA KE5YGR KE5YOO KE5YPH KE5YXO KE5ZDN KE5ZGI KE5ZSR KE5ZSW KE5ZWD KE5ZYP KE6EEZ KE6EJG KE6EKH KE6ENI/XE2 KE6FV KE6GFF KE6GFI KE6GLA KE6KJD KE6LPO KE6MGW KE6OIO KE6OJ KE6QR KE6RAD KE6RGB KE6RS KE6SHL KE6TE KE6U KE6UAR KE6V KE6WC KE6YLH KE6ZLY KE7A KE7ACE KE7AJ KE7AUB KE7BT KE7CPE KE7CRN KE7D KE7DX KE7FBY KE7FXF KE7GRL KE7GYQ KE7GYT KE7HHW KE7HOP/KL7 KE7HTL KE7HTY KE7IEE KE7JIW KE7JNT KE7LOQ KE7NKF KE7NO KE7NVA KE7NVY KE7ORS KE7PAV KE7PGO KE7PHU KE7PZX KE7RLI KE7RPR KE7RVL KE7SW KE7SX KE7TBK KE7TM KE7TZE KE7UGO KE7VUX KE7VZW KE7WDJ KE7WMI KE7WRJ KE7WVZ KE7WWC KE7X KE7XE KE7XM KE7YF KE7YIQ KE7YKS KE7ZAC KE7ZGG KE7ZHI KE7ZZO KE8DM KE8E KE8FO KE8G KE8M KE8NK KE8NN KE8PX KE8RG KE8SO KE8UM KE8VC KE8VK KE9AG KE9ET KE9EX KE9I KE9LY KE9PH KE9PP KE9TP KE9U KE9VS KF0AK KF0F KF0GE KF0IQ KF0LA KF0N KF0P KF0QR KF0SJ KF0UR KF0VR KF0XM KF1C KF1D KF2AT KF2AX KF2FK KF2JK KF2O KF2T KF2U KF2VX KF2X KF2XN KF2YS KF2ZQ KF3B KF3BA KF3DJ KF3EQ KF3F KF3P KF4BI KF4DVF KF4DVG KF4ECG KF4ENE KF4EUZ KF4FL KF4GDX KF4GLE KF4HOU KF4IBU KF4IFF KF4JPX KF4KNF KF4LJX KF4LMT KF4LMW KF4MH KF4MXS KF4NMH KF4OHI KF4OPX KF4PQL KF4QQY KF4QYF KF4TP KF4UYK KF4VTT KF4YCP KF4YLM KF4ZS KF4ZZ KF5CBN KF5CCT KF5CST KF5DKS KF5DNW KF5EH KF5EHV KF5ER KF5KWO KF5S KF5SA KF5VM KF5Y KF6A KF6ABU KF6I KF6JOQ KF6JQ KF6KDA KF6MWA KF6NCX KF6QXX KF6RNT KF6RXB KF6RY KF6T KF6ZYD KF7ADB KF7ADK KF7AHO KF7BBJ KF7CG KF7CQ KF7E KF7EKB KF7F KF7GYE KF7IO KF7IQ KF7MD KF7NN KF7P KF7PG KF7RU KF7TY KF7WQ KF8ES KF8GE KF8K KF8PS KF8UN KF8Z KF9AF KF9D KF9JV KF9KP KF9LI KF9TI KF9UP KF9WW KG0AL KG0AQ KG0DX KG0EI KG0EW KG0F KG0JD KG0KP KG0PP KG0TS KG0TW KG0UA KG0US KG0Z KG1D KG1E KG1V KG2AF KG2GL KG2MV KG2RG KG2S KG2V KG3BOZ KG3F KG3Q KG3V KG4AZN KG4BYL KG4CBI KG4CUY KG4EM KG4FLA KG4FPJ KG4GSX KG4HTT KG4HUF KG4IGC KG4IJS KG4JGQ KG4JJS KG4JSZ KG4JYB KG4KEA KG4KQI KG4KWW KG4LCF KG4MGE KG4NRF KG4NWS KG4OCJ KG4PLT KG4RUE KG4SS KG4TEI KG4TQQ KG4TTQ KG4UDL KG4USN KG4UVU KG4VBK KG4VLW KG4VPC KG4W KG4WNA KG4WQZ KG4YGP KG4YLZ KG4YNM KG4ZDM KG4ZNA KG4ZOD KG4ZOI KG4ZVA KG4ZXK KG5EG KG5NP KG5OO KG5RJ KG5TA KG5UN KG5V KG5VK KG6ACG KG6AO KG6AXA KG6B KG6COH KG6D KG6DX KG6I KG6JDX KG6KH KG6LWE KG6MZS KG6NPB KG6OJB KG6RCW KG6SMN KG6STU KG6TAD KG6TBR KG6TGR KG6TT KG6UBG KG6WIK KG6YHH KG6YPH KG6ZHC KG7C KG7E KG7EW KG7H KG7HF KG7P KG7UFO KG7VQ KG7WZ KG8CO KG8CW KG8CX KG8DH KG8OU KG8P KG8V KG8WI KG9AH KG9AV KG9D KG9E KG9EE KG9FA KG9G KG9IL KG9JP KG9N KG9SF KG9X KG9Z KH0UA KH2AR/W4 KH2AR/4 KH2/JJ1LRD KH2JU KH2L KH2/N2NL KH2OP KH2RU/KP4 KH2X/W4 KH6AK KH6AT KH6BO KH6CB KH6CD KH6CG KH6CJJ KH6CO KH6CQH/W7 KH6CW KH6FI KH6FP KH6GMP KH6GN KH6HAM KH6HU KH6IB KH6J KH6KM KH6LC KH6LH KH6LS KH6MB KH6ND KH6NF KH6NO/W7 KH6/N0CO KH6OA KH6OO KH6P KH6QJ KH6RC KH6RT KH6RZ KH6SP/W5 KH6TDM KH6U KH6/W6PH KH6XS KH6YR KH6ZM KH6ZN KH7B KH7BB KH7C KH7CC KH7CW KH7HI KH7LC KH7MM KH7Q KH7T KH7U KH7WW/W7 KH7X KH7XS KH7Y KH9/WA2YUN KI0F KI0G KI0HA KI0HS KI0II KI0J KI0JG KI0KB KI0OV KI0QS KI0RB KI0RH KI0SK KI0WA KI0Y KI0Z KI1G KI1M KI2G KI2P KI3C KI3DS KI3O KI3T KI4ACW KI4AOQ KI4ASK KI4BAL KI4BIY KI4BJS KI4BSB KI4BWS KI4BXU KI4BYQ KI4C KI4CBF KI4CBN KI4CQO KI4DT KI4EEY KI4EFJ KI4EGT KI4EME KI4EZC KI4FCQ KI4FIA KI4FSZ KI4FVS KI4FW KI4GGH KI4GGJ KI4GHT KI4GIK KI4GKS KI4GUO KI4HHK KI4IKB KI4IRH KI4ITV KI4JMI KI4KFW KI4KK KI4KPA KI4KTH KI4LAV KI4LIL KI4LMA KI4LNE KI4LPR KI4MFF KI4MFX KI4MGA KI4MHA KI4MIV KI4MQF KI4MUG KI4NCX KI4NKA KI4NSI KI4NSP KI4ODO KI4ONJ KI4ORL KI4ORU KI4ORY KI4PAQ KI4PHE KI4PKW KI4PRK KI4PSW KI4PTM KI4PVD KI4QEO KI4QIF KI4QLN KI4QMK KI4RFU KI4RKB KI4ROA KI4RXE KI4SGQ KI4SII KI4SP KI4SPO KI4SVQ KI4TAW KI4TI KI4TJY KI4TMD KI4TTS KI4TXP KI4TYK KI4TZ KI4TZU KI4URM KI4UYM KI4VBR KI4VCT KI4VDC KI4VEU KI4VFW KI4VLQ KI4VTL KI4VWJ KI4WAX KI4WCA KI4WOH KI4YAH KI4YCC KI4YDJ KI4YPT KI4YRH KI4YXO KI4YY KI4YZO KI4ZHF KI4ZKJ KI4ZVU KI5EE KI5F KI5FR KI5IK KI5JF KI5T KI5TN KI5WE KI5WL KI5XP KI6ASK KI6BEN KI6CDF KI6CG KI6DCN KI6DRN KI6DY KI6DY/0 KI6EAB KI6FTT KI6FYQ KI6GVI KI6GVM KI6HDV KI6IRA KI6IT KI6J KI6JD KI6JGH KI6JJW KI6KFB KI6KSY KI6KVR KI6LQE KI6LTC KI6LZ KI6MQX KI6MWN KI6NDA KI6NGN KI6NN KI6NNN KI6NUL KI6OQU KI6ORO KI6OY KI6PMD KI6PTU KI6QDB KI6QDH KI6RQY KI6RRD KI6RRN KI6RUW KI6SJB KI6SMX KI6SZF KI6T KI6TGS KI6TXC KI6UAL KI6UDJ KI6VC KI6VJY KI6VVV KI6WCI KI6WJ KI6WOX KI6WZZ KI6YYT KI6ZLW KI6ZX KI6ZZD KI7AO KI7BP KI7DG KI7K KI7M KI7MT KI7N KI7T KI7TG KI7VR KI7XA KI7Y KI8BV KI8CQ KI8JD KI8KQ KI8L KI9A KI9E KI9H KJ0B KJ0G KJ0I KJ0M KJ0MTN KJ0P KJ0R KJ1I KJ1J KJ2D KJ2M KJ3L KJ3X KJ4ADN KJ4AIS KJ4AMH KJ4AMU KJ4AOM KJ4APD KJ4AUQ KJ4AUR KJ4AYT KJ4AZA KJ4BEE KJ4BIW KJ4BIX KJ4BJ KJ4BQS KJ4CMG KJ4CNN KJ4CTS KJ4DBB KJ4DDM KJ4DHB KJ4DLP KJ4DNK KJ4DOZ KJ4EEW KJ4EPL KJ4ERZ KJ4EUN KJ4EX KJ4EYZ KJ4EZA KJ4FDV KJ4FKQ KJ4FSU KJ4FYX KJ4GDW KJ4GLK KJ4GOI KJ4HEY KJ4HYG KJ4HZ KJ4IC KJ4IGV KJ4IQT KJ4IVB KJ4IVK KJ4IWX KJ4IXI KJ4IZW KJ4JC KJ4JEY KJ4JQV KJ4JTQ KJ4JTT KJ4KBC KJ4KNW KJ4KTG KJ4KVC KJ4LEN KJ4LKU KJ4ND KJ4NMO KJ4NNO KJ4OAS KJ4OHL KJ4OOA KJ4OWK KJ4PTA KJ4QVJ KJ4QZJ KJ4R KJ4RR KJ4RSK KJ4UNA KJ4UY KJ4VVR KJ4WD KJ5CI KJ5OA KJ5RC KJ5RM KJ5T KJ5XX KJ6ABC KJ6AGX KJ6AP KJ6BPO KJ6CA KJ6DJL KJ6DQ KJ6EHS KJ6HZ KJ6M KJ6NO KJ6P KJ6RA KJ6UD KJ6Y KJ6YK KJ7BS KJ7GI KJ7NO KJ7OB KJ7QM KJ7S KJ8O KJ9A KJ9C KJ9D KJ9I KK0A KK0DJ KK0G KK0HF KK0I KK0K KK0M KK0Q KK0SD KK1F KK1KW KK1L KK1S KK1W KK1X KK2O KK2W KK3AN KK3F KK3Q KK4A KK4AW KK4E KK4GV KK4IY KK4LH KK4PJ KK4PQ KK4R KK4RV KK4SI KK4SZ KK4TA KK4TE KK4US KK4WS KK4XL KK5CT KK5HT KK5I KK5IB KK5J KK5JY KK5K KK5LO KK5MR KK5NA KK5NO KK5OQ KK5OV KK5RX KK5TC KK5ZD KK6EL KK6GJ KK6LT KK6MC KK6PC KK6QT KK6T KK6TV KK6XN KK7AC KK7BR KK7CG KK7DP KK7EU KK7IG KK7MF KK7O KK7OO KK7PR KK7S KK7UQ KK7UV KK7VL KK7X KK7XT KK7YC KK7YL KK7YU KK8B KK8D KK8MM KK8U KK8X KK8Y KK9A KK9DX KK9G KK9H KK9N KK9O KK9T KK9V KL1IN KL1JP KL1R KL1SE/W4 KL1SF KL1V KL1WE/W6 KL1WE/6 KL2AX KL2QV KL2R KL2RG KL5DX KL5E KL5O KL5Z KL7AA KL7AC KL7AF KL7AI KL7AIR KL7AM KL7AN KL7CQ KL7CW KL7D KL7DX KL7FAP KL7HBK KL7CH KL7IDA KL7IWC KL7J KL7JFT KL7JR KL7LT KL7MM KL7NC KL7/N0HJZ KL7OH KL7OO KL7OO/W7 KL7OU KL7QR KL7R KL7RA KL7SB KL7TS KL7WP KL7WV KL7XX KL7YK KL7Z KL8DX KM0O KM0U KM1C KM1D KM1E KM1G KM1R KM1W KM1X KM1Z KM2L KM2O KM2Y KM2Z KM3J KM3T KM3T/KP4 KM4C KM4D KM4DR KM4DR/5 KM4H KM4HI KM4CH KM4JA KM4KB KM4M KM4MK KM4OR KM4RK KM4RO KM4U KM4ZR KM5FY KM5JW KM5LS KM5PS KM5RA KM5TY KM5VI KM5Z KM6CZ KM6HB KM6I KM6JM KM6TY KM6XX KM6Z KM7DX KM7T KM7TR KM7W KM8L KM8R KM9M KM9P KM9X KN0A KN0N KN0R KN0V KN1H KN1W KN3A KN3X KN4AQ KN4DS KN4JN KN4JX KN4KL KN4LF KN4NN KN4OK KN4Q KN4QD KN4QJ KN4Y KN5H KN5O KN5S KN6B KN6DV KN6E KN6H KN6LF KN6OP KN6OZ KN6U KN6VVH KN6X KN6Y KN6YC KN7D KN7K KN7N KN7PF KN7S KN7T KN7Y KN8D KN8DMK KN8J KN8KAZ KN8KAZ/5 KN8M KN9C KN9N KO0Z KO1E KO1G KO1H KO1U KO2H KO2OK KO4FV KO4OL KO4PU KO4XB KO4XJ KO4Y KO5DX KO6I KO6IS KO6JI KO6U KO7AA KO7I KO7P KO7T KO7U KO7X KO9G KP2B KP2BH KP2CW KP2D KP2DX KP2M KP2SJ KP2TM KP3AAA KP3G KP3S KP3VA KP3Z KP4AH KP4ATF KP4BD KP4BME KP4ED KP4FD KP4GB KP4GB/W3 KP4GC KP4JFR KP4JRS KP4KE KP4KE/W4 KP4LH KP4MS KP4QY KP4RAT KP4RAY KP4SQ KP4TF KP4TG KP4US KP4VP KP4WW KP4Y/W0 KQ0B KQ1A KQ1F KQ1P KQ1U KQ1X KQ2I KQ2M KQ3F KQ4BH KQ4KK KQ4VY KQ4Y KQ5E KQ6DX KQ6EA KQ6ES KQ6IU KQ6K KQ6LV KQ6OD KQ6PK KQ6Q KQ6X KQ6Z KQ7W KQ8E KQ8M KQ9J KR0I KR0K KR0O KR0T KR0U KR0V KR1A KR1B KR1ST KR1ST/4 KR2AA KR2C KR2D KR2Q KR3E KR3J KR3O KR4BG KR4EY KR4F KR4JY KR4LO KR4OW KR4RO KR4TI KR4U KR4V KR4WI KR4X KR4Z KR4ZA KR5DX KR5N KR5V KR5X KR6C KR6LH KR6RR KR7DX KR7G KR7LD KR7O KR7RK KR7W KR7X KR8MR KR8Q KR8T KR8U KR8V KR9L KS0AA KS0M KS0T KS0X KS0Y KS1C KS1J KS1S KS1Y KS2G KS2L KS2O KS3D KS3F KS3P KS3S KS4G KS4L KS4S KS4V KS4X KS4XN KS4XQ KS4YX KS4Z KS5A KS5Z KS6A KS6M KS6U KS7S KS7T KS7U KS8O KS9K KS9W KT0AD KT0DX KT0F KT0K KT0P KT0R KT1B KT1D KT1I KT1J KT1V KT1VT KT2D KT2Z KT3M KT3W KT3Y KT4AH KT4CB KT4DW KT4FJ KT4FY KT4HX KT4LF KT4MM KT4OO KT4PD KT4Q KT4TL KT4U KT4ZB KT5D KT5E KT5G KT5J KT5V KT5X KT6D KT6DX KT6LA KT6V KT6VV KT6YL KT7AZ KT7DX KT7F KT7G KT8K KT8N KT8R KT8X KT8Y KT8Z KT9B KT9L KT9T KT9W KU0DM KU0G KU0K KU1CW KU1T KU2C KU2M KU2US KU3G KU3X KU4A KU4AF KU4BL KU4BP KU4C KU4EC KU4GW KU4MN KU4MT KU4PY KU4UV KU4V KU4VY KU4WD KU4XO KU4XP KU4YW KU4ZV KU5B KU6S KU6T KU6W KU7N KU7Y KU7Z KU8E KU8L KU8T KU8V KU9RK KU9S KU9Z KV0K KV0Q KV1J KV1P KV1W KV2K KV2M KV2R KV2S KV2X KV3W KV4CN KV4DT KV4FZ KV4K KV4T KV5V KV5WS KV5Y KV6O KV7DX KV7K KV7M KV7S KV8Q KV9O KV9R KV9W KW0H KW0U KW0V KW2A KW2G KW2HV KW2J KW2N KW2O KW3A KW3F KW3LO KW3U KW3W KW4CC KW4E KW4G KW4J KW4JS KW4T KW4TT KW4V KW4VA KW4WK KW5HP KW5K KW6G KW6N KW6Q KW7A KW7E KW7I KW7JS KW7N KW7OS KW7Q KW7Y KW8N KW8O KW8V KW9A KW9CAT KW9M KW9N KW9R KX0R KX1A KX1E KX1G KX1X KX2A KX2B KX2H KX2P KX2S KX2X KX2Y KX3K KX3Q KX4D KX4G KX4O KX4P KX4X KX5A KX5RW KX5T KX5W KX6M KX6X KX7F KX7K KX7L KX7M KX7P KX7YT KX8A KX8D KX8K KX8X KX9DX KX9M KX9Q KX9X KY0O KY0R KY0W KY0Y KY1LAW KY1RK KY1Z KY2J KY2T KY3B KY3D KY3X KY4BP KY4CW KY4F KY4J KY4P KY4USA KY4Z KY5D KY5G KY5N KY5Q KY5R KY6J KY6LA KY7K KY7L KY7M KY7Q KY9KY KY9KYO KZ1A KZ1K KZ1O KZ1W KZ1X KZ1Z KZ2I KZ2T KZ2V KZ3DX KZ3M KZ3Q KZ3T KZ3W KZ3X KZ4D KZ4G KZ4USA KZ4V KZ4VT KZ4ZZ KZ5A KZ5AM KZ5D KZ5J KZ5JE KZ5MM KZ5OM KZ5P KZ5V KZ6D KZ7O KZ7X KZ8A KZ8E KZ8K KZ8ZZ KZ9O K0ABC K0ACP K0AD K0ADX K0AE K0AIZ K0AK K0ALT K0ALV K0ANS K0AOZ K0AP K0ARK K0ARS K0ARY K0AV K0AWU K0AZ K0BJ K0BLT K0BO K0BOG K0BUD K0BWJ K0BWQ K0BX K0CA K0CCM K0CD K0CF K0CIE/5 K0CIY K0CKD K0CL K0CMH K0CMS K0CN K0COM K0COP K0CW K0DEQ K0DI K0DK K0DLP K0DLW K0DN K0DNG K0DQ K0DTJ K0DU K0DVV K0DXC K0EA K0EIA K0EJ K0EOU K0EQH K0ESE K0ETV K0ETY K0EU K0EWS K0EX K0FA K0FBV K0FG K0FHG K0FJ K0FLY K0FM K0FPL K0FRP K0FS K0FT K0FTC K0FVF K0FW K0FX K0FY K0FYI K0GAS K0GEO K0GLT K0GM K0GMO K0GND K0GPF K0GSV K0GVG K0GXI K0HA K0HB K0HC K0HHB K0HIP K0HJC K0HMO K0HNC K0HNM K0HP K0HS K0HT K0HUU K0HW K0IDT K0IE K0IEA K0IO K0IP K0IR K0IRL K0IS K0ISL K0ITC K0IV K0IVK K0IYA K0IZ K0JA K0JDD K0JE K0JEM K0JGH K0JJ K0JJM K0JJR K0JPL K0JSC K0JSW K0JUH K0JV K0JZW K0KE K0KES K0KJS K0KL K0KP K0KRH K0KT K0KU K0KVR K0KW K0KX K0KY K0KZA K0LAF K0LC K0LDS K0LEJ K0LFV K0LG K0LIR K0LMD K0LU K0LUZ K0LW K0LWV K0MA K0MAF K0MD K0MDS K0MF K0MIS K0MJS K0MN K0MPH K0MZN K0NA K0NE K0NI K0NM K0NN K0NO K0NW K0NWT K0NX K0NY K0NZ K0OB K0OD K0OK K0OLD K0OSW K0OU K0PC K0PFV K0PFX K0PIR K0PJ K0PK K0PL K0PP K0PP/7 K0PT K0PY K0QB K0QC K0QH K0QL K0QQ K0RC K0RDK K0RDW K0RF K0RFD K0RG K0RGR K0RH K0RI K0RPD K0RRP K0RRY K0RS K0RU K0RWL K0RY K0RZ K0SA K0SBV K0SCM K0SD K0SDW K0SF K0SIX K0SN K0SPI K0SQ K0SR K0SRL K0SRW K0SV K0SVX K0SW K0SX K0TER K0TF K0TG K0THN K0TI K0TIV K0TK K0TO K0TPP K0TQ K0TRT K0TT K0TTY K0TV K0TVD K0TZ K0UA K0UAS K0UB K0UD K0UE K0UIF K0UK K0UM K0URN K0USA K0UU K0VAR K0VBU K0VEE K0VET K0VG K0VGB K0VH K0VIZ K0VK K0VM K0VR K0VVY K0VXP K0VXU K0VZT K0WA K0WB K0WHV K0WIU K0XB K0XD K0XE K0XI K0XN K0XTR K0XU K0XY K0YCR K0YQ K0YQ/7 K0YR K0YW K0YY K0ZK K0ZN K0ZR K0ZX K1AA K1AA/4 K1AC K1AF K1AIR K1AJ K1ANT K1AR K1ARO K1ASJ K1ATL K1ATT K1AV K1BAA K1BBJ K1BBM K1BD K1BG K1BKE K1BO K1BV K1BW K1BX K1BZM K1CBR K1CL K1CN K1CP K1CTT K1DAN K1DAT K1DAT/1 K1DC K1DD K1DEC K1DFT K1DG K1DM K1DQV K1DRW K1DS K1DT K1DUQ K1DW K1DX K1DXA K1EA K1EAR K1EBY K1EEE K1EFI K1EKF K1EO K1EP K1EQA K1ESE K1EY K1FE K1FEV K1FFX K1FIR K1FTK K1FUG K1FWE K1FXY K1GE K1GGI K1GI K1GIG K1GIL K1GMD K1GQ K1GR K1GU K1GUN K1GUP K1GU/4 K1GW K1HAP K1HG K1HI K1HOP K1HR K1HT K1HTJ K1HTN K1HTV K1HV K1HZ K1IB K1IED K1IF K1IK K1IM K1IMI K1IN K1IPT K1IR K1IX K1JB K1JC K1JD K1JDL K1JE K1JI K1JO K1JOS K1JT K1JTF K1JWP K1KA K1KAV K1KBA K1KD K1KDG K1KG K1KI K1KLM K1KNJ K1KNQ K1KO K1KP K1KQ K1KS K1KU K1KUZ K1KX K1LD K1LEE K1LGM K1LGQ K1LHO K1LI K1LKP K1LKR K1LOG K1LPS K1LT K1LTJ K1LU K1LZ K1MAA K1MC K1MIJ K1MK K1MM K1MO K1MQ K1MR K1MTK K1MVM K1MVY K1MW K1NA K1ND K1NDF K1NDV K1NEF K1NG K1NH K1NIU K1NJ K1NK K1NKA K1NNJ K1NPT K1NR K1NSS K1NTR K1NU K1NV K1NY K1NYK K1OCD K1OU K1OW K1OYQ K1PAD K1PDY K1PJ K1PL K1PLX K1PT K1PTF K1PU K1PUB K1PV K1PY K1QF K1QK K1QO K1QR K1QS K1QW K1QX K1RA K1RAA K1RC K1RE K1RH K1RJV K1RK K1RM K1RMF K1RO K1RQ K1RS K1RU K1RV K1RX K1RY K1RZ K1SA K1SA/4 K1SD K1SE K1SEZ K1SFA K1SI K1SL K1SLB K1SL/6 K1SM K1SND K1SO K1SSH K1ST K1SUB K1SVC K1SVT K1SXD K1TA K1TAX K1TG K1TH K1THP K1TKL K1TM K1TN K1TN/2 K1TO K1TR K1TTT K1TTY K1TU K1TW K1TZD K1UI K1UO K1UQT K1UR K1UTI K1UZK K1VA K1VC K1VDF K1VGF K1VI K1VIJ K1VLB K1VM K1VMI K1VML K1VO K1VSJ K1VT K1VU K1VV K1VW K1WB K1WCC K1WHS K1WN K1WO K1WVU K1WW K1WY K1XM K1XN K1XO K1XT K1XV K1YA K1YE K1YK K1YM K1YQ K1YSY K1YT K1YX K1ZE K1ZG K1ZM K1ZO K1ZPZ K1ZR K1ZW K1ZW/4 K1ZZ K1ZZI K2AAW K2AFY K2AK K2AMI K2AMP K2AOP K2AQ K2AV K2AVX K2AX K2AXX K2BA K2BB K2BBQ K2BLA K2BOG K2BQ K2BQW K2BW K2BX K2CAF K2CB K2CBI K2CC K2CDJ K2CF K2CIB K2CJ K2CM K2CS K2CUB K2CVG K2DAR K2DB K2DBK K2DC K2DEN K2DER K2DFC K2DGM K2DI K2DL K2DLJ K2DLS K2DM K2DP K2DRN K2DS K2DSL K2DSL/4 K2DUX K2EEF K2EGJ K2EK K2EKM K2EN K2EN/2 K2EP K2ER K2ERG K2ESE K2EUH K2EVY K2FF K2FJ K2FL K2FU K2FW K2GE K2GEK K2GER K2GIL K2GJJ K2GLS K2GMY K2GN K2GNR K2GSP K2GTC K2GV K2GXT K2HGO K2HIG K2HK K2HL K2HN K2HPV K2HSV K2HT K2HTO K2HVE K2HVN K2IC K2ID K2IGW K2ITT K2IUC K2IWR K2IXQ K2IY K2IZ K2JAO K2JAY K2JMY K2JT K2KEY K2KNB K2KQ K2KR K2KSH K2KW K2LE K2LML K2LMQ K2LNS K2LP K2LRE K2LS K2LTS K2MAI K2MD K2MEN K2MFW K2MFY K2MGR K2MK K2MLB K2MM K2MME K2MMO K2MMW K2MO K2MP K2MS K2MUB K2NF K2NG K2NJ K2NNY K2NV K2NV/VE3 K2NYG K2OAK K2ODC K2OEK K2OF K2OGD K2OGD/4 K2OID K2OK K2OLO K2ONP K2OO K2OQA K2OS K2OVS K2OWR K2PF K2PGB K2PH K2PK K2PLF K2PO K2PO/7 K2PS K2PW K2QD K2QDY K2QMF K2QNU K2QO K2QPN K2QQ K2QY K2RB K2RD K2RDX K2RED K2RET K2RI K2RIG K2RMA K2RNY K2RP K2RPC K2RR K2RS K2RSB K2RSK K2SA K2SAX K2SD K2SFS K2SG K2SGH K2SHA K2SHZ K2SI K2SLZ K2SM K2SQS K2SR K2SS K2SSS K2SX K2SZ K2TB K2TD K2TE K2TGI K2TGW K2TJ K2TL K2TO K2TQC K2TR K2TT K2TTT K2TV K2TVY K2TW K2TWI K2TZ K2UC K2UF K2UFT K2ULF K2UM K2UO K2UOP K2UR K2UT K2UTC K2UU K2UV K2UX K2UY K2VCO K2VNS K2VPX K2VUI K2VV K2VX K2VY K2VZ K2WG K2WH K2WK K2WO K2WOP K2WR K2WU K2XA K2XB K2XC K2XE K2XF K2XN K2XR K2XT K2XX K2YG K2YR K2YY K2YYD K2ZB K2ZC K2ZF K2ZJ K2ZQ K2ZR K2ZR/4 K2ZS K2ZVI K3AJ K3AN K3AQ K3ARK K3ATO K3AU K3BDI K3BEQ K3BEV K3BFQ K3BHX K3BSY K3BTK K3BU K3BVQ K3BVU K3BYU K3BZ K3CB K3CDQ K3CKT K3CO K3CQ K3CR K3CSL K3CT K3CXB K3DCW K3DE K3DI K3DJ K3DMG K3DNE K3DOS K3DQ K3DQB K3DYU K3EE K3EIN K3EL K3EP K3ERN K3EST K3FGO K3FH K3FH/4 K3FIV K3FN K3FOP K3FP K3FS K3FT K3FWG K3FXR K3GC K3GEG K3GEN K3GEV K3GGN K3GHH K3GK K3GM K3GMT K3GP K3GP/8 K3GW K3GWK K3GY K3GYS K3HH K3HP K3HR K3HSK K3HX K3HY K3IA K3IE K3II K3IPK K3ISH K3IU K3IVO K3IXD K3IXD/4 K3IZ K3JA K3JD K3JHT K3JJG K3JLM K3JMH K3JPT K3JPW K3JRR K3JT K3JT/8 K3JVB K3JWI K3JXO K3KE K3KK K3KN K3KNL K3KO K3KU K3LA K3LAB K3LB K3LJ K3LKS K3LL K3LP K3LPP K3LR K3LRH K3LS K3LU K3LUE K3MD K3MI K3MIM K3MIY K3MJ K3MJW K3MLT K3MM K3MOT K3MOV K3MQ K3MQP K3MRG K3MRK K3MSB K3MZ K3NA K3NCO K3ND K3NEM K3NF K3NK K3NL K3NM K3NQV K3NRK K3NUI K3OD K3OK K3OMI K3OMI/VE1 K3ONW K3OO K3OOO K3OQ K3OQF K3ORS K3OSO K3OX K3PF K3PG K3PH K3PIN K3PP K3PSP K3PT K3PU K3PUR K3QDV K3QE K3QF K3QIA K3QT K3QX K3RA K3RCW K3RDA K3RH K3RMB K3RN K3RNZ K3RR K3RSJ K3RU K3RV K3RWN K3RY K3SAE K3SEW K3SF K3SKB K3SOM K3STX K3SUI K3SV K3SWZ K3SX K3SXA K3TC K3TCU K3TD K3TEJ K3TEL K3TLP K3TM K3TN K3TP K3TRM K3TUF K3TW K3TW/4 K3TX K3UA K3UC K3UG K3UI K3UK K3UL K3USC K3UU K3VA K3VAR K3VAT K3VED K3VIG K3VIN K3VJ K3VN K3VOA K3VX K3WA K3WC K3WD K3WGR K3WI K3WJV K3WM K3WT K3WU K3WW K3WWP K3XA K3XC K3XO K3YDX K3YG K3YH K3YP K3YUB K3ZA K3ZJ K3ZK K3ZM K3ZMJ K3ZO K3ZQ K3ZV K3ZXL K3ZZ K4AAB K4AAZ K4AB K4ACG K4ADI K4ADJ K4ADR K4ADU K4ADV K4AEN K4AG K4AGT K4AL K4ALE K4AMC K4AMW K4AOC K4AP K4APG K4ARC K4ARL K4AU K4AUX K4AVF K4AVU K4AVX K4AWM K4BAI K4BCE K4BFT K4BM K4BN K4BNC K4BP K4BQP K4BRI K4BSD K4BSK K4BTC K4BX K4BYF K4CA K4CC K4CEB K4CIA K4CJB K4CJN K4CKD K4CMC K4CMR K4CMS K4CNW K4CQB K4CQW K4CRM K4CU K4CVL K4CWA K4CWW K4CX K4CZ K4DAS K4DES K4DGJ K4DJ K4DJG K4DK K4DLG K4DLI K4DMH K4DPF K4DSP K4DTT K4DVD K4DXA K4DXR K4DXU K4DXV K4DY K4DZR K4EA K4EAK K4EC K4ECP K4EDI K4EET K4EFZ K4EHI K4EHT K4EJQ K4EOR K4EQ K4ESA K4ESB K4EU K4EWG K4EYE K4FAU K4FCC K4FCG K4FJ K4FJW K4FK K4FO K4FOY K4FP K4FPF K4FT K4FTO K4FV K4FW K4FX K4FXN K4FYM K4GBH K4GCD K4GDW K4GHS K4GK K4GKD K4GLA K4GM K4GMH K4GOP K4GRE K4GSG K4GSO K4GTM K4GTU K4HA K4HAL K4HFQ K4HGX K4HJZ K4HMB K4HO K4HPP K4HQK K4HR K4HTA K4HTY K4HUD K4HV K4IA K4IBS K4IDD K4IE K4IJ K4IJQ K4IN K4IOE K4IQJ K4IQJ/4 K4IRI K4ISV K4IU K4IUD K4IX K4JAB K4JAF K4JBJ K4JC K4JEB K4JER K4JJQ K4JK K4JLD K4JO K4JP K4JPC K4JPD K4JPG K4JPN K4JRA K4JRB K4JRS K4JSI K4JTT K4JUZ K4JVK K4JWF K4KAL K4KAY K4KBR K4KG K4KGG K4KIU K4KL K4KO K4KP K4KR K4KSR K4KTG K4KV K4KYY K4KZ K4KZO K4KZZ K4LA K4LJ K4LM K4LNN K4LO K4LQ K4LRP K4LRP/2 K4LRX K4LSU K4LT K4LTA K4LW K4LWC K4LY K4LZ K4MA K4MCG K4MCK K4MDX K4MF K4MGA K4MGE K4MIA K4MIL K4ML K4MM K4MNE K4MOA K4MOG K4MPE K4MQG K4MQM K4MS K4MSR K4MSS K4MWB K4MX K4MYA K4MZU K4NAU K4NAX K4NC K4NFA K4NFX K4NIN K4NJK K4NKY K4NLL K4NNX K4NO K4NOP K4NP K4NTO K4NV K4NVA K4NVJ K4NYS K4OB K4OCE K4OD K4ODL K4OJ K4OMG K4OO K4ORD K4OSO K4PB K4PBY K4PDJ K4PDM K4PG K4PHE K4PI K4PIC K4PJ K4PPK K4PPQ K4PRO K4PRP K4PUF K4PV K4PX K4PZC K4QD K4QL K4QO K4QPL K4QU K4QVK K4QXX K4RAY K4RBA K4RCG K4RDU K4REB K4RFE K4RG K4RGR K4RH K4RKQ K4RLC K4RM K4RMC K4RO K4ROZ K4RR K4RRF K4RST K4RT K4RUM K4RV K4RW K4RXR K4SAC K4SAV K4SAW K4SKB K4SKY K4SN K4SO K4SPE K4SPO K4SQ K4SSU K4ST K4STN K4SV K4SWE K4SWJ K4SX K4TB K4TCM K4TD K4TDW K4TEA K4TER K4TI K4TJD K4TMC K4TNN K4TNP K4TP K4TR K4TRT K4TS K4TT K4TVE K4TVO K4TWJ K4TX K4TXJ K4TZ K4UB K4UEE K4UFT K4UI K4UK K4UN K4UTE K4UTI K4UU K4UWH K4UY K4VAC K4VCU K4VHV K4VIG K4VRC K4VT K4VU K4VV K4VWK K4VX K4VXR K4WAM K4WES K4WFM K4WG K4WI K4WIP K4WLS K4WMS K4WNW K4WOP K4WP K4WPM K4WPY K4WS K4WW K4WWM K4WY K4WZ K4XB K4XD K4XG K4XI K4XL K4XLT K4XP K4XR K4XTC K4XU K4XXX K4XZ K4YA K4YBB K4YCF K4YDN K4YFH K4YFR K4YGD K4YHB K4YJ K4YKZ K4YMQ K4YP K4YR K4YRK K4YT K4YYD K4YYL K4YZ K4ZGB K4ZGE K4ZGV K4ZH K4ZHM K4ZIN K4ZIW K4ZJ K4ZLE K4ZMV K4ZOO K4ZRJ K4ZTL K4ZW K4ZYU K4ZZ K5AAD K5AB K5ACO K5ADA K5AEM K5AF K5AJK K5AM K5ANR K5AR K5ATS K5AUP K5AUW K5AV K5AVY K5AWL K5AX K5AY K5BAT K5BCN K5BDM K5BG K5BOC K5BTK K5BUD K5BWV K5BWV/0 K5BZH K5CBS K5CFA K5CI K5CID K5CM K5CR K5CS K5CWC K5CX K5DB K5DD K5DEL K5DEY K5DF K5DH K5DHY K5DJZ K5DKH K5DMC K5DNL K5DOE K5DOG K5DP K5DU K5DWI K5DXX K5EA K5ECI K5EEE K5EJ K5EK K5ENS K5ER K5ESW K5EW K5EWJ K5EWS K5EXX K5FA K5FG K5FMC K5FNQ K5FO K5FP K5FR K5FSE K5FUV K5FXB K5GA K5GAT K5GH K5GKC K5GM K5GO K5GQ K5GS K5GVP K5GY K5GZR K5HCT K5HDU K5HDX K5HGX K5HK K5HQV K5HTE K5HUT K5HW K5HX K5ICW K5IID K5IS K5IU K5IX K5IZ K5IZO K5JAW K5JD K5JP K5JRN K5JRW K5JSW K5JTH K5JUC K5JX K5JYD K5KA K5KAB K5KC K5KDX K5KEE K5KEN K5KG K5KJ K5KLA K5KM K5KS K5KT K5KUA K5KV K5KVN K5LAD K5LBU K5LC K5LG K5LH K5LJ K5LKR K5LRS K5LU K5LXK K5MA K5MBA K5MDX K5ME K5MEZ K5MH K5ML K5MMH K5MO K5MOG K5MOZ K5MQ K5MR K5MRM K5MV K5NA K5NAA K5ND K5NDB K5NDT K5NOF K5NOW K5NTT K5NU K5NX K5NY K5NZ K5OAI K5OG K5OI K5OO K5OOL K5OR K5OVC K5OVW K5PAR K5PAX K5PBR K5PC K5PEW K5PI K5PO K5PQ K5PSH K5PX K5QB K5QBG K5QEA K5QED K5QJ K5QNK K5QQ K5QR K5QU K5QX K5QXJ K5QY K5RA K5RC K5RCD K5RHZ K5RJI K5RK K5RN K5RNB K5RQ K5RR K5RRD K5RS K5RSG K5RT K5RX K5RXQ K5SDX K5SEE K5SF K5SI K5SL K5SM K5SNA K5SOR K5SS K5STZ K5SUL K5SWW K5TA K5TBA K5TC K5TDA K5TF K5TFA K5TGS K5TQ K5TQP K5TR K5TRM K5TT K5TTT K5TU K5TVC K5TXG K5UA K5UC K5UIC K5UN K5UO K5UR K5UTG K5UV K5UZ K5VGI K5VIP K5VJZ K5VR K5VRX K5VUY K5VYT K5VZD K5WA K5WAF K5WBM K5WDW K5WE K5WES K5WF K5WI K5WK K5WLQ K5WMH K5WMH/5 K5WNH K5WO K5WPN K5WQG K5WTA K5WW K5XA K5XG K5XH K5XM K5XR K5XRF K5XT K5XU K5XY K5YA K5YAA K5YC K5YCM K5YG K5YM K5YNZ K5YU K5ZCJ K5ZD K5ZE K5ZG K5ZIJ K5ZK K5ZO K5ZQ K5ZY K6AA K6AAB K6AAX K6ACJ K6AH K6AHQ K6AIA K6AIM K6AKR K6ALE K6AM K6ANP K6AO K6AQL K6AUC K6AW K6AWB K6AWO K6AWR K6BBQ K6BDK K6BEW K6BF K6BHH K6BIR K6BJ K6BL K6BR K6BRA K6BXI K6BY K6BZS K6BZZ K6CDJ K6CEO K6CO K6CRC K6CSL K6CSL/7 K6CTA K6CU K6DAJ K6DBG K6DBS K6DBW K6DEX K6DF K6DGW K6DLV K6DW K6DXX K6EE K6EEE K6EEP K6EGF K6EI K6ELE K6EM K6EMI K6EP K6ERT K6EU K6EVR K6EZ K6FAF K6FFY K6FG K6FI K6FO K6FR K6FW K6FX K6GAK K6GCN K6GDP K6GE K6GEP K6GFB K6GFJ K6GGO K6GHA K6GJ K6GO K6GPB K6GRD K6GRJ K6GT K6GVG K6GXO K6GYL K6GZA K6HCJ K6HFA K6HGF K6HL K6HNZ K6HP K6HR K6HRT K6HRU K6IAM K6IC K6IDX K6IF K6IFF K6III K6IMZ K6IP K6IT K6JAJ K6JAR K6JAT K6JEB K6JEY K6JF K6JGM K6JH K6JHD K6JHL K6JHX K6JJ K6JL K6JRY K6JS K6JSV K6JW K6JWB K6JYG K6KAL K6KE K6KII K6KK K6KLY K6KO K6KQV K6KR K6KRD K6KR/7 K6KW K6KWB K6KY K6KYJ K6KZM K6LA K6LAC K6LE K6LG K6LJC K6LL K6LMN K6LPO K6LQP K6LRG K6LRN K6LT K6LZ K6MBY K6MC K6MDJ K6ME K6MEE K6MI K6MJ K6MLF K6MM K6MYC K6NA K6ND K6NDG K6NDV K6NMV K6NO K6NOD K6NQY K6NR K6NUG K6NV K6OA K6OGO K6OI K6OJ K6OKW K6OM K6OO K6OQ K6OWD K6OY K6PAU K6PB K6PBQ K6PCQ K6PJ K6PKT K6PUD K6PZB K6QAX K6QD K6QG K6QK K6QU K6RAD K6RB K6RBS K6RC K6RCF K6RF K6RFM K6RG K6RIM K6RJ K6RJP K6RM K6RN K6RNK K6RR K6RRA K6RTC K6RV K6RWL K6SAT K6SEM K6SGH K6SMF K6SMO K6SRA K6SRZ K6SSJ K6ST K6STA K6SU K6SV K6SXA K6SY K6TA K6TD K6TEC K6TI K6TQM K6TTT K6TU K6TUJ K6TV K6UD K6UF K6UFO K6UIP K6UIZ K6UJ K6UM K6UMO K6UNR K6UNT K6UUW K6UW K6UZB K6VAR K6VFF K6VIA K6VMD K6VMV K6VNX K6VO K6VOA K6VRS K6VUG K6VVA K6VVK K6VWL K6WAC K6WC K6WG K6WH K6WLC K6WRJ K6WS K6WSC K6WV K6WX K6WY K6XC K6XJ K6XM K6XN K6XT K6XV K6XX K6YA K6YK K6YP K6YR K6YRA K6YS K6YT K6YUI K6YV K6ZB K6ZCL K6ZH K6ZJY K6ZM K6ZSR K6ZTA K6ZZ K7AA K7AAE K7ABC K7ABL K7ABV K7ACS K7ACZ K7AED K7AMS K7AO K7AR K7ARJ K7ART K7AWB K7AWJ K7BAN K7BBR K7BE K7BG K7BHM K7BIG K7BLS K7BNY K7BTW K7BUD K7BV K7BX K7CA K7CAT K7CF K7CMR K7CMZ K7CS K7CTR K7CU K7CW K7DAA K7DBU K7DD K7DHD K7DNH K7DPS K7DR K7DS K7DSE K7DSL K7DX K7DZ K7DZW K7EA K7EAR K7EDX K7EG K7EIQ K7EKM K7EM K7ENA K7EUG K7EV K7EW K7EY K7FA K7FD K7FED K7FEL K7FF K7FU K7GA K7GGG K7GIM K7GK K7GLM K7GMF K7GO K7GQ K7GS K7GSE K7GT K7GZP K7HBN K7HC K7HD K7HIL K7HP K7HPH K7HPT K7HRT K7HV K7IA K7IDX K7IDX/7 K7IE K7II K7IK K7INA K7IP K7IR K7IWH K7JA K7JAN K7JBQ K7JCA K7JE K7JH K7JI K7JIZ K7JJ K7JNX K7JPF K7JQ K7JRB K7KAJ K7KAR K7KJ K7KMR K7KMS K7KR K7KSO K7KU K7LA K7LAY K7LAZ K7LFY K7LJ K7LL K7LNP K7LOW K7LR K7LTF K7LU K7LUH K7LV K7LY K7MDH K7MH K7MHI K7MI K7MKL K7MM K7MM/VE2 K7MO K7MOA K7MOA/4 K7MRU K7MS K7MTR K7MY K7MZ K7NAA K7NCG K7NEJ K7NJ K7NK K7NM K7NN K7NNR K7NTW K7NV K7NWM K7NWR K7NWS K7OA K7OG K7OLU K7OM K7OM/4 K7ON K7ONP K7ORY K7OVG K7OVM K7OVW K7OX K7PAP K7PDW K7PEH K7PGL K7PI K7PJT K7PKT K7PMK K7PRW K7PU K7PUC K7PWL K7PWN K7PX K7QBO K7QI K7QMM K7QQ K7QXG K7QYY K7RB K7RDG K7RE K7REL K7RE/0 K7RF K7RFW K7RI K7RL K7RLD K7RMJ K7RON K7RP K7RR K7RSM K7RST K7RX K7SA K7SAM K7SC K7SCX K7SDW K7SEX K7SF K7SFN K7SID K7SJ K7SKH K7SMW K7SP K7SS K7STU K7SU K7SV K7SX K7SYS K7SZ K7SZ/4 K7TD K7TFY K7TJ K7TJR K7TLX K7TM K7TOK K7TP K7TPD K7TQ K7TR K7TR/HR8 K7TRK K7UA K7ULS K7UN K7UNZ K7UP K7UPJ K7UT K7VAY K7VC K7VI K7VIC K7VIT K7VL K7VM K7VS K7VU K7VZX K7WA K7WE K7WIN K7WK K7WLF K7WM K7WP K7WQ K7WXO K7WXW K7XB K7XC K7XE K7XH K7XQ K7XV K7YDL K7YZ K7YZO K7ZA K7ZAD K7ZB K7ZD K7ZI K7ZO K7ZP K7ZQ K7ZS K7ZSD K7ZUM K7ZV K7ZX K7ZYV K7ZZ K7ZZX K8AA K8AAX K8AB K8AC K8AE K8AEX K8AJS K8AJX K8ALM K8AO K8AQM K8ATA K8AZ K8BB K8BBE K8BCK K8BEG K8BHU K8BJ K8BL K8BN K8BSW K8BUF K8BZ K8CAA K8CAR K8CC K8CI K8CJQ K8CJY K8CMO K8CMR K8CN K8CQ K8CR K8CV K8CW K8CX K8CXM K8DD K8DE K8DID K8DJC K8DJR K8DO K8DR K8DSL K8DSS K8DTW K8DV K8DXR K8ED K8EE K8EEW K8EG K8EHB K8EHE K8EJ K8EM K8EMS K8EO K8ESQ K8EUR K8FB K8FC K8FDX K8FF K8FG K8FH K8FL K8FN K8FP K8FUN K8FX K8GA K8GG K8GI K8GIM K8GL K8GLS K8GP K8GT K8GU K8GVK K8GVQ K8GW K8HFX K8HK K8HLQ K8HMS K8HW K8HWW K8CHR K8IA K8IAT K8IFK K8IJ K8IKW K8IO K8IR K8IRC K8IU K8IY K8JA K8JD K8JK K8JLB K8JQ K8JRG K8JWT K8KF K8KFJ K8KHZ K8KI K8KPE K8KPU K8KR K8KS K8KU K8KWT K8KY K8LCR K8LE K8LEE K8LES K8LF K8LJ K8LJK K8LLG K8LN K8LO K8LSB K8LTG K8LV K8LY K8MAD K8MAJ K8MCN K8MD K8ME K8MEG K8MEM K8MFO K8MGK K8MJZ K8MLM K8MM K8MN K8MP K8MR K8MSF K8MSQ K8MU K8MV K8MVZ K8MW K8MWO K8MXC K8MZ K8NA K8NAP K8ND K8NHR K8NI K8NK K8NKQ K8NMG K8NNU K8NOW K8NOZ K8NU K8NVR K8NW K8NWD K8NYG K8NYM K8NYY K8NZ K8OM K8OOK K8OQL K8OSF K8OT K8OWL K8OZ K8PG K8PO K8PP K8PTT K8PWL K8QF K8QFH K8QH K8QI K8QJO K8QKY K8QM K8QWY K8RA K8RAT K8RD K8RDJ K8RDN K8RGM K8RJH K8RJM K8RJW K8RMC K8RNM K8ROX K8RS K8RTL K8RWL K8RYU K8SAK K8SB K8SDK K8SDX K8SEM K8SCH K8SIA K8SIX K8SJE K8SM K8SSB K8SVT K8SYH K8THU K8TJM K8TOM K8TS K8TV K8TVD K8TW K8TWA K8UC K8UP K8UPG K8UPR K8UT K8UU K8UV K8VFR K8VFV K8VUS K8VW K8VYA K8VZD K8WAY K8WDN K8WDQ K8WDX K8WFL K8WHA K8WIL K8WLK K8WSN K8WV K8XS K8YAH K8YC K8YFM K8YM K8YN K8YQR K8YSU K8YTO K8YYY K8ZBY K8ZEE K8ZH K8ZOG K8ZPR K8ZT K8ZZ K8ZZU K8ZZU/4 K8ZZV K9ACX K9ADL K9AGW K9AHH K9AIH K9AJ K9ALP K9ARF K9AU K9AUB K9AW K9AY K9BGL K9BJM K9BQL K9BTP K9BTQ K9BWI K9BWQ K9CAN K9CC K9CG K9CGD K9CIV K9CJ K9CS K9CT K9CW K9DA K9DCV K9DCW K9DIG K9DJ K9DN K9DR K9DT K9DU K9DUR K9DX K9DXA K9DXL K9DY K9EA K9EBY K9EE K9EIF K9EMG K9EN K9EU K9EZ K9FBI K9FEN K9FF K9FI K9FMX K9FN K9FO K9FQC K9FUA K9FW K9FWH K9FY K9FZ K9GA K9GAJ K9GDT K9GLN K9GS K9GTH K9GTO K9GWB K9GY K9GYI K9HCK K9HUY K9HY K9CHP K9CHZ K9IA K9IAC K9IDQ K9IDX K9IG K9IJ K9IL K9IMM K9ING K9IT K9IU K9IUQ K9JAI K9JDV K9JE K9JF K9JF/7 K9JG K9JIG K9JK K9JM K9JMB K9JM/6 K9JO K9JOB K9JP K9JS K9JT K9JU K9JWI K9JWJ K9JWV K9JX K9JY K9JZZ K9KA K9KDE K9KDS K9KEJ K9KEU K9KFR K9KHW K9KJ K9KK K9KL K9KLR K9KM K9KMD K9KNW K9KNZ K9KR K9KU K9LA K9LCR K9LGM K9LJ K9LJN K9LLI K9LMG K9LOF K9LOF/5 K9LZJ K9MA K9MBB K9MBQ K9MDK K9MDO K9MI K9MK K9MM K9MMS K9MMS/8 K9MOT K9MQ K9MRD K9MU K9MUG K9MUG/4 K9MV K9MWM K9MY K9NA K9NB K9NBR K9NN K9NO K9NR K9NU K9NW K9NZ K9OHI K9OKK K9OM K9ON K9OQ K9OR K9OSC K9OT K9OW K9OZ K9PAC K9PG K9PGC K9PJ K9PLX K9PMV K9PPY K9PY K9QCW K9QH K9QVB K9QVB/9 K9RDW K9RH K9RII K9RIM K9RJ K9RJO K9RJZ K9RM K9RO K9RON K9RR K9RS K9RU K9RX K9SD K9SE K9SEM K9SEX K9SG K9SH K9SHP K9SKX K9SQL K9SSB K9SSH K9STH K9SUH K9SV K9TA K9TCD K9TM K9TP K9TPT K9TRV K9TV K9TY K9UH K9UIY K9UK K9UP K9UQN K9US K9UT K9UW K9UWA K9UXZ K9VB K9VFU K9VIC K9VIS K9VS K9VSO K9VV K9WA K9WD K9WDY K9WEY K9WIS K9WJL K9WJU K9WKW K9WMS K9WN K9WWT K9WX K9WYP K9WZB K9XB K9XD K9XE K9XK K9XL K9XR K9XV K9XW K9YC K9YHH K9YKL K9YU K9ZA K9ZBX K9ZG K9ZI K9ZM K9ZMU K9ZMZ K9ZO K9ZT K9ZU K9ZVZ K9ZW K9ZXO LA0CX LA0FA LA1BFA LA1BNA LA1DSA LA1EK LA1ENA LA1J LA1K LA1NSB LA1ORA LA1PHA LA1QDA LA1TPA LA1TPK LA1TUR LA1UKA LA1VFA LA1VNA LA1XFA LA1YE LA1YPA LA2AB LA2GH LA2GN LA2HFA LA2IJ LA2MOA LA2O LA2OKA LA2PA LA2QM LA2RR LA2RZ LA2TD LA2WRA LA2XPA LA3ANA LA3BKT LA3BO LA3BPA LA3HPA LA3RK LA3S LA3TK LA3WAA LA3ZA LA3ZPA LA4CQ LA4CW LA4EI LA4EJ LA4EU LA4GHA LA4IR LA4NE LA4O LA4OGA LA4PM LA4RT LA4SGA LA4URA LA4WKA LA5EKA LA5FBA LA5FH LA5FJA LA5HE LA5HPA LA5HX LA5IIA LA5LBA LA5LJA LA5MDA LA5PBA LA5PRA LA5SAA LA5TFA LA5UF LA5UJ LA5UKA LA5YJ LA5ZQ LA6ALA LA6BNA LA6CF LA6DW LA6FJA LA6HJA LA6HL LA6IHA LA6IRA LA6KOA LA6LDA LA6OP LA6PB LA6TP LA6VM LA6YEA LA6ZFA LA7AFA LA7CL LA7GIA LA7GNA LA7JO LA7MFA LA7NFA LA7OC LA7QI LA7QIA LA7RJ LA7RRA LA7SI LA7SKA LA7THA LA7TN LA7TO LA7VE LA7WCA LA7XK LA8AJA LA8AW LA8D LA8DW LA8HGA LA8KRA LA8NRA LA8OKA LA8OM LA8OOA LA8PDA LA8TIA LA8UHA LA8UL LA8WG LA8XM LA8ZIA LA9AJA LA9BM LA9DAA LA9DJA LA9DK LA9FFA LA9LMA LA9QL LA9QNA LA9TJA LA9TY LA9VDA LA9VK LA9VPA LA9Z LB2TB LB3KB LB3SA LB7Q LB9LE LB9RE LG5LG LN1T LN2HQ LN2L LN2T LN3F LN3R LN3Z LN4BBC LN5O LN7AZ LN8W LN9Z LO0H LO2F LO7D LO7H LP1H LP2F LP3U LQ0F LQ4D LQ5H LR1A LR1H LR2F LR4D LR4E LR6H LS1D LS2D LS2E LS4DX LT0D LT0H LT1A LT1D LT1F LT2F LT3V LT4S LT5D LT5X LT5Y LT7D LT7H LU1AEE LU1ALF LU1ARG LU1BJW LU1BR LU1BW LU1DCB LU1DK LU1DP LU1DZ LU1EJ LU1EUU LU1EWL LU1EXR LU1FDU LU1HF LU1IBL LU1ICX LU1MA LU1MPK LU1MSD LU1QAH LU1QS LU1SF LU1UM LU1VM LU1VZ LU1WI LU1XS LU1YY LU2AH LU2BA LU2DGZ LU2DKT LU2DPW LU2DT LU2DVI LU2DVI/H LU2EE LU2EQF LU2FCB LU2FLN LU2NI LU2QC LU2UE LU2UF LU2VC LU3CQ LU3CT LU3DAT LU3DKV LU3DOC LU3DR LU3DX LU3DY LU3FID LU3FLV LU3HFA LU3HIP LU3HS LU3JVO LU3MAM LU3MCJ LU4AT LU4DPC LU4DQ LU4DX LU4EJS LU4FLJ LU4FPZ LU4FW LU4KC LU4MHQ LU4VEW LU4WG LU5CAB LU5FF LU5FII LU5FR LU5FT LU5FZ/A LU5MT LU5OM LU5UBI LU5VV LU5WW LU5YF LU6AM LU6DAT LU6DK LU6DO LU6EF LU6EQT LU6ETB LU6EVD LU6FAH LU6FC LU6FEC LU6FHO LU6FN LU6FOV LU6FT LU6HH LU6KA LU6QI LU6UBN LU6UO LU6WG LU6XQ/D LU7ADR LU7DNN LU7DSU LU7DSY LU7EE LU7FPA LU7FSM LU7FTS LU7FWV LU7HF LU7HN LU7HW LU7HZ LU7KAT LU7MAL LU7MCJ LU7MSE LU7MTC LU7VCH LU7YS LU7YW LU7YZ LU8ADX LU8DQ/D LU8DWR LU8DY LU8EEM LU8EHR LU8EOT LU8MB LU8QT LU8SAN LU8YE LU9DA LU9DAG LU9DO LU9DPM LU9DTC LU9ESD LU9EY LU9FFZ LU9HP LU9MBY LU9MDH LV5V LV6D LW1DBG LW1DTZ LW1DX LW1E LW1EUD LW1EXU/D LW1HR LW2DFH LW2DX LW3DC LW3DG LW3DIV LW3DN LW3EWZ LW3EX LW4DYI LW4EF LW4EU LW4HBR LW5DFR LW5DR LW5EAE LW5EE LW5HBR LW6DAK LW6DG LW6DW LW6HAR LW7DUC LW7DX LW7H LW7HE LW7HT LW8DQ LW9DHR LW9EOC LW9ETQ LX0HQ LX1A LX1DA LX1EA LX1ER LX1FC LX1HD LX1KC LX1KN LX1NO LX1SG LX1TO LX1UN LX30AK LX4A LX5T LX7I LX8DL LX8I LX8M LX8RTTY LX9DX LX9EG LY0HQ LY1AKM LY1BA LY1BX LY1C LY1CG LY1CM LY1CO LY1CT LY1CX LY1DJ LY1DT LY1FGP LY1FW LY1G LY1K LY1M LY1MA LY1N LY1NDN LY1R LY1RB LY1TR LY1XA LY1XM LY2A LY2AE LY2AO LY2AT LY2BAW LY2BBF LY2BIS LY2BKT LY2BNL LY2BOK LY2BOS LY2BUU LY2BVB LY2C LY2CG LY2CO LY2CV LY2CX LY2DM LY2DV LY2DX LY2DZ LY2F LY2FN LY2GV LY2GW LY2IJ LY2J LY2K LY2KM LY2KZ LY2LB LY2LE LY2LF LY2LU LY2MM LY2N LY2ND LY2NK LY2O LY2OF LY2OM LY2OO LY2OU LY2OX LY2PX LY2QT LY2RJ LY2SA LY2SL LY2T LY2TA LY2TS LY2VA LY2W LY2WJ LY2WN LY2X LY2XW LY2YR LY2ZZ LY3B LY3BB LY3BG LY3BM LY3BN LY3BY LY3CW LY3CY LY3G LY3ID LY3JM LY3KS LY3M LY3NX LY3O LY3QA LY3RA LY3S LY3SL LY3TW LY3UV LY3V LY3VD LY3W LY3X LY3ZM LY4A LY4AA LY4BF LY4BP LY4BR LY4CW LY4D LY4G LY4K LY4L LY4MM LY4OO LY4Q LY4R LY4T LY5A LY5E LY5G LY5R LY5W LY6A LY6M LY7A LY7M LY7Z LY8O LY9A LY9Y LZ/SQ9UM LZ09BR LZ09IPY LZ1ABC LZ1AF LZ1AQ LZ1AU LZ1AZ LZ1BJ LZ1BJ/1 LZ1BP LZ1BY LZ1CF LZ1CY LZ1DCD LZ1DM LZ1DNY LZ1DO LZ1DQ LZ1EO LZ1EP LZ1FH LZ1FI LZ1FJ LZ1GL LZ1HW LZ1IA LZ1IKY LZ1IQ LZ1JY LZ1JZ LZ1KP LZ1KSC LZ1MC LZ1MG LZ1MS LZ1ND LZ1NG LZ1NJ LZ1NK LZ1NY LZ1NYK LZ1OI LZ1OJ LZ1ONK LZ1PJ LZ1PM LZ1QB LZ1QI LZ1QN LZ1QV LZ1QZ LZ1RA LZ1RGM LZ1SDR LZ1UO LZ1UQ LZ1VB LZ1VCT LZ1VVV LZ1WF LZ1WJ LZ1XL LZ1YE LZ1YG LZ1YP LZ1YY LZ1ZC LZ1ZF LZ1ZJ LZ1ZM LZ1ZV LZ10ARDF LZ10RF LZ100SO LZ1195IR LZ17ARDF LZ170HD LZ180FT LZ2A LZ2AB LZ2AG LZ2AY LZ2BE LZ2CC LZ2CE LZ2CJ LZ2CWW LZ2DF LZ2EG LZ2ES LZ2FM LZ2FO LZ2FQ LZ2GS LZ2HA LZ2HM LZ2HN LZ2HR LZ2JA LZ2JR LZ2KAF LZ2KV LZ2LE LZ2LH LZ2LT LZ2MW LZ2NA LZ2NG LZ2NKM LZ2OV LZ2PB LZ2PEP LZ2PI LZ2PL LZ2PS LZ2RS LZ2SC LZ2SX LZ2UU LZ2UW LZ2UZ LZ2VP LZ2VU LZ2XF LZ2ZD LZ2ZF LZ2ZG LZ2ZY LZ26ZA LZ3CB LZ3DJ LZ3DX LZ3FF LZ3FN LZ3GH LZ3HI LZ3IW LZ3NY LZ3PZ LZ3SD LZ3SM LZ3TL LZ3TY LZ3YV LZ3ZQ LZ3ZX LZ3ZZ LZ4AE LZ4BU LZ4GL LZ4RR LZ4TL LZ4TX LZ4UU LZ40ATSA LZ44WFF LZ5A LZ5K LZ5R LZ5T LZ5VK LZ5XQ LZ5Z LZ5ZI LZ6W LZ65P LZ7G LZ7H LZ7HQ LZ7J LZ7S LZ7T LZ7X LZ8A LZ8E LZ8W LZ9A LZ9E LZ9R LZ9W LZ9X L20E L21D L25X L33M L44DX L46V L55D L60DK L73D L73DX L77H MA0BQI MA0GPZ MA0RKT MA0XAU MA3YFT MC0SHL MD0BJM MD0CCE MD0MDI MD2C MD3YLX MD3ZFQ MD4K MD6V MD9Y MI0AYR MI0BPB MI0GRG MI0GTM MI0JZZ MI0LLL MI0M MI0MIX MI0MVP MI0SAI MI0SDR MI0TFK MI1SJM MI3OZX MI5JYK MI6GWA MJ/W1NN MJ0ASP MJ0CFW MJ4K MM0AMW MM0APF MM0BHX MM0BHY MM0BIM MM0BQI MM0BQN MM0BSM MM0CIN MM0DFV MM0DFZ MM0DVZ MM0DWF MM0DXH MM0EAX MM0GHM/P MM0GOR MM0GPZ MM0JMK MM0JOK MM0JVB MM0KBT MM0LBX MM0LGR MM0MOC MM0MUK MM0NDX MM0R MM0RKT MM0ROV MM0SAJ MM0SGQ MM0SJH MM0SVK MM0TFU MM0TQH MM0VTV MM0WNW MM0XAU MM0YEC MM1BTJ MM1D MM1X MM2R MM3LLU MM3RCR MM3RDP MM3T MM3UOR MM3XXW MM3YCG MM3YFT MM3YIO MM5DWW MM5FUN MM6ADR MM6GLI MN0OCG/P MS0ZET MU/DL5SE MU/OZ7BQ MU0FAL MU0GSY MW0AUG MW0BYS MW0CBC MW0CFQ MW0CRI MW0CVT MW0CWJ MW0DNF MW0GOV MW0HMV MW0IDX MW0JRX MW0JZE MW0KMS MW0LAO MW0MAU MW0MWZ MW0RZC MW0YDX MW0YVK MW0ZZK MW1LCR MW1MDH MW2I MW3DAO MW3WSC MW5A MW5ACN MW5B MW5D MW6GWK MW9W MX0ADJ MZ5B MZ8A M0AAA M0AAC M0AAS M0ACL M0ACM M0AEJ M0AEU M0AFJ M0AFZ M0AGA M0AID M0AJM M0AMS M0ANO M0ASR M0AWS M0AWX M0AXD M0AYB M0B M0BCT M0BGR M0BJL M0BJX M0BKH M0BKV M0BLF M0BMX M0BPQ M0BSV M0BUY M0BVE M0BXR M0BZU M0BZZ M0CAR M0CCQ M0CEF M0CES M0CFW M0CJW M0CKE M0CKX M0CMH M0CNP M0COM M0COP M0CQE M0CSD M0CTR M0CUL M0CVK M0CYR M0DCD M0DDT M0DEG M0DEP M0DGB M0DHO M0DKN M0DMA M0DMJ M0DMS M0DOL M0DOL/P M0DUO M0DVV M0DWW M0DXR M0DYI M0EBJ M0EDX M0EMM M0EVI M0FAQ M0FCR M0GAV M0GBK M0GBP M0GDX M0GEJ M0GHQ M0GIZ M0GJH M0GKC M0GLP M0GME M0GMT M0GWS M0HDD M0HDK M0HEM M0HFC M0HKB M0HRC M0HWK M0CHK M0IAA M0IKE M0IKW M0ILT M0INB M0IPS M0ITY M0JJB M0JME M0JMO M0JRA M0JVW M0KAZ M0KSJ M0KTM M0KZH M0LMH M0LUV M0MAC M0MAD M0MCV M0MCX M0MDF M0MDR M0MGF M0NDZ M0NKS M0NNH M0NQN M0OIC M0OKT M0OTM M0OVL M0OXD M0OXO M0PAR M0PCB M0PIE M0PNN M0POQ M0PSK M0PSW M0RBE M0RBG M0REX M0RGI M0RHS M0RIA M0RNR M0RRO M0RSD M0RTI M0RYB M0SAT M0SCG M0SDX M0SDY M0SEL M0SFR M0SLA/W9 M0SMJ M0SSR M0SUF M0TAZ M0TCA M0TDW M0TEF M0TFO M0TJU M0TLN M0TTB M0TUB M0TUL M0TWW M0TZO M0UCK M0UKD M0UNI M0URX M0USY M0UTD M0UTD/P M0VAA M0VBY M0VFC M0VIE M0VKY M0VPE M0WAY M0WBX M0WKR M0WLF M0WTD M0WTF M0WTG M0WYB M0WYM M0XDX M0XGB M0XIE M0XIK M0XJP M0XKD M0XLD M0XLT M0XSM M0XXT M0YCQ M0YCQ/P M0YEC M0YOM M0YYV M0ZAK M0ZDW M0ZJB M0ZRA M0ZVB M0ZWW M1A M1ACB M1ADX M1BYG M1BYH M1CXK M1DNC M1DSE/P M1DST M1DTJ M1EBV M1ENI M1EYP M1FCV M1HOG M1JJK M1KMC M1LMO M1PTR M1RPW M1SMH M1TZR M1VHT M1WDK M2A M2G M2W M2X M3CSZ M3DOV M3ENF M3FDZ M3GWO M3HXS M3JFM M3MRJ M3ONL M3PBK M3PHP M3PSK M3PZT M3TRC M3UFB M3UNN M3UXJ M3UZV M3VAM M3W M3WNF M3WYX M3XYP M3YFL M3ZXX M4A M4T M4U M5A M5ADZ M5AEF M5AEO M5AEX M5AFD M5AGV M5ALG M5ARC M5B M5BFL M5BFL/P M5DIK M5E M5GUS M5ITE M5KJM M5LRO M5O M5T M5X M6CMG M6EKA M6HRS M6IDX M6JAS M6KAH M6KLO M6OJE M6Q M6T M6W M7A M7T M8C M8M M9C M9W M9X NA0BR NA0CW NA0N NA0T NA1A NA1G NA1QP NA1R NA2AA NA2M NA2U NA2X NA3D NA3F NA3J/0 NA3M NA3V NA4AR NA4BW NA4C NA4CW NA4D NA4K NA4L NA4M NA4NA NA4O NA4R NA4W NA5DX NA5G NA5Q NA5RC NA5TR NA5U NA5Z NA6G NA6Q NA7DX NA7EM NA7QP NA7RH NA7US NA7XX NA8M NA8SA NA8V NA8W NA9A NA9J NA9M NA9U NA9US NB0Z NB1HF NB1N NB1U NB2T NB3C NB3K NB3T NB4F NB4M NB5N NB7N NB7V NB8Q NC0B NC0O NC1C NC1I NC1X NC2O NC2T NC2W NC3P NC4AA NC4AR NC4CS NC4G NC4KW NC4MI NC4MM NC4RB NC4RW NC4S NC4VA NC4X NC5B NC5O NC5OW NC6CC NC6P NC6PT NC6Q NC6RJ NC6V NC6X NC7I NC7J NC7M NC7W NC8B NC8T NC8X NC9F ND0C ND0J ND0L ND0M ND0N ND0V ND1X ND1Y ND2K ND2T ND3D ND3F ND3R ND4Q ND4V ND4X ND4XE ND4Z ND5R ND5T ND6H ND6MM ND6P ND6S ND6U ND7D ND8DX ND8L ND8N ND9E ND9M ND9Z NE0DX NE0U NE0W NE1B NE1C NE1F NE1H NE1I NE1QP NE1RD NE2I NE2U NE2Z NE3F NE3H NE3I NE3R NE4M NE4S NE4W NE5D NE5DL NE5LL NE5S NE5W NE6I NE6LE NE6M NE6O NE6R NE7D NE7E NE7F NE7X NE8J NE8O NE8O/3 NE8P NE8Z NE9H NE9U NE9Z NF0N NF0T NF1A NF1L NF1O NF4A NF4L NF5P NF5T NF5Y NF5Z NF6A NF6P NF6R NF7E NF7R NF7T NF8J NF8M NF8R NF9D NF9V NG0G NG0K NG0M NG0T NG1F NG1G NG1O NG1R NG2C NG2P NG2T NG2X NG3I NG3J NG3K NG3O NG3Q NG3R NG3U NG3V NG4L NG4Z NG5A NG5NG NG5X NG6S NG6X NG7A NG7M NG7X NG7Z NG8U NG9E NG9R NG9T NH2T NH6AB NH6JC NH6P NH6T/W4 NH6WZ NH6YK NH7A NH7C NH7FY NH7O NH7QH NI0B NI0C NI0F NI0R NI1L NI1N NI2O NI3H NI3K NI3N NI4S NI4T NI5DX NI5F NI5L NI5O NI5R NI5T NI5W NI6J NI6P NI6T NI6W NI7F NI7R NI7T NI8Z NI9C NI9H NI9K NI9Y NJ0IP NJ1F NJ1H NJ1Q NJ1Q/1 NJ1T NJ2AR NJ2BB NJ2F NJ2P NJ2T NJ3K NJ3W NJ4F NJ4I NJ4M NJ4O NJ4U NJ4X NJ4Z NJ5DX NJ5O NJ5T NJ6D NJ6K NJ6N NJ6P NJ8V NJ9D NJ9Z NK0S NK0Z NK1N NK1Z NK3U NK3Y NK4A NK4I NK4L NK4N NK5A NK5G NK5O NK5Q NK5Z NK6A NK6Q NK7C NK7J NK7L NK7U NK7Z NK8I NK8Q NK9D NK9G NK9I NK9N NL7G NL7HH NL7V NL7Y NL7Z NL8F NM1A NM1C NM1J NM1JY NM1W NM2D NM2L NM2O NM3N NM4K NM4M NM4O NM4V NM5C NM5M NM5NM NM5O NM5P NM5S NM5TF NM5U NM5WB NM5Y NM6E NM6E/W5 NM6E/5 NM6G NM6K NM6X NM7D NM7N NM7X NM8O NM9C NN0F NN0K NN0Q NN0TT NN1AA NN1L NN1N NN2E NN2L NN2RL NN2T NN2W NN3C NN3L NN3NN NN3Q NN3RP NN3V NN3V/6 NN3W NN4AA NN4DF NN4F NN4FL NN4GG NN4K NN4MM NN4N NN4R NN4RH NN4RR NN4T NN4TO NN4TT NN4US NN4W NN4X NN4ZZ NN5G NN5J NN5K NN5T NN5V NN5Z NN6AA NN6C NN6DX NN6EE NN6CH NN6K NN6L NN6NN NN6R NN6T NN6W NN6XX NN7A NN7D NN7F NN7SS NN7ZZ NN8K NN8L NN8M NN8P NN8R NN8UU NN9K NN9Q NO2D NO2J NO2R NO2T NO2X NO3M NO4Q NO4S NO4Y NO5F NO5FD NO5G NO5LA NO5Q NO5W NO5X NO6F NO6T NO6X NO7B NO7T NO8C NO8DX NO8J NO8R NO9C NO9E NO9Z NP2B NP2C NP2I/AG9 NP2KW NP2L NP2N NP2Q NP2SH NP2X NP3CW NP3D NP3HM NP3O NP3QE NP3U NP4A NP4BM NP4DX NP4EG NP4G NP4KT NP4V NP4Z NQ0K NQ1W NQ2F NQ2W NQ3I NQ3N NQ4A NQ4I NQ4K NQ4RP NQ4U NQ5D NQ5K NQ5L NQ5Z NQ6L NQ6P NQ7P NQ7R NR0E NR0L NR0T NR1I NR1R NR1X NR3I NR3R NR3X NR3Y NR4C NR4M NR4MM NR4N NR5M NR5R NR6O NR6TT NR7DX NR7Q NR7RR NR7T NR8I NR8U NR9A NR9B NR9B/9 NR9W NS0I NS0M NS1G NS1L NS1S NS1T NS2O NS2X NS3Q NS3T NS3X NS4SC NS4SN NS4T NS5Z NS6C NS6T NS7B NS7E NS7K NS7O NS7P NS8G NS8O NS9I NT0F NT0L NT0V NT0Z NT1A NT1N NT2A NT2F NT4A NT4D NT4K NT4Q NT4TS NT4Y NT5C NT5O NT5R NT5V NT6AA NT6K NT6X NT8P NT8S NT8V NT8W NU0C NU0J NU0Q NU0T NU0V NU1AW NU1B NU1M NU2M NU3A NU3B NU3H NU4B NU4C NU4I NU4N NU4SC NU4Y NU5A NU5DE NU5G NU5K NU6C NU6L NU6N NU6O NU6S NU6T NU7DX NU7F NU7J NU7P NU7T NU8L NU8Z NV0P NV0S NV0U NV1N NV2G NV3V NV4A NV4B NV4G NV5E NV5H NV6C NV6R NV7E NV7P NV8N NV9X NV9Z NW0DX NW0G NW0Q NW1C NW1E NW1V NW2I NW3DC NW3H NW3R NW4J NW4N NW4T NW4V NW5U NW5X NW6H NW6P NW6R NW6S NW7D NW7E NW7I NW7O NW7US NW8F NW8U NW9S NX0I NX0P NX0X NX1C NX1P NX1Q NX1T NX1Y NX2PX NX2X NX3Y NX4C NX4D NX4N NX4O NX5D NX5M NX5O NX6D NX6J NX6T NX7DX NX7F NX7TT NX7U NX8G NX8J NX9B NX9T NY0O NY0R NY0T NY0V NY1E NY1H NY1Q NY1Z NY2U NY3A NY3B NY3C NY3DX NY3H NY4A NY4D NY4FL NY4I NY4JB NY4N NY4O NY4P NY4PD NY4S NY6DX NY6I NY6J NY6N NY6U NY6Y NY8K NY8T NY9H NY9S NZ0O NZ0T NZ1D NZ1R NZ1U NZ3J NZ3M NZ4CW NZ4DX NZ4L NZ4O NZ4R NZ5A NZ5DX NZ5G NZ5L NZ5M NZ5N NZ5P NZ6K NZ6L NZ6P NZ6Q NZ8J NZ9R NZ9Z N0ABA N0AC N0ADL N0AE N0AG N0AH N0AIE N0ANP N0AR N0ARU N0AT N0AV N0AX N0AZZ N0BB N0BDS N0BE N0BED N0BK N0BLG N0BM N0BOF N0BUI N0CEL N0CKC N0CRL N0CU N0DFP N0DH N0DJY N0DQS N0DWY N0EG N0ENQ N0EO N0EOP N0EVH N0FCD N0FP N0FTZ N0FV N0FW N0FX N0GBR N0GF N0GMG N0GMT N0GOM N0GOS N0GWH N0GZ N0HD N0HF N0HI N0HIO N0HJZ N0HNQ N0HR N0HT N0HT/4 N0IB N0IBD N0IBT N0IJ N0IJK N0IM N0IRM N0IRW N0IT N0IW N0JBF N0JG N0JK N0JL N0JTE N0JX N0JZ N0KBD N0KE N0KGM N0KK N0KM N0KMA N0KQ N0KV N0KXT N0LEF N0LGU N0LIA N0LIE N0LLH N0LP N0LRI N0LSD N0LTX N0LY N0LZ N0MA N0MNO N0MSB N0MZR N0NB N0NC N0NI N0NM N0NO N0NR N0NS N0OB N0OCT N0ODK N0OE N0OJ N0OK N0OP N0OST N0OU N0PB N0PC N0PFE N0PNQ N0PSJ N0PVZ N0QE N0QNL N0QO N0QP N0QW N0QX N0QXW N0RB N0RDJ N0RMB N0RN N0RPI N0RPJ N0RQ N0RR N0RT N0RU N0RUV N0RWR N0RZT N0SFF N0SJ N0SM N0SMX N0SO N0SOX N0SRF N0SS N0SSC N0ST N0STL N0SWE N0SXX N0TA N0TG N0TK N0TMU N0TOP N0TT N0TU N0TUN N0TW N0TYE N0UB N0UD N0UIH N0UJJ N0UN N0UNL N0UR N0URW N0UU N0UV N0UY N0VCY N0VD N0VPL N0VRP N0VTZ N0VUN N0VVH N0VY N0WAF N0WAR N0WE N0WFO N0WCH N0WOK N0WVU N0WYK N0XA N0XJO N0XM N0XR N0XT N0XX N0YE N0YKN N0YO N0YY N0ZA N0ZC N0ZGG N0ZK N03M N1AA N1AAU N1ABA N1ABF N1ABY N1AC N1ADY N1AIA N1AM N1AO N1API N1AU N1AW N1BCL N1BFO N1BG N1BNC N1BRU N1BSA N1BUG N1BY N1BZ N1CC N1CE N1CGP N1CKM N1CM N1CWR N1DC N1DCM N1DD N1DF N1DG N1DGF N1DJF N1DK N1DM N1DNZ N1DS N1EAV N1EKT N1EMC N1EO N1EOP N1EU N1EY N1EZO N1FD N1FDX N1FIO N1FJ N1FOJ N1FQ N1GB N1GC N1GDD N1GE N1GFS N1GKE N1GKX N1GLT N1GN N1GSA N1HCE N1HLZ N1HOQ N1HRA N1HT N1HTS N1HY N1IBM N1IG N1ILD N1IMW N1ITT N1IUN N1IVY N1IW N1IX N1IXF N1JAO N1JBH N1JD N1JDK N1JHJ N1JM N1JP N1JW N1KEZ N1KJW N1KON N1KPY N1KR N1KRC N1KW N1KWF N1LI N1LN N1LQ N1LT N1LU N1MEO N1MGO N1MIW N1MJF N1MM N1MQ N1ND N1NK N1NKC N1NN N1NQZ N1NRK N1OFV N1OIG N1OWA N1OXA N1PGA N1PT N1QAE N1QD N1QEH N1QEQ N1QI N1QM N1QN N1QV N1QXV N1QY N1RA N1RB N1REK N1RFB N1RFK N1RFM N1RK N1RNJ N1RR N1RX N1SDH N1SM N1SNB N1SPX N1SV N1SW N1SXL N1SZ N1TB N1TKS N1TM N1TO N1TQ N1UDY N1UED N1UK N1UR N1UZ N1VVV N1VXW N1WC N1WGX N1WK N1WON N1WPU N1WQ N1WR N1WRK N1WWE N1XIH/7 N1XK N1XLG N1XQ N1XX N1YBX N1YC N1YE N1YF N1YNI N1YWB N1YX N1ZJ N1ZN N1ZQ N1ZU N1ZX N1ZZ N2AA N2AB N2ADE N2AET N2AJ N2AK N2AMG N2AN N2ATA N2AUG N2AUR N2AW N2AXX N2AYI N2BA N2BC N2BEE N2BEG N2BJ N2BJV N2BJ/9 N2BMK N2BR N2BT N2CEI N2CG N2CJ N2CJO N2CK N2CQ N2CU N2CUA N2CW N2CYY N2DM N2DPF N2DVQ N2DW N2DWS N2EA N2ED N2EGO N2EIK N2EM N2EOC N2ESH N2ESP N2ETJ N2EX/4 N2EY N2FBV N2FF N2FI N2FJ N2FNO N2FPJ N2FT N2FY N2GA N2GC N2GDU N2GG N2GJ N2GM N2GRS N2GVB N2GWK N2HMM N2HN N2HO N2CHD N2IC N2IEL N2IEN N2IMM N2ION N2IW N2IX N2IXD N2JBA N2JDQ N2JEN N2JEX N2JF N2JJ N2JNZ N2JTZ N2KA N2KHH N2KI N2KPB N2KW N2KW/1 N2KX N2LBR N2LEC N2LH N2LJJ N2LK N2LL N2LQ N2LT N2MAD N2MEE N2MF N2MGT N2MH N2MID N2MLP N2MM N2MO N2MTG N2MUN N2MZZ N2NC N2NEP N2NF N2NFC N2NGW N2NHN N2NI N2NKP N2NL N2NNN N2NOM N2NQ N2NS N2NT N2NVH N2OB N2OGK N2OMC N2OO N2OPW N2OPW/8 N2OT N2OUV N2PA N2PHI N2PKB N2PKP N2PL N2PP N2QLQ N2QT N2QZ N2RF N2RFA N2RHL N2RI N2RIT N2RJ N2RK N2RM N2RM/4 N2RO N2RR N2RRA N2SLC N2SO N2SQW N2SS N2SU N2TEW N2TK N2TM N2TN N2TO N2TRX N2TTL N2TU N2UL N2UM N2UN N2UO N2US N2USM N2UT N2UU N2VM N2VRA N2VT N2VW N2VYT N2WB N2WC N2WCY N2WF N2WK N2WKS N2WLG N2WLS N2WM N2WN N2WQ/VE3 N2WSY N2WW N2WY N2XDR N2XP N2XPW N2XQM N2YB N2YBB N2YC N2YDD N2YET N2YIR N2YO N2YOA N2YVF N2ZAK N2ZN N2ZUL N2ZX N2ZZ N3AAF N3AB N3AD N3ADF N3AE N3AF N3AFT N3AHA N3AIU N3ALN N3AM N3AO N3AS N3ATQ N3AYY N3AZH N3BA N3BB N3BBF N3BC N3BHM N3BM N3BNA N3BUD N3BUO N3CAU N3CB N3CDA N3CJD N3CO N3COB N3CR N3CRM N3CS N3CW N3CXV N3CY N3CZ N3DAP N3DG N3DG/2 N3DNX N3DUE N3DXX N3EEI N3EFZ N3EMF N3EMZ N3EN N3ER N3EU N3FAW N3FD N3FES N3FIU N3FJP N3FKS N3FP N3FSC N3FSQ N3FX N3FZ N3GA N3GD N3GGT N3GH N3GJ N3GL N3GM N3GNW N3GS N3GXX N3HBX N3HE N3HQB N3HU N3HYB N3CHX N3ICK N3II N3IL N3INJ N3INM N3IQ N3IYX N3JAB N3JB N3JDQ N3JIX N3JJB N3JJT N3JNX N3JON N3JT N3JVD N3JW N3KAE N3KBF N3KCJ N3KKM N3KN N3KR N3KRS N3KRX N3KS N3KTA N3KTV N3KUN N3KV N3LAZ N3LFC N3LH N3LL N3LWM N3LZG N3MA N3ME N3MK N3MMH N3MON N3MRA N3MRV N3MVX N3MWR N3MX N3MZ N3NA N3ND N3NEP N3NR N3NRN N3NT N3NZ N3OA N3OC N3OJL N3OW N3PE N3PF N3PKC N3PPE N3PPH N3QCM N3QE N3QO N3QQ N3QVB N3QW N3RC N3RCW N3RD N3RDV N3RG N3RJ N3RM N3RN N3RR N3RS N3RW N3RWB N3SD N3SL N3SMT N3SNZ N3SQD N3ST N3STZ N3SW N3SY N3TB N3TDE N3TG N3TH N3TIR N3TL N3TM N3TNQ N3TO N3TQU N3TR N3TUQ N3UA N3UB N3UC N3UGY N3UM N3UR N3US N3VBJ N3VHR N3VJV N3VOP N3VRO N3VS N3WAK N3WD N3WG N3WJ N3WT N3WZR N3XF N3XL N3XLS N3XM/VE3 N3XP N3XPD N3XRU N3XRV N3XUD N3XVU N3XX N3XZ N3YD N3YEA N3YH N3YIM N3YMS N3YW N3YWM N3YZ N3ZA N3ZAN N3ZBK N3ZD N3ZJ N3ZK N3ZL N3ZL/4 N3ZN N3ZP N3ZU N3ZV N3ZZ N3ZZK N4AA N4AAI N4AB N4AC N4AF N4AFR N4AGG N4AH N4AL N4ALN N4AO N4AOE N4APR N4AR N4ARO N4ARR N4ASX N4AU N4AVV N4AWU N4AX N4BAA N4BCB N4BCC N4BCD N4BFR N4BG N4BG/2 N4BH N4BLT N4BNO N4BP N4BPG N4BU N4BWB N4CB N4CC N4CD N4CE N4CJ N4COB N4CPA N4CPO N4CT N4CU N4CUS N4CV N4CW N4CWP N4CW/1 N4CY N4DA N4DAG N4DBR N4DE N4DJ N4DKD N4DL N4DMD N4DPU N4DTF N4DU N4DV N4DW N4DWK N4DXC N4DXI N4DXS N4DXY N4EA N4ECE N4ECM N4ECW N4EDT N4EE N4EEB N4EK N4EL N4EMG N4ESS N4EX N4FCG N4FD N4FF N4FN N4FP N4FR N4FW N4FX N4FY N4FZ N4GEB N4GG N4GI N4GJ N4GK N4GN N4GNO N4GO N4GOA N4GU N4GW N4HA N4HAF N4HAI N4HB N4HH N4HID N4HLF N4HN N4HPL N4HUF N4HXI N4CH N4IAT N4IB N4ICF N4IG N4II N4IJ N4IL N4IM N4IOZ N4IQ N4IR N4IS N4IT N4JA N4JB N4JDB N4JDF N4JDU N4JED N4JF N4JG N4JH N4JIK N4JIK/5 N4JKA N4JN N4JOW N4JR N4JRZ N4JT N4JTQ N4JVP N4KB N4KC N4KE N4KFT N4KG N4KGL N4KH N4KIT N4KJR N4KK N4KL N4KW N4KZ N4LA N4LDM N4LF N4LJS N4LKE N4LMN N4LPD N4LR N4LS N4LSP N4LT N4LU N4LV N4LVQ N4LW N4LZ N4LZL N4MB N4ME N4MF N4MIK N4MIO N4MJ N4MM N4MO N4MTT N4MUH N4MWR N4MWY N4NAB N4NM N4NN N4NO N4NS N4NTO N4NTQ N4NW N4NX N4NYY N4OA N4OFA N4OGW N4OI N4OO N4OQP N4OT N4OX N4OYT N4PB N4PD N4PEG N4PF N4PGL N4PJ N4PLR N4PN N4PQX N4PSE N4PTC N4PUM N4PY N4QA N4QB N4QK N4QLB N4QM N4QNT N4QQ N4QS N4QV N4QVM N4QWF N4QWZ N4QX N4RA N4RDX N4RE N4RI N4RJ N4RJL N4RLD N4RP N4RQ N4RR N4RS N4RSS N4RTD N4RV N4RZ N4SAM N4SC N4SCS N4SEA N4SF N4SFH N4SL N4SMM N4SOC N4SS N4ST N4TB N4TCP N4TD N4TDO N4TEF N4TG N4THG N4TIM N4TIZ N4TJ N4TL N4TN N4TO N4TOL N4TP N4TRI N4TSC N4TT N4TTE N4TV N4TX N4TZ N4UA N4UC N4UED N4UFP N4UJ N4UM N4UOZ N4UPX N4UQB N4UU N4UW N4VA N4VAN N4VI N4VN N4VPI N4VS N4VV N4WBS N4WD N4WHK N4WJ N4WJW N4WMB N4WO N4WOT N4WP N4WPG N4WQB N4WR N4WW N4WZ N4XC N4XD N4XFA N4XFF N4XGI N4XL N4XM N4XO N4XR N4XU N4YBU N4YBW N4YC N4YDU N4YE N4YHC N4YM N4YSA N4YT N4YYV N4YZ N4ZA N4ZAK N4ZC N4ZI N4ZO N4ZQ N4ZR N4ZRL N4ZSA N4ZY N4ZZ N5AA N5ACK N5AF N5AN N5ATT N5AU N5AUA N5AW N5AW/0 N5BA N5BE N5BF N5BG N5BNU N5BO N5BR N5BST N5CJQ N5CLK N5CQ N5CRO N5CW N5DBK N5DD N5DF N5DG N5DGK N5DM N5DO N5DRB N5DT N5DTT N5DX N5DY N5EA N5EBD N5EEI N5EJK N5EN N5ER N5ESA N5ET N5EXS N5EZE N5FF N5FG N5FPW N5GD N5GE N5GH N5GL N5GY N5HA N5HCW N5HEK N5HHS N5HI N5HMH N5HOT N5HSF N5HYP N5CHA N5IA N5IE N5II N5IIT N5IN N5IR N5IW N5JB N5JBD N5JC N5JED N5JJH N5JM N5JOA N5JPJ N5JR N5KA N5KAE N5KD N5KDV N5KE N5KEV N5KF N5KGV N5KGY N5KI N5KIP N5KLE N5KM N5KO N5KR N5KRC N5KWN N5KXF N5KY N5LDD N5LFE N5LIV N5LNL N5LTM N5LUL N5LUQ N5LYJ N5LYJ/5 N5LZ N5MEG N5MNX N5MOA N5MOC N5MT N5MU N5MV N5NA N5NK N5NN N5NR N5NU N5OE N5OHL N5OK N5OL N5OP N5ORT N5OTI N5PA N5PEF N5PHT N5PJ N5PJY N5PO N5PP N5PQ N5PR N5PT N5PU N5QJ N5QN N5QQ N5QS N5RA N5RKD N5RKK N5RM N5RMS N5RN N5RP N5RP/W9 N5RR N5RVT N5RZ N5RZK N5SAM N5SAN N5SJS N5SM N5SMQ N5SPE N5SQL N5SR N5SV N5TEN N5TER N5TEX N5TGL N5THN N5TJ N5TM N5TSP N5TU N5TW N5TWH N5TY N5UCF N5UKZ N5UL N5UM N5UR N5UV N5UWY N5VA N5VAG N5VDM N5VEI N5VEZ N5VI N5VK N5VR N5VSB N5VU N5VYS N5WA N5WBF N5WC N5WEB N5WJ N5WLA N5WMQ N5WNG N5WR N5WX N5WY N5WYR N5XE N5XES N5XG N5XJ N5XM N5XR N5XU N5XZ N5YA N5YE N5YEN N5YF N5YPJ N5YRJ N5YT N5ZBI N5ZC N5ZGT N5ZK N5ZM N5ZMP N5ZV N5ZWS N5ZZ N6AA N6AB N6AD N6AE N6AJG N6AJR N6AN N6AQ N6AR N6ATD N6AW N6AWD N6AX N6BCT N6BHX N6BM N6BOB N6BU N6BV N6BX N6BXO N6BY N6CCH N6CK N6CMF N6CVA N6CY N6CY/KH6 N6DA N6DBS N6DE N6DG N6DIT N6DM N6DQ N6DQ/C6A N6DSM N6DW N6DX N6DZ N6DZR N6ED N6EE N6EEB N6EF N6EM N6EP N6ER N6ERD N6ET N6FB N6FD N6FMF N6FR N6FS N6FX N6GA N6GEO N6GK N6GL N6GMJ N6GQ N6HA N6HC N6HD N6HE N6HH N6HI N6HK N6HR N6HRO N6HY N6CHU N6IC N6IE N6IEF N6IFR N6IG N6ISY N6IV N6JC N6JN N6JOJ N6JRL N6JV N6JW N6JZ N6KD N6KI N6KJ N6KK N6KL N6KM N6KN N6KOG N6KP N6KS N6KSF N6KT N6KV N6KW N6KW/7 N6KZ N6KZB N6LB N6LC N6LHZ N6LL N6LN N6LO N6MA N6MEF N6MI N6MJ N6ML N6MM N6MQL N6MSQ N6MSY N6MU N6MUF N6MW N6MWX N6MXU N6MZ N6NA N6NBB N6NC N6NCW N6ND N6NF N6NG N6NH N6NKJ N6NKT N6NM N6NO N6NPG N6NR N6NU N6NUL N6NW N6NZ N6NZE N6OC N6OGW N6OJ N6OO N6OPR N6OR N6ORB N6OR/4 N6OSB N6OU N6OX N6PC N6PE N6PEQ N6PF N6PHW N6PI N6PIA N6PN N6PNK N6PSE N6PYI N6PYN N6PZ N6QEK N6QEK/VY1 N6QI N6QQ N6QZS N6RA N6RBY N6RC N6RDN N6REG N6RI N6RK N6RNO N6RO N6RSH N6RT N6RUX N6RV N6RW N6RXA N6RZ N6RZR N6SC N6SF N6SI N6SL N6SL/4 N6SPB N6SPP N6SQ N6SS N6SUN N6TA N6TCZ N6TE N6TI N6TP N6TQS N6TR/7 N6TT N6TU N6TV N6TW N6TZV N6UGJ N6UUG N6UWW N6VDR N6VH N6VI N6VM N6VNI N6VOC N6VR N6VX N6VXM N6VZ N6WB N6WBL N6WD N6WG N6WHK N6WIN N6WK N6WM N6WO N6WS N6WZ N6XG N6XI N6XT N6XXN N6YDP N6YEU N6YMM N6YVW N6ZAE N6ZD N6ZE N6ZFO N6ZI N6ZM N6ZN N6ZS N7AAL N7AAM N7AC N7AM N7AN N7AP N7APN N7AR N7AT N7AZ N7BAN N7BAT N7BBC N7BEF N7BK N7BLN N7BPA N7BT N7BU N7BV N7BXX N7CAC N7CKJ N7CVZ N7CW N7DB N7DC N7DCR N7DD N7DF N7DK N7DLI N7DOE N7DOM N7DR N7DRK N7DS N7DV N7EA N7EDK N7EG N7EIE N7EKD N7EL N7ELF N7ENN N7EO N7EPD N7ER N7ESU N7ET/DU7 N7EXP N7FF N7FFL N7FJM N7FLT N7FMM N7FO N7FYO N7FYP N7FYP/VY2 N7GCO N7GK N7GMT N7GOA N7GP N7GR N7GTE N7GTW N7GVV N7HD N7HGH N7HJL N7HT N7ICK N7INV N7IP N7IPG N7IR N7IV N7IX N7IZ N7JB N7JEC N7JI N7JO N7JQ N7JT N7JW N7JXS N7KA N7KCX N7KD N7KE N7KF N7KFL N7KMM N7KO N7KQ N7KR N7KRE N7KU N7LB N7LD N7LE N7LF N7LOX N7LQT N7LR N7LYR N7MAL N7MB N7MBL N7MQ N7MSI N7MW N7MZW N7NG N7NGO N7NJO N7NKO N7NM N7NOG N7NSL N7NSO N7NT N7NTQ N7NW N7OC N7ODM N7OG N7OLK N7ON N7OU N7PC N7PIB N7PP N7PV N7PWZ N7QAX N7QMT N7QNO N7QOZ N7QQ N7QS N7QU N7QU/5 N7QZ N7RBP N7RC N7RK N7RN N7RO N7RP N7RQ N7RT N7RU N7RVD N7RVN N7RYW N7SCL N7SGX N7SX N7TK N7TL N7TM N7TO N7TP N7TR N7TT N7TW N7TY N7UA N7UC N7UN N7UO N7UR N7US N7UVH N7UY N7VF N7VFF N7VJ N7VM N7VOE N7VPN N7VR N7VS N7VZU N7WA N7WB N7WH N7WHB N7WI N7WO N7WR N7WS N7WX N7WZE N7XB N7XCZ N7XDX N7XG N7XM N7XR N7XRM N7YA N7YDX N7YK N7YP N7YQ N7ZG N7ZN N8AA N8AAE N8AE N8AG N8AGU N8AJN N8AMM N8AP N8ATC N8AVX N8AYY N8BB N8BC N8BE N8BEE N8BEG N8BHL N8BI N8BJQ N8BM N8BP N8BQV N8BR N8BTU N8BUS N8BV N8CAK N8CC N8CIJ N8CL N8CLB N8CL/2 N8CMS N8CPA N8CT N8CX N8DC N8DCJ N8DE N8DEZ N8DGD N8DJX N8DNG N8DOD N8DP N8DRC N8DSG N8DSG/P N8DT N8DV N8DX N8EA N8ECI N8EHP N8EMR N8EN N8ERL N8ESW N8ET N8EW N8EYF N8FDI N8FE N8FEB N8FF N8FGB N8FNR N8FRT N8FV N8GIY N8GJK N8GOV N8GU N8GZ N8HAL N8HC N8HHG N8HKU N8HP N8HQ N8HR N8HSO N8HTG N8HVO N8CHR N8CHS N8IE N8IGZ N8II N8IL N8IPO N8IR N8IRC N8IS N8IVE N8IVN N8IW N8JBG N8JE N8JF N8JK N8JVL N8KAM N8KC N8KG N8KH N8KOJ N8KR N8KU N8KUE N8KV N8LA N8LCU N8LGL N8LJ N8LMT N8LP N8LRG N8MBZ N8MDP N8MHL N8MME N8MOX N8MPX N8MR N8MRC N8MWK N8MZ N8NA N8NAV N8NB N8NJA N8NKC N8NM N8NN N8NOE N8NR N8NVL N8NWA N8NX N8NYI N8OC N8OCJ N8OEJ N8OGI N8OH N8OL N8OO N8OQQ N8OT N8OY N8PB N8PPF N8PQ N8PR N8PS N8PVW N8PW N8PY N8QAZ N8QE N8QMU N8QWS N8RA N8RF N8RGQ N8RMT N8RMZ N8RN N8RO N8RQJ N8RR N8RT N8SBE N8SM N8SNM N8SOB N8SR N8SS N8SSE N8STY N8TD N8TDL N8TL N8TP N8TR N8TWM N8TXI N8UBK N8UM N8UO N8UV N8UZE N8VEN N8VV N8VW N8VZ N8WAV N8WCR N8WJS N8WK N8WNA N8WS N8WXQ N8XA N8XC N8XE N8XI N8XKO N8XMS N8XPQ N8XQM N8XTH N8XX N8YA N8YD N8YO N8YYS N8ZA N8ZB N8ZBA N9AB N9ABC N9ADG N9AF N9AG N9AI N9AJV N9AK N9AKR N9AMW N9AOL N9APE N9AQ N9AU N9AUG N9AVY N9AW N9AX N9AZR N9AZZ N9BBE N9BL N9BT N9BU N9BX N9CC N9CDX N9CI N9CIQ N9CK N9CKL N9CM N9CO N9CX N9CXI N9DD N9DFD N9DGK N9DI N9DJ N9DOA N9DR N9DT N9EAJ N9EAX N9EN N9EP N9ER N9EVW N9FC N9FDE N9FH N9FN N9FTC/4 N9GBB N9GC N9GEX N9GG N9GH N9GOD N9GTC N9GUN N9GWO N9GXA N9GY N9HDE N9HF N9HH N9HNO N9HSB N9HZ N9CHN N9IC N9ID N9IJ N9IO N9ISN N9IUA N9IVO N9IW N9IZ N9JAM N9JCA N9JDQ N9JF N9JFW N9JW N9JZN N9KG N9KHR N9KO N9KR N9KS N9KT N9KZ N9LAH N9LB N9LF N9LGP N9LJX N9LJY N9LOH N9LPT N9LQF N9LR N9LTV N9LY N9LYE N9LZY N9MBR N9MHD N9MIW N9MKZ N9ML N9MM N9MR N9MS N9MSG N9MTT N9MW N9MXT N9MZF N9NA N9NB N9NC N9NDI N9NDP N9NE N9NF N9NM N9NS N9NT N9NTC N9OB N9OE N9OF N9OH N9OHW N9OI N9OK N9OL N9ONJ N9OOO N9OQW N9OX N9OY N9PL N9PUZ N9QK N9QQK N9QR N9QS N9QVQ N9RC N9RD N9RE N9REP N9RG N9RGE N9RJM N9RMG N9ROY N9RS N9RV N9RYM N9SB N9SCW N9SDT N9SF N9SJ N9SOR N9STL N9SW N9SZ N9TAX N9TF N9TGR N9TH N9TK N9TMU N9TMZ N9TTX N9TV N9UA N9UC N9UDO N9UE N9UFO N9UHF N9UM N9UO N9US N9UUI N9UUP N9UX N9UY N9VA N9VAO N9VI N9VKZ N9VPR N9VPV N9WEW N9WFT N9WK N9WKW N9WL N9WRG N9WVM N9WW N9XAK N9XBB N9XHU N9XO N9XR N9XRR N9XX N9XY N9YA N9YK N9YKE N9YN N9YUE N9YZA N9ZDD N9ZEW N9ZF N9ZI N9ZM N9ZOE OA4AHW OA4AI OA4O OA4SS OA4TT OA4WW OA6/OE3NHW OC4HQ OC80A OD5NJ OD5O OD5T OD5TE OD5WPX OE1A OE1AGB OE1AZS OE1BKA OE1C OE1DWC OE1EHB OE1H OE1HFC OE1HHB OE1HMC OE1JEW OE1KBC OE1KLW OE1MBB OE1MCU OE1MHL OE1MOU OE1PEW OE1PMU OE1PPA OE1RGC OE1RKS OE1SGU OE1SZW OE1TKW OE1TRB OE1UZ OE1WEU OE1WIU OE1XTU OE2BZL OE2CAL OE2DYL OE2GEN OE2GRL OE2CHN OE2IGP OE2IJL OE2KGL OE2KHM OE2KNN OE2LCM OE2M OE2MON OE2PDM OE2PTN OE2S OE2SNL OE2UKL OE2VEL OE2VLN OE2WUL OE2XWL OE3AIS OE3AKB OE3CDS OE3DIA OE3DMA OE3DSA OE3DSB OE3DWC OE3DXA OE3EHA OE3EMC OE3EVA OE3FLU OE3FPA OE3GBB OE3GCU OE3GSA OE3HPA OE3HTC OE3HWC OE3HWW OE3HZW OE3CHA OE3CHC OE3I OE3JAG OE3JS OE3JTB OE3JWC OE3K OE3KAB OE3KLU OE3KOA OE3MLC OE3NHW OE3O OE3OLW OE3PGW OE3PRU OE3RTB OE3SGA OE3SGU OE3TL OE3WBA OE3WLB OE3WMW OE3WXU OE3ZK OE4A OE4AAC OE4HSB OE4MDA OE4PWW OE4RGC OE4RLC OE4VIE OE4WBW OE4WWL OE4XRK OE5AWL OE5BWN OE5CSP OE5CWO OE5CYL OE5DFP OE5FBL OE5FDM OE5FIN OE5FZO OE5GA OE5GWP OE5HIL OE5HSN OE5JKL OE5JSL OE5KE OE5KRL OE5MSM OE5NGM OE5OHO OE5OLL OE5ORM OE5PEN OE5RI OE5SMU OE5T OE5UAL OE5WGL OE5WHN OE5XIL OE6AKD OE6BMG OE6CWL OE6FGG OE6GRG OE6HLF OE6HTG OE6IMD OE6KDG OE6KYG OE6LCF OE6LUG OE6MBG OE6MDF OE6MMF OE6SQD OE6TXG OE6U OE6WIG OE6WSF OE6Z OE7AJT OE7BJT OE7F OE7FMH OE7FRH OE7GJ OE7MFI OE7PKJ OE8DLK OE8GBK OE8GMK OE8HAQ OE8HIK OE8KR OE8MKQ OE8NTK OE8Q OE8SKQ OE8SPW OE8WIU OE8XBH OE9ADW OE9GHV OE9GLV OE9GWI OE9HGV OE9HLH OE9ICI OE9MON OE9NRH OE9PTI OE9R OE9RJJ OE9RWV OE9SBD OE9SEI OE9SLH OE9WGI OE9WLJ OG0I OG0M OG0R OG0Z OG1M OG1T OG2A OG2M OG2O OG2P OG2U OG2X OG3A OG3M OG3R OG4T OG4X OG5A OG5B OG5M OG5OF OG5T OG50F OG6A OG6G OG6K OG6N OG6R OG7X OG8A OG8X OG9W OH/AB9OG OH/G1UZD OH0AL OH0B OH0E OH0EC OH0JFP OH0K OH0/OH2LRE OH0PM OH0R OH0RJ OH0V OH0X OH0YY OH0Z OH1A OH1BGG OH1BOI OH1BV OH1EB OH1F OH1FFN OH1FJ OH1HB OH1HM OH1CH OH1JO OH1JT OH1K OH1KF OH1KIO OH1LA OH1LEG OH1LEU OH1LQ OH1LWZ OH1MA OH1MLZ OH1MM OH1MN OH1MZ OH1ND OH1NOA OH1NX OH1O OH1PY OH1QA OH1RX OH1TD OH1TN OH1TS OH1TX OH1UM OH1VR OH1WF OH1WR OH1WZ OH1XT OH1XX OH1XY OH1Z OH1ZE OH10A OH2AG OH2BAD OH2BAH OH2BBR OH2BBT OH2BCD OH2BCK OH2BEC OH2BEJ OH2BEN OH2BF OH2BGD OH2BH OH2BJ OH2BLD OH2BLV OH2BMH OH2BN OH2BNX OH2BO OH2BP OH2BPA OH2BPU OH2BR OH2BS OH2BSI OH2BU OH2BUW OH2BV OH2CI OH2CK OH2CP OH2CW OH2DP OH2EI OH2EO OH2ET OH2EV OH2FHN OH2FS OH2FT OH2GI OH2HAN OH2HOD OH2HQ OH2JSR OH2K OH2KAD OH2KI OH2KK OH2KW OH2LE OH2LI OH2LIR OH2LNH OH2LP OH2LU OH2LYJ OH2LZI OH2MA OH2MM OH2MO OH2MQ OH2MZB OH2NC OH2NFN OH2NM OH2NT OH2OT OH2PM OH2PQ OH2RI OH2T OH2TM OH2U OH2VB OH2VZ OH2WI OH2XF OH2XP OH2XX OH2ZZ OH3BHL OH3BU OH3CT OH3DP OH3FM OH3FOG OH3GBS OH3GD OH3GIF OH3GZ OH3HS OH3I OH3JF OH3JP OH3JR OH3KAV OH3KAV/4 OH3KQ OH3LB OH3LQK OH3MC OH3MEO OH3MF OH3MMF OH3NDH OH3NHF OH3OJ OH3P OH3QL OH3RF OH3RM OH3RU OH3SR OH3UU OH3WD OH3WR OH3WW OH3XA OH3XR OH3YI OH4A OH4AA OH4AB OH4BNP OH4E OH4EA OH4JK OH4JT OH4KA OH4KZM OH4LA OH4LBX OH4M OH4MDY OH4MFA OH4R OH4RF OH4TI OH4TY OH4XX OH5BM OH5CW OH5DA OH5HBA OH5JH OH5JJL OH5K OH5KW OH5LF OH5LP OH5N OH5NE OH5NQ OH5NZ OH5PT OH5RP OH5TQ OH5TS OH5UFO OH5UQ OH5UX OH5VG OH5VT OH5XX OH5YU OH5YX OH5Z OH5ZZ OH6AC OH6BA OH6BG OH6CT OH6DX OH6FMG OH6GAZ OH6GDX OH6GL OH6GUA OH6HOL OH6IO OH6IU OH6JE OH6JKW OH6JYH OH6K OH6KZP OH6LEZ OH6LHB OH6LI OH6LOB OH6M OH6MBQ OH6MK OH6MKL OH6MM OH6MMC OH6MSZ OH6MTE OH6MW OH6NJ OH6NV OH6OS OH6P OH6R OH6RC OH6RE OH6RP OH6RX OH6TN OH6UE OH6VI OH6WI OH6XY OH6ZH OH7AZL OH7BX OH7FAE OH7FF OH7FKV OH7HD OH7HM OH7HXH OH7JH OH7JHI OH7JJT OH7JL OH7JR OH7KB OH7KBF OH7KD OH7KNM OH7M OH7MFO OH7MJU OH7MM OH7MN OH7MP OH7MYK OH7N OH7NJ OH7R OH7RJ OH7UE OH7UG OH7WN OH7WW OH7XM OH7YN OH8A OH8CW OH8DR OH8F OH8FAL OH8FBD OH8FKU OH8GBO OH8GZQ OH8HTG OH8KA OH8KTN OH8KVA OH8KVY OH8L OH8LQ OH8LXT OH8MBN OH8MJ OH8NC OH8OB OH8OR OH8R OH8SE OH8SR OH8T OH8TA OH8TV OH8UL OH8US OH8VQ OH8WW OH8X OH9BS OH9GIT OH9KL OH9MDV OH9RP OH9UFO OH9VL OH9W OI3V OI6X OJ0B OK1AA OK1AAZ OK1ABB OK1ABF OK1ACF OK1AD OK1ADM OK1AEZ OK1AHG OK1AHI OK1AHJ OK1AHV OK1AIJ OK1AIT OK1AJR OK1AJY OK1AK OK1AKB OK1AKJ OK1AL OK1AMM OK1AMU OK1AN OK1ANT OK1AOU OK1AOV OK1AOZ OK1APV OK1AQW OK1ARO OK1ATH OK1ATX OK1AUP OK1AVG OK1AVY OK1AWG OK1AWH OK1AWU OK1AXB OK1AXG OK1AXX OK1AY OK1AYD OK1AYE OK1AYU OK1AYW OK1AYY OK1AZK OK1BA OK1BB OK1BET OK1BLU OK1BM OK1BMW OK1BN OK1BZ OK1CAM OK1CDJ OK1CF OK1CLD OK1CO OK1CQ OK1CRM OK1CSS OK1CW OK1CZ OK1DAM OK1DAU OK1DBE OK1DC OK1DCF OK1DDQ OK1DDV/P OK1DEC OK1DEK OK1DF OK1DG OK1DGU OK1DH OK1DHP OK1DI OK1DIG OK1DIX OK1DJD OK1DJS OK1DKA OK1DKO OK1DKR OK1DLA OK1DLB OK1DM OK1DMP OK1DMZ OK1DNJ OK1DO OK1DOF OK1DOL OK1DOR OK1DOT OK1DOY OK1DOZ OK1DPA OK1DQT OK1DRQ OK1DRU OK1DRX OK1DRY OK1DST OK1DSX OK1DTC OK1DTM OK1DTN OK1DUT OK1DVA OK1DVK OK1DVM OK1DWC OK1DWF OK1DWJ OK1DX OK1DXD OK1DXI OK1ED OK1EP OK1ES OK1EV OK1FAB OK1FAI OK1FAK OK1FAN OK1FAO OK1FAQ OK1FAV OK1FBH OK1FC OK1FCA OK1FCR OK1FDR OK1FED OK1FEK OK1FFA OK1FFU OK1FFW OK1FGD OK1FGE OK1FGS OK1FGU OK1FHD OK1FHI OK1FIM OK1FIY OK1FJD OK1FKD OK1FKM OK1FLC OK1FLK OK1FLT OK1FMG OK1FMX OK1FNT OK1FOG OK1FP OK1FPG OK1FPQ OK1FPS OK1FQT OK1FRD OK1FRG OK1FRO OK1FSM OK1FTM OK1FUK OK1FV OK1FZM OK1GI OK1GK OK1GM OK1GS OK1GT OK1GTH OK1GU OK1HA OK1HAS OK1HC OK1HCD OK1HCG OK1HEH OK1HFP OK1HGM OK1HL OK1HMP OK1HRA OK1HWI OK1HX OK1IAS OK1IBP OK1IC OK1IEC OK1IEV OK1IGK OK1II OK1IPS OK1IPU OK1IR OK1ITK OK1IW OK1IWN OK1JDJ OK1JDR OK1JFP OK1JKR OK1JL OK1JMD OK1JMJ OK1JOC OK1JOK OK1JR OK1JST OK1JVT OK1JX OK1JXU OK1KAK OK1KC OK1KDO OK1KFB OK1KI OK1KJA OK1KJV OK1KL OK1KM OK1KMG OK1KMU OK1KOB OK1KQH OK1KSL OK1KT OK1KTI OK1KTT OK1KUO OK1KW OK1KZ OK1LO OK1LOL OK1LV OK1LX OK1MAC OK1MBZ OK1MCW OK1MDK OK1MGW OK1MIN OK1MIQ OK1MKD OK1MKI OK1MKU OK1MMN OK1MMU OK1MNI OK1MNV OK1MNW OK1MP OK1MQ OK1MRU OK1MSJ OK1MSL OK1MSP OK1MV OK1MYA OK1MZB OK1MZO OK1ND OK1NE OK1NG OK1NGC OK1NH OK1NI OK1NL OK1NR OK1NS OK1NU OK1NY OK1NZ OK1OA OK1ODX OK1OUE OK1PA OK1PD OK1PFM OK1PI OK1PR OK1PV OK1PW OK1Q OK1QM OK1RP OK1RR OK1SD OK1SF OK1SI OK1SKJ OK1SP OK1SX OK1T OK1TA OK1TC OK1TD OK1TFH OK1TIR OK1TN OK1TPW OK1TRA OK1UDJ OK1UG OK1UKV OK1ULE OK1UN OK1UNL OK1US OK1USU OK1UU OK1VAM OK1VAW OK1VD OK1VDJ OK1VEI OK1VHV OK1VKC OK1VPU OK1VRF OK1W OK1WCF OK1WF OK1WIP OK1WMJ OK1WT OK1X OK1XC OK1XPP OK1XQ OK1XR OK1XV OK1XW OK1XYZ OK1XZA OK1YC OK1YM OK1YR OK1Z OK1ZCW OK1ZE OK1ZHS OK1ZHV OK1ZVL OK2ABU OK2AF OK2AJ OK2AN OK2AOP OK2ARD OK2BAQ OK2BBJ OK2BBQ OK2BDR OK2BEH OK2BEN OK2BFN OK2BGB OK2BGN OK2BH OK2BHD OK2BHL OK2BIQ OK2BIU OK2BJ OK2BJC OK2BJI OK2BJK OK2BJL OK2BK OK2BKL OK2BLD OK2BMC OK2BME OK2BMI OK2BMU OK2BNC OK2BND OK2BNF OK2BOB OK2BPK OK2BPU OK2BQ OK2BQZ OK2BRQ OK2BRS OK2BRV OK2BRX OK2BSN OK2BSQ OK2BTC OK2BTR OK2BTT OK2BUD OK2BUT OK2BUZ OK2BV OK2BWB OK2BWC OK2BWI OK2BWJ OK2BWK OK2BWM OK2BXA OK2BXE OK2BXU OK2BXW OK2BYW OK2BZ OK2BZE OK2BZM OK2CJM OK2CLW OK2CMW OK2COB OK2CQR OK2CSU OK2CVA OK2DW OK2EA OK2EC OK2EE OK2EI OK2EQ OK2ER OK2FB OK2FD OK2FN OK2FR OK2FYM OK2GG OK2GU OK2GX OK2GZ OK2HBR OK2HBY OK2HI OK2HIJ OK2HZ OK2ILD OK2JK OK2JNB OK2JOW OK2JS OK2KFK OK2KG OK2KJ OK2KJU OK2KO OK2KOJ OK2KPS OK2KR OK2KRT OK2KV OK2KYD OK2LI OK2LW OK2MBP OK2MJF OK2N OK2NA OK2NAJ OK2NMA OK2NO OK2OLD OK2OP OK2OV OK2OZL OK2PA OK2PAD OK2PAY OK2PBF OK2PBG OK2PCL OK2PCX OK2PDN OK2PDT OK2PEX OK2PF OK2PHI OK2PJW OK2PKT OK2PLH OK2PMF OK2PMS OK2PO OK2PPM OK2PQS OK2PRM OK2PTS OK2PVZ OK2PWJ OK2PWY OK2PX OK2PYA OK2PZ OK2QA OK2QX OK2RAC OK2RDI OK2RN OK2RRR OK2RU OK2RVM OK2RW OK2RZ OK2SAI OK2SAR OK2SFO OK2SFP OK2SG OK2SGW OK2SGY OK2SI OK2SLS OK2SPD OK2SSD OK2SVL OK2SW OK2SWD OK2TBC OK2TC OK2TDM OK2TEO OK2TPS OK2TRN OK2TRW OK2U OK2UFB OK2UHP OK2UIN OK2UM OK2UQ OK2UVX OK2VA OK2VK OK2VWB OK2VX OK2VZE OK2W OK2WED OK2WKW OK2WM OK2WO OK2WY OK2WYK OK2XKA OK2XRW OK2YT OK2YZ OK2ZAK OK2ZAW OK2ZC OK2ZD OK2ZDL OK2ZI OK2ZO OK2ZU OK2ZV OK2ZW OK3AA OK3C OK3DN OK3KK OK3M OK3MAD OK3MO OK3R OK3VM OK3W OK4AS OK4BX OK4DZ OK4FD OK4M OK4MM OK4N OK4PA OK4RQ OK4U OK4W OK5AA OK5AD OK5CW OK5IM OK5M OK5MK OK5MM OK5MN OK5OK OK5R OK5SA OK5SWL OK5TFC OK5TK OK5TM OK5W OK5XX OK5ZH OK6AB OK6AY OK6CX OK6DJ OK6DX OK6K OK6MA OK6T OK6TW OK6Y OK7B OK7CM OK7CW OK7D OK7FL OK7GU OK7K OK7M OK7MD OK7MK OK7MT OK7N OK7O OK7PJ OK7PY OK7R OK7RJ OK7RY OK7SX OK7U OK7WA OK7X OK7XX OK7Y OK8ACS OK8DCC OK8DD OK8DF OK8RA OK8WW OK8YD OL0A OL0E OL0W OL1A OL1B OL1C OL1M OL1S OL1X OL16BND OL2A OL2N OL2T OL2U OL2X OL25LP OL26LP OL3A OL3M OL3R OL3X OL3Y OL3Z OL4A OL4M OL4W OL5K OL5M OL5Q OL5R OL5T OL5Y OL6M OL6P OL6W OL6X OL7C OL7D OL7G OL7H OL7M OL7O OL7P OL7R OL7S OL7T OL73NR OL8M OL8R OL8W OL9HQ OL9M OL9R OL9S OL9Z OM0A OM0ATP OM0M OM0R OM0TT OM0WR OM1ADM OM1AF OM1ATW OM1AW OM1AX OM1BM OM1DK OM1HI OM1II OM1TD OM1VA OM1XQ OM2AD OM2AK OM2ALA OM2AM OM2AW OM2BJ OM2CS OM2FY OM2IB OM2LH OM2TB OM2VL OM2WX OM2XW OM2ZZ OM3AG OM3BA OM3BH OM3BY OM3CAQ OM3CDN OM3CEA OM3CGN OM3CPF OM3CUG OM3CW OM3DX OM3ED OM3EK OM3EQ OM3EY OM3FR OM3FZ OM3GI OM3CHO OM3IAG OM3ID OM3JA OM3JW OM3KFF OM3KWT OM3KWZ OM3KXX OM3KZA OM3LK OM3LL OM3LS OM3LU OM3MB OM3MM OM3MV OM3NA OM3NI OM3OM OM3PA OM3PC OM3PQ OM3PR OM3R OM3RDX OM3RJB OM3RM OM3RRC OM3SEM OM3SG OM3SX OM3TB OM3TLE OM3TPN OM3TWM OM3TYC OM3TZO OM3X OM3YAD OM3YCA OM3YDX OM3ZBG OM3ZWA OM4A OM4AAS OM4ADR OM4ANJ OM4AY OM4CX OM4DA OM4DN OM4DU OM4DW OM4EX OM4F OM4J OM4JD OM4KW OM4MM OM4PD OM4RF OM4TC OM4TW OM4W OM4WW OM4XA OM5CD OM5CM OM5CW OM5DP OM5DX OM5EA OM5FA OM5GU OM5KM OM5KP OM5LD OM5LR OM5M OM5MF OM5MX OM5MZ OM5NA OM5NL OM5NU OM5PM OM5RM OM5TX OM5UM OM5VS OM5X OM5ZW OM6A OM6AC OM6ADR OM6AL OM6AR OM6AT OM6AVK OM6CI OM6FM OM6JK OM6KW OM6MS OM6MT OM6MW OM6NM OM6P OM6PR OM6RK OM6SM OM6T OM6TC OM6TX OM60KAP OM7A OM7AB OM7AG OM7ANO OM7AT OM7AW OM7AX OM7CA OM7CG OM7CM OM7CW OM7DX OM7GW OM7JG OM7KW OM7M OM7OB OM7OM OM7PY OM7RC OM7RR OM7RU OM7SR OM7TJ OM7TQ OM7YC OM7YL OM7ZM OM8A OM8AA OM8AHI OM8AMF OM8AQ OM8ART OM8AW OM8DD OM8FF OM8HG OM8JP OM8KW OM8LA OM8MM OM8ON OM8PG OM8RA OM8SL OM8TA OM9ACA OM9AJP OM9AMM ON3AD ON3AHA ON3AI ON3AR ON3BZ ON3CCM ON3CQ ON3CYV ON3DI ON3DV ON3ED ON3EEF ON3EZ ON3FZT ON3GEO ON3GG ON3GL ON3JF ON3KBY ON3KMJ ON3LBS ON3LX ON3ME ON3MH ON3MI ON3MO ON3ND ON3OMD ON3OPA ON3RBJ ON3RPL ON3RR ON3TD ON3TO ON3URT ON3VHF ON3VRT ON3VS ON3VW ON3VY ON3WAB ON3WJ ON3WLS ON3XXX ON3YV ON4ABL ON4ACW ON4AEF ON4AEK ON4AEY ON4AHF ON4ALY ON4AMC ON4AMI ON4AMY ON4AN ON4ANL ON4ANL/P ON4AOI ON4ARJ ON4ARL ON4AST ON4ATA ON4ATW ON4AVZ ON4AWW ON4AXU ON4AZL ON4BAG ON4BEN ON4BHP ON4BHQ ON4BR ON4BX ON4CAB ON4CAS ON4CAU ON4CCC ON4CCN ON4CCU ON4CD ON4CKE ON4CLF ON4CLQ ON4CP ON4CT ON4CZ ON4DAP ON4DN ON4DSF ON4DY ON4EI/EI ON4FG ON4FI ON4GG ON4GL ON4GO ON4CHD ON4CHK ON4CHN ON4IA ON4IBM ON4IG ON4IQ ON4IT ON4IZ ON4JM ON4JPB ON4KBZ ON4KEB ON4KEP ON4KGL ON4KLG ON4KMB ON4KML ON4KN ON4KSC ON4LBI ON4LBN ON4LCI ON4LCX ON4LDH ON4LDP ON4LDU ON4LEX ON4LFN ON4LG ON4LN ON4LO ON4LWX ON4MA ON4MW ON4ND ON4NOK ON4OL ON4ON ON4OS ON4PAL ON4PJA ON4QX ON4RK ON4RO ON4TC ON4TO ON4TOM ON4TTT ON4UAP ON4UN ON4UP ON4UQ ON4UW ON4VDV ON4VMA ON4VQ ON4WE ON4WIY ON4WW ON4XG ON4YN ON5AFB ON5ARY ON5CMB ON5DC ON5DH ON5EU ON5EX ON5GA ON5GQ ON5GY ON5HY ON5JD ON5JT ON5KDX ON5KQ ON5LA ON5LGS ON5LO ON5MGW ON5MQ ON5NT ON5PO ON5QD ON5RA ON5RZ ON5RZ/P ON5SD ON5SV ON5SY ON5TC ON5TO ON5TQ ON5UJ ON5UK ON5VL ON5WL ON5WQ ON5ZO ON6AB ON6AT ON6BR ON6BU ON6CQ ON6DK ON6DP ON6EF ON6FC ON6FT ON6GV ON6HV ON6HZ ON6KE ON6LEO ON6LR ON6LS ON6LY ON6MG ON6MR ON6NL ON6NP ON6NW ON6OM ON6PQ ON6PW ON6QG ON6QO ON6RJ ON6SA ON6SI ON6SM ON6SX ON6UC ON6UD ON6UF ON6UL ON6VL ON6WP ON6WR ON6XG ON6YH ON6YYY ON6ZM ON6ZV ON65CLM ON7AAU ON7AB ON7BBR ON7BJ ON7BM ON7BT ON7CC ON7CD ON7CK ON7CL ON7CX ON7DDG ON7DR ON7DY ON7EE ON7EH ON7EQ ON7GB ON7GO ON7GR ON7HM ON7IDX ON7JA ON7JV ON7KB ON7KC ON7KEC ON7NT ON7ON ON7PP ON7PQ ON7PS ON7RU ON7SS ON7TG ON7TWA ON7TZ ON7USB ON7UZ ON7VD ON7VMR ON7WB ON7WW ON7XD ON7YX ON7ZM ON769MS ON8AB ON8AJ ON8AR ON8BB ON8BE ON8BV ON8BZ ON8DM ON8GL ON8LDS ON8MT ON8NT ON8SL ON8UK ON8VK ON8VM ON8VP ON8VT ON8WF ON8WW ON8XT ON8YB ON9CCS ON9CSV OO0A OO2T OO4O OO4P OO4T OO5D OO5G OO5P OO5Z OO6C OO6U OO7J OO7K OO7P OO7W OO9O OP0HQ OP0P OP1A OP2A OP4A OP4B OP4D OP4F OP4K OP4T OP5T OP6T OP7B OQ3R OQ4A OQ4B OQ4T OQ4U OQ5A OQ5M OQ7Q OQ7T OQ9E OR0A OR1T OR1Z OR2A OR2B OR2F OR2M OR2R OR2T OR4A OR4U OR4W OR5EU OR6C OR7H OR7W OR7Z OS0S OS2A OS2T OS4U OS5N OS6C OS7A OS8A OT1A OT2A OT2C OT2X OT3A OT3T OT4A OT4I OT4P OT5A OT5P OT5T OT5W OT6E OT6N OT6T OT6V OT7E OT7G OT7N OT7T OT7X OU2P OU3A OU4O OU7X OV1A OV1CDX OV3X OV5A OX2A OX3XR OX5AA OX8XX OY1CT OY2J OY3AA OY3JE OY3QN OY4M OY6A OY9JD OY9R OZ0A OZ0MF OZ0MJ OZ0TE OZ0W OZ1AAR OZ1ACB OZ1ADL OZ1AGN OZ1AXG OZ1BCG OZ1BTE OZ1BXG OZ1BZJ OZ1CCM OZ1CJS OZ1CTK OZ1CWH OZ1DGQ OZ1DSD OZ1DYI/P OZ1DZ OZ1EDR OZ1FAO OZ1GCT OZ1GML OZ1HHH OZ1HQ OZ1HUE OZ1HYI OZ1IEZ OZ1IKW OZ1IKY OZ1ING OZ1JFK OZ1JTE OZ1JU OZ1JVX OZ1KEF OZ1KJG OZ1KKH OZ1KSN OZ1KVM OZ1LCG OZ1LFI OZ1LNL OZ1LO OZ1LXJ OZ1NF OZ1XV OZ2A OZ2AR OZ2BKK OZ2CVT OZ2DAN OZ2HT OZ2PBS OZ2RH OZ2SPACE OZ2TF OZ2U OZ3ABU OZ3ANT OZ3BEN OZ3BJ OZ3EN OZ3PZ OZ3SA OZ3SK OZ3SM OZ4ACK OZ4B OZ4CG OZ4EU OZ4FA OZ4FF OZ4LS OZ4M OZ4NA OZ4O OZ4RT OZ4UN OZ4VV OZ4VW OZ5AGJ OZ5D OZ5DSB OZ5DX OZ5E OZ5EV OZ5GX OZ5HZ OZ5JC OZ5KF OZ5KU OZ5NJ OZ5RM OZ5TL OZ5UR OZ5WQ OZ6ABL OZ6AGD OZ6AGX OZ6EI OZ6OM OZ6TL OZ7A OZ7AEI OZ7AKT OZ7AM OZ7BQ OZ7DK OZ7DN OZ7EA OZ7HAM OZ7HT OZ7IF OZ7KU OZ7NB OZ7OX OZ7RQ OZ7TTT OZ7X OZ7XE OZ7YL OZ7YY OZ8A OZ8ABE OZ8BZ OZ8CT OZ8DX OZ8PG OZ8PI OZ8SW OZ9KZ OZ9V PA0A PA0AA PA0ABM PA0ADP PA0AGA PA0AKN PA0ASD PA0ATG PA0ATY PA0AWH PA0B PA0BW PA0BWL PA0CAH PA0CGB PA0CKV PA0CMU PA0COR PA0CYW PA0DDB PA0DIN PA0DVD PA0DVM PA0ELS PA0EMO PA0END PA0FAW PA0FEI PA0FLE PA0GJV PA0GMM PA0GMS PA0GMW PA0GRU PA0HOR PA0HRM PA0HWB PA0IA PA0INA PA0JED PA0JHM PA0JKA PA0JNH PA0JSE PA0KT PA0LEG PA0LOU PA0LSK PA0M PA0MAW PA0MBD PA0MIR PA0MJM PA0O PA0PFW PA0PSA PA0PVW PA0QRB PA0QX PA0RBA PA0RBO PA0RDY PA0RHA PA0RRA PA0SDZ PA0SKP PA0SNG PA0SON PA0TCA PA0VAJ PA0VDV PA0VHA PA0VST PA0W PA0WDG PA0WKI PA0WLB PA0WRS PA0WTO PA0WYS PA09CC PA1A PA1AK PA1APW PA1AT PA1AW PA1B PA1BBO PA1BDO PA1BK PA1BOB PA1BR PA1BX PA1CC PA1CM PA1CPA PA1CW PA1DK PA1DV PA1FJ PA1FOC PA1FR PA1H PA1HCB PA1HEM PA1HR PA1JHP PA1JIM PA1JT PA1K PA1M PA1MR PA1MV PA1MVL PA1NHZ PA1NL PA1PAT PA1PDM PA1PE PA1RBZ PA1RVL PA1T PA1TK PA1TT PA1TX PA1UL PA1VC PA1W PA1WLB PA1X PA1XA PA100BEVER PA2A PA2ALF PA2AM PA2AWU PA2C PA2CVD PA2F PA2GP PA2CHM PA2IP PA2JWN PA2KW PA2LO PA2LP PA2LS PA2MI PA2MRT PA2N PA2NJC PA2PDV PA2PCH PA2PKZ PA2PRU PA2R PA2REH PA2RU PA2RUS PA2SAM PA2SWL PA2TB PA2V PA2W PA2WO PA3A PA3AAV PA3ABH PA3ADJ PA3AFF PA3AGF PA3AIN PA3AJH PA3AJN PA3AJW PA3AKP PA3ALK PA3ALY PA3AM PA3ANN PA3AO PA3AQL PA3AQY PA3ARK PA3ARM PA3ATN PA3ATP PA3AWW PA3BFH PA3BFS PA3BGQ PA3BQC PA3BWD PA3BWK PA3BWS PA3C PA3CAL PA3CEV PA3CJP PA3CLQ PA3CMF PA3CNI PA3CPJ PA3CSG PA3CTA PA3CUI PA3CVI PA3CVJ PA3CVR PA3DAT PA3DBH PA3DBS PA3DCX PA3DDP PA3DFG PA3DGH PA3DHR PA3DRL PA3DTR PA3DZF PA3EAQ PA3EBP PA3ECJ PA3EEG PA3ELQ PA3EMN PA3EQO PA3ERY PA3ESO PA3EVY PA3EWG PA3EWP PA3EZC PA3FKN PA3FMC PA3FNB PA3FOE PA3FQA PA3FYG PA3GBI PA3GBQ PA3GCU PA3GCV PA3GDD PA3GDY PA3GEO PA3GGB PA3GGD PA3GGW PA3GJU PA3GMM PA3GPP PA3GQF PA3GQG PA3GRM PA3GVI PA3GWN PA3GXT PA3HAH PA3HCC PA3HCF PA3HFG PA3HFJ PA3HGF PA3HGP PA3HHE PA3HHT PA3HIJ PA3HK PA3HS PA3JD PA3KVE PA3MET PA3MM PA3MR PA3N PA3PCV PA3RB PA3RW PA3S PA3T PA3TON PA3YH PA30IPA PA30RCK PA4AO PA4AR PA4B PA4DO PA4F PA4HF PA4CHE PA4JJ PA4LA PA4MRS PA4N PA4PS PA4SDV PA4T PA4VHF PA4WG PA44N PA5A PA5CW PA5F PA5GU PA5HJ PA5J PA5JSB PA5KT PA5LV PA5MS PA5O PA5P PA5PJB PA5PR PA5RG PA5TT PA5V PA5VK PA5VL PA5W PA5WT PA5YL PA50RNARS PA6HQ PA6OI PA6V PA6Z PA600MIR PA7A PA7BAS PA7CG PA7DW PA7F PA7FA PA7HPH PA7J PA7JM PA7JS PA7JWC PA7LV PA7LZ PA7MM PA7N PA7PA PA7PTT PA7PYR PA7RA PA7TWO PA7UL PA7WW PA7YI PA7ZZ PA8A PA8F PA8GB PA8KW PA8N PA8TWN PA9CC PA9CW PA9DD PA9HR PA9JO PA9LUC PA9M PA9MR PA9P PA9RD PA9RZ PB0ACU PB0AEX PB0AMU PB1TT PB2JJ PB2T PB2X PB5T PB5WIM PB5X PB6W PB65BP PB7CW PB7XYL PC2A PC2C PC2F PC2J PC25DIG PC3M PC4T PC4U PC5M PC5W PC5WB PC5WDB PC7R PC7T PC8E PD0ADR PD0AG PD0ARI PD0CIF PD0DJB PD0DK PD0EJN PD0EMR PD0HD PD0HF PD0HM PD0HQF PD0JHM PD0JMH PD0JNG PD0LBH PD0LDC PD0LG PD0LUR PD0MBY PD0MD PD0MGX PD0MHZ PD0MLO PD0MM PD0MNF PD0MWG PD0OQV PD0OYF PD0PRS PD0RKA PD0RKC PD0ROC PD0RS PD0RXP PD0SCY PD0SV PD0TB PD0WR PD05CW PD1ABO PD1AIH PD1ALW PD1ANQ PD1ARM PD1B PD1D PD1DX PD1EHA PD1EN PD1EVL PD1KSA PD1MVL PD1RP PD1SA PD1TV PD1UAR PD2ATG PD2EDR PD2GCM PD2GSP PD2HT PD2J PD2JAM PD2LLS PD2PKM PD2R PD2SO PD2YL PD3ALX PD3ATM PD3BVI PD3EM PD3GO PD3GSN PD3GVA PD3HB PD3JM PD3LHS PD3MDM PD3MR PD4DX PD4HDB PD4JP PD4NYS PD4R PD4U PD4X PD5B PD5CW PD5DJ PD5GO PD5JFK PD5L PD5LKM PD5LO PD5MJF PD5MVH PD5RS PD5TS PD5URK PD5X PD6W PD602YL PD7BZ PD7CJT PD7DB PD7EAT PD7MER PD7RB PD7TWO PD9BM PD9CN PD9DX PD9FDG PD9FER PD9FJ PD9GD PD9NR PD9RAY PD9Y PE0MVJ PE0NYJ PE0VT PE1AJ PE1ASH PE1AUV PE1B PE1BLQ PE1CIM PE1CPJ PE1CZG PE1DH PE1DTU PE1ER PE1EWR PE1FEI PE1FNW PE1FTV PE1FZK PE1GRJ PE1GWX PE1HB PE1HWO PE1IWT PE1JRP PE1KL PE1LGZ PE1LTY PE1LUB PE1MMZ PE1MPA PE1NAO PE1NBD PE1NCP PE1NGR PE1OLM PE1OPK PE1OUL PE1OXP PE1OXS PE1OYB PE1PGA PE1PKR PE1RDP PE1RF PE1RLF PE1RUS PE1WH PE2AE PE2CML PE2EMS PE2HD PE2JMR PE2KM PE2KP PE2KY PE2LZ PE2MC PE2MEV PE2RPS PE2T PE2TET PE25KP PE3HG PE3MK PE4AD PE4BAS PE5ENJ PE5T PE5TS PE7T PE8ROB PE9GG PF0R PF0X PF1MO PF4T PF5X PF6WW PF7DKW PF7M PF7X PF9A PG1A PG1R PG2AA PG2D PG3N PG4DX PG4I PG5M PG6EL PG7A PG7V PH0AS PH0AW PH0Q PH1UW PH100EL/P PH2A PH2M PH5C PH60PH PH7A PH7FE PH9HB PI4AAG PI4AMF PI4AML PI4BRD PI4CC PI4CG PI4COM PI4D PI4DIG PI4DX PI4EDE PI4FRG PI4HQ PI4KGL PI4LWD PI4MRC PI4N PI4RCK PI4TIL PI4TUE PI4VHW PI4VPO PI4W PI4WLD PI4Z PI4ZI PI4ZOD PI65AAG PI65BRD PI9TP PJ2BG PJ2DX PJ2HQ PJ2P PJ2S PJ2T PJ4A PJ4B PJ4G PJ4K PJ4L PJ4LS PJ4NX PJ4R PJ4T PJ4X PJ5NA PJ7B PJ7MF PJ7UQ PP1CZ PP2RON PP5BI PP5BK PP5BZ PP5EG PP5EJ PP5IZ PP5JAK PP5JN PP5JY PP5KR PP5MQ PP5MS PP5/OE9APV PP5TR PP5VK PP5VX PP5WG PP5XX PP7LL PP8ZAC PQ0F PQ4F PQ5B PR1T PR2B PR5A PR5D PR5W PR5Z PR7AA PR7AB PR7AF PR7AP PR7AR PR7AYE PR7CPK PR7DZ PR7GY PR7HR PR8ZX PS0F PS2S PS2T PS2Y PS6T PS7DX PS7YL PS8CC PS8DX PS8ET PT1A PT1Z PT2BW PT2CM PT2ZHA PT2ZXR PT3T PT4C PT5A PT5T PT5UN PT7AG PT7AZ PT7CG PT7DX PT7ZT PT8CWA PT8DX PT9PA PU1KGG PU1KTZ PU1MMZ PU2KLM PU2LEP PU2LGR PU2MJU PU2MTS PU2RKP PU2SDX PU2UEO PU2UJG PU2UTC PU2WDX PU3CAL PU3KNG PU3LYB PU3SVA PU4HUD PU5AAD PU5ATX PU5BIA PU5FJR PU5OGE PU5UAI PU8TEP PU9OSB PV2P PV8AA PV8ABC PV8ADI PV8AX PV8AZ PV8DR PV8DX PV8RF PW1W PW2B PW2D PW2P PW5G PW7A PW7T PX2C PX2T PX5B PX5E PX8XL PY0FF PY1CD PY1CL PY1CMT PY1CX PY1DHG PY1DO PY1DX PY1GQ PY1HY PY1KB PY1KN PY1ME PY1NB PY1NX PY1OW PY1PDF PY1PL PY1RY PY1SX PY1WS PY1ZV PY2AAZ PY2AC PY2ADR PY2ASS PY2BK PY2BN PY2BRA PY2BRZ PY2BT PY2BW PY2CX PY2DEZ PY2DJ PY2DN PY2DU PY2DXX PY2DY PY2EB PY2EJ PY2EL PY2ELG PY2ESP PY2EU PY2EX PY2EYE PY2GH PY2GMR PY2HAM PY2HL PY2HT PY2IAX PY2IML PY2IQ PY2IU PY2KGB PY2KJ PY2KP PY2KPY PY2LCD PY2LCN PY2LED PY2LEI PY2LGR PY2LSM PY2MNL PY2MPG PY2MR PY2MTS PY2MTV PY2NA PY2NB PY2NDX PY2NFE PY2NQ PY2NY PY2NZ PY2OE PY2OX PY2PT PY2QA PY2RDS PY2RDZ PY2RH PY2SBY PY2SE PY2SEI PY2SEX PY2SF PY2SHF PY2SRB PY2TEL PY2TI PY2TIM PY2TKB PY2TO PY2UDX PY2UN PY2VA PY2VM PY2VRZ PY2VZ PY2WAS PY2WB PY2WC PY2WL PY2XAT PY2XB PY2XC PY2XTA PY2YP PY2YU PY2ZA PY2ZK PY2ZR PY2ZXU PY2ZY PY3APY PY3AT PY3ATR PY3AU PY3CAL PY3DX PY3EAM PY3FBI PY3FOX PY3IP PY3KIM PY3KN PY3MHZ PY3NZ PY3OG PY3OL PY3OPP PY3OZ PY3PA PY3SEX PY3TIO PY3UA PY3UEB PY3VB PY3VK PY3YD PY4BL PY4BW PY4DEL PY4EK PY4FQ PY4LH PY4OG PY4OY PY4UM PY4XX PY4ZF PY4ZO PY5AKW PY5AP PY5BH PY5BLG PY5CA PY5DC PY5EW PY5FB PY5FO PY5GA PY5IP PY5JO PY5KA PY5KD PY5LF PY5MJ PY5QW PY5RB PY5XH PY5ZD PY5ZHP PY6HD PY6KY PY6PRS PY7GK PY7OJ PY7RP PY7VI PY7XC PY7ZBK PY7ZY PY7ZZ PY8MGB PY9MM PZ1AP PZ5M PZ5RA PZ5TT PZ5X P29CS P29CW P29NB P29TL P3F P3J P3M P3N P3Z P33W P39P P40A P40B P40HQ P40K P40L P40LE P40N P40P P40Q P40R P40TA P40V P40W P40Y P40YL P41M P41V P41YL P43A P43E P43JB P48AA P48ADI P49MR P49V P49X P49Y RA0AA RA0ACM RA0AM RA0ANO RA0AR RA0AY RA0BA RA0CAH RA0CL RA0CY RA0FLP RA0FU RA0FZ RA0JBL RA0JY RA0LE RA0LG RA0LL RA0LV RA0QC RA0QD RA0QQ RA0QW RA0SF RA0SMS RA0SS RA0SU RA0UBI RA0UF RA0WHE RA0WU RA0ZN RA1AEI RA1AFR RA1AG RA1AGG RA1AGL RA1AGU RA1AIE RA1AIP RA1AJF RA1AKR RA1AL RA1ALC RA1ALZ RA1AOB RA1AOP RA1AR RA1AUW RA1AW RA1CF RA1CP RA1CW RA1OD RA1OGP RA1OHX RA1OJ RA1OW RA1OZ/1 RA1QA RA1QAX RA1QCZ RA1QD RA1QDP RA1QFY RA1QG RA1QGK RA1QGO RA1QIH RA1QIT RA1QJA RA1QN RA1QQ RA1QR RA1QX RA1QY RA1TU RA1TV RA1TV/1 RA1WJ RA1WZ RA1ZZ/3 RA2FAC RA2FB RA2FCE RA2FDX RA2FF RA2FG RA2FIA RA2FN RA2FU RA2FV RA2FX RA3AA RA3AD RA3AGF RA3AGN RA3AH RA3AJ RA3AN RA3ANI RA3APN RA3ATE RA3ATX RA3AUM RA3AV RA3AWO RA3AWW RA3AX RA3BB RA3BQ RA3BQ/3 RA3BT RA3BZ RA3CM RA3CO RA3CQ RA3DA RA3DAD RA3DCT RA3DEQ RA3DGH RA3DH RA3DNC RA3DRC RA3DRI RA3DTH RA3DTN RA3DW RA3DX RA3DXU RA3EA RA3EC RA3ED RA3EF RA3EG RA3EM RA3EW RA3FC RA3FD RA3FF RA3FH RA3FO RA3GAS RA3GFG RA3GJ RA3GN RA3GP RA3ICK RA3ID RA3IS RA3LB RA3LDP RA3LG RA3LJ RA3LO RA3LZ RA3MAV RA3MB RA3MD RA3MQ RA3MR RA3MU RA3N RA3NAN RA3NC RA3NF RA3NK RA3NN RA3NU RA3NZ RA3OE RA3OO RA3OW RA3PQ RA3PW RA3QG RA3QH RA3QJ RA3QN RA3QPY RA3QSY RA3QWK RA3RBL RA3RCL RA3RGD RA3RGQ RA3RIU RA3RK RA3RLP RA3RN RA3RPS RA3RUF RA3SI RA3SL RA3SS RA3ST RA3SX RA3TA RA3TAC RA3TE RA3THN RA3TJX RA3TT RA3TUE RA3TUT RA3TV RA3TVL RA3TYL RA3UAG RA3UF RA3UT RA3VE RA3VE/3 RA3VFM RA3VGS RA3VHO RA3VKU RA3VLD RA3VMJ RA3VR RA3VX RA3WCG RA3WP RA3WUG RA3XA RA3XAR RA3XCW RA3XCZ RA3XDV RA3XDX RA3XE RA3XEV RA3XI RA3XM RA3XO RA3XP RA3YAO RA3YBU RA3YC RA3YDA RA3YZ RA3ZA RA3ZC RA3ZH RA3ZOM RA3ZZ RA4AAJ RA4AAO RA4ACX RA4AFZ RA4AR RA4CA RA4CBN RA4CC RA4CKC RA4CP RA4CQ RA4CSP RA4CVT RA4CW RA4DR RA4FAU RA4FDY RA4FJV RA4FP RA4FUN RA4FUT RA4FW RA4FWA RA4FY RA4HBS RA4HDT RA4HFE RA4HGN RA4HL RA4HMT RA4HO RA4HPA RA4HT RA4HTX RA4HX RA4LBS RA4LF RA4LK RA4LW RA4LZ RA4NCC RA4NF RA4NX RA4PBE RA4PD RA4PI RA4PIT RA4PKI RA4PNO RA4PO RA4POX RA4PR RA4PUT RA4PX RA4RT RA4S RA4SAT RA4SE RA4ST RA4UAT RA4UF RA4UVK RA4WA RA4WC RA4YEW RA6AAW RA6ABC RA6AF RA6ALS RA6AMO RA6AQV RA6AR RA6ARI RA6AX RA6AZ RA6CU RA6CZ RA6DB RA6DE RA6DT RA6EE RA6FG RA6FHY RA6FP RA6FPV RA6FP/6 RA6FQL RA6FRL RA6FSZ RA6FUZ RA6FV RA6FZ RA6GW RA6HCN RA6HDI RA6HJA RA6HJR RA6HPL RA6HSM RA6JZ RA6LBS RA6LIS RA6LOO RA6LW RA6MA RA6MK RA6MQ RA6MS RA6MT RA6UAR RA6UH RA6XB RA6XE RA6XMF RA6XPG RA6XR RA6XV RA6YBW RA6YDX RA6YJ RA7A RA8T RA9A RA9AA RA9AAA RA9AB RA9AC RA9ACS RA9AE RA9AFZ RA9AKI RA9AMO RA9AN RA9AP RA9AU RA9AY RA9CB RA9CCO RA9CDW RA9CEX RA9CIN RA9CKM RA9CKQ RA9CMO RA9CNF RA9DR RA9DZ RA9FAA RA9FEL RA9FEU RA9FHL RA9FLW RA9FN RA9FW RA9HL RA9HM RA9HO RA9JB RA9JBA RA9JG RA9JM RA9JP RA9JR RA9KM RA9KY RA9LE RA9LT RA9MC RA9MGX RA9MJ RA9MLR RA9MLX RA9MU RA9MX RA9OBG RA9OFA RA9QBQ RA9QBR RA9RR RA9SAS RA9SB RA9SC RA9SF RA9SK RA9SKL RA9SN RA9SPF RA9ST RA9SUF RA9UAD RA9UAG RA9UIV/9 RA9ULK RA9UN RA9USU/3 RA9UT RA9WD RA9WU RA9WV RA9WW RA9XE RA9XF RA9XSL RA9XU RA9XV RA9YAI RA9YN RC0F RC3W RC4AA RC4Q RC4WA RC7F RC8I RC9F RC9JWR RC9O RD0C RD1AL RD1AN RD1AW RD3A RD3AAD RD3AB RD3AD RD3AF RD3AJB RD3AL RD3AN RD3AP RD3ATT RD3AW RD3AY RD3BE RD3BV RD3BW RD3BY RD3BZ RD3DD RD3DG RD3DS RD3DT RD3DY RD3FF RD3FI RD3FT RD3FX RD3FY RD3MA RD3MM RD3MR RD3PM RD3PO RD3PX RD3QX RD3WA RD3WAR RD3WF RD3ZC RD3ZF RD4CAQ RD4HD RD4WA RD4WM RD6LP RD6MA RD6MF RD9CX RF3C RF3P RF3T RF4M RF4N RF4S RF9C RF9M RF9W RG3K RG4F RG5A RG6G RG8U RG9A RJ3AA RJ3AM RJ3AR RK0AB RK0BWW/0 RK0LWW RK0QWT RK0QZ RK0SA RK0SK RK0SP RK0SXF RK0SXR RK0UN RK0UT RK1AA RK1AD RK1AM RK1AO RK1AR RK1AX RK1NA RK1NWA RK1OWA RK1OWZ RK1OZM RK1QWX RK2FWA RK2FWN RK3ANL RK3AO RK3AQW RK3AWA RK3AWE RK3AWK RK3AWL RK3AX RK3BA RK3BX RK3DH RK3DK RK3DOJ RK3DSW RK3DT RK3DU RK3DWH RK3DWR RK3DXS RK3DXW RK3DXZ RK3DZB RK3DZD RK3DZD/P RK3DZF RK3DZH RK3ER RK3EWW RK3EXA RK3FJ RK3FM RK3FQ RK3FWA RK3FWE RK3FWI RK3FY RK3GWW RK3GYM RK3IM RK3IWB RK3K RK3MWC RK3MWD RK3MWI RK3MWL RK3MXT RK3MXT/P RK3PA RK3PWJ RK3QS RK3QWA RK3QWM RK3QWW RK3QY RK3RB RK3RWA RK3RX RK3RZM RK3SWB RK3SWS RK3TD RK3TS RK3VWA RK3XWO RK3YWW RK3YYQ RK3YZA RK3ZB RK3ZF RK3ZZ RK4CB/3 RK4CWQ RK4CYW RK4FAD RK4FB RK4FM RK4FWX RK4HWW RK4HYT RK4HZ/3 RK4LWA RK4NAB RK4PA RK4PB RK4PK RK4S RK4SA RK4UWA RK4UWR RK4WWA RK4WWF RK4WWQ RK4YJ RK6AM RK6AQM RK6ASY RK6AWY RK6AX RK6AXS RK6BBZ RK6CK RK6CM RK6DL RK6FS RK6FZ RK6HG RK6HWR RK6HWW RK6LC RK6LP RK6LWA RK6LZF RK6MY RK6XWA RK6YD RK6YY RK6YZZ RK8I RK9AA RK9ABJ RK9AD RK9AJZ RK9AK RK9ALD RK9AN RK9AWC RK9AWT RK9AX RK9AY RK9CWA RK9CWW RK9CYA RK9CZO RK9DC RK9DM RK9DO RK9DR RK9DV RK9FBE RK9FWW RK9FYS RK9JWR RK9JWV RK9JWW RK9JXP RK9KWI RK9KWK RK9MWL RK9QWM RK9QWN RK9QWZ RK9SWF RK9SWY RK9UAC RK9UAH RK9UC RK9UE RK9UN RK9WZZ RK9XA RK9XM RK9XWA RK9XWO RK9XWP RK9XX RK9XXX RK9XZB RK9YWE RK9YWK RL3A RL3AA RL3AB RL3AF RL3AI RL3AJ RL3AN RL3AW RL3BB RL3BK RL3BK/3 RL3BM RL3BN RL3BZ RL3DD RL3DE RL3DF RL3DJ RL3DR RL3DX RL3DZ RL3F RL3FA RL3FM RL3FO RL3FT RL3FZ RL3KO RL3KQ RL3OI RL3Q RL3WL RL3WX RL3ZI RL4R RL6M RL6YXX RL9AA RL9I RM2T RM2U RM3A RM3F RM3M RM3Q RM3Z RM4HZ RM5A RM5D RM5P RM7M RM8W RM9RZ RM9X RN0CF RN0CW RN0JX RN0SA RN0SS RN1AI RN1AJ RN1AN RN1AO RN1AQ RN1AW RN1CC RN1CW RN1CX RN1N RN1NA RN1NEB RN1NEO RN1NU RN1NW RN1NY RN1ON RN1TA RN1TN RN2FA RN2FQ RN3AAB RN3AAB/3 RN3AC RN3ADV RN3AHL RN3AKK RN3AM RN3AMF RN3ANT RN3ARA RN3AU RN3AW RN3AZ RN3BO RN3BU RN3BW RN3CT RN3DAO RN3DAW RN3DAZ RN3DBA RN3DDR RN3DFN RN3DFS RN3DG RN3DKE RN3DWW RN3DY RN3FA RN3FR RN3FS RN3FY RN3GA RN3GE RN3GL RN3GM RN3KK RN3KL RN3LA RN3OA RN3OK RN3QIS RN3QKC RN3QLM RN3QN RN3QO RN3QP RN3QQ RN3QVG RN3QY RN3RA RN3REA RN3REY RN3RF RN3RFX RN3RQ RN3RX RN3T RN3TT RN3ZC RN3ZHV RN3ZIC RN3ZIN RN3ZJJ RN3ZOB RN3ZQ RN3ZR RN3ZRJ RN3ZX RN4AK RN4AO RN4AT RN4AX RN4CA RN4CC RN4CU RN4CU/0 RN4HA RN4HAB RN4HFJ RN4HGP RN4HIF RN4HJQ RN4HW RN4LL RN4LP RN4LR RN4NF RN4SC RN4SM RN4SN RN4SS RN4WA RN4ZT RN6A RN6AH RN6AI RN6AJ RN6AT RN6BM RN6BY RN6CD RN6DJ RN6DR RN6DV RN6FA RN6FJ RN6FK RN6FM RN6FZ RN6HDX RN6HZ RN6MA RN7A RN7F RN9A RN9AA RN9AA/9 RN9AUF RN9AWU RN9CM RN9CWJ RN9HM RN9HT RN9MA RN9MZ RN9N RN9RF RN9RM RN9S RN9SXX RN9XA RO3DX RO3T RO4W RO5O RO7M RO8WA RO9O RP2F RP3AF RP3G RP3QUP RP3SGK RP4M RP6A RP65DXS RP65Z RP9J RP9RP RQ3M RQ9I RS3A RT0C RT0Q RT2T RT3A RT3F RT3LA RT3M RT3T RT4D RT4F RT4M RT4RO RT4W RT5G RT5Z RT6A RT7D RT8I RT8O RT8X RT9A RT9S RT9W RU0AB RU0AE RU0AI RU0AKB RU0ANW RU0AT RU0AW RU0LI RU0LL RU0LQ RU0SN RU0ST RU0SU RU0UA RU0UQ RU0ZM RU1A RU1AA RU1AB RU1AO RU1AT RU1QD RU1QQ RU1QY RU2FAA RU2FM RU3AA RU3AL RU3AT RU3AWH RU3BO/3 RU3BU RU3DD RU3DG RU3DM RU3DU RU3DX RU3EJ RU3FF RU3FF/6 RU3FN RU3FT RU3GA RU3HD RU3KC RU3LA RU3MJ RU3MW RU3NHY/1 RU3ON RU3OO RU3OP RU3OW RU3PU RU3PY RU3QR RU3QW RU3RM RU3RR RU3SD RU3SE RU3ST RU3TC RU3U RU3UB RU3UM RU3UN RU3UR RU3UW RU3VD RU3VV RU3WR RU3XB RU3XF RU3XJ RU3XK RU3XW RU3XY RU3XY/1 RU3YA RU3ZV RU3ZX RU4AA RU4AW RU4CD RU4CO RU4CS RU4F RU4FA RU4HL RU4HP RU4HU RU4LM RU4PU RU4SM RU4SO RU4SS RU4SU RU4SW RU4UR RU4WD RU4YES RU5A RU6AM RU6AN RU6AR RU6AV RU6AX RU6BR RU6CQ RU6CT RU6DX RU6FA RU6FC RU6FZ RU6HJ RU6CH RU6L RU6LA RU6LG RU6LWZ RU6M RU6MD RU6MM/1 RU6UR RU6YJ RU6YK RU6YY RU6YZ RU7A RU9AC RU9AT RU9AWA RU9AZ RU9BS RU9CC RU9CD RU9CI RU9CK RU9CM RU9CO RU9CWF RU9CWG RU9CX RU9CY RU9CZ RU9CZD RU9DD RU9HM RU9I RU9LA RU9MU RU9MX RU9SO RU9TO RU9UC RU9UG RU9UN RU9UWU RU9WB RU9WX RU9WZ RU9YF RV0AE RV0AL RV0AR RV0AU RV0AUI RV0CD RV0SR RV1AC RV1AE RV1AP RV1AQ RV1AT RV1CB RV1CC RV1OO RV2FW/1 RV2FZ RV3ACA/3 RV3AMV RV3AQN RV3AZ RV3BQ RV3BV RV3DB RV3DBG RV3DBK RV3DCZ RV3DHC RV3DND RV3DUT RV3EAK RV3F RV3FD RV3FF RV3FI RV3FM RV3FN RV3FT RV3FU RV3GM RV3IC RV3ID RV3IG RV3LE RV3LO RV3LQ RV3LU RV3MA RV3MF RV3MI RV3ML RV3MR RV3NA RV3NB RV3PN RV3QJ RV3QO RV3QR RV3QX RV3RM RV3TG RV3WD RV3WT RV3YM RV3YN RV3YR RV3ZL RV3ZN RV3ZQ RV4AB RV4AP RV4CO RV4CT RV4CU RV4HC RV4HL RV4HV RV4LC RV4LS RV6AAA RV6AA/P RV6ACC RV6AF RV6AJ RV6AJJ RV6ALI RV6ARS RV6ASU RV6BC RV6BK RV6BO RV6FA RV6FG RV6HEO RV6HO RV6LA RV6LAF RV6LCI RV6LJK RV6LN RV6LO RV6LOZ RV6LX RV6YB RV9AV RV9AZ RV9CBW RV9CM RV9CP RV9CPZ RV9CQ RV9CU RV9CVA RV9CX RV9DC RV9FQ RV9FT RV9JE RV9JR RV9LF RV9LM RV9LV RV9MA RV9MM RV9MN RV9MZ RV9OM RV9SV RV9UB RV9UD RV9UF RV9UP RV9WA RV9WB RV9WJ RV9WP RV9WZ/2 RV9XE RV9XM RV9XO RV9XQ RV9YK RV9YP RV9YW RV9YZ RW0A RW0AA RW0AJ RW0AQ RW0AR RW0BG RW0BM RW0CF RW0CN RW0COA RW0CR RW0CV RW0CWA RW0LBM RW0LD RW0LQ RW0LT RW0LZ RW0MM RW0SD RW0SP RW0SR RW0UB RW0UM RW0UU RW1AI RW1AM RW1AU RW1CW RW1CX RW1QV RW1ZA RW2A RW2F RW2L RW2WR RW3AFY RW3AI RW3DA RW3DC RW3DD RW3DF RW3DL RW3DMQ RW3DOX RW3DU RW3DW RW3DY RW3FX RW3GU RW3GW RW3LB RW3LL RW3LX RW3MA RW3MB RW3MW RW3PF RW3PK RW3PX RW3PZ RW3QF RW3QW RW3RM RW3RN RW3RQ RW3SB RW3SK RW3SU RW3SY RW3SZ RW3TA RW3TT RW3VA RW3VI RW3VM RW3VZ RW3WWW/1 RW3WX RW3XB RW3XM RW3XN RW3XS RW3XX RW3XZ RW3YA RW3YW RW3ZA RW3ZC RW4AA/9 RW4AD RW4AO RW4CBG RW4CG RW4CLF RW4CY RW4FD RW4FE RW4FX RW4HB RW4HBG RW4HD RW4HFH RW4HM RW4HM/P RW4HO RW4HP RW4HT RW4CHD RW4LK RW4LQ RW4NA RW4NH RW4NN RW4NO RW4NQ RW4NX RW4PK RW4PL RW4PP RW4PY RW4W RW4WM RW4WN RW4WW RW4WY RW4WZ RW4YR RW4YY RW6AF RW6AH RW6AHO RW6ALB RW6AM RW6AMP RW6AN RW6ATJ RW6BD RW6BJ RW6BN RW6CF RW6CR RW6CW RW6FO RW6FZ RW6HA RW6HA/6 RW6HJV RW6HJV/6 RW6HKF RW6HP RW6HPD RW6HX RW6MBC RW6MII RW6MT RW8W RW9C RW9CD RW9CW RW9DW RW9DX RW9FWR RW9HA RW9IM RW9JD RW9JE RW9JZ RW9LL RW9MC RW9MZ RW9OC RW9OW RW9OWD RW9OWW RW9OX RW9QA RW9RA RW9RN RW9RO RW9RW RW9SZ RW9TA RW9TP RW9TR RW9UKU RW9UOB RW9USA RW9UU RW9UW RW9UX RW9UY RW9WA RW9WC RW9WT RW9WW RW9XF RW9YP RX0AK RX0AT RX0AW RX0QA RX0QWW RX0SA RX1AA RX1AO RX1AP RX1CD RX1CQ RX3AA RX3AEX RX3AGD RX3AGQ RX3AHR RX3AJ RX3ALL RX3AMG RX3AP RX3APM RX3ASQ RX3AT RX3AU RX3AW RX3BP RX3DBG RX3DBH RX3DFL RX3DIS RX3DN RX3DTM RX3DTN RX3DUE RX3F RX3FK RX3FS RX3FS/3 RX3FT RX3MA RX3MM RX3MX RX3OM RX3PB RX3PR RX3QDF RX3QFY RX3QP RX3RA RX3RB RX3RZ RX3VA RX3VF RX3XA RX3XP RX3ZE RX3ZX RX4AW RX4CD RX4HX RX4HZ RX4HZZ RX4W RX4WX RX4YY RX6ABL RX6AH RX6AKA RX6AM RX6AMV RX6AOB RX6AUE RX6AY RX6BH RX6BS RX6BZ RX6CC RX6DM RX6DQ RX6DX RX6FJ RX6HT RX6LD RX6LE RX6LEM RX6LN RX6LOL RX6MR RX9AF RX9AI RX9AM RX9AON RX9AX RX9AZ RX9CAZ RX9CCJ RX9CJ RX9DJ RX9FB RX9FG RX9FJ RX9FM RX9FR RX9FW RX9JD RX9JM/9 RX9JP RX9KD RX9KT RX9LW RX9SA RX9SK RX9SL RX9SN RX9SR RX9SS RX9TL RX9TL/9 RX9TX RX9UL/3 RX9WN RX9WR RX9WX RY4I RY6Y RY9C RZ0AF RZ0AM RZ0AO RZ0AWO RZ0CQ RZ0CWN RZ0LWA RZ0SB RZ0SN RZ0SO RZ0SR RZ0SZZ RZ0WWA RZ1AP RZ1AT RZ1AU RZ1AWG RZ1AWO RZ1AWT RZ1AWZ RZ1AZ RZ1OA RZ1OK RZ1OM RZ1ZZ RZ1ZZZ RZ3AAO RZ3ABC RZ3ABF RZ3AIA RZ3AIU RZ3AM RZ3AMW RZ3ARO RZ3ATE RZ3ATG RZ3AUL RZ3AV RZ3AWI RZ3AWM RZ3AWM/3 RZ3AXX RZ3AZ RZ3BY RZ3DA RZ3DC RZ3DH RZ3DJ RZ3DSN RZ3DUD RZ3DX RZ3DXR RZ3DZ RZ3DZA RZ3DZF RZ3DZI RZ3EC RZ3EE RZ3EM RZ3EV RZ3FH RZ3FW RZ3GU RZ3GV RZ3LC RZ3LWW RZ3OV RZ3PS RZ3QL RZ3QS RZ3QWT RZ3QZ RZ3RM RZ3TXZ RZ3TZL RZ3TZZ RZ3VA RZ3VO RZ3VV RZ3XA RZ4AA RZ4AG RZ4AO RZ4AR RZ4AYN RZ4AZ RZ4CWW RZ4FA RZ4FB RZ4FO RZ4FWA RZ4FWE RZ4FZZ RZ4HC RZ4HL RZ4HO RZ4HWS RZ4HX RZ4HZW RZ4LA RZ4NXF RZ4PWL RZ4SWM RZ4WZ RZ6AD RZ6AK RZ6ARM RZ6ASO RZ6AW RZ6BR RZ6BU RZ6FA RZ6FC RZ6HDX RZ6HF RZ6HGG RZ6HV RZ6HWA RZ6HX RZ6LB RZ6LG RZ6LV RZ6LWZ RZ6LY RZ6MD RZ6MM RZ6MP RZ6YZ RZ7G RZ9AE RZ9AN RZ9AW RZ9AY RZ9AZ RZ9CJ RZ9CW RZ9FN RZ9HA RZ9HG RZ9HK RZ9HT RZ9IR RZ9OJ RZ9OP RZ9OQ RZ9OS RZ9OW RZ9OWN RZ9OZO RZ9SR RZ9SWA RZ9SZ/9 RZ9UGN RZ9UI RZ9UMA RZ9UO RZ9UWD RZ9UWZ RZ9WU RZ9WXK RZ9YB RZ9YF RZ9YW R0AA R0CY R0HQ R0/KE5JA R1ANB R1ANC R1ANP R1ANR R1ANY R2AD R2AT R2DW R2PA R2SA R3AA R3AAA R3AR R3AT R3BB R3BT R3CM R3DG R3FC R3FF R3GZ R3HQ R3K R3KM R3LA R3NA R3OM R3PA R3PW R3QA R3QF R3QX R3RRC/1 R3/SM6LRR R3/UY0YU R3ZV R3ZZ R4RT R4/UN6P R4WAA R4WT R5ACQ R5DT R5GA R5OE R6DX R6LA R6YY R7AM R7AO R7AY R7BN R7DX R7FF R7HF R7LV R8FR R8MC R8TR R8TX R8US R8XF R85NN R9CB R9DX R9FM R9FR R9FT R9MC R9MJ R9SA R9WR R9WW R9XM SA0AEK SA0BDK SA1A SA2BRN SA3A SA3ANZ SA3BGM SA3V SA4A SA5ACL SA5ATV SA6AIN SA6AQP SA6BET SA6G SA6W SA7AOI SA7AOM SA7AUH SA7J SB0M SB6A SC3A SC3DX SC3N SC7DX SD3A SD3D SD40JZ SD5X SD7X SE0X SE2A SE2T SE5E SE5S SE5T SE6C SE6E SE6N SE6U SE6W SE6Y SE7A SE800M SF0D SF0X SF3A SF3E SF5D SF5X SF6D SF6DX SF7WT SG0M SG0X SG1A SG3O SG4G SG5A SG5W SG5X SG6A SG6T SG7A SH3O SI0E SI0M SI3A SI4G SI5S SI5Y SI6A SI6GM SI6R SI7V SI9AM SJ0X SJ2W SJ4F SJ6A SJ7M SK0CT SK0HB SK0QO SK2T SK3A SK3GM SK3GW SK3W SK4TL SK5A SK5AA SK5PZ SK6AW SK6D SK6HD SK7A SK7AX SK7DX SK7OA SK9HQ SL0W SL5ZP SM0A SM0AIG SM0BDS SM0BSB SM0BSO SM0BYD SM0DGW SM0DTK SM0DZB SM0EPO SM0FM SM0GYX SM0IFP SM0IMJ SM0JHF SM0KRN SM0KV SM0MXO SM0NZY SM0Q SM0R SM0S SM0W SM0XG SM0Y SM1ALH SM2BJS SM2CEW SM2CVH SM2EKA SM2EKM SM2ELN SM2JEB SM2JUR SM2M SM2ODB SM2T SM2WMV SM3AF SM3B SM3BDZ SM3BFH SM3C SM3CCM SM3CZS SM3D SM3DMP SM3DXC SM3EAE SM3ETC SM3EVR SM3FVW SM3GBA SM3GSK SM3KIF SM3LBP SM3LDP SM3NRY SM3OKC SM3PHM SM3PZG SM3Q SM3R SM3RAB SM3RL SM3SJN SM3TLG SM3UZU SM3VAC SM3X SM3YBP SM4ASX SM4ATA SM4AZQ SM4C SM4CAN SM4CTT SM4EMO SM4F SM4OEP SM4PBT SM4RGD SM4RLD SM4TU SM4WKT SM5ACQ SM5AOG SM5APS SM5AQD SM5AQI SM5ARL SM5BAX SM5BJT SM5BMB SM5BOK SM5BRG SM5BSB SM5C SM5CAK SM5CBM SM5CCE SM5CEU SM5CIL SM5CJW SM5CNQ SM5COP SM5CSS SM5CZQ SM5D SM5DD SM5DFF SM5DJZ SM5DKK SM5DQE SM5DXR SM5DXT SM5DYC SM5EDX SM5EFX SM5ENX SM5EPO SM5F SM5FQQ SM5FUG SM5GMZ SM5IMO SM5INC SM5ISM SM5J SM5LWC/7 SM5MEK SM5MX SM5NVF SM5OSZ SM5Q SM5QU SM5R SM5SIK SM5SRR SM5SRS SM5T SM5U SM5USK SM5V SM5ZBJ SM6A SM6AHU SM6ALF SM6AOU SM6BGG SM6BSK SM6C SM6CKU SM6CMU SM6CNN SM6CPY SM6CRM SM6CTQ SM6CUK SM6CVT SM6CWK SM6DER/7 SM6DHU SM6DLY SM6E SM6EQO SM6FJY SM6FKF SM6FUD SM6GKT SM6GZ SM6IQD SM6JCC SM6JMZ SM6JWW SM6LIF SM6LJU SM6M SM6MCW SM6MIS SM6MSG SM6MVE SM6NET SM6NJK SM6NM SM6NOC SM6Q SM6TOL SM6U SM6V SM6VJA/P SM6VVT SM6W SM6WET SM6WZH SM6X SM6XKB SM6Z SM7A SM7ATL SM7AWQ SM7BGE SM7BHM SM7BIC SM7BJW SM7BQX SM7BVO SM7BZV SM7C SM7CBS SM7CIL SM7CQY SM7CTJ SM7CWI SM7DBN SM7DLK SM7DQV SM7DXQ SM7E SM7EH SM7GIB SM7GUY SM7GVF SM7HVQ SM7JKD SM7LPY SM7M SM7MPM SM7N SM7NGH SM7PEV SM7PXS SM7RPU SM7S SM7SJR SM7TZK SM7U SM7UFR SM7VZJ SM7VZX SM7XON SM7YEA SM7YII SM7YIN SM7ZDI SN0HQ SN0HS SN1A SN1C SN1I SN1J SN1T SN1Z SN120OSP SN140MPR SN2B SN2F SN2I SN2J SN2K SN2M SN2MTBO SN2Q SN2R SN2S SN2U SN2Y SN2Z SN2009EM SN3A SN3B SN3C SN3O SN3Q SN3R SN3S SN3T SN3X SN30J SN4F SN4L SN4W SN40DVP SN40K SN5A SN5B SN5E SN5G SN5I SN5J SN5N SN5Q SN5T SN5V SN5Z SN50RS SN50RS/7 SN50SPP SN51FBQ SN6G SN6K SN6Z SN7C SN7F SN7H SN7O SN7P SN7Q SN7S SN7T SN7V SN8B SN8C SN8F SN8J SN8M SN8R SN8W SN9A SN9C SN9D SN9F SN9I SN9K SN9L SN9M SN9N SN9O SN9P SN9Q SN9R SN9U SN9V SN9Y SN9Z SN90HRS SN90SW SO1D SO1EKO SO1TH SO1WE SO2D SO2I SO2Q SO2S SO2W SO2010FC SO4M SO4R SO5A SO5S SO6C SO6I SO6V SO6X SO7A SO7O SO70M SO8A SO8B SO8L SO8N SO8O SO8R SO8T SO80J SO9A SO9C SO9D SO9G SO9L SO9Q SO9R SO9S SP0ZHG SP1ADY SP1AEN SP1BLE SP1CQZ SP1DMD SP1DPA SP1EG SP1F SP1FFC SP1GZF SP1I SP1II SP1JPQ/P SP1JXJ SP1KAA SP1KCJ SP1KQR SP1KRF SP1KV SP1KZE SP1MHZ SP1MVG SP1MVL SP1MWF SP1MWK SP1MWN SP1NQN SP1NY SP1O SP1PWP SP1QXK SP1QY SP1RFC SP1RKR SP1RKT SP1S SP2AEK SP2AJO SP2ALT SP2AOB SP2AQP SP2AVE SP2AYC SP2B SP2BKX SP2BLC SP2BNJ SP2BRI SP2CYK SP2DDX SP2DKI SP2DMB/3 SP2DNI SP2DX SP2EFU SP2EPV SP2ESG SP2EWQ SP2EXE SP2EXN SP2FAP SP2FAV SP2FGO SP2FKE SP2FOV SP2FTL SP2FUD SP2FWC SP2GCE SP2GCJ SP2GJI SP2GJV SP2GLS SP2GMA SP2GTJ SP2GUV SP2GWH SP2HMN SP2HMT SP2HPD SP2HPM SP2HPM/7 SP2HWW SP2HXY SP2IKP SP2ILQ SP2IU SP2IW SP2JGQ SP2JL SP2JLR SP2JMB SP2JPG SP2KAC SP2KDS SP2KPD SP2KRS SP2LNW SP2LUB SP2MHC SP2MKI SP2MKZ SP2NBH SP2OVQ SP2PAQ SP2PIK SP2QCU SP2QCW SP2QG SP2QOT SP2RXG SP2SGN SP2SV SP2SWI SP2UKB SP2US SP2UUU SP2UV SP2WGB SP2Y SP2YUV SP200AAZ SP200FC SP2010CY SP3AGE SP3AZO SP3BGD SP3BHG SP3BJK SP3BQ SP3BVI SP3C SP3CFM SP3CGK SP3CJS SP3CQP SP3CYY SP3DIK SP3DOF SP3DOI SP3DRM SP3DSC SP3DVG SP3EFG SP3EPK SP3EPX SP3EQE SP3FHV SP3FPF SP3FYX SP3FZN SP3GAX SP3GEM SP3GHK SP3GRQ SP3GTS SP3GXH SP3HBF SP3HC SP3HLM SP3HRN SP3HZG SP3IOE SP3J SP3JHY SP3JIA SP3JUN SP3KPN SP3LAU SP3LPG SP3LPR SP3LWP SP3LYN SP3MEP SP3MEY SP3MGM SP3MY SP3NEN SP3NNH SP3OCC SP3OL SP3PJY SP3PL SP3POZ SP3QYQ SP3RBG SP3RNZ SP3SLO SP3SLU SP3SPK SP3UQG SP3VSE SP3VT SP3VZY SP3WW SP3XR SP3YM SP3ZIR SP4AAZ SP4AVG SP4AWE SP4BEU SP4BOS SP4BPH SP4BY SP4CGJ SP4CJA SP4CPB SP4CQU SP4CUF SP4DDS SP4DNX SP4DZT SP4FMD SP4GDC SP4GFG SP4GHL SP4GL SP4ICD SP4ICP SP4INT SP4IRS SP4JAE SP4JCP SP4JCQ SP4JFR SP4JTJ SP4JWR SP4K SP4KNA SP4KSY SP4LVK SP4LXC SP4MPG SP4MPH SP4NKJ SP4NKU SP4OIC SP4OIZ SP4OZ SP4PBI SP4SHD SP4TBM SP4TKB SP4TKO SP4TKR SP4TVO SP4TXI SP4XQN SP4YPB SP4Z SP40EIY SP5ADX SP5AGU SP5AHR SP5AHY SP5AKG SP5APW SP5ATO SP5AUB SP5AUY SP5AYY SP5AZN SP5BB SP5BLI SP5BMU SP5BNB SP5BR SP5BUJ SP5BYC SP5CCC SP5CFD SP5CGN SP5CIB SP5CJQ SP5CJY SP5CNA SP5CQI SP5DDF SP5DDJ SP5DIR SP5DPD SP5DRE SP5DRH SP5EAF SP5EAQ SP5ECC SP5ELA SP5ELA/8 SP5ELW SP5ENG SP5ENM SP5EOT SP5ES SP5EWX SP5EWX/7 SP5EWY SP5FKW SP5GDY SP5GH SP5GMM SP5GRM SP5GRU SP5GTI SP5HFS SP5HRX SP5ICS SP5IT SP5IVC SP5IXS SP5JSZ SP5JTF SP5KCR SP5KW SP5LM SP5LS SP5MBA SP5MDB SP5NHK SP5NVX SP5NZA SP5NZN SP5OXJ SP5PBE SP5PX SP5REG SP5SA SP5TAZ SP5UAR SP5UD SP5VYI SP5WA SP5X SP5XO SP5XOR SP5XOV SP5XSD SP5XSL SP5XVY SP5YOC SP50AAZ SP50DXC SP6A SP6AAT SP6AEG SP6ARE SP6AUI SP6AXW SP6BAA SP6BBE SP6BEN SP6BSL SP6BXM SP6BXP SP6CCI SP6CZ SP6DAY SP6DHD SP6DHH SP6DMI SP6DNZ SP6DVP SP6EF SP6EIY SP6EKS SP6FEK SP6FVP SP6FXY SP6GCU SP6GNJ SP6GTN SP6HED SP6HEQ SP6IEQ SP6IHE SP6IXU SP6JIR SP6JOE SP6JQC SP6JZP SP6KCN SP6KEP SP6LK SP6LMQ SP6LUV SP6LV SP6M SP6MLX SP6MQO SP6NIC SP6NIK SP6NVK SP6NVN SP6OJE SP6OJG SP6OJK SP6OPV SP6OPZ SP6OUJ SP6OWY SP6PCL SP6PKO SP6PLH SP6PWT SP6QKP SP6QKS SP6QKX SP6QNU SP6RBO SP6RLF SP6RT SP6RYD SP6SOX SP6T SP6TGR SP6TRH SP6TRX SP6VWC SP6XP SP6ZC SP6ZJP SP7ASZ SP7ATY SP7AWG SP7BCA SP7BDS SP7CCB SP7CDH SP7CVW SP7DBI SP7DCS SP7EBM SP7EXJ SP7FAH SP7FBQ SP7FDV SP7FGA SP7FGP SP7FRO SP7HKK SP7HOA SP7HOV SP7HQ SP7IDX SP7IIT SP7IWA SP7JLH SP7JOA SP7JQQ SP7LI SP7LIE SP7MC SP7MFQ SP7MFR SP7MJL SP7MJX SP7MOC SP7MTF SP7MTU SP7NHS SP7OGP SP7Q SP7QHR SP7QJB SP7SZW SP7TES SP7TEX SP7TF SP7VC SP8AG SP8AJK SP8AWL SP8BAB SP8BBK SP8BMF SP8BQL SP8BVN SP8BVO SP8BWE SP8CGU SP8CNS SP8DIP SP8EDD SP8EEX SP8FHM SP8FNA SP8GSC SP8HDP SP8HKT SP8HWM SP8HXN SP8IIS SP8IOV SP8IQR SP8JMA SP8JPR SP8KEA SP8LBK SP8LXE SP8LZC SP8NCJ SP8NR SP8ONB SP8ONZ SP8OOB SP8QED SP8QJM SP8RX SP8RX/1 SP8SW SP8TDV SP8TJU SP8UFB SP8YB SP8YZZ SP80MVG SP9ADU SP9ADU/9 SP9AJM SP9ATE SP9AUV SP9BGS SP9BNM SP9BRP SP9BXU SP9CLO SP9CLU SP9CQ SP9CTS SP9CTW SP9CTX SP9CV SP9CVY SP9CXN SP9CXX SP9DEM SP9DLY SP9DNO SP9DSD SP9DTE SP9DTH SP9DUX SP9EJH SP9EML SP9ERL SP9EVP SP9EWM SP9FKQ SP9FOW SP9FT SP9FWQ SP9FZC SP9GFI SP9GKJ SP9GKM SP9GPW SP9GR SP9H SP9HVV SP9HZF SP9HZW SP9IBJ SP9IEK SP9IGY SP9IHP SP9IKN SP9IKS SP9IVD SP9IVQ SP9JKL SP9JPA SP9JQA SP9JZT SP9JZU SP9KAG SP9KDA SP9KRT SP9LAS SP9LDB SP9LDU SP9LJD SP9MAN SP9MDO SP9MDY SP9MZH SP9NH SP9NLI SP9NSV SP9NSV/7 SP9NWN SP9ODM SP9ODY SP9OHL SP9OYB SP9PRO SP9PSJ SP9QJ SP9RHN SP9RI SP9RQH SP9RQJ SP9RTL SP9TTT SP9UPH SP9VJ SP9VQM SP9VRY SP9W SP9WAN SP9WTN SP9WZJ SP9WZP SP9WZS SP9XCJ SQ1BHH SQ1DWR SQ1DWS SQ1EIA SQ1EIX SQ1EUG SQ1FYX SQ1K SQ1MNF SQ1NDW SQ1OD SQ1WO SQ100HP SQ2AJI SQ2BXI SQ2DYF SQ2EAN SQ2FRF SQ2GXO SQ2HL SQ2HNA SQ2LYC SQ2LYF SQ2LYS SQ2NNN SQ2RGB SQ2SAT SQ2TOM SQ2XC SQ200FC SQ3A SQ3AUA SQ3BDQ SQ3HMM SQ3HXH SQ3JVW SQ3LMY SQ3OGP SQ3OGZ SQ3RJP SQ3RX SQ3VAJ SQ3VV SQ3WW SQ4CTS SQ4FXM SQ4G SQ4HRN SQ4INW SQ4IOH SQ4MP SQ4OLP SQ5ALL SQ5ARG SQ5BUO SQ5EBM SQ5FWR SQ5GVY SQ5JUP SQ5M SQ5NAE SQ5NBE SQ5NPF SQ5NPX SQ5STS SQ5TA SQ5WAA SQ6ADL SQ6FHP SQ6IUO SQ6LAW SQ6LJV SQ6MIH SQ6MS SQ6NDJ SQ6NEF SQ6NEG SQ6NES SQ6NTE SQ6NTM SQ6ODD SQ6OR SQ6OXC SQ6R SQ6STI SQ6WWW SQ7B SQ7FPD SQ7HJZ SQ7IL SQ7LQJ SQ7MHN SQ7MPJ SQ7MZH SQ7NHT SQ7OTB SQ7VO SQ8GBG SQ8HNB SQ8IFG SQ8J SQ8JLN SQ8JLU SQ8JMC SQ8JMZ SQ8JX SQ8LEC SQ8LSB SQ8LSC SQ8MFB SQ8MHH SQ8MXC SQ8TWP SQ80UM SQ9ANS SQ9AOR SQ9BDN SQ9C SQ9CAQ SQ9CWO SQ9DJG SQ9DXN SQ9DXT SQ9E SQ9FCH SQ9FMU SQ9HQ SQ9HZM SQ9I SQ9IAU SQ9IDE SQ9IWT SQ9JKS SQ9JKW SQ9JYK SQ9LOJ SQ9LOM SQ9LR SQ9MEE SQ9MEI SQ9MZ SQ9NIN SQ9NKK SQ9NRY SQ9SX SQ9UM SQ9UM/6 ST2AR ST2KSS ST2M SU/HA3JB SU1KM SU1SK SU9HP SV0XAO SV0XBA SV0XBM/9 SV0XBN/9 SV1ACK SV1AER SV1AIN SV1AIP SV1AOW SV1AVD SV1BDO/3 SV1BFW SV1BGR SV1BJW SV1BJW/6 SV1BTK SV1BUU SV1CAL SV1CEI SV1CIV SV1CQN SV1DOI SV1DOJ SV1DPI SV1DPP SV1DVZ SV1EBV SV1ELF SV1EML SV1EMM SV1ENG SV1EQU SV1EX SV1GRD SV1GRE SV1GSX SV1GYG SV1HER SV1HKD SV1IW SV1JA SV1JFT SV1JG SV1JGX SV1JMF SV1JMO SV1JRR SV1JSN SV1JSQ SV1KU SV1LK SV1LV SV1MF SV1MO SV1NJA SV1NK SV1NPC SV1OH SV1OZ SV1PL SV1PS SV1QN SV1QT SV1RK SV1RP SV1RP/SV2 SV1/SV4LBA SV1UG SV1UT SV1VS SV2AVP SV2BFL SV2BFN SV2BOH SV2CLJ/8 SV2CUI SV2CWV SV2DCD SV2DFA SV2FLQ SV2FWV SV2GJV SV2GNC SV2HRT SV2HWR SV2HXV SV2JAO SV2KBB SV2KBS SV2YC SV3ALC SV3AQM SV3AQR SV3AWG SV3BEF SV3CYL SV3DCX SV3FUP SV3GKU SV3HHS SV3IBF SV3ICL SV3RF SV4AAQ SV4AFY SV4FFL SV4IMJ SV4IMJ/1 SV4LBA SV5BYR SV5DKL SV5RW SV7BAY SV7BOD SV7BOT SV7CUD SV7LNK SV7LOS SV7LPL SV7LWV/2 SV7NHN SV8CRI SV8CS SV8CYV SV8DOU SV8DTD SV8EIU SV8EUV SV8KOM SV8RX SV8UM SV9AHZ SV9BAI SV9CJO SV9COL SV9CVY SV9DJO SV9DRU SV9FBK SV9GPV SV9MBH SV9OFS SX0HQ SX1L SX2CM SX25DPI SX25JMO SX5P SX5R SX9JZ SY1RY SY2O SY2V SY9A SY9M SZ1A SZ1SV SZ1TEIA SZ3P SZ6P S5D S50A S50AL S50B S50C S50D S50E S50G S50HQ S50IPY S50J S50K S50L S50NV S50O S50PTUJ S50R S50U S50X S50XX S51A S51AD S51AE S51AU S51AY S51CAB S51CK S51D S51DI S51DV S51DX S51EC S51EP S51F S51FB S51HU S51IS S51IV S51J S51JQ S51K S51KM S51LU S51M S51MA S51ME S51MF S51NM S51NP S51NR S51NY S51NZ S51OE S51RE S51RJ S51RU S51SL S51ST S51SX S51TA S51TC S51TJ S51TN S51U S51UJ S51V S51W S51WO S51WX S51XA S51Z S51ZG S51ZZ S52AL S52AU S52AW S52BB S52BM S52BT S52C S52CC S52DD S52DK S52DX S52F S52FW S52GJ S52GO S52GP S52IC S52ID S52LW S52MZ S52OP S52OT S52P S52Q S52QM S52R S52RA S52ST S52TJ S52W S52WW S52X S52ZW S520A S53A S53AF S53AK S53APR S53AR S53AU S53BB S53BH S53CC S53DA S53DIJ S53DRA S53DX S53EA S53EJ S53EO S53F S53FO S53M S53MJ S53MM S53NW S53O S53P S53QD S53R S53RA S53S S53SL S53SO S53V S53W S53XX S54A S54AA S54AO S54E S54G S54K S54L S54O S54W S54X S55A S55DX S55M S55N S55O S55OO S55SL S55T S55VM S55Y S55Z S55ZZ S56A S56AA S56B S56C S56DX S56EPX S56G S56IHX S56M S56P S56PYZ S56SD S56U S56WPF S56WRT S56WYB S56X S56Y S56ZZZ S57A S57AC S57AD S57AJ S57AL S57AM S57AT S57AW S57AY S57C S57CV S57CW S57DX S57EA S57ESG S57ET S57F S57GM S57J S57JA S57JZ S57KV S57L S57LC S57LR S57M S57MCI S57MM S57MPU S57NAW S57NCP S57NEA S57NL S57NTR S57NW S57O S57ORG S57OWA S57PY S57Q S57RTH S57S S57SU S57T S57U S57UN S57UX S57VW S57WJ S57WO S57WW S57X S57XX S57YX S57Z S58A S58AA S58AB S58AL S58AW S58D S58DX S58FA S58G S58J S58M S58MU S58N S58O S58P S58Q S58R S58RU S58T S58WW S58X S59A S59AA S59ABC S59ACP S59AKR S59AR S59AV S59D S59DBC S59DDR S59DEM S59DJK S59DKR S59DR S59EIJ S59EKL S59H S59KB S59KM S59MA S59N S59O S59PC S59SV S59T S59V S59W S59X S59Z S59ZB S59ZZ S79K S79MI TA1AN TA1BM TA1CM TA1CQ TA1CX TA1C/2 TA1DX TA1ED TA1FA TA1HZ TA1KC TA1TR TA2AD TA2AL TA2DS TA2EY TA2KK TA2RC TA2VO TA2ZAF TA2ZF TA3AX TA3BN TA3D TA3DJ TA3GO TA3IW TA3J TA3KZ TA3X TA4AU TA4ED TA4ZA TA7AO TA7EB TA7KA TC1DX TC2010CCE TC3EC TC4X TC7HQ TC7KA TC7M TE1W TE2M TE8I TF1AM TF1CW TF1GW TF2JB TF2LL TF3AM TF3AO TF3CW TF3CY TF3DC TF3DX TF3G TF3GB TF3GC TF3HP TF3HQ TF3IG TF3IGN TF3IRA TF3KX TF3KX/1 TF3PPN TF3SA TF3SG TF3VS/P TF3W TF3Y TF3ZA TF4M TF4X TF8GX TF8SM TG0AA TG9ADQ TG9AJR TG9ANF TG9AXF TG9CT TG9IRP TG9/IV3IYH TG9NX TG9SM TI0RC TI2CC TI2CLX TI2GBY TI2JCY TI2KAC TI2KWN TI2WMP TI4CF TI5A TI5N TI5/NP3D TI5/WW4LL TI7DBS TI8II TI8M TK2Y TK5A TK5EP TK5IH TK5IX TK5MH TK5NJ TK7P TK9E TK9R TL0A TM0C TM0HQ TM0R TM0RDR TM0T TM0TAN TM1C TM1E TM1O TM1W TM2B TM2C TM2S TM2T TM2Y TM3R TM3T TM33E TM4D TM4P TM4Q TM4W TM5C TM5KD TM5W TM57M TM6CCA TM6M TM6X TM7C TM7F TM7M TM7T TM7XX TM77M TM8ARP TM9FL TM9R TN5SN TO2HI TO2T TO3R TO4D TO4X TO5A TO5T TO5X TO7A TO7ZG TR8CA TS9A TT8JT TU2CI TX1B TX3A TY1MS T27A T40C T42T T46A T46G T48K T6AG T6MB T70A T77C T77GO T77NC T77NM T77Q T8CW T88CI T88CJ T88DL T88OM UA0AAS UA0ABB UA0ABK UA0ACG UA0ADX UA0AGI UA0AKY UA0ANW UA0APV UA0AV UA0AYA UA0AZ UA0BA UA0CA UA0CB UA0CDC UA0CM UA0CMG UA0CNX UA0CO UA0CS UA0CW UA0DAM UA0DC UA0FAI UA0FDX UA0FM UA0FOO UA0IBX UA0IDZ UA0IT UA0JF UA0JM UA0LCZ UA0LD UA0LDW UA0LDY UA0LH UA0LKD UA0LMO UA0LNO UA0LS UA0LSK UA0MF UA0NL UA0OA UA0OD UA0OE UA0OO UA0QBR UA0QNV UA0SBQ UA0SC UA0SDX UA0SE UA0SIK/0 UA0SJ UA0SOX UA0SP UA0SR UA0SW UA0SWA UA0UK UA0UV UA0VF UA0WAA UA0WF UA0WL UA0WW UA0YAY UA0YM UA0ZAL UA0ZAM UA0ZC UA0ZEO UA0ZS UA0ZV UA1AAF UA1AAR UA1AAU UA1ABO UA1ACG UA1ADZ UA1AFT UA1AFZ UA1AIK/1 UA1AIR UA1AJ UA1AJW UA1AKE UA1AKJ UA1ANA UA1AQA UA1ASB UA1AUW UA1CAK UA1CE UA1CEC UA1CEG UA1CEI UA1CGF UA1CJX UA1CKC UA1CT UA1CUR UA1HY UA1CHJ UA1MU UA1NA UA1NFA UA1OAM UA1ODM UA1OEX UA1OIZ UA1OJL UA1OLM UA1OM UA1OMS UA1OMX UA1OMZ UA1OOX UA1ORK UA1ORL UA1ORT UA1QCE UA1QM UA1QV UA1RG UA1TAN UA1TGQ UA1WA UA1WBV UA1WCF UA1WDG UA1WDX UA1WGV UA1ZCT UA1ZCX UA1ZLN UA1ZZ UA2AB UA2CZ UA2FBQ UA2FCB UA2FCT UA2FDM UA2FEK UA2FF UA2FFW UA2FFX/1 UA2FGY UA2FHZ UA2FL UA2FT UA2FW UA2FX UA2FZ UA3AAB UA3AAP UA3AB UA3ABJ UA3ACL UA3ADN UA3AFJ UA3AGU UA3AGW UA3AHA UA3AIF UA3AIU UA3AKI UA3AKO UA3ALS UA3AMZ UA3AO UA3AP UA3AQB UA3ASZ UA3AWA UA3A/1 UA3BL UA3BM UA3BS UA3BX UA3BZ UA3CS UA3DA UA3DAM UA3DCE UA3DCI UA3DCM UA3DCU UA3DCW UA3DCZ UA3DDA UA3DFM UA3DFR UA3DFV UA3DGA UA3DJC UA3DJY UA3DK UA3DKN UA3DKT UA3DKT/3 UA3DLD UA3DOM UA3DPM UA3DQK UA3DSS UA3DTS UA3DTT UA3DUJ UA3DUS UA3DUZ UA3DVB UA3DW UA3EAA UA3EAY UA3ECJ UA3EDQ UA3EKG UA3EUW UA3EVG UA3FDX UA3FO UA3FX UA3GAF UA3GBI UA3GH UA3GIE UA3GM UA3GR UA3GTA UA3GTG UA3GX UA3GZ UA3HM UA3IAH UA3ICF UA3ICK UA3ICN UA3KA UA3KM UA3KW UA3LAR UA3LDU UA3LEO UA3LHL UA3LIA UA3LID UA3LIZ UA3LMR UA3LMR/3 UA3LNM UA3LQQ UA3LQX UA3LTQ UA3MEG UA3MEJ UA3MHG UA3MIF UA3MKT UA3MNB UA3MOC UA3MOM UA3MSS UA3O UA3OQ UA3PAB UA3PAY UA3PB UA3PCP UA3PM UA3PNO UA3PP UA3PPP UA3PT UA3PTW UA3PW UA3QAM UA3QBL UA3QCB UA3QDF UA3QFU UA3QFY UA3QG UA3QGT UA3QJJ UA3QLC UA3QLQ UA3QNS UA3QOS UA3QPA UA3QQ UA3QR UA3QU UA3QUO UA3QUP UA3QY UA3R UA3RAG UA3RAI UA3RAR UA3RAW UA3RC UA3RE UA3RLT UA3RN UA3RO UA3ROJ UA3ROQ UA3RTR UA3RW UA3SAO UA3SAQ UA3SKV UA3TAO UA3TCJ UA3TN UA3TT UA3TW UA3UAD UA3UBT UA3UCD UA3UDE UA3UHZ UA3UJP UA3UNP UA3UNR UA3URF UA3VFS UA3VJV UA3VLO UA3VQL UA3VVB UA3WHK UA3WT UA3XAC UA3XAG UA3XGM UA3XO UA3YAA UA3YCX UA3YCZ UA3YDH UA3YFL UA3YQL UA3YY UA4AAC UA4ACP UA4AGO UA4ALI UA4AMM UA4AMT UA4AN UA4ANZ UA4AQL UA4ASE UA4AY UA4AZ UA4CBJ UA4CC UA4CCG UA4CDL UA4CGR UA4CIF UA4CK UA4CM UA4CNJ UA4CNZ UA4CR UA4CTE UA4FBG UA4FCO UA4FDL UA4FEN UA4FER UA4FHW UA4FJ UA4FRJ UA4FRL UA4FTA UA4FUW UA4HAM UA4HAU UA4HBW UA4HEJ UA4HIP UA4HJ UA4HOX UA4HRZ UA4HUR UA4IW UA4LA UA4LBK UA4LFK UA4LCH UA4LL UA4LM UA4LRN UA4LS UA4LU UA4LU/3 UA4LW UA4LX UA4LY UA4M UA4NAL UA4NBA UA4NC UA4NCI UA4NF UA4NU UA4NW UA4NX UA4PAN UA4PAQ UA4PAY UA4PC UA4PCA UA4PCF UA4PCM UA4PEQ UA4PF UA4PI UA4PK UA4PL UA4PN UA4PNT UA4PNW UA4PO UA4PR UA4PT UA4PWR UA4QK UA4RF UA4RL UA4RW UA4RZ UA4SAW UA4SBZ UA4SJK UA4SKW UA4SN UA4UBW UA4UT UA4W UA4WAG UA4WAU UA4WAV UA4WAW UA4WCM UA4WI UA4WJ UA4WK UA4WKK UA4WKW UA4WL UA4WLI UA4WW UA4YA UA4YJJ UA6AA UA6AAY UA6ACA UA6AES UA6AF UA6AGE UA6AGK UA6AH UA6AIR UA6AIW UA6AK UA6AKD UA6ARR UA6AX UA6BFE UA6BJY UA6BJZ UA6BQ UA6BQD UA6BQN UA6BRD UA6BTV UA6CC UA6CE UA6CFD UA6CQ UA6CW UA6DX UA6EED UA6EHF UA6FF UA6FJ UA6FQ UA6FW UA6FZ UA6GE UA6GF UA6GG UA6GM UA6GO UA6GP UA6GR UA6GS UA6GU UA6GX UA6HFI UA6HHE UA6HLO UA6HLP UA6HMM UA6HO UA6HRX UA6HZ UA6IC UA6JCC UA6JD UA6JFG UA6JGG UA6JQ UA6LAH UA6LCJ UA6LCN UA6LDD UA6LF UA6LFQ UA6LJ UA6LJU UA6LLE UA6LN UA6LP UA6LPN UA6LPY UA6LTI UA6LUQ UA6LV UA6MA UA6MF UA6MM UA6NZ UA6PF/3 UA6UDV UA6UEK UA6XDX UA6YH UA6YI UA6YIU UA6YW UA7A UA7F UA7G UA8AA UA8AA/5 UA9AB UA9ACJ UA9ADW UA9AFS UA9AGX UA9AJ UA9AM UA9AOL UA9APA UA9AX UA9AYA UA9AZ UA9BA UA9BS UA9BX UA9BZ UA9CAX UA9CBM UA9CBO UA9CBR UA9CC UA9CCL UA9CCP UA9CDC UA9CDJ UA9CDV UA9CEP UA9CES UA9CEW UA9CGL UA9CIM UA9CLB UA9CM UA9CMQ UA9CR UA9CSA UA9CTT UA9CU UA9CUA UA9CVQ UA9DD UA9DR UA9FAR UA9FEG UA9FEX UA9FFV UA9FGJ UA9FGR UA9FKH UA9FM UA9FMT UA9FPQ UA9FQS UA9HN UA9HR UA9CHL UA9JDP UA9JFA UA9JFM/3 UA9JFR UA9JJG UA9JKM UA9JLL UA9JMB UA9KAA UA9KAA/9 UA9KB UA9KGG UA9KGH/1 UA9KL UA9KW UA9KZ UA9LAO UA9LBQ UA9LP UA9LR UA9LT UA9MA UA9MB UA9MC UA9MD UA9MDP UA9MFB UA9MGC UA9MHN UA9MI UA9MKF UA9MLT UA9MMZ UA9MP UA9MR UA9MRX/3 UA9MW UA9ND UA9NN UA9OA UA9OAI UA9OC UA9ODE UA9ODU UA9OG UA9OGF UA9OKM UA9OLO UA9OME UA9OMT UA9ONJ UA9ONJ/P UA9OQA UA9OQJ UA9OR UA9OSB UA9OV UA9OW UA9OZ UA9PC UA9PM UA9QA UA9QAE UA9QCP/3 UA9QCQ UA9QCZ UA9QF UA9QG UA9QM UA9QQ UA9QT UA9R UA9SAW UA9SC UA9SG UA9SIV UA9SJR UA9SP UA9SUX UA9TF UA9TQ UA9TT UA9TW UA9TZ UA9UBL UA9UCK UA9UDX UA9UFL UA9UHN UA9UNG UA9UOI UA9UPG UA9UR UA9URF UA9UX UA9UZZ UA9WBX UA9WIK UA9WOB UA9WOU UA9WS UA9WTF UA9WZ UA9XBJ UA9XF UA9XHT/9 UA9XK UA9XL UA9XLC UA9XLE UA9XMC UA9XS UA9XTN UA9XW UA9XX UA9XZ UA9YAB UA9YAD UA9YBA UA9YE UA9YF UA9YJI UA9YRS UA9YTN UA9ZZ UB0A UB8XAB UC6A UC7F UD3D UE4CAC/P UE80MC UE80MD UE9CAP UF3CWR UG3G UI4I UI9I UK7AZ UK7F UK8AR UK8DAN UK8DT UK8OM UK8UC UK8UWG UK9AA UN/RX9TL UN0C UN0L UN1F UN1HQ UN1L UN1O UN2C UN2E UN3GX UN3M UN4L UN4PD UN4PG UN5C UN5J UN5P UN6G UN6GD UN6GK UN6LN UN6P UN6T UN7AB UN7AM UN7BN UN7CAD UN7CM UN7CN UN7DA UN7ECA UN7EV UN7EW UN7EX UN7FDP UN7FW UN7GCE UN7CH UN7IT UN7JX UN7LAN UN7LZ UN7MMM UN7PBY UN7PL UN7PV UN7QF UN7RL UN7TDB UN7TO UN7TW UN7TX UN7ZL UN8CB UN8FM UN8GA UN8GU UN8GV UN8LF UN8LWF UN8P UN8PIM UN8PT UN9GD UN9L UN9LU UN9PQ UO1P UO5L UO6P UP0G UP0L UP1G UP2F UP2L UP4L UP6P UP7A UP8A UP9L UQ70F UR0CB UR0EE UR0EG UR0EV UR0HQ UR0IM UR0IQ UR0QX UR0VV UR0VX UR1HM UR1MI UR1MM UR1MN UR2ML UR2MM UR2MO UR2P UR2VA UR3AC UR3CKR UR3EO UR3GJ UR3GO UR3HC UR3IDD UR3IFD UR3IJI UR3IQO UR3LL UR3LPM UR3LTD UR3MM UR3PA UR3PDQ UR3PGW UR3QB UR3QCW UR3QM UR3QNV UR3QX UR3QXX UR3UT UR3UX UR4CU UR4CW UR4CWQ UR4EI UR4ES UR4EWT UR4EXF UR4EXS UR4EYA UR4GU UR4IGP UR4IOR UR4IXM UR4IZ UR4LCB UR4LRG UR4MBI UR4MCK UR4MH UR4MKY UR4MS UR4MSF UR4MTJ UR4PWC UR4PWL UR4QHB UR4QQF UR4QRH UR4QSG UR4QX UR4U UR4UC UR4UDI UR4VWA UR4WG UR4WWT UR4Z UR5AKU UR5AMK UR5AO UR5AS UR5AW UR5BO UR5CC UR5CSL UR5E UR5EAW UR5EDU UR5EFL UR5EIT UR5EJ UR5ELN UR5EPG UR5EPV UR5ETN UR5EU UR5EUY UR5FBM UR5FCK UR5FCM UR5FEL UR5FEO UR5FFD UR5FS UR5GAW/A UR5GBW UR5HAC UR5IF UR5IFB UR5IFX UR5IHC UR5IHQ UR5II UR5IKN UR5IOK UR5IRM UR5KDX UR5KED UR5LAK UR5LAM UR5LCV UR5LCZ UR5LF UR5LJD UR5LO UR5LY UR5MA UR5MBA UR5MBB UR5MD UR5MF UR5MID UR5MM UR5MP UR5MQS UR5MW UR5MZ UR5NF UR5PG UR5QA UR5QU UR5QUM UR5RMD UR5RP UR5RZ UR5SFC UR5TGK UR5TW UR5UBD UR5UBR UR5UC UR5UDX UR5UJ UR5UO UR5UZ UR5VR UR5WCA UR5WCQ UR5WD UR5WDQ UR5WHQ UR5WHT UR5WMM UR5WX UR5XMM UR5ZMK UR5ZSU UR5ZTH UR5ZVJ UR5ZVP UR6AJ UR6EO UR6F UR6GWZ UR6HCF UR6IDX UR6IJ UR6IM UR6IMF UR6IS UR6LAF UR6MX UR6QA UR6QR UR6QS UR7CQ UR7CT UR7EC UR7EM UR7EP UR7EQ UR7EU UR7EW UR7EY UR7EZ UR7GG UR7GO UR7GW UR7HA UR7HCX UR7IKV UR7INK UR7IQJ UR7M UR7MA UR7MG UR7MZ UR7QC UR7QL UR7QM UR7QU UR7R UR7TZ UR7UC UR7UM UR7UT UR7VA UR7ZO UR8EQ UR8GM UR8GX UR8IDX UR8IF UR8IW UR8LV UR8MH UR8QQ UR8QR UR8RF UR9MB UR9MC UR9QQ US0CD US0GA US0GH US0HZ US0IJ US0IW US0KS US0KW US0LA US0LO US0LW US0MF US0MM US0MS US0QG US0SY US0TA US0VA US0YA US0YW US0ZK US0ZZ US1GBH US1IV US1IW US1MM US1PM US1US US1UX US1VS US2IHS US2IR US2IW US2IZ US2LX US2MW US2WU US2YW US3IG US3IMZ US3IP US3IRX US3ITA US3IVN US3IZ US3LX US3QQ US3QW US3WD US4AS US4EG US4EX US4IDY US4IPC US4IPQ US4IQ US4IQS US4IXT US4IYM US4L US4LGW US4LS US4MW US5CB US5CCO US5D US5DA US5E US5EEK US5ELM US5EVJ US5FA US5I US5IIM US5IND US5IQ US5ISV US5LAE US5MPO US5MUW US5NGH US5QRW US5UO US5VX US5WAM US5WCP US5WE US5XD US5ZCW US6CQ US6EX US6IKF US6IKV US6IPD US6IQ US6IT US7AF US7IA US7IAU US7IB US7IGF US7IID US7IM US7IQZ US7IUF US7IVW US7IY US7LM US7MM US7QQ US7UX US7VL US7WW US8IB US8IBS US8ICA US8ICM US8IDX US8IGL US8IM US8MX US8QQ US8UA US9PA UT/PA3BUD UT/RN3DAW UT0AZA UT0CK UT0EA UT0EL UT0EO UT0ET UT0EZ UT0IG UT0IL UT0IV UT0IW UT0L UT0MF UT0MG UT0NT UT0RM UT0U UT0VE UT1AA UT1AB UT1AN UT1CC UT1CZ UT1DX UT1DZ UT1EA UT1HT UT1HZZ UT1IA UT1IF UT1IH UT1IK UT1IM UT1IR UT1ML UT1PA UT1PO UT1QL UT1S UT1UL UT1US UT1UW UT1UY UT1XX UT2AA UT2AB UT2AU UT2FA UT2FF/A UT2GW UT2HM UT2ID UT2IF UT2II UT2IO UT2IU UT2IV UT2IW UT2IY UT2IZ UT2LF UT2LU UT2LY UT2M UT2PL UT2PX UT2QQ UT2QT UT2RZ UT2UB UT2UN UT2UU UT2UZ UT2VU UT2XX UT3EG UT3EK UT3EV UT3EW UT3FM UT3HWW UT3I UT3IB UT3IJ UT3IK UT3IM UT3IW UT3IZ UT3L UT3MA UT3N UT3NA UT3NF UT3QN UT3QT UT3QU UT3RN UT3RS UT3SA UT3SO UT3UA UT3UV UT3UX UT3UY UT3UZ UT3WJ UT3WW UT3WX UT4CE UT4EK UT4EN UT4EO UT4EU UT4FJ UT4FM UT4HZ UT4IZ UT4MF UT4MW UT4MWA UT4NR UT4NW UT4NX UT4NY UT4NZ UT4PZ UT4Q UT4QV UT4TA UT4UB UT4UBY UT4UF UT4UH UT4UO UT4UP UT4UQ UT4UT UT4UW UT4VV UT4VW UT4WA UT4WT UT4XD UT4XU UT4ZG UT4ZX UT5A UT5AT UT5CB UT5CL UT5CY UT5DJ UT5DL UT5EA UT5ECZ UT5EL UT5EMU UT5EO UT5EPP UT5ERP UT5ERV UT5EUQ UT5HCW UT5HX UT5IA UT5ID UT5IF UT5IH UT5IM UT5IZ UT5IZO UT5JAJ UT5JCE UT5KL UT5KO UT5KTT UT5LO UT5MB UT5NWA UT5PH UT5PI UT5PQ UT5PW UT5PY UT5SA UT5SI UT5UA UT5UCP UT5UFT UT5UGR UT5UGS UT5UGW UT5UIA UT5UJ UT5UKA UT5UKY UT5ULB UT5ULX UT5UML UT5UMY UT5UN UT5UNZ UT5UPN UT5UQN UT5UQV UT5URW UT5US UT5UT UT5UUV UT5UY UT5VX UT5XM UT5YY UT5ZA UT5ZY UT6EC UT6EE UT6IS UT6LX UT7AXA UT7CL UT7CR UT7DK UT7E UT7EF UT7EG UT7EJ UT7EM UT7EN UT7EV UT7EY UT7EZ UT7EZZ UT7FO UT7FP UT7HM UT7CH UT7I UT7IA UT7IL UT7L UT7LA UT7LM UT7LW UT7MA UT7MC UT7MD UT7MR UT7MW UT7ND UT7NF UT7NT UT7NW UT7NY UT7QB UT7QF UT7QL UT7TA UT7U UT7UA UT7UJ UT7UT UT7UV UT7UW UT7UZ UT7VR UT7WZ UT7XX UT7Y UT7ZB UT8AL UT8AS UT8EL UT8EU UT8IA UT8IM UT8IO UT8IT UT8IV UT8L UT8LN UT8LO UT8NT UT8QQ UT8RN UT8SQ UT9EL UT9FJ UT9IR UT9NA UU0A UU0JC UU0JM UU1AZ UU1CC UU1CW UU1DX UU1JE UU1JO UU1K UU2AA UU2CW UU2J UU2JA UU2JG UU2JQ UU3JC UU3JX UU3W UU4J UU4JC UU4JDD UU4JMG UU4JO UU4JQE UU4JWA UU4JWC UU4JXI UU4JXM UU4JYM UU5A UU5AB UU5AF UU5AI UU5JBO UU5JFP UU5JS UU5JZ UU5JZA UU5WW UU6JF UU6JJ UU7J UU7JD UU7JF UU7JM UU7JN UU7JR UU7JX UU8JK UU8JM UU8JV UU8JY UU9CI UU9CW UU9JK UU9JQ UU9JR UV1GW UV2L UV3QF UV3RT UV5EEO UV5ERY UV5QAV UV5QQ UV5QR UV5U UV7QA UV8M UW0K UW0L UW1G UW1GZ UW1I UW1M UW1WU UW2F UW2I UW2M UW2N UW2Q UW2ZM UW3E UW3I UW3M UW3U UW4E UW4SU UW5M UW5Q UW5SW UW5U UW5W UW5ZM UW7CF UW7CN UW7F UW7LL UW7M UW7RV UW8I UW8M UW8SM UX0BB UX0FF UX0FY UX0HO UX0IK UX0IY UX0LL UX0LL/A UX0SX UX0UN UX0UW UX0ZL UX1AA UX1BZ UX1CW UX1HW UX1IB UX1IL UX1IM UX1MH UX1QQ UX1UF UX1UX UX2HB UX2IJ UX2IO UX2IQ UX2KA UX2MF UX2MK UX2QA UX2SB UX2X UX3HA UX3HX UX3IA UX3IO UX3IT UX3IW UX3MF UX3MX UX3MZ UX3UN UX3ZW UX35A UX4E UX4FC UX4U UX4UM UX5D UX5I UX5IO UX5IZ UX5MZ UX5NQ UX5OF UX5TQ UX5UO UX5VK UX6F UX6IA UX6IB UX6IR UX6VA UX7CQ UX7E UX7FC UX7FD UX7IB UX7IW UX7LL UX7MA UX7MM UX7MR UX7MX UX7QD UX7QJ UX7QV UX7U UX7UN UX7VA UX8IR UX8IW UX8IX UX8IXX UX8ML UX8MM UX8ZA UY0CA UY0IR UY0IX UY0MM UY0UY/P UY0ZA UY0ZG UY1HY UY1LS UY1U UY2IF UY2IG UY2IJ UY2IZ UY2LW UY2MQ UY2RA UY2RZ UY2UA UY2UQ UY2UZ UY2VM UY2ZA UY2ZZ UY3AW UY3CC UY3LA UY3MW UY3QT UY3QW UY4F UY4WWA UY5AA UY5AB UY5AO UY5AP UY5AR UY5AX UY5BA UY5BC UY5BO UY5BT UY5EI UY5HF UY5LM UY5MB UY5ME UY5MR UY5QJ UY5QO UY5QZ UY5TE UY5TF UY5UO UY5UV UY5VA UY5YA UY5YB UY5ZI UY5ZZ UY5ZZ/A UY6IM UY7C UY7IO UY7IQ UY7LM UY7LU UY7M UY7MM UY7QF UY7QN UY8IF UY8LM UY9IF UY9IM UY9IX UZ0U UZ1G UZ1H UZ1I UZ1RR UZ2FWB UZ2HZ UZ2I UZ2M UZ4E UZ4L UZ5I UZ5Q UZ5U UZ5UA UZ5ZV UZ7HO UZ7M UZ7U UZ8I UZ8L U1BA U1BB U1BD U3DI U4MIR U5EX U5MZ VA1CC VA1CHP VA1MM VA1SEA VA1TM VA1XBN VA2AAE VA2AM VA2AN VA2AY VA2BK VA2BN VA2BS VA2CT VA2EW VA2GU VA2KK VA2KT VA2LC VA2LGQ VA2LM VA2OP VA2PC VA2PR VA2PZ VA2RF VA2RIO VA2RM VA2RP VA2SG VA2TG VA2UP VA2UTC VA2WDQ VA2WT VA2ZA VA2ZIG VA2ZZ VA3ADW VA3AR VA3ARK VA3ARS VA3ARW VA3ATT VA3BD VA3BOH VA3BP VA3CCO VA3CDX VA3CFK VA3CWT VA3DF VA3DN VA3DX VA3DZ VA3EC VA3ECO VA3EE VA3FN VA3FP VA3FST VA3GD VA3GFD VA3GGF VA3GKO VA3GL VA3GML VA3GUY VA3GVS VA3HIE VA3HJ VA3HP VA3HUN VA3IBL VA3IC VA3ICW VA3IX VA3JFF/W1 VA3JWR VA3KA VA3KAI VA3KGS VA3KSF VA3MJR VA3NA VA3NN VA3NPL VA3NQ VA3NR VA3OBR VA3OC VA3OGF VA3OR VA3OX VA3PC VA3PEN VA3PL VA3QV VA3RJ VA3RKM VA3RKO VA3RNJ VA3SB VA3SK VA3STG VA3SWG VA3SX VA3THC VA3TPS VA3TPV VA3TSG VA3TTU VA3TVW VA3VF VA3VU VA3VW VA3VY VA3WL VA3WLD VA3WPV VA3WR VA3WU VA3XH VA3XQ VA3YOJ VA3YP VA3YT VA3ZAK VA3ZTZ VA3ZWT VA4GD VA4HZ VA5DX VA5LF VA5RI VA5SAM VA6AM VA6APB VA6AW VA6BSH VA6EYE VA6FZ VA6IK VA6MM VA6NJK VA6OZ VA6RAR VA6SUM VA6UK VA6WW VA6XDX VA6ZZZ VA7AD VA7ALK VA7AM VA7APK VA7AQ VA7BEC VA7BS VA7CAB VA7CE VA7CPC VA7CRO VA7CRZ VA7DER VA7DIN VA7DM VA7DX VA7DXC VA7DZ VA7FC VA7GAP VA7GEM VA7GG VA7HZ VA7IR VA7JC VA7JW VA7KO VA7MEV VA7MJR VA7MM VA7MT VA7ND VA7OA VA7PX VA7RME VA7RMM VA7RN VA7RR VA7RY VA7ST VA7SW VA7TF VA7TT VA7VI VA7VJ VA7VV VA7VZZ VA7XA VA7XB VA7XX VA7ZOO VC2A VC2E VC2W VC2Z VC3A VC3COPP VC3D VC3M VC3O VC3X VC3Y VC6A VC6R VC6T VC6X VC7C VER20101122 VE1AHX VE1AI VE1AL VE1AOE VE1AWC VE1AYY VE1AZV VE1BB VE1BVD VE1BZI VE1CJB VE1CTW VE1CZ VE1DHD VE1DI VE1DT VE1DX VE1EP VE1FO/9 VE1GPL VE1GW VE1CHW VE1IM VE1JF VE1JS VE1KF VE1KY VE1/K3OMI VE1MC VE1MW VE1NB VE1OP VE1QA VE1QO VE1QY VE1RAR VE1RGB VE1RHP VE1RSM VE1SD VE1SK VE1SKY VE1SQ VE1TK VE1TRI VE1TT VE1UT VE1UY VE1VOX VE1WT VE1XZ VE1YVN VE1YX VE1ZA VE1ZAC VE1ZD VE1ZJ VE1ZZ VE2ACP VE2AEJ VE2AHS VE2ARR VE2AWN VE2AWR VE2AWW VE2AXO VE2BDR VE2BCH VE2BQB VE2BR VE2BWL VE2CAQ VE2DC VE2DJC VE2DLC VE2DWA VE2DX VE2DXQ VE2DXY VE2EBL VE2EH VE2EKA VE2EWQ VE2EZD VE2FET VE2FFE VE2FK VE2FKZ VE2FXL VE2GHI VE2GK VE2GLA VE2GSO VE2HAY VE2HIT VE2HLS VE2IM VE2JCW VE2JD VE2JMK VE2KF VE2KH VE2KOT VE2LH VE2LQ VE2LX VE2MAB VE2MRN VE2NGH VE2OJ VE2OPB VE2OTW VE2OWL VE2PEP VE2PZ VE2QAU VE2QRA VE2QV VE2QV/3 VE2QY VE2RA VE2RO VE2SB VE2SHF VE2TBK VE2TG VE2TH VE2TKH VE2TZT VE2UMS VE2VIG VE2VJP VE2WKO VE2XAA VE2XAA/2 VE2YY VE2ZV VE2ZVZ VE3AAQ VE3ABG VE3ACA VE3AD VE3ADQ VE3AGC VE3AJ VE3AP VE3AP/2 VE3AR VE3ARF VE3AT VE3AWE VE3AXC VE3AZA VE3BDN VE3BHZ VE3BK VE3BLB VE3BNO VE3BVA VE3BW VE3BXI VE3BY VE3C VE3CAK VE3CFK VE3CG VE3CGC VE3CGR VE3CKG VE3CLQ VE3CM VE3CNX VE3CPK VE3CPP VE3CR VE3CRG VE3CRO VE3CRU VE3CSJ VE3CSK VE3CTO VE3CUI VE3CV VE3CW VE3CWO VE3CWP VE3CWU VE3CX VE3CXD VE3CXT VE3CZ VE3DBP VE3DC VE3DDG VE3DJX VE3DO VE3DPZ VE3DRZ VE3DUS VE3DV VE3DZ VE3EBN VE3EDY VE3EFC VE3EGC VE3EJ VE3EK VE3EL VE3ELL VE3EN VE3ENG VE3EP VE3EWW VE3EXW VE3EXY VE3EY VE3EZP VE3FAS VE3FDT VE3FDX/W4 VE3FGU VE3FH VE3FJ VE3FJB VE3FLT VE3FRJ VE3FRX VE3FSJ VE3FST VE3FTM VE3FU VE3FWF VE3FZ VE3GB VE3GFN VE3GJA VE3GLA VE3GLO VE3GLU VE3GN VE3GNB VE3GNF VE3GNO VE3GNX VE3GO VE3GPH VE3GPM VE3GSI VE3GYL VE3GZD VE3HG VE3HLS VE3HOL VE3HUR VE3HX VE3CH VE3IAE VE3ICV VE3IDT VE3IFS/W2 VE3IGJ VE3II VE3IIE VE3IKT VE3ILG VE3IN VE3IPS VE3IQ VE3ISO VE3IZZ VE3JAQ VE3JAS VE3JDF VE3JDF/W4 VE3JI VE3JM VE3JOC VE3JSQ VE3KAO VE3KF VE3KI VE3KKB VE3KKQ VE3KL VE3KP VE3KPP VE3KQN VE3KWK VE3KZ VE3LC VE3LFJ VE3LFN VE3LKV VE3LLL VE3LR VE3LX VE3LXL VE3LXV VE3MA VE3MCA VE3MCF VE3MDX VE3MGY VE3MIA VE3MIH VE3MIS VE3MM VE3MMB VE3MMQ VE3MNE VE3MO VE3MR VE3MS VE3MV VE3MWX VE3MXJ VE3NAE VE3NB VE3NCQ VE3NE VE3NEP VE3NLH VE3NLS VE3NOO VE3NPO VE3NQM VE3NRG VE3NYX VE3NYZ VE3NZ VE3OBU VE3OI VE3OIL VE3OM VE3OQM VE3OSC VE3OSZ VE3OU VE3OWO VE3OX VE3OZO VE3PA VE3PMA VE3PN VE3PST VE3PTC VE3PUX VE3PYJ VE3QAA VE3QBH VE3QDR VE3QN VE3QO VE3QRA VE3QT VE3RCN VE3RER VE3RHD VE3RIA VE3RM VE3RRH VE3RSA VE3RSA/W1 VE3RTU VE3RWA VE3RZ VE3SAO VE3SAQ VE3SCP VE3SHA VE3SIQ VE3SMA VE3SMN VE3SQZ VE3SS VE3SSR VE3SSV VE3SUA VE3SWA VE3TA VE3TAZ VE3TC VE3TEI VE3TES VE3THX VE3TLT VE3TMG VE3TMT VE3TU VE3TW VE3TWM VE3UEK VE3UK VE3UN VE3UTA VE3UTT VE3UUH VE3UWC VE3UZ VE3VA VE3VAW VE3VC VE3VGI VE3VID VE3VJ VE3VJC VE3VMJ VE3VO VE3VOC VE3VOE VE3VV VE3WBJ VE3WBR VE3WDM VE3WE VE3WEJ VE3WF VE3WIB VE3WIG VE3WLD VE3WZ VE3XAT VE3XB VE3XBR VE3XBX VE3XC VE3XD VE3XL VE3XN VE3YAA VE3YEN VE3YF VE3YJ VE3YN VE3YRI VE3YV VE3YXO VE3YYK VE3ZI VE3ZIN VE3ZRB VE3ZT VE3ZZ VE4AEO VE4AHZ VE4AMU VE4BAE VE4BDF VE4BG VE4DR VE4DXX VE4EA VE4EAR VE4GF VE4GR VE4GV VE4IHF VE4JCJ VE4ME/W4 VE4MG VE4MT VE4PN VE4RA VE4TV VE4XT VE4YU VE5AAD VE5BCS VE5CPU VE5DLM VE5FN VE5FX VE5KC VE5MX VE5PM VE5PV VE5RI VE5SF VE5SWL VE5TLW VE5UA VE5UF VE5UO VE5WI VE5ZC VE5ZX VE6ACO VE6ADS VE6AID VE6AML VE6AO VE6APL VE6AX VE6AXA VE6BBP VE6BF VE6BI VE6BIR VE6BIR/3 VE6BP VE6CMV VE6CNU VE6DC VE6DDD VE6DJT VE6DKC VE6DO VE6DXX VE6ECK VE6EPK VE6EX VE6EXE VE6EZ VE6EZ/7 VE6FI VE6FN VE6FT VE6GEL VE6GGF VE6GJ VE6IM VE6IV VE6JAZ VE6JC VE6JJO VE6JY VE6KC VE6KD VE6KK VE6LB VE6LDX VE6LE VE6MAA VE6MO VE6MRV VE6MV VE6NA VE6NC VE6NL VE6OH VE6PG VE6PL VE6PR VE6RAC VE6RRD VE6RST VE6SF VE6SH VE6SKY VE6SQ VE6STP VE6SUM VE6SV VE6SZR VE6TA VE6TC VE6TCK VE6TD VE6TL VE6TN VE6TR VE6US VE6VK VE6VS VE6WDE VE6WQ VE6WTF VE6WZ VE6YC VE6YV VE6ZC VE7ABC VE7AF VE7AFZ VE7AHA VE7AHT VE7AIJ VE7APF VE7AV VE7AX VE7AXU VE7BC VE7BDO VE7BGP VE7BQO VE7BSM VE7BV VE7BZR VE7CA VE7CC VE7CF VE7CFZ VE7CMD VE7CML VE7CNW VE7CT VE7CUS VE7CV VE7CYU VE7DD VE7DH VE7DHJ VE7DP VE7DX VE7DXH VE7EPP VE7FCO VE7FE VE7FEI VE7FI VE7FO VE7GBK VE7GL VE7GPZ VE7GTC VE7HA VE7HBS VE7HJ VE7HL VE7HPS VE7IAF VE7IG VE7IJJ VE7IN VE7IO VE7IO/7 VE7JKZ VE7JT VE7JZ VE7KB VE7KDU VE7KS VE7KWA VE7MID VE7MR VE7NA VE7NF VE7NGR VE7NI VE7NS VE7NSR VE7NX VE7ODS VE7OGO VE7ON VE7PTT VE7QC VE7RSV VE7SA VE7SAG VE7SCC VE7SK VE7SNC VE7SQ VE7SV VE7SZ VE7TG VE7TGV VE7TK VE7TUG VE7UF VE7UQ VE7VF VE7VR VE7VV VE7VZ VE7WEB VE7WU VE7WWW VE7WY VE7XF VE7XT VE7XV VE7YJ VE7YL VE7YU VE7ZR VE7ZTW VE7ZZF VE8DAV VE8DW VE8EV VE8GER VE8NSD VE9AA VE9CEH VE9CX VE9DX VE9EZ VE9GLF VE9GU VE9HC VE9HF VE9IS VE9JT VE9KAR VE9ML VE9MOE VE9MY VE9NC VE9OX VE9QRP VE9XA VE9XX VE9ZX VK1CC VK1MA VK1MJ VK1OO VK1SV VK2ABK VK2ACC VK2AET VK2APG VK2AR VK2AWA VK2AWD VK2AYD VK2BCQ VK2BD VK2BJ VK2BNG VK2BPL VK2CA VK2CCC VK2DAG VK2DV VK2DX VK2FAJA VK2FAJM VK2FTZ VK2FULL VK2GGC VK2GR VK2GWK VK2HBG VK2HJW VK2HOT VK2HV VK2IA VK2IM VK2IO VK2IR VK2JZD VK2KDP VK2KHV VK2KM VK2KPP VK2LAW VK2MDY VK2MWG VK2NA VK2NCD VK2NOS VK2NRB VK2NSS VK2NU VK2OT VK2PBC VK2PDX VK2PN VK2SF VK2UZ VK2WAY VK2WGW VK2WTT VK2XF VK2XN VK2ZF VK2ZQ VK3AMA VK3AMK VK3AMZ VK3AVV VK3CKL VK3DOG VK3DWS VK3EGN VK3EW VK3FASW VK3FGRC VK3FM VK3FRC VK3FT VK3FY VK3FZ VK3GDM VK3GK VK3HE VK3HJ VK3HJA VK3HR VK3IO VK3JHA VK3JMB VK3KE VK3LB VK3LK VK3LM VK3MBW VK3MDX VK3MO VK3NDX VK3NI VK3NRW VK3PA VK3PTO VK3QI VK3TC VK3TDX VK3TZ VK3VBC VK3VIN VK3VT VK3VTH VK3WF VK3YB VK3ZJ VK4AAR VK4AAV VK4AN VK4ATH VK4BL VK4BU VK4BUI VK4CAG VK4CMV VK4CQ VK4CZ VK4DX VK4DZ VK4EJ VK4EMM VK4FI VK4FJ VK4FNQ VK4FRAJ VK4GH VK4HAM VK4HDX VK4HFO VK4HG VK4HH VK4IU VK4IZ VK4JT VK4KAD VK4KKD VK4KW VK4KX VK4LDX VK4LMB VK4MA VK4MIT VK4NH VK4/NL8F VK4OL VK4OQ VK4PN VK4QS VK4SN VK4SS VK4TBW VK4TI VK4TJF VK4TT VK4UC VK4VDX VK4WI VK4WR VK4XA VK4XES VK4XY VK4YN VK4ZD VK4ZJR VK5BC VK5FPAS VK5HRT VK5LA VK5MAV VK5NPR VK5PO VK5SW VK5ZK VK6AA VK6AHR VK6AJ VK6ANC VK6APK VK6APZ VK6ARW VK6BN VK6DU VK6DXI VK6EH VK6FDX VK6HD VK6HG VK6HZ VK6IR VK6JJ VK6JX VK6KJ VK6LC VK6LK VK6LW VK6NC VK6RO VK6RZ VK6VR VK6VZ VK6WR VK6YS VK6ZN/5 VK7AC VK7ACG VK7AD VK7FGGT VK7FWAY VK7GK VK7GN VK7GZ VK7ROY VK7SM VK7WI VK7XX VK7ZE VK7ZGK VK8AA VK8AV VK8GMT/VK2 VK8NSB VK8PDX VK9AA VK9LA VK9XW VO1AA VO1ABN VO1BB VO1BBN VO1BE VO1BQ VO1BZM VO1DD VO1DJT VO1FD VO1FU VO1FZ VO1GO VO1GXG VO1HE VO1HP VO1KVT VO1MP VO1NM VO1OR VO1SA VO1TA VO1TK VO1TTY VO1TX VO1UL VO1XT VO2FF VO2NS VO2RAC VO3A VP2E VP2EC VP2ETN VP2MDG VP2MNK VP2MPR VP2VVA VP5CM VP5DF VP5DX VP5H VP5I VP5JM VP5T VP5W VP50V VP59V VP8BKF VP8DIF VP8DMH VP8KF VP8NO VP9/AA4V VP9AD VP9BO VP9HW VP9I VP9ID VP9/K3TRM VP9/N1SNB VP9/N1SV VP9/W6PH VP9400I VQ5B VQ5V VQ9JC VQ9LA VQ9RD VQ9X VQ90JC VQ99JC VR2AAW VR2C VR2CB VR2CD VR2DXA VR2HF VR2HK VR2IZ VR2JK VR2NN VR2PW VR2PX VR2UW VR2VIY VR2XLN VR2XMT VR2YQU VR2YYW VR2ZQZ/P VR2ZRE VR2009EAG VU2ABS VU2BGS VU2CDP VU2DK VU2HFR VU2JOS VU2LBW VU2LYX VU2NKS VU2ORO VU2PAI VU2PEP VU2PTT VU2RBI VU2RCT VU2RMS VU2SWS VU2TS VU2UR VU3DJQ VU3USJ VX3AP VX3CW VX3CX VX3FH VX3JAQ VX3OI VX3RTU VX3RZ VX3S VX3XN VX6AO VX6AX VX6BF VX6WQ VX7BC VX7CC VX7ZD VX9HF VX9NC VY0HL VY0JA VY0PW VY1CQ VY1EI VY1WUD VY2GM VY2LI VY2MP VY2MT VY2OM VY2RAC VY2RG VY2SS VY2TT VY2ZM V21MJ V25Y V25Z V26B V26E V26F V26G V26K V26M V31BD V31CW V31GW V31MH V31MU V31MW V31PT V31RI V31RR V31TB V31TP V31WA V31WO V31WV V31WVK V31YN V44KAI V47JA V47NT V48M V49A V51AS V51GB V51LZ V51Q V51W V51YJ V55X V6B V63CJB V63MY V73NS V8AQM V84CQ V85SS V85TX V85ZX WA0AAM WA0AAR WA0ACF WA0ASM WA0AUX WA0AVL WA0BJR WA0BNX WA0BZA WA0CED WA0CTZ WA0DDC WA0DEL WA0DKC WA0DYJ WA0EBZ WA0F WA0FAA WA0FQK WA0GNC WA0GUD WA0HHX WA0IAF WA0IIH WA0JCO WA0JH WA0JTL WA0KAQ WA0KDS WA0KLC WA0KNP WA0L WA0LJM WA0LPV WA0LRE WA0LXV WA0MHJ WA0N WA0NLK WA0OFM WA0OQA WA0OTO WA0PNB WA0QVC WA0RAD WA0RBW WA0RSX WA0SKN WA0SXV WA0USA WA0VPJ WA0WDV WA0WNF WA0WOV WA0WWW WA0YVH WA1APX/8 WA1AR WA1AWJ WA1BXY WA1CQF WA1DBR WA1DD WA1DJK WA1DRQ WA1EAJ WA1EHK WA1EOX WA1ESO WA1FCN WA1FOK WA1FVJ WA1FXK WA1GON WA1GOS WA1GS WA1HFF WA1IIE WA1IVN WA1JAE WA1JG WA1JMP WA1JWJ WA1KBE WA1KKM WA1LMC WA1LWS WA1MXT WA1NGH WA1NRQ WA1NTA WA1OLV WA1OUI WA1PMA WA1PMA/4 WA1QDP WA1QXR WA1QYM WA1RF WA1RCH WA1RUS WA1SEO WA1SKQ WA1SYH WA1T WA1TAC WA1TDQ WA1TTL WA1T/3 WA1UJU WA1VIL WA1VQY WA1YZN WA1Z WA1ZHM WA1ZJE WA1ZYX WA2AAW WA2ALY WA2AOG WA2ART WA2ASQ WA2ASQ/4 WA2AXD WA2BCK WA2BJN WA2BKN WA2BMH WA2BSW WA2C WA2CAM WA2CG WA2CLP WA2DKJ WA2DX WA2EAJ WA2EGT WA2EHL WA2EKW WA2EMF WA2EQF WA2ETU WA2EXZ WA2FAX WA2FBN WA2FGK WA2GBF WA2GMT WA2GSX WA2HJB WA2HMM WA2HOM WA2HYO WA2HZO WA2HZR WA2IIE WA2JJQ WA2JJV WA2JLW WA2JQK WA2JVI WA2KBZ WA2KFS WA2KHO WA2LOT WA2LTH WA2LUY WA2LXE WA2MAV WA2MBP WA2MCR WA2MIS WA2MKM WA2NBG WA2NHA WA2NLL WA2NYY WA2OAX WA2OCG WA2OOB WA2OQM WA2OVJ WA2PCS WA2PJZ WA2PNI WA2PYX WA2QBJ WA2QQF WA2RAS WA2RKO WA2RNY WA2RSX WA2RXS WA2RY WA2RZJ WA2SCB WA2SEI WA2SON WA2TDC WA2TMC WA2TPU WA2TVS WA2UAH WA2UBK WA2UNP WA2UPK WA2USA WA2VCQ WA2VJL WA2VMO WA2VQF WA2VQV WA2VQW WA2VUN WA2VUY WA2VYA WA2VZQ WA2WGF WA2WMR WA2YSJ WA2ZOU WA2ZSK WA3A WA3AAN WA3AER WA3AFS WA3C WA3CUC WA3DMT WA3EKL WA3ELQ WA3EOQ WA3EQJ WA3ERQ WA3ETD WA3EYL WA3EZN WA3FRP WA3G WA3GFB WA3GFM WA3GGM WA3GNW WA3GYW WA3HAE WA3HDQ WA3HJR WA3HOL WA3IDQ WA3IIA WA3IUO WA3IVV WA3JAT WA3JJT WA3JMV WA3KCP WA3KVN WA3KYY WA3LCO WA3LKT WA3LTJ WA3MDY WA3MKB WA3MKC WA3N WA3NHZ WA3OFC WA3OFR WA3PAK WA3PBL WA3QMJ WA3QWT WA3RCA WA3RGH WA3RHW WA3RNC WA3RP WA3SES WA3SKQ WA3SLN WA3SWJ WA3SXX WA3TRE WA3UCR WA3UTC WA3UYJ WA3V WA3WOM WA3YGQ WA3YMM WA3YQK WA3YUR WA3ZIC WA3ZII WA3ZMH WA3ZTR WA3ZWC WA4AN WA4APB WA4APG WA4ASJ WA4AU WA4AUL WA4BUE WA4BVO WA4CAX WA4CEM WA4CGF WA4CM WA4CQG WA4CXI WA4DCL WA4DOU WA4DRM WA4DT WA4DX WA4ED WA4EEZ WA4EMU WA4ERU WA4EUL WA4FFW WA4FMA WA4FXT WA4FXX WA4GGK WA4GIF WA4GLH WA4GP WA4GQG WA4GZK WA4HBK WA4IAX WA4IIF WA4III WA4JA WA4JQS WA4JS WA4JUK WA4KPU WA4KSO WA4KXX WA4KYI WA4LKD WA4LOX WA4LR WA4MAE WA4MDP WA4MLD WA4MYO WA4NEL WA4NIV WA4NOT WA4NUF WA4NVE WA4OSD WA4OTD WA4PAM WA4PGM WA4PXP WA4RG WA4RTE WA4SM WA4SQM WA4SSG WA4STO WA4TII WA4UIH WA4VKW WA4VMC WA4VVO WA4WKL WA4WLI WA4WQK WA4WTG WA4YBP WA4YG WA4YJB WA4YYM WA4ZNY WA4ZSQ WA4ZXV WA5ABR WA5AR WA5AU WA5BDU WA5BKN WA5FWC WA5IEX WA5IYX WA5J WA5JAN WA5JUM WA5KGW WA5KSC WA5KTC WA5LFD WA5LLX WA5LOU WA5MS WA5MUF WA5NFC WA5NNO WA5NOM WA5OYU WA5PFJ WA5POK WA5RHG WA5RML WA5RNV WA5SOG WA5SPP WA5SWN WA5SYU WA5TRX WA5TYJ WA5UA WA5VGI WA5VQM WA5VRE WA5VSK WA5WFE WA5Y WA5YNB WA5ZKO WA5ZNU WA5ZUP WA6AEE WA6APQ WA6BAI WA6BOB WA6CDO WA6CDR WA6DIL WA6ES WA6F WA6FFJ WA6FGV WA6GFR WA6HFP WA6HXD WA6HXW WA6HZY WA6JJB WA6JRZ WA6KHK WA6KYR WA6L WA6LD WA6LDI WA6LIE WA6MEM WA6MQF WA6NHD WA6NHO WA6NOL WA6O WA6OJM WA6OWM WA6PHJ WA6PSI WA6PWP WA6PY WA6RIK WA6RSV WA6RUS WA6RZ WA6RZR WA6SCW WA6SJQ WA6ST WA6TLA WA6TLL WA6UDR WA6URY WA6UYO WA6WPG WA6YEE WA6YKU WA6ZTY WA7AA WA7ADK WA7AJ WA7AR WA7AVL WA7BME WA7CC WA7DIA WA7DX WA7ELK WA7ETH WA7HDI WA7HQD WA7HQG WA7HR WA7IPM WA7ITZ WA7JHQ WA7JT WA7JTM WA7KYI WA7KYM WA7LK WA7LNC WA7LNW WA7LT WA7LZC WA7MMM WA7NB WA7NCL WA7ND WA7NPX WA7NUH WA7NWL WA7OB WA7OET WA7OFH WA7OGY WA7OJY WA7OZT WA7PRC WA7PVE WA7QCC WA7QQI WA7RCT WA7RF WA7RZW WA7SHP WA7SRZ WA7TOF WA7U WA7UR WA7UTM WA7YAZ WA8ALV WA8BMY WA8CLT WA8DXB WA8EFK WA8FRD WA8FRE WA8FZZ WA8GCR WA8HSB WA8ICK WA8IHI WA8IQF WA8JBG WA8JOC WA8KAN WA8KAZ WA8KQQ WA8KSS WA8LOW WA8MCD WA8MGD WA8MTI WA8MVU WA8NJR WA8NLX WA8NSS WA8OIF WA8OJR WA8OLD WA8PGE WA8QNN WA8QYJ WA8QZS WA8RCK WA8RCN WA8REI WA8RJF WA8RPK WA8RRA WA8RSA WA8SDA WA8SDF WA8SHP WA8SSQ WA8TJL WA8TWM WA8UEG WA8UMT WA8VSJ WA8VTD WA8VVG WA8WV WA8Y WA8YUZ WA8YVF WA8YXA WA8ZBT WA8ZDL WA9ACO WA9AFM/5 WA9APL WA9AQN WA9AQQ WA9BLP WA9BXB WA9C WA9CWX WA9DKO WA9DX WA9ETW WA9FBC WA9FET WA9FIH WA9FRU WA9FTU WA9HUP WA9HUX WA9IVH WA9JHH WA9JLV WA9JM WA9LEY WA9LJK WA9LKZ WA9LT WA9MXQ WA9NBU WA9NJR WA9OUE WA9PWP WA9QNN WA9RVM WA9S WA9TOP WA9TZE WA9URF WA9VEE WA9WJJ WA9WSJ WA9YTQ WA9YYY WA9Z WA9ZBV WA9ZBW WA9ZES WA9ZPC WA9ZPL WA9ZWL/6 WB0AJS WB0B WB0BLV WB0CFF WB0CJB WB0DAS WB0DUG WB0FNZ WB0GAG WB0GAZ WB0GBI WB0GGM WB0GKH WB0HHM WB0IEL WB0IOL WB0IWG WB0IZO WB0JDQ WB0KFC WB0KFM WB0KGN WB0KWJ WB0LJK WB0M WB0MCO WB0N WB0NPN WB0P WB0POH WB0PYF WB0QLU WB0QVB WB0RUR WB0SND WB0SOK WB0TEV WB0TRA WB0TSR WB0TUA WB0TVY WB0U WB0UKI WB0UKL WB0ULX WB0VAK WB0VBW WB0VHF WB0VHW WB0WIV WB0WQS WB0YEA WB0YJT WB0YLE WB0YRM WB0YYE WB0ZNY WB1ABQ WB1ADR WB1AEL WB1COV WB1DSJ WB1DX WB1DXD WB1FJH WB1FLA WB1FPA WB1FQW WB1FVY WB1GCM WB1GQR WB1HBQ WB1HJS WB1Z WB2AA WB2ABD WB2AIV WB2AMU WB2AQC WB2ART WB2ATZ WB2AZE WB2COY WB2DFC WB2ELD WB2EZG WB2FUE WB2GGM WB2GHC WB2HJV WB2HTO WB2HVF WB2IDV WB2IOL WB2IVN WB2JEP WB2JFP WB2JGD WB2JNA WB2JSM WB2JUF WB2KAO WB2KEC WB2KHE WB2KLD WB2KSK WB2KWF WB2L WB2LEB WB2MIC WB2MRX WB2MXJ WB2NJN WB2OFV WB2OQQ WB2PJH WB2PYD WB2QJ WB2RAT WB2REM WB2RFV WB2RHM WB2RHM/2 WB2RIS WB2RRF WB2RTG WB2SCT WB2SIH WB2SSB WB2SUN WB2SXY WB2TFM WB2TJO WB2TPS WB2TQE WB2TSV/7 WB2UFF WB2VSJ WB2WIK WB2WPM WB2Y WB2YHK WB2YIP WB2YZX WB2ZAB WB2ZAP WB2ZEI WB2ZEX WB3AFS WB3AGB WB3AVD WB3AVN WB3BDH WB3BEL WB3BGK WB3BSA WB3CJU WB3CQD WB3CQM WB3CSY WB3DOM WB3EHS WB3ESR WB3FIZ WB3HLH WB3HUZ WB3IGR WB3IZF WB3JFS WB3JKQ WB3JVD WB3LGC WB3LTT WB3T WB4AEG WB4BYQ WB4C WB4CSK WB4CSW WB4DNL WB4FDT WB4FEV WB4FSF WB4GLI WB4HDC WB4HDM WB4I WB4IUY WB4IZX WB4JFS WB4JJJ WB4JTT WB4JVR WB4K WB4KCL WB4KLI WB4KTF WB4KZW WB4LJX WB4LMH WB4MAK WB4MDX WB4MNK WB4MRF WB4MSG WB4NBE WB4OEE WB4OMM WB4OQF WB4OSS WB4PPW WB4PWZ WB4QNG WB4RHQ WB4ROA WB4ROA/7 WB4RRD WB4SGA WB4SLM WB4SQ WB4TDH WB4TLX WB4TOM WB4U WB4UIC WB4VSD WB4VVU WB4W WB4WMR WB4WXE WB4X WB4YBY WB4YDL WB4YDY WB4YZA WB4ZBI WB4ZPF WB5A WB5AAA WB5AAR WB5AHN WB5ANN WB5ASP WB5BKL WB5HOW WB5ISM WB5IZD WB5JID WB5K WB5KIA WB5LXJ WB5MFI WB5NMZ WB5NPW WB5ONA WB5OSD WB5PDZ WB5R WB5RYB WB5S WB5SGN WB5STU WB5TEQ WB5TKA WB5TKI WB5TOI WB5TTE WB5TUF WB5UFR WB5VZL WB5WAJ WB5XX WB5YYA WB6AAJ WB6BET WB6BFG WB6BOD WB6CYK WB6CZG WB6FWS WB6HGJ WB6HYH WB6I WB6IQY WB6IXS WB6IYM WB6JJJ WB6JSB WB6JVP WB6JXJ WB6KWL WB6L WB6LIU WB6MBF WB6MIO WB6MMC WB6MRQ WB6NJA WB6NKJ WB6NVB WB6OJB WB6OKG WB6OWZ WB6QCS WB6QPG WB6QQU WB6QVI WB6REZ WB6RSE WB6TFD WB6Z WB6ZAM WB6ZHZ WB7AGN WB7AKE WB7B WB7DFQ WB7DJR WB7ECS WB7ECS/4 WB7FJG WB7NJV WB7OCV WB7OTL WB7OUZ WB7PMT WB7Q WB7QCS WB7QXU WB7RXY WB7S WB7TIR WB7TVS WB7UZO WB7VTY WB8AFC WB8AKW WB8ART WB8B WB8BOR WB8BPU WB8BZK WB8CEH WB8DNO WB8E WB8EKG WB8ENE WB8EYE WB8FLE WB8FSV WB8HWO WB8ICN WB8IMY WB8JAY WB8JUI WB8K WB8KRY WB8LCD WB8LZA WB8MIW WB8MKH WB8N WB8NBA WB8NTA WB8NUT WB8NWA WB8NXG WB8O WB8OWM WB8PFZ WB8QLA WB8RFB WB8RTJ WB8SKP WB8TDA WB8TDG WB8TGY WB8TLI WB8TNN WB8TSD WB8VBG WB8VGE WB8WKQ WB8WRP WB8WTZ WB8YJF WB8YJF/4 WB8YQJ WB8YYY WB8ZOM WB8ZRL WB8ZZR WB9AYW WB9CIF WB9DIF WB9DKL WB9DLC WB9EDP WB9EEE WB9EGZ WB9FCI WB9FIP WB9FIU WB9FQS WB9GYJ WB9HFK WB9CHY WB9IRF WB9IRJ WB9JNZ WB9JOX WB9KPT WB9L WB9LBI WB9LPW WB9LRK WB9LTY WB9MDS WB9MII WB9MMR WB9NMN WB9NOO WB9NRK WB9OJE WB9OKQ WB9ONU WB9PUB WB9PZB WB9QVR WB9RZY WB9SFM WB9TFH WB9TNF WB9TVY WB9UDJ WB9UGC WB9UGX WB9UQE WB9VGO WB9VKZ WB9VRP WB9WHQ WB9WKT WB9WOZ WB9YBI WB9YIG WB9YJE WB9YSD WB9Z WB9ZFN WC0A WC0B WC0N WC0U WC0V WC0W WC1M WC1T WC2C WC2K WC2L WC2W WC2Z WC3A WC3O WC3Q WC4B WC4CC WC4DC WC4E WC4H WC4I WC4KY WC4MBC WC4TX WC4U WC4V WC5B WC5C WC5M WC5N WC5P WC5T WC6DX WC6H WC6L WC7CW WC7Q WC7S WC7V WC7WB WC7X WC8VOA WC8W WC8Z WC9B WC9C WD0AKZ WD0AZW WD0BC WD0BGZ WD0BMR WD0BMS WD0CIV WD0DAI WD0DX WD0E WD0ECO WD0EDK WD0FAA WD0GTY WD0J WD0K WD0L WD0M WD0MR WD0T WD1W WD1Z WD2E WD2F WD3B WD3C WD3K WD4AB WD4ABO WD4AHZ WD4ASP WD4CBA WD4CJN WD4DC WD4DDU WD4DMZ WD4EBR WD4ELG WD4FL WD4FNY WD4FNY/0 WD4GBW WD4GEO WD4HIM WD4IXD WD4JJ WD4KGC WD4KTF WD4LAZ WD4LBR WD4LTF WD4LUR WD4LYV WD4MSM WD4OHD WD4OHM WD4OJM WD4PDZ WD4PTJ WD4SIG WD5AAM WD5ABC WD5ACR WD5BJT WD5BUC WD5CAW WD5COV WD5DBV WD5EAE WD5FUN WD5HIO WD5IYF WD5IYT WD5JB WD5JNC WD5K WD5R WD5T WD5USA WD6AHV WD6BGG WD6CKT WD6DBM WD6FF WD6FTB WD6L WD6S WD7K WD7Y WD8ANZ WD8BAH WD8BBE WD8BCS WD8BIL WD8CJN WD8CQB WD8DSB WD8EOL WD8H WD8ICX WD8INF WD8IQJ WD8JJA WD8JOL WD8JP WD8KNC WD8KRV WD8M WD8MBE WD8NHA WD8NVN WD8OSE WD8OZS WD8PKF WD8QGE WD8QIJ WD8RIF WD8RUW WD8RWI WD8RYC WD8S WD8V WD9ABG WD9CIR WD9COM WD9DZV WD9EJK WD9EKA WD9EMI WD9F WD9FJL WD9FTZ WD9GJK WD9GMK WD9HDT WD9HSY WD9HYM WD9CHG WD9IDV WE0Q WE1H WE1P WE2N WE2Y WE3C WE3E WE3J WE3ST WE4H WE4M WE4S WE5I WE5K WE5O WE6C WE6EZ WE6L WE6M WE6Z WE7G WE7K WE7P WE8P WE8R WE9A WE9M WE9N WE9R WE9V WF0GM WF1L WF2B WF2S WF2W WF3C WF3M WF3T WF4B WF4G WF4M WF4U WF4W WF5E WF5I WF5T WF5W WF5X WF6C WF6F WF6O WF7K WF7T WF7T/4 WF8N WF8P WF9A WF9V WG0G WG0I WG0M WG0V WG1W WG2B WG2Y WG3J WG3U WG4F WG4M WG4MB WG4P WG5G WG5J WG7J WG7X WG7Y WG8DX WG8H WG8P WG8Y WG9L WH0S WH2D WH2DX WH2X WH6C WH6OR WH6R WH7GM WH7TU WH7V WH7Z WI0S WI0W WI0WA WI1G WI1I WI2E WI2E/3 WI2W WI3K WI4A WI4DX WI4N WI4R WI4T WI5ND WI6I WI6T WI6Z WI7F WI7N WI8A WI8B WI8C WI8R WI9H WI9M WI9TOM WI9WI WI9Z WJ0M WJ0X WJ1B WJ1R WJ2D WJ2O WJ2P WJ3A WJ3F WJ3P WJ4N WJ5C WJ5DX WJ5S WJ6O WJ6T WJ6Y WJ7R WJ8E WJ8Y WJ9B WJ9X WK0DX WK0P WK1J WK1Q WK2G WK2H WK2S WK3N WK4CW WK4F WK4P WK4Q WK4W WK4Y WK5T WK5X WK6C WK6I WK6S WK7K WK7P WK8A WK8U WK8V WK9H WL7BDO WL7E/WZ7 WL7E/W7 WL7O WL7SJ WL7UQ WL7X WM0F WM0G WM0L WM1G WM2H WM2Z WM3L WM3O WM3PEN WM3T WM4D WM4Q WM4RM WM5DX WM5R WM6A WM6DX WM7D WM7DX WM9DX WN0G WN0L WN1GIV WN1M WN1OTV WN2O WN2T WN2Y WN3N WN3R WN3USA WN4AT WN4DX WN4N WN4S WN4VCH WN5G WN6K WN6M WN6W WN7J WN7L WN7M WN7T WN7Y WN8P WN8R WN9E WN9ICB WN9J WN9M WN9O WN9P WO0Q WO1N WO2N WO2T WO2Y WO3L WO3P WO3Z WO4D WO4DX WO4MW WO4O WO4R WO5D WO5I WO6M WO6T WO7O WO7T WO7U WO7Y WO8CC WO8J WO8USA WO9S WO9U WO9Z WP2B WP2E WP2Z WP3A WP3C WP3EF WP3GW WP3R WP4CGH WP4D WP4DQK WP4EDD WP4GUH WP4I WP4JBG WP4L WP4NEG WP4NND WP4SK WP4U WP4WV WP4WW WQ0A WQ1H WQ2N WQ3E WQ3X WQ4L WQ5L WQ5O WQ6K WQ6O WQ6X WQ7A WQ7L WQ7O WQ7X WQ8RP WQ8T WQ9E WQ9T WQ9Z WR1B WR1Q WR1TX WR2G WR3H WR3L WR3Z WR4AA WR4C WR4F WR4I WR4K WR4U WR5AW WR5G WR5U WR7DW WR7HE WR7K WR7Q WR8R WR9AN WR9L WR9Y WS0Z WS1F WS1L WS2E WS2L WS3C WS4C WS4E WS4F WS4H WS4NC WS4WW WS4Y WS5C WS5H WS5K WS6K WS6X WS7I WS7L WS7V WS7X WS8D WS8M WS9E WS9J WS9M WS9M/2 WS9M/4 WS9V WT0A WT0AA WT0D WT0O WT1M WT2Z WT3Q WT4PF WT4Q WT4Y WT5K WT5L WT5N WT5R WT5U WT6A WT6G WT6K WT6P WT6TT WT6X WT7N WT7RC WT7TT WT8C WT8E WT8F WT8N WT8O WT9Q WT9U WT9Y WU0L WU1E WU1ITU WU2B WU2L WU2S WU2X WU3A WU4B WU4G WU5E WU5PIG WU6CC WU6W WU7O WU7R WU8P WU8Q WU9B WV0T WV1M WV2ZOW WV3U WV4I WV4V WV4Y WV5K WV5L WV6E WV6I WV6N WV7Q WV8A WV8AA WV8USA WV9B WV9S WW0AL WW0E WW0H WW0WB WW1M WW1WW WW2DX WW2NC WW2NJ WW2P WW2PT WW2R WW2Y WW3A WW3DE WW3K WW3KP WW3Q WW3QB WW3S WW4B WW4CP WW4DM WW4E WW4GC WW4LL WW4R WW5AA WW5Q WW5R WW5TT WW5W WW6D WW6O WW6P WW6USA WW7M WW7Q WW8O WW8OH WW8X WW9DX WW9R WX0B WX0V WX1MAN WX1O WX1S WX1V WX1X WX2F WX2N WX2T WX2U WX3B WX3G WX3SKY WX4CW WX4G WX4MLB WX4MM WX4QN WX4RM WX4TM WX4US WX4X WX5I WX5N WX5S WX5W WX6O WX6V WX6W WX6Y WX7B WX7E WX7G WX7L WX7P WX7T WX8G WX9C WX9EP WX9U WX9Z WY0B WY0Q WY0V WY1H WY1U WY2G WY3A WY3P WY4A WY4Y WY5I WY5O WY6DX WY6K WY7DK WY7FD WY7I WY7KRA WY7LL WY7N WY7SS WY7USA WY8DX WY9I WY9N WZ1F WZ2T WZ3B WZ4F WZ4P WZ4Z WZ5H WZ6T WZ6Z WZ7E WZ7M WZ7ZR WZ8D WZ8DX WZ8K WZ8P WZ8T WZ9B WZ9C W0AAA W0AD W0AG W0AIH W0ANH W0AR W0ARK W0AV W0AVE W0AW W0AWL W0BBI W0BCA W0BE W0BF W0BH W0BKR W0BM W0BNW W0BR W0BUW W0BV W0BVR W0CAR W0CBH W0CCA W0CEM W0CGR W0CM W0CML W0CN W0CO W0CP W0CPM W0CQ W0CRC W0CZ W0DB W0DC W0DD W0DET W0DF W0DHB W0DJH W0DLE W0EAR W0EB W0ECS W0EEA W0EF W0EJ W0EK W0EKS W0ELT W0EM W0EOZ W0EP W0EPC W0ERE W0ERP W0ETT W0EWD W0EWM W0FE W0FK W0FL W0FLS W0FM W0FMS W0FRC W0FS W0FV W0GG W0GHZ W0GJ W0GKE W0GLB W0GMO W0GUY W0GXN W0GXQ W0GZR W0HBH W0HDC W0HJW W0HJW/6 W0HMS W0HR W0HT W0HW W0HXL W0ICY W0IF W0IJR W0IMD W0IS W0IVJ W0IW W0IYH W0IZ W0IZL W0JA W0JEC W0JEE W0JFR W0JH W0JIM W0JLC W0JPL W0JRP W0JTC W0JX W0KC W0KIT W0KSD W0KT W0KU W0KVA W0LB W0LEO W0LFJ W0LFZ W0LGU W0LI W0LK W0LM W0LS W0LSD W0LTL W0LV W0LWU W0MA W0MF W0MHK W0MHS W0ML W0MM W0MOT W0MPH W0MR W0MRM W0MRZ W0MSM W0MTW W0MU W0MY W0NA W0NB W0NFD W0NFS W0NMD W0NO W0NT W0NTA W0NUH W0NV W0ODS W0OF W0OJ W0OR W0OR/4 W0OTM W0OTV W0OXJ W0PAN W0PB W0PC W0PE W0PI W0PPF W0PQ W0PR W0PRS W0PS W0PSS W0PTI W0PV W0PYZ W0QE W0QL W0QQ W0QQG W0QU W0RAA W0RDS W0RHT W0RI W0RIC W0RK W0RLI W0RO W0RSB W0RSP W0RSR W0RT W0RU W0RUN W0RX W0SD W0SHL W0SK W0SM W0SO W0SRC W0STB W0TAW W0TF W0TID W0TL W0TLE W0TT W0TU W0TUP W0TY W0UA W0UCE W0UD W0UO W0UOW W0UVC W0UY W0UY/5 W0VB W0VD W0VHV W0VOM W0VX W0WLL W0WMU W0WN W0WOI W0WP W0WPL W0WQ W0WSP W0XG W0XV W0XXX W0YHE W0YJT W0YK W0YK/6 W0YNI W0YR W0YRN W0YSE W0YV W0YVA W0YY W0YZZ W0ZA W0ZC W0ZD W0ZH W0ZP W0ZQ W0ZR W0ZS W0ZT W0ZTL W0ZU W0ZW W1AAG W1AAX W1ACC W1ACT W1AD W1AF W1AH W1AIR W1AIU W1AJT W1AMF W1AMJ W1AN W1AO W1APZ W1AQ W1AR W1ASB W1ATA W1ATV W1AVK W1AW W1AX W1BB W1BBQ W1BCD W1BHC W1BJ W1BLT W1BNC W1BR W1BS W1BV W1BYH W1CBI W1CC W1CCE W1CCE/4 W1CDX W1CKA W1CRK W1CRP W1CRS W1CSM W1CTN W1CU W1CVE W1CWU W1DAD W1DBD W1DDD W1DEO W1DF W1DIG W1/DK1TM W1DMC W1DMD W1DMM W1DNK W1DNK/5 W1DO W1DQ W1DSH W1DUW W1DWA W1DX W1DXH W1DY W1DYJ W1EAT W1EBI W1EBM W1ECS W1ECT W1EHQ W1ECH W1EM W1EME W1END W1EQ W1EQO W1ES W1ESE W1EZY W1FA W1FH W1FJ W1FK W1FM W1FMO W1FMR W1FP W1FQ W1FSY W1FV W1GD W1GG W1GL W1GLO W1GOU W1GQ W1GS W1GSH W1GUD W1GUE W1GUS W1GWN W1GX W1GXZ W1GY W1HBR W1HFD W1HFF W1HFN W1HI W1HIH W1HIJ W1HIS W1HJT W1HMD W1HPH W1HQ W1HR W1HT W1HY W1IBI W1IBQ W1IDL W1IE W1IG W1II W1IL W1IS W1IT W1IZQ W1JA W1JCJ W1JCW W1JD W1JGS W1JKS W1JMA W1JMM W1JMZ W1JN W1JNZ W1JQ W1JR W1JSB W1JWC W1KDA W1KM W1KOK W1KQ W1KRS W1KRV W1KSI W1KSZ W1KT W1KX W1LDD W1LIC W1LK W1LRY W1LVL W1LWH W1LXA W1LY W1LZ W1MAD W1MAT W1MAW W1MD W1MHZ W1MIG W1MJ W1MJB W1MK W1MKY W1MLG W1MO W1MPF W1MSW W1MU W1MX W1MX/100 W1NA W1NDY W1NG W1NK W1NN W1NQT W1NR W1NRB W1NRG W1NSK W1NT W1NY W1OHM W1OO W1OOO W1OP W1ORS W1OU W1OW W1OX W1PBB W1PH W1PHB W1PID W1PMR W1PNS W1PR W1PX/4 W1QA W1QG W1QH W1QK W1QLF W1QS W1RAN W1RDJ W1REP W1RET W1RH W1RIL W1RKT W1RM W1RME W1RPG W1RQ W1RY W1RZ W1RZF W1SAM W1SD W1SGC W1SJ W1SKB W1SKU W1SLF W1SNE W1SOX W1SRB W1SRG W1STT W1TAM W1TI W1TJL W1TM W1TMS W1TO W1TR W1TRB W1TS W1TSM W1TSP W1TW W1TY W1UD W1UE W1UF W1UJ W1UK W1UN W1UR W1URV W1UU W1VB W1VD W1VE W1VG W1VIV W1VO W1VRY W1VV W1WBB W1WC W1WCG W1WCN W1WEF W1WH W1WIU W1WLJ W1WLW W1WN W1WQM W1WSN W1WV W1WWW W1XH W1XP W1XT W1XV W1XW W1XX W1YK W1YL/4 W1YM W1YN W1/YO7ARY W1YRC W1YY W1YY/7 W1ZA W1ZC W1ZD W1ZD/7 W1ZE W1ZGZ W1ZK W1ZM W1ZN W1ZO W1ZR W1ZS W1ZT W1ZYX W1ZZ W2AAB W2AAS W2ACY W2ACY/5 W2ACY/7 W2AD W2AFC W2AIV W2ALT W2AN W2ARP W2AT W2AU W2AW W2AYM W2BC W2BEE W2BSN W2BVH W2BXA W2BZR W2BZY W2CCC W2CCW W2CD W2CDO W2CG W2CO W2CR W2/CT1FMX W2/CT1GIF W2CUA W2CVW W2CXX W2DCM W2DEC W2DKM W2DLL W2DLT W2DNR W2DPT W2DSX W2DWW W2DX W2DXE W2DZO W2EB W2EF W2EFI W2EG W2EJG W2ELC W2EN W2EQ W2ESX W2EUA W2EVL W2EZB W2/E78WW W2FA W2FAL W2FB W2FCP W2FDJ W2FE W2FEZ W2FF W2FJA W2FKN W2FMB W2FP W2FT W2FU W2FUI W2GB W2GD W2GDJ W2GEZ W2GFF W2GG W2GGI W2GHD W2GJ W2GLE W2GPS W2GS W2GW W2GZB W2HA W2HCB W2HDI W2HIY W2HKE W2HLI W2HTI W2HTS W2ID W2IF W2II W2IJ W2IKN W2IQK W2IRT W2IUC W2IW W2IZN W2JB W2JD W2JEK W2JGQ W2JJ W2JLK W2JSJ W2JTM W2JU W2JU/1 W2KD W2KFV W2KIM W2KJ W2KKJ W2KKZ W2KLS W2KN W2KP W2KQ W2KV W2KW W2KXD W2LB W2LC W2LE W2LHL W2LJ W2LK W2LO W2LP W2LPL W2LRO W2LRT W2LU W2LYL W2MAT W2MC W2MEB W2MF W2MFT W2MKW W2ML W2MM W2MMD W2MN W2MV W2MXL W2MYA W2NBJ W2NJ W2NLS W2NNN W2NO W2NQ W2NQ/7 W2NRA W2NTV W2NY W2NZH W2OB W2OIB W2OKM W2OL W2OO W2OR W2OSR W2OX W2OZO W2PA W2PHD W2PI W2PJ W2PK W2PSU W2PV W2PWS W2QF W2QM W2QO W2QQ W2RBA W2RD W2RDX W2RE W2REH W2RI W2RIJ W2RIP W2RLB W2RLK W2RM W2RON W2RQ W2RR W2RRT W2RS W2RST W2RT W2RTY W2RU W2RX W2RZS W2SF W2SH W2SKI W2SM W2SMS W2SNX W2SON W2SR W2TA W2TAU W2TB W2TDZ W2TF W2TIN W2TN W2TX W2TZ W2UB W2UDT W2UGZ W2UJ W2UP W2UQ W2VI W2VJN W2VK W2VKT W2VO W2VP W2VQ W2VS W2VT W2VTV W2VU W2VUF W2VV W2WC W2WD W2WG W2WHP W2WO W2WP W2XB W2XI W2XL W2XM W2XO W2XS W2XYZ W2YC W2YE W2YJ W2YK W2YP W2YR W2YT W2YX W2ZDP W2ZEP W2ZI W2ZKE W2ZQ W3ABT W3ACO W3ADC W3AG W3AH W3AMB W3ANJ W3AO W3AS W3ASA W3AT W3AU W3AZ W3AZD W3BBO W3BC W3BEE W3BG W3BGN W3BJ W3BMW W3BP W3BTX W3BUI W3BW W3BZN W3CB W3CC W3CEI W3CF W3CG W3CP W3CQ W3CQB W3CQH W3CRZ W3CSA W3CWE W3DA W3DAD W3DF W3DM W3DNA W3DP W3DQ W3DQN W3DQT W3DRY W3DSX W3DVE W3DX W3DYA W3DZH W3EA W3EC W3EDP W3EEE W3EEK W3EF W3EFE W3EH W3EKT W3EL W3EP W3EQ W3ERC W3ERE W3EST W3EW W3EX W3FF W3FI W3FQ W3FT W3FV W3FVT W3FW W3GAT W3GC W3GEG W3GG W3GH W3GK W3GLH W3GM W3GNQ W3GQ W3GRD W3GRF W3GT W3GYK W3HAL W3HBA W3HDH W3HHN W3HKK W3HMR W3HNK W3HP W3HZU W3HZZ W3IDT W3IHY W3II W3IL W3IP W3IQ W3IUU W3IZ W3JBS W3JJ W3JK W3KB W3KDR W3KL W3KLG W3KM W3LD W3LJ W3LL W3LPL W3LR W3LSW W3LWH W3MAT W3MC W3MEL W3MF W3ML W3MR W3MRL W3MWR W3NF W3NHL W3NJ W3NO W3NR W3NR/4 W3NV W3NX W3OA W3OC W3OD W3ODJ W3OE W3OFD W3OFT W3OK W3OKC W3OU W3OUF W3OWL W3PA W3PD W3PF W3PFC W3PG W3PH W3PN W3PO W3PP W3PV W3PX W3RA W3RAR W3RCP W3RFQ W3RI W3RJ W3RLO W3RT W3RW W3SB W3SD W3SE W3SFG W3SM W3SO W3SON W3SQ W3TB W3TB/VP9 W3TC W3TDF W3TMC W3TMS W3TMZ W3TN W3TNU W3TRY W3TS W3TUA W3TZ W3UA W3UL W3UM W3UR W3USA W3UTD W3UWH W3VT W3WC W3WH W3WKP W3WKX W3WL W3WN W3WOT W3WPA W3WRL W3WTJ W3WW W3XB W3XG W3XX W3XY W3YJ W3YR W3YW W3YX W3YY W3YZM W3ZA W3ZF W3ZGD W3ZI W3ZL W3ZQI W3ZV W3ZYF W3ZZ W3ZZX W4AA W4AAA W4AAM W4ABE W4ADA W4AEJ W4AG W4AGS W4AJT W4AK W4AKO W4ALA W4/AL7HW W4AMP W4AMS W4AMW W4AN W4ANR W4AO W4ARM W4AS W4ASE W4ATK W4ATL W4ATM W4AU W4AUB W4AV W4AVV W4AWF W4AZR W4BAB W4BAI W4BAK W4BAX W4BCG W4BCU W4BFB W4BGH W4BK W4BKV W4BNM W4BNO W4BQF W4BTZ W4BUE W4BUW W4BVH W4BW W4BXI W4CA W4CAR W4CB W4CCQ W4CCS W4CDM W4CFF W4CI W4CID W4CK W4CKD W4CLJ W4CM W4CMM W4COH W4COW W4CPO W4CQZ W4CU W4CWA W4CYS W4CZ W4CZU W4DAN W4DAS W4DAT W4DBT W4DD W4DDR W4DF W4DFW W4DHX W4DKR W4DKS W4DL W4DLZ W4DN W4DNN W4DNQ W4DNT W4DR W4DTA W4DU W4DUG W4DVG W4DYR W4EA W4EBA W4EDE W4EE W4EEH W4EF W4EI W4EIB W4EIP W4EJG W4ELP W4EMM W4ENN W4ERD W4ET W4ETB W4EW W4EY W4FCR W4FCU W4FDA W4FHC W4FI W4FIN W4FKS W4FOA W4FOT W4FRA W4FT W4FUN W4GAC W4GBU W4GD W4GHD W4GHS W4GHW W4GIW W4GKA W4GKF W4GKM W4GKR W4GMH W4GMS W4GNS W4GRC W4GRV W4GV W4GWL W4/G3LIK W4HAK W4HET W4HG W4HGW W4HIJ W4HJ W4HLD W4HLN W4HMV W4HOD W4HQF W4HRC W4HSA W4HVW W4HX W4HYT W4HZ W4HZD W4CHA W4IA W4IBI W4ID W4IDW W4IEI W4IFG W4IHI W4II W4ILC W4IM W4IOW W4IR W4IS W4ISI W4IT W4IU W4IX W4IY W4JAM W4JCM W4JHC W4JHU W4JIM W4JKC W4JLS W4JME W4JNH W4JO W4JRK W4JS W4JSI W4JVN W4JVY W4KA W4KAZ W4KD W4KDB W4KES W4KFA W4KFC W4KIL W4KLH W4KLY W4KN W4KP W4KPA W4KPG W4KQB W4KRN W4KS W4KTR W4KVS W4KVW W4KW W4KX W4KZ W4LC W4LCL W4LDA W4LDE W4LHS W4LIA W4LJM W4LK W4LLY W4LM W4LOS W4LQ W4LSC W4LT W4LWW W4MAL W4MAY W4MBD W4MCQ W4MEL W4MJA W4ML W4MLB W4MOT W4MPS W4MQC W4MR W4MY W4MYA W4NA W4NB W4NBS W4NBY W4NC W4NE W4NF W4NFB W4NHJ W4NI W4NJK W4NL W4NLX W4NML W4NP W4NPX W4NSC W4NT W4NTI W4NU W4NUN W4NX W4NZ W4OC W4OCO W4OEQ W4OGG W4/OH2MQ W4OI W4OJC W4OM W4OTN W4OV W4OX W4OY W4PA W4PBG W4PBU W4PC W4PDX W4PF W4PFM W4PG W4PGM W4PHS W4PJ W4PJP W4PJW W4PK W4PM W4PMK W4PR W4PTY W4PUX W4PV W4PVC W4PVT W4PY W4QF W4QG W4QJ W4QK W4QM W4QN W4QNW W4QO W4RAA W4RBO W4RDD W4REG W4REM W4RG W4RHB W4RJ W4RK W4RKC W4RK/0 W4RL W4RM W4RNK W4RQ W4RRE W4RU W4RUN W4RVN W4RVU W4RX W4RYW W4SAA W4SAR W4SCV W4SEC W4SHG W4SIG W4SJV W4SK W4SKI W4SKW W4SLT W4SO W4SOH W4SQL W4STB W4SUL W4SVO W4SVP W4SYV W4TAA W4TBB W4TBJ W4TD W4TDC W4TGB W4TGT W4THU W4TIJ W4TJE W4TKI W4TME W4TMN W4TMO W4TMR W4TO W4TQ W4TRL W4TSP W4TTY W4TUG W4TUN W4TVG W4UAL W4UAT W4UCZ W4UDX W4UE W4UEB W4UEF W4UFO W4UH W4UHF W4UJ W4UK W4UNP W4UOR W4USC W4UT W4UTI W4UUM W4UVA W4UX W4VAB W4VDW W4VES W4VG W4VGI W4VGX W4VHH W4VIC W4VJ W4VKU W4VQ W4VV W4VX W4WAM W4WFX W4WKN W4WL W4WLF W4WNT W4WQ W4WR W4WRL W4WRS W4WS W4WSW W4WTB W4WVP W4WWK W4WX W4XDX W4XE W4XO W4XQ W4XW W4YA W4YCC W4YCZ W4YD W4YDY W4YE W4YFJ W4YHD W4YK W4YOK W4YWX W4ZE W4ZEW W4ZF W4ZGR W4ZJ W4ZKE W4ZLU W4ZPH W4ZPR W4ZR W4ZV W4ZW W4ZYT W5ABC W5ACB W5AFW W5AG W5AJ W5AJD W5AK W5ALT W5AO W5AP W5APS W5AQ W5ASP W5AT W5AZ W5BAK W5BCS W5BEN W5BN W5BOL W5BSX W5CDX W5CF W5CJF W5CN W5CPT W5CRD W5CU W5CUB W5CWQ W5CX W5DAW W5DC W5DET W5DEZ W5DJT W5DKK W5DM W5DNT W5DPR W5DQ W5DWA W5EB W5EEA W5EHY W5EK W5EMC W5EN W5ERX W5ESE W5ETJ W5EZI W5FBK W5FER W5FIT W5FO W5FP W5FPT W5FWR W5FYR W5FZ W5GA W5GAI W5GCX W5GFI W5GFR W5GG W5GGO W5GHZ W5GJ W5GLW W5GN W5GT W5GWH W5GXV W5GZ W5HD W5HFF W5HNK W5HNS W5HPQ W5HY W5HYN W5CHA W5IF W5IFP W5IHN W5IO W5IV W5IZ W5JAK W5JAO W5JAW W5JAY W5JBO W5JBV W5JDF W5JE W5JJ W5JK W5JLF W5JLH W5JLR W5JMW W5JNP W5JQ W5JR W5JRT W5JZ W5KD W5KDJ W5KEB W5KFT W5KI W5KK W5KNE W5KNN W5KQ W5KU W5KV W5LD W5LE W5LEO W5LJW W5LUA W5LV W5LW W5LXG W5MDC W5MF W5MIC W5MJ W5MK W5MMX W5MPC W5MSR W5MT W5MX W5NE W5NUT W5NWR W5NYC W5OJT W5OM W5OMU W5ONX W5OOO W5OU W5OV W5PD W5PDW W5PEM W5PET W5PF W5PG W5PJR W5PJW W5PKE W5PO W5PQ W5PR W5PUF W5QLF W5QM W5QP W5RAE W5RAW W5RCD W5RDW W5RE W5RI W5ROS W5RQ W5RRP W5RTA W5RU W5RW W5RY W5RYA W5RZ W5SG W5SGL W5SL W5SQA W5SV W5SWV W5SXD W5TA W5TAF W5TCR W5TCX W5TDY W5TFW W5THT W5TM W5TMC W5TO W5TT W5TTE W5TTW W5TTY W5TUU W5TV W5TX W5TZC W5UC W5UD W5UE W5UFA W5UHQ W5UHQ/W8 W5UN W5UR W5UW W5VAN W5VDM W5VEK W5VFO W5VGR W5VQ W5VX W5VY W5VYH W5VZF W5VZM W5WLA W5WM W5WMU W5WP W5WRE W5WRJ W5WSS W5WT W5WW W5WY W5WZ W5XB W5XC W5XD W5XN W5XU W5XX W5XZ W5YAA W5YC W5YD W5YDM W5YM W5YZ W5ZAX W5ZD W5ZE W5ZG W5ZH W5ZL W5ZN W5ZO W5ZPA W5ZQ W5ZR W5ZZ W6AAN W6ABM W6AEA W6AEQ W6AF W6AFA W6AH W6AHB W6ALE W6AMM W6AMY W6AQ W6ARU W6ASP W6AT W6ATV W6AUG W6AWS W6AYC W6BCQ W6BH W6BJH W6BK W6BN W6BO W6BSY W6BT W6BVB W6BWG W6BWU W6BX W6CCP W6CS W6CSA W6CT W6CWM W6CYX W6CZ W6DAW W6DCC W6DDB W6DDD W6DDX W6DEP W6DF W6DMT W6DNE W6DOC W6DOE W6DOJ W6DPD W6DR W6DRX W6DSG W6DT W6DVS W6DW W6DXO W6DXW W6EA W6EB W6EJJ W6EM W6EMC W6ENZ W6EOD W6ERN W6EU W6EUF W6FA W6FB W6FEL W6FFH W6FG W6FH W6FI W6FM W6FTA W6FUV W6FY W6GA W6GBG W6GEE W6GL W6GMP W6GMT W6GMU W6GR W6GRT W6GRV W6GS W6GU W6GV W6GX W6HF W6HFM W6HG W6HGF W6HH W6HTC W6HYK W6IA W6IEE W6IGK W6IHG W6IHG/4 W6II W6IJ W6IMF W6ISO W6IXP W6IYS W6IZT W6JAZ W6JD W6JJW W6JK W6JL W6JNU W6JOD W6JPC W6JTI W6JV W6JVA W6JXH W6JZH W6KA W6KAT W6KC W6KGP W6KH W6KJ W6KK W6KW W6KY W6LAB W6LAR W6LC W6LD W6LED W6LEN W6LFB W6LG W6LGS W6LH W6LOL W6LW W6LX W6MAC W6MCA W6MIL W6ML W6MM W6MQI W6MUB W6MVW W6MY W6MZQ W6ND W6NEK W6NEV W6NF W6NIA W6NL W6NOW W6NPR W6NRJ W6NRW W6NV W6NWF W6NWS W6NY W6OA W6OAR W6OAT W6OES W6OEZ W6OFM W6ONV W6OOL W6OP W6OPO W6OQI W6OR W6ORD W6OSP W6OTC W6OUL W6OWI W6OZI W6PBF W6PH W6PJ W6PJB W6POK W6PSA W6PU W6PZ W6QE W6QJI W6QO W6QU W6QUV W6RA W6RAR W6RAW W6RBA W6RDG W6RE W6RFF W6RFU W6RGG W6RJ W6RK W6RKC W6RLL W6RLL/7 W6RMC W6RO W6RQ W6RQR W6RS W6RSP W6RYI W6SA W6SAI W6SA/7 W6SC W6SDM W6SGJ/7 W6SIY W6SJ W6SL W6SQC W6SR W6SW W6SX W6SZG W6SZN W6TA W6TAD W6TAI W6TAN W6TC W6TH W6TJ W6TJI W6TK W6TMD W6TQG W6TRI W6TRI/9 W6TTF W6TYG W6UB W6UDO W6UE W6UFO W6UM W6UQZ W6UR W6USN W6UW W6UX W6VAR W6/VK2IMM W6VM W6VNQ W6VNR W6VOL W6VPH W6VW W6VX W6VY W6WAR W6WB W6WGC W6WQC W6WRT W6WVW W6XB W6XI W6XK W6XLR W6XR W6XR/2 W6XTC W6XU W6XX W6YA W6YDE W6YI W6YO W6YRA W6YV W6YX W6YXY W6ZEN W6ZL W6ZO W6ZQ W6ZR W6ZZ W7AAD W7ABC W7ACX W7AFR W7AIT W7AK W7AL W7AML W7APE W7AQK W7ASF W7ASF/VY2 W7ASU W7AT W7AUM W7AWA W7AWH W7AY W7AYN W7BBC W7BBQ W7BEB W7BEM W7BG W7BIA W7BJB W7BJN W7BPM W7BQ W7BQV W7BRS W7BV W7CA W7CAR W7CB W7CCY W7CEG W7CEL W7CF W7CFR W7CM W7CNA W7CNL W7CPI W7CT W7CUS W7CV W7CWR W7CXA W7DAO W7DCS W7DDD W7DEV W7DFO W7DG W7DK W7DMV W7DO W7DOC W7DR W7DRA W7DRO W7DTG W7DTV W7EB W7ED W7EJ W7EKG W7EPA W7ESE W7EW W7EWG W7EWM W7EXC W7EYE W7FB W7FF W7FFD W7FFF W7FG W7FM W7FP W7FYV W7FYW W7GAH W7GAX W7GB W7GET W7GH W7GKF W7GKF/6 W7GLD W7GM W7GMC W7GN W7GO W7GSV W7GT W7GTH W7GTO W7GVE W7HB W7HJ W7HO W7HPW W7HQC W7HRC W7HS W7HWR W7HX W7HY W7IAN W7ID W7IDG W7IEX W7IIT W7IJ W7IJN W7IMP W7IMU W7IN W7IU W7IUO W7IUV W7IVM W7IWB W7IX W7IY W7IZ W7IZL W7JAF W7JAM W7JAZ W7JDE W7JEN W7JFF W7JI W7JIF W7JK W7JLC W7JPI W7JQ W7JVN W7JW W7JY W7KAM W7KAT W7KB W7KBI W7KBM W7KEY W7KF W7KFY W7KKR W7KL W7/KL7WP W7KPL W7KQ W7KQU W7KQZ W7KTE W7KU W7KVN W7KZO W7LB W7LBN W7LD W7LEA W7LEB W7LGG W7LKG W7LNG W7LOU W7LR W7LRD W7MAD W7MAL W7MAP/5 W7MD W7MDK W7MDQ W7MEM W7MEW W7MEX W7MFC W7MJJ W7MJM W7MM W7MMI W7MPZ W7MRC W7MTL W7NAT W7NBH W7ND W7NE W7NEE W7NER W7NNN W7NO W7NP W7NUW W7NYG W7OE W7OIL W7OM W7ON W7OR W7OTV W7OXB W7OYW W7PEB W7PI W7PN W7POE W7PP W7PP/8 W7PSK W7PT W7PU W7QC W7QDM W7QEK W7QL W7QN W7QQQ W7QR W7RF W7RG W7RH W7RIP W7RJ W7RM W7RN W7RNF W7ROE W7RRS W7RT W7RTL W7RTO W7RTX W7RV W7RY W7SAW W7SCT W7SE W7SID W7SMW W7SNH W7SO W7SSO W7SST W7SUR W7SW W7SWL W7SX W7TAE W7THY W7TJ W7TMD W7TMT W7TNS W7TSQ W7TVC W7TVF W7TYN W7UA W7UDH W7UG W7ULV W7UPF W7URX W7USA W7UT W7UV W7UZ W7VJ W7VMI W7VO W7VP W7VS W7VSM W7VT W7VV W7VXS W7VY W7WA W7WEC W7WES W7WH W7WHO W7WHY W7WLL W7WMO W7WOF W7WPR W7WVF W7WW W7WWA W7XA W7XG W7XI W7XU W7XZ W7YA W7YAQ W7YED W7YES W7YKM W7YKN W7YM W7YMS W7YOW W7YOZ W7YP W7YS W7YVK W7YY W7ZAC W7ZEB W7ZI W7ZJ W7ZMD W7ZOI W7ZQ W7ZR W7ZRC W7ZT W8AAD W8AAX W8AB W8AEF W8AEF/7 W8AJS W8AKS W8AMZ W8AN W8ARC W8ASA W8AV W8AZA W8BAQ W8BAR W8BBQ W8BC W8BD W8BFX W8BG W8BI W8BLA W8BTD W8BXG W8BZY W8CAA W8CAM W8CAR W8CCW W8CD W8CDA W8CDC W8CJQ W8CO W8CT W8CY W8CZN W8DA W8DBF W8DC W8DCQ W8DD W8DEO W8DEP W8DF W8DHG W8DCH W8DJ W8DLD W8DM W8DN W8DO W8DQ W8DRZ W8DSN W8DW W8DX W8DYY W8EDU W8EGI W8EH W8EI W8EII W8EJK W8EL W8EMI W8EMT W8ERD W8ERN W8FAX W8FDN W8FEM W8FGX W8FJ W8FN W8FR W8FT W8FV W8GBH W8GC W8GEX W8GF W8GG W8GJ W8GNM W8GNM/8 W8GOC W8GP W8GR W8GRP W8GTS W8GXT W8HC W8HCS W8HF W8HFY W8HGH W8HH W8HMK W8HOM W8HPJ W8HW W8IC W8ID W8IDM W8ILC W8IM W8IQ W8ISZ W8IVF W8IZC W8JA W8JE W8JGU W8JH W8JI W8JJ W8JMF W8JRK W8JTM W8JTW W8JWA W8JWN W8JY W8KA W8KEN W8KER W8KHP W8KHP/4 W8KJ W8KJP W8KNO W8KQE W8KR W8KRZ W8KTQ W8KV W8KX W8KZP W8LBZ W8LEW W8LGJ W8LGX W8LJB W8LKG W8LKU W8LM W8LO W8LQ W8LR W8LRL W8LRO W8LSV W8LU W8LYJ W8MC W8MET W8MHW W8MIL W8MIS W8MJ W8MKH W8MKR W8MLO W8MP W8MSK W8NA W8NBG W8NCN W8NDG W8NET W8NF W8NGA W8NIC W8NJR W8NNC W8NVC W8NYK W8OEY W8OH W8OHT W8OI W8OKN W8OP W8OTY W8OU W8OV W8OWS W8OX W8PBO W8PC W8PDI W8PEN W8PG W8PGW W8PI W8PN W8POF W8POF/4 W8PT W8PU W8PWQ W8QGP W8QID W8QQC W8QQQ W8QY W8QZA W8RA W8RC W8RCY W8REG W8REW W8RHM W8RID W8RIT W8RJL W8RJM W8RSI W8RT W8RU W8SAN W8SAX W8SF W8SH W8SJ W8SOO W8SP W8SQ W8SWX W8SYD W8SYR W8TE W8TIV W8TJ W8TK W8TM W8TN W8TOM W8TOP W8TRN W8TU W8TVQ W8TWA W8TZ W8UD W8UDX W8UDY W8UI W8UMD W8UMH W8UV W8UVZ W8VCK W8VE W8VI W8VM W8VO W8VS W8VSK W8VVE W8VVG W8VXH W8WA W8WCQ W8WD W8WEJ W8WFN W8WG W8WH W8WHG W8WOJ W8WTL W8WTS W8WVM W8WVU W8WWC W8WY W8/W1AW W8XC W8XP W8XR W8XY W8XZ W8YMO W8YU W8ZA W8ZC W8ZD W8ZHO W8ZM W8ZN W8ZR W8ZU W8ZZU W9AAC W9ACE W9AEB W9AEM W9AKS W9AMX W9ANT W9APE W9AQ W9ATU W9AV W9AVM W9AZ W9BDN W9BEA W9BF W9BGA W9BGJ W9BGX W9BHI W9BJ W9BK W9BLI W9BN W9BNO W9BOK W9BP W9BWR W9CA W9CC W9CF W9CJO W9CL W9CMC W9CO W9COD W9COX W9CPI W9CPV W9CSX W9CYI W9DC W9DCO W9DEW W9DF W9DHD W9DHQ W9DKB W9DKL W9/DM5TI W9DX W9DY W9DZ W9EAU W9EBK W9EBO W9EBY W9EEU W9EJB W9EVT W9EWZ W9EXY W9EYE W9FAM W9FBC W9FF W9FFU W9FHA W9FPZ W9FR W9FW W9FX W9FY W9FYI W9FZ W9GD W9GE W9GG W9GIG W9GJG W9GKA W9GM W9GMT W9GRS W9GT W9GVW W9HA W9HAK W9HB W9HHX W9HLY W9HM W9HR W9HT W9HW W9IIX W9IKU W9IL W9ILF W9ILY W9ILY/0 W9ILY/9 W9IND W9IP W9ITT W9ITV W9IU W9IV W9IW W9JA W9JGC W9JGV W9JH W9JI W9JIU W9JKF W9JL W9JPM W9JTL W9JUV W9JWC W9JXN W9KAY W9KAY/5 W9KB W9KHH W9KK W9KNI W9KVR W9KXI W9KXQ W9KXT W9KY W9LC W9LD W9LDO W9LGI W9LHG W9LIZ W9LL W9LLC W9LNQ W9LO W9LP W9LR W9LU W9LW W9LX W9LZE W9MAF W9MAK W9MAR W9MBT W9MDG W9MET W9MG W9MHB W9MIM W9MK W9MM W9MMZ W9MS W9MSE W9MSL W9MU W9MWV W9NG W9NGA W9NJY W9NPI W9NRC W9NVK W9NWY W9NX W9NXM W9NY W9OA W9OA/9 W9OBQ W9OD W9OF W9OFQ W9OF/4 W9OL W9OO W9OOT W9OP W9OY W9PDS W9PIP W9PL W9PL/7 W9PN W9PNP W9POC W9PRD W9PSE W9PT W9PZT W9QB W9QL W9QO W9QR W9QS W9RAM W9RC W9RE W9RGB W9RI W9RIG W9RIT W9RLL W9RM W9RN W9RNY W9ROG W9RPM W9RR W9RSR W9RTB W9RUK W9RWS W9SE W9SN W9SR W9STG W9SU W9SUN W9SUS W9SZ W9TB W9THD W9TMW W9TN W9TRF W9TT W9TTT W9TTY W9TY W9UAL W9UBP W9UBT W9UCW W9UIH W9UK W9UM W9UUM W9UX W9/UY5LW W9VA W9VHL W9VNE W9VOX W9VQ W9VSA W9VT W9WE W9WGV W9WI W9WJ W9WLC W9WLX W9WS W9WTF W9XA W9XG W9XN W9XQ W9XS W9XT W9XX W9XY W9YA W9YK W9YNI W9YS W9YSX W9YT W9YYG W9YZG W9ZA W9ZJ W9ZJX W9ZP W9ZR W9ZRX W9ZSJ W9ZT W9ZV XE1AY XE1B XE1BY XE1CDF XE1CQ XE1CRG XE1CT XE1EE XE1FAS XE1FSK XE1FZE XE1GRR XE1GZU XE1HJL XE1HON XE1IM XE1J XE1KK XE1L XE1LM XE1MEX XE1MM XE1MW XE1NW XE1OK XE1R XE1RBV XE1RCS XE1REM XE1RZL XE1SVT XE1TD XE1TDX XE1TNC XE1TRP XE1UL XE1USG XE1UYS XE1V XE1VY XE1XZQ XE1YYD XE1YZY XE1ZCQ XE1ZTW XE1ZW XE2AAW XE2AC XE2AI XE2ANT XE2AU XE2AUB XE2AUD XE2CQ XE2D XE2EJ XE2ES XE2EX XE2FGC XE2GAG XE2GG XE2HUM XE2HUQ XE2I XE2JA XE2K XE2ML XE2MM XE2MVS XE2MX XE2NS XE2RC XE2RV XE2S XE2SIV XE2TH XE2TPJ XE2TZP XE2WK XE2WWW XE2YBG XE2YHR XE2YOM XE2YWH XE3D XE3DX XE3KGS XE3N XE3PMR XE3RR XF3PAS XQ1IDM XQ4CW XQ5C XQ5CIE XQ8GLQ XR1A XR3A XR3P XR5N XR6T XU7AAA XU7ACY XU7FMZ XU7KOH XU7XXX XV1X XV2JR XV2MDY XV2RZ XV2W XV4BX XW1B XX9LT YB0AI YB0AJV YB0BCU YB0COU YB0COX YB0ECT YB0EIN YB0JIV YB0MJY YB0MWM YB0NFL YB0PAH YB1ALL YB1AR YB1C YB1CCF YB1CYD YB1KAR YB1MBA YB1NWP YB1TJ YB1UUN YB1YCT YB2DDL YB2DX YB2ECG YB2LSR YB2OK YB2UTX YB3BOA YB3IZK YB3JBJ YB3MM YB3OX YB3TD YB3VK YB3XM YB4IR YB41AR YB5AQB YB5OBB YB5OUB YB7BAE YB8EL YB8EXL YB8FL YC0COX YC0NSI YC1BJX YC1BRS YC1BYX YC1DYY YC1LA YC1UDK YC2BG YC2EUZ YC2LEV YC2USI YC2WBF YC2WWW YC2YTH YC3TKH YC5OO YC5OUB YC5VB YC6EN YC6JRT YC8FEF YC9MDX YC9WIC YD1BJX YD1HUH YD1XUH YD2LEV YD3KWR YE0X YE1C YE1ZAL YE1ZAT YE2R YJ0MM YL0A YL0Y YL1S YL1XN YL1YI YL1ZC YL1ZO YL1ZS YL1ZX YL2BJ YL2BR YL2CA YL2CF YL2CI YL2CR YL2CV YL2EC YL2GC YL2GC/P YL2GD YL2GP YL2GQG YL2GQT YL2GUV YL2HK YL2II YL2IP YL2IS YL2IU YL2JZ YL2KF YL2KO YL2LW YL2MR YL2MR/P YL2NK YL2NN YL2PA YL2PJ YL2PN YL2PP YL2QS YL2QV YL2SM YL2SW YL2TB YL2TD YL2TQ YL2VW YL3AD YL3BZ YL3CU YL3DR YL3DW YL3DX YL3FP YL3FT YL3FW YL3FX YL3GFO YL3GFX YL3GGX YL3IZ YL4HQ YL/4L3A YL4U YL5M YL5T YL5W YL6W YL7A YL7W YL7X YL8M YL9T YL9W YL90AIR YL90CP YM2W YM3A YM3D YN2AA YN2BQ YN2DD YN2EA YN2GY YN2NB YN2S YN2WW YN2Z YO2ADQ YO2AOB YO2AQB YO2ARV YO2BB YO2BBX YO2BPZ YO2CJX YO2CMI YO2DFA YO2GL YO2II YO2IS YO2IS/P YO2KCB YO2KDT YO2KJI YO2LAN YO2LAU YO2LEE YO2LFP YO2LHD YO2LIM YO2LIW YO2LXB YO2LXW YO2LYN YO2MAX YO2MCK YO2MHD YO2MHJ YO2MIL YO2MJI YO2MJZ YO2QY YO2R YO2RLC YO2RR YO3AIL YO3AK YO3APJ YO3BAP YO3BBW YO3BL YO3BZF YO3CBZ YO3CCC YO3CEN YO3CVG YO3CZW YO3DAC YO3DIU YO3FF YO3FFF YO3FN YO3FOM YO3FRI YO3FVR YO3GCL YO3GGO YO3GLH YO3GW YO3III YO3JF YO3JR YO3JV YO3JW YO3KIA YO3KSR YO3ND YO3RU YO3VU YO3XX YO3YB YO3YV YO3YX YO3ZA YO4AAC YO4AB YO4ASG YO4ATW YO4AUL YO4AUP YO4BEW YO4BEX YO4BTB YO4CAH YO4CAS YO4CSL YO4CVT YO4CVV YO4DFT YO4DI YO4DW YO4FTC YO4FTE YO4GHW YO4GNJ YO4HEK YO4KCC YO4MM YO4NA YO4PX YO4QZ YO4RDW YO4RIU YO4RIW YO4RSS YO4RST YO4SI YO4TMB YO4UQ YO4US YO4WZ YO4XT YO5AEX YO5AIR YO5AJR YO5ALI YO5AM YO5AMF YO5BAT YO5BBO YO5BQQ YO5BRE YO5BRZ YO5BTZ YO5BXI YO5BYV YO5CBN YO5CBX YO5CCQ YO5CCX YO5CRQ YO5CTY YO5CUQ YO5CZZ YO5DAS YO5FMT YO5IR YO5KAD YO5KDW YO5KDX YO5KOP YO5KTK YO5KUC YO5NY YO5OAG YO5ODL YO5ODT YO5OED YO5OEF YO5OET YO5OHO YO5OHY YO5OLD YO5OWB YO5PBF YO5PBG YO5PBW YO5PCY YO5PHQ YO5QAW YO5QBP YO5QCD YO5TP YO50IE YO50IF YO6ADW YO6AEI YO6BHN YO6BZL YO6CFB YO6DBL YO6EV YO6EX YO6EZ YO6FGZ YO6HSU YO6HVQ YO6KEA YO6KEI YO6KNE YO6KNY YO6LV YO6MK YO6OAF YO6PEG YO6QT YO6UO YO6VCB YO7AHR YO7APA YO7AQF YO7ARY YO7ARY/W1 YO7ARZ YO7AWZ YO7BGA YO7BGB YO7CVL YO7CWP YO7DAA YO7DO YO7FB YO7HBY YO7LBX YO7LCB YO7LFV YO7LGI YO7LHC YO7LHU YO7LID YO7LKW YO7LTQ YO7MGG YO7NE YO7NW YO7VP YO7VT YO7WB YO8AXP YO8AZQ YO8BDQ YO8BFB YO8BFC YO8BPK YO8BPY YO8DDP YO8DOH YO8FR YO8FZ YO8GF YO8KAE YO8KGA YO8KGP YO8KIS YO8KOO YO8KOS YO8MF YO8MI YO8OH YO8OU YO8RAA YO8RFJ YO8RFS YO8RIJ YO8RIX YO8RKP YO8ROO YO8RZJ YO8SAI YO8SS YO8SSB YO8ST YO8SXX YO8THG YO8TOH YO8WW YO9AFH YO9AFT YO9AGI YO9BPX YO9BXC YO9CB YO9CWY YO9CXE YO9CYM YO9DL YO9FNP YO9FYP YO9GJX YO9GSB YO9GVN YO9HG YO9HP YO9HPJ YO9IE YO9IF YO9IKW YO9ION YO9KPI YO9KPM YO9OC YO9RKH YO9SW YO9WF YO9XC YP0A YP1WFF YP2U YP2W YP2Y YP3A YP5Z YP6C YP7P YP8A YP8I YP8I/P YP9W YQ2ANT YQ5Q YQ6A YQ9W YR0HQ YR0R YR0WL YR1A YR1C YR1Z YR2TM YR2U YR2X YR2Y YR5N YR5O YR5S YR5T YR5Z YR6M YR8A YR8B YR8D YR8I YR8T YR8V YR80HCS YR9F YR9HQ YR9P YR90U YS1GR YS1MAE YS1/W3MKT YS1YS YS1ZC YS4M YS4RR YS4U YT0A YT0HQ YT0I YT0T YT0W YT0Z YT09AU YT1A YT1AA YT1AD YT1AU YT1BB YT1BX YT1CC YT1CS YT1DB YT1E YT1FM YT1HA YT1KC YT1LD YT1ML YT1MZ YT1Q YT1QQ YT1R YT1S YT1T YT1TA YT1TM YT1UM YT1UR YT1V YT1VM YT1VP YT1WS YT1ZA YT1ZZ YT2A YT2AA YT2AAA YT2ACA YT2B YT2EA YT2F YT2FA YT2ISM YT2L YT2PFR YT2RX YT2SMS YT2T YT2U YT2VPA YT2W YT2WW YT3A YT3AA YT3C YT3E YT3H YT3M YT3MA YT3PL YT3R YT3T YT3W YT4A YT4RA YT4T YT4W YT40E YT40EC YT5A YT5C YT5CC YT5CWW YT5M YT5N YT5RA YT5T YT5TT YT5W YT5Z YT7A YT7AW YT7B YT7DQ YT7DX YT7EC YT7EE YT7IM YT7KF YT7KM YT7R YT7T YT7TA YT7W YT7XX YT7YT YT7Z YT8A YT8T YT8WW YT9A YT9C YT9M YT9T YT9X YU/HB9EDB YU/NF5A YU/N8BO YU0A YU0T YU0U YU0W YU09DW YU09RP YU1AAQ YU1AAV YU1AB YU1ADO YU1AM YU1AR YU1ARC YU1ARL YU1AS YU1AST YU1AT YU1AU YU1B YU1BFG YU1BM YU1BN YU1CA YU1CC YU1DW YU1ED YU1EL YU1EW YU1EX YU1EXY YU1FE YU1FG YU1FJK YU1FW YU1GN YU1GU YU1HC YU1HFG YU1HQR YU1IG YU1INO YU1IV YU1JF YU1JW YU1KA YU1KN YU1KT YU1KX YU1LA YU1LD YU1LM YU1MI YU1MM YU1MS YU1NA YU1NGR YU1NR YU1NSK YU1NT YU1OTB YU1PC YU1PJ YU1QQ YU1QU YU1R YU1RA YU1RE YU1RK YU1RP YU1RW YU1SB YU1SZ YU1TO YU1TR YU1UM YU1UN YU1UO YU1VG YU1W YU1WC YU1WN YU1WS YU1XO YU1XW YU1XX YU1YJ YU1YO YU1YV YU1ZM YU1ZZ YU140Z YU2A YU2AA YU2AVB YU2CV YU2DX YU2EF YU2EZ YU2FG YU2M YU2MBM YU2MMA YU2U YU25KN YU3A YU3FX YU3MMM YU3MUP YU3W YU3WW YU3ZA YU4A YU40A YU40AF YU40BM YU40DW YU40FN YU40MM YU5A YU5B YU5C YU5CW YU5M YU5MOL YU5R YU5RA YU5RY YU5T YU5W YU5ZM YU6A YU6DX YU7AE YU7AF YU7AOP YU7AU YU7AV YU7BB YU7BCD YU7BCL YU7BL YU7D YU7DP YU7DX YU7DZ YU7EE YU7FN YU7FW YU7GM YU7GW YU7KG YU7KM YU7KW YU7LS YU7MM YU7NU YU7ONE YU7PG YU7RL YU7RQ YU7U YU7VX YU7W YU7WI YU7WW YU7YZ YU7ZEX YU7ZZ YU8A YU8CW YU8NU YU9A YU9DX YU9XMC YV1CTE YV1DIG YV1FM YV1JGT YV1NX YV1RDX YV2BYT YV2IF YV4AZ YV4BCD YV4CW YV4GD YV5AAX YV5AJ YV5AM YV5AMH YV5BM YV5EAH YV5ER YV5IAL YV5JBI YV5JF YV5KG YV5LI YV5LMW YV5MSG YV5NEA YV5NWG YV5OIE YV5OK YV5VD YV5VE YV6BFE YV6BTF YV6BXN YV7QP YV7/UY5ZZ YV8AD YW2LV YW4A YW4B YW4D YW4V YW5D YW5DX YW5L YW5RTTY YW5RY YW5T YW5W YW7A YY1MTX YY1OKR YY4CVI YY4RN YY5AEA YY5ALO YY5CBK YY5EBV YY5GJC YY5LI YY6JAG YY7OMF YY8JJM ZA1E ZA1FD ZA1FM ZB2BL ZB2EO ZB2X ZC4LI ZC4T ZC4TS ZC4VJ ZD8RH ZD9AH ZF1A ZF1EJ ZF2AE/ZF8 ZF2AH ZF2AM ZF2BJ ZF2DO ZF2JT ZK2DL ZK2V ZL1AAO ZL1AH ZL1AIH ZL1AIX ZL1ALA ZL1ALZ ZL1ANH ZL1AZE ZL1BIV ZL1BOQ ZL1BVB ZL1BYZ ZL1CDP ZL1CDX ZL1IRD ZL1KMN ZL1NI ZL1OGX ZL1SZ ZL1T ZL1TM ZL1V ZL2ACG ZL2AFT ZL2AGY ZL2AJ ZL2AL ZL2ALJ ZL2AOH ZL2AUA ZL2AUJ ZL2AZ ZL2BR ZL2CV ZL2FT ZL2GR ZL2IFB ZL2JKY ZL2JU ZL2LF ZL2MF ZL2MM ZL2OK ZL2ST ZL2UO ZL2WL ZL3A ZL3AB ZL3AKM ZL3DXT ZL3GA ZL3IO ZL3IX ZL3JT ZL3M ZL3NB ZL3PAH ZL3TE ZL4A ZL4AS ZL4CR ZL4DH ZL4DX ZL4IG ZL4JB ZL4NG ZL4NR ZL4NX ZL4QJ ZL4QS ZL4U ZL4WW ZL6HQ ZM1A ZM1K ZM2A ZM2AGY ZM2B ZM2M ZM2RR ZM3A ZM3T ZM4A ZM4G ZM4M ZM4T ZP0R ZP5AA ZP5CGL ZP5DPA ZP5KO ZP5MAL ZP5RPO ZP6DEM ZP6/N3BNA ZP6VLA ZP6VT ZP7NIA ZP8VAO ZP9EH ZR1ADI ZS1A ZS1AAX ZS1AFS ZS1AJ ZS1AU ZS1CF ZS1EL ZS1HV ZS1IL ZS1JX ZS1JY ZS1OLI ZS1REC ZS1RJQ ZS1ROY ZS1SA ZS1SR ZS1XUK ZS1ZY ZS10WCS ZS2BS ZS2DL ZS2EZ ZS2I ZS2NF ZS2Y ZS3AOR ZS3D ZS3Y ZS4JAN ZS4PJ ZS4S ZS4TX ZS4U ZS5J ZS5NK ZS5ZZ ZS6AKU ZS6BAF ZS6BB ZS6BQI ZS6BRZ ZS6BTY ZS6C ZS6EZ ZS6GF ZS6JPY ZS6JR ZS6ME ZS6P ZS6PMS ZS6PVT ZS6RF ZS6RJ ZS6TQ ZS6WB ZS6WN ZS6WR ZS9T ZS9X ZS9Z ZT2V ZV2C ZV2K ZV2V ZV5E ZV5O ZW2B ZW2C ZW3F ZW4O ZW5B ZW5D ZW5HQ ZW5UN ZW7A ZW8T ZX2B ZX5J ZX5ZZ ZX7A ZX7C ZX7U ZY2C ZY5Z ZY6Z ZY7C ZZ5Z ZZ6Z Z21BB Z23MS Z29KM Z30A Z30HQ Z30MCWG Z31A Z31CZ Z31MM Z32AJA Z32ID Z33A Z33F Z33Z Z35F Z35G Z35M Z35M/P Z35T Z35W Z35X Z36N Z36W Z37M Z37Y Z39Z 2E0AOZ 2E0BFJ 2E0BMG 2E0BPP 2E0BVP 2E0CNL 2E0CON 2E0CPT 2E0CRD 2E0CSQ 2E0CTT 2E0CVN 2E0DYM 2E0EMF 2E0FFQ 2E0FPC 2E0GAF 2E0GMW 2E0HOQ 2E0HQD 2E0HTS 2E0IIM 2E0IJK 2E0IMS 2E0IMT 2E0IMW 2E0IXC 2E0JKD 2E0JWW 2E0JXE 2E0JYK 2E0JZU 2E0KIM 2E0KYI 2E0LIB 2E0LMG 2E0LPA 2E0LSB 2E0MAS 2E0MCA 2E0MMI 2E0NJC 2E0NKC 2E0PLA 2E0RAK 2E0RCV 2E0RKY 2E0SMJ 2E0SPF 2E0SQL 2E0TGS 2E0TJU 2E0TQR 2E0UNN 2E0WAW 2E0WDS 2E0WDX 2E0WHG 2E0WPX 2E0XIS 2E0YQC 2E0ZIG 2E0ZWW 2E1DFI 2E1FVS 2E1OKT 2I0BIW 2I0BSA 2I0GWA 2I0SAI 2I0TJR 2M0BGT 2M0CVK 2M0FSF 2M0KLL 2M0KPE 2M0WMJ 2M0XAT 2M0YIO 2U0ARE 2W0IJL 2W0XTP 2W0ZAE 2W0ZJA 3A2MD 3A2MG 3A2MW 3B8GT 3DA0WW 3D2A 3D2KJ 3D2MJ 3G1C 3G1X 3G3P 3G3V 3V3S 3V8BB 3V8CB 3V8HQ 3V8SF 3V8SS 3V9A 3W1M 3W3W 3XY6D 3X5A 3Z30C 3Z40KP 3Z50KPN 3Z70RG 3Z8Z 3Z80PZK 3Z9TA 4A1B 4A1DXXE 4A2S 4B1B 4B1EE 4B1GZU 4B1KK 4B1YYD 4B2ANT 4B2AU 4B2AUD 4B2CQ 4B2EX 4B2S 4B2WK 4D1N 4F1AL 4H1T 4H9RG 4J3M 4J5A 4J7WMF 4J9M 4K0CW 4K3FF 4K3K 4K4K 4K6FO 4K8M 4K9W 4L0A 4L0HQ 4L1BR 4L1FP 4L1MA 4L1UN 4L2M 4L3A 4L3Y 4L4CC 4L5O 4L6DL 4L6QC 4L8A 4L9QQ 4M1F 4M1M 4M4C 4M5DX 4M5IR 4M5RY 4M6CQ 4O1OTA 4O3A 4O3RR 4O3TT 4O3Z 4O4A 4O50A 4O7A 4O8A 4S7AB 4S7EA 4S7NE 4U1ITU 4U1UN 4U1WB 4U10NPT 4U30VIC 4V4JR 4X0A 4X0B 4X0G 4X0T 4X0W 4X1DF 4X1IM 4X1VF 4X2M 4X3HQ 4X4DK 4X4DZ 4X4FC 4X4FR 4X4JU 4X4WN 4X6DK 4X6FK 4X6FU 4X6KA 4X6ZM 4X6ZQ 4Z1UF 4Z4DX 4Z4KX 4Z4OQ 4Z4TJ 4Z4TL 4Z4UT 4Z4WR 4Z5AD 4Z5AY 4Z5CP 4Z5CX 4Z5FI 4Z5IW 4Z5J 4Z5JU 4Z5KZ 4Z5LA 4Z5LU 4Z5LX 4Z5LZ 4Z5ML 4Z5MU 4Z5MV 4Z5OZ 4Z5PJ 4Z5PS 4Z5QQ 4Z5TA 4Z5TK 4Z5UN 4Z8BB 4Z8DT 41N14O 5B/AJ2O 5B/G3RXQ 5B/G4IRN 5B/HA5PP 5B/HG3IPA 5B/KC2TIZ 5B/US8ITL 5B/UT0U 5B/W2TAA 5B4AFM 5B4AGM 5B4AGN 5B4AHJ 5B4AIA 5B4AIF 5B4AII 5B4AIJ 5B4AIX 5B4AIZ 5B4KH 5B4XF 5B4ZN 5B50J 5B8AD 5C2P 5C5T 5C5W 5D0IPY 5D5A 5H1HS 5H2WK 5H3EE 5J1A 5K0CW 5K0T 5K1R 5N0HQ 5N0OCH 5N3CPR 5N7M 5P0O 5P1B 5P2A 5P3WW 5P5CW 5P5L 5P5N 5P5X 5P8W 5P9X 5Q1A 5Q2J 5Q2T 5Q8A 5R8FU 5R8KD 5R8X 5R8ZO 5W0KH 5W0OU 5W0YA 5X1AB 5X1D 5X1NH 5Z4/DL8NBE 5Z4EE 5Z4/RW1AU 6K2DFG 6K2DIO 6K2EJJ 6K2FDL 6K2GCW 6K2GDT 6K5AQY 6K5AYC 6K5BLW 6K5BUI 6K5BXQ 6K5XQE 6K5YHX 6L0NJ 6M0HZ 6M0MM 6V7E 6V7M 6V7N 6V7Q 6V7T 6V7V 6V7X 6W/DL2RMC 6W/PA3EWP 6W/SM6AGR 6W1RW 6W1RY 6W1SE 6W1SJ 6W2SC 6W7RV 6Y0FF 6Y1LZ 6Y1V 6Y1X 6Y5IC 6Y5JH 6Y5WJ 6Y7J 6Y9V 7J1AAI 7J1ABD 7J1AQH 7J1BBC 7J1YAJ 7J2YAF 7J3AOZ 7J4AAL 7J7ACT 7J9AAD 7K1CPT 7K1DEE 7K1EQG 7K1MAG 7K1PTO 7K1PTT 7K3BKZ 7K3PCI 7K3QPL 7K4DHB 7K4GUR 7K4NBV 7K4PTY 7K4QOK 7K4TBB 7K4XNN 7L1FFH 7L1JHN 7L1QWK 7L1WII 7L2ATG 7L2OHM 7L2PDJ 7L2QXT/3 7L3DGP 7L3KJV 7L3LYK 7L4IOU 7M1MCT 7M1MCU 7M1WCU 7M2ALP 7M2PSC 7M3QQP 7M4CDX 7M4HXF 7M4OOS 7N1PRD/0 7N2CQN 7N2DAB 7N2JNN 7N2JZT 7N2SPK 7N2TCB 7N2TCF 7N2TNI 7N2TRM 7N2UQC 7N4CLI 7N4CPT 7N4KDU 7N4LHJ 7N4MXU 7N4NIK 7N4NQR 7N4QCQ 7N4QID 7N4THG 7N4WPY 7N4WZI 7Q7BP 7S0X 7S2E 7S3A 7S3F 7S5C 7S5Q 7S5S 7S7V 7X0MT 7X0RY 7X2EB 7Z1CQ 7Z1HB 7Z1HL 7Z1SJ 7Z1TT 8J1ASAHI/1 8J1AXA/1 8J1ITU 8J1RL 8J1YDXC 8J4P 8J7SK 8N1HQ 8N1Y 8N3HQ 8N4HQ 8N5A 8N8HQ 8P0P 8P3A 8P5A 8P6BX 8P6ER 8P6EX 8P6JD 8P9FW 8P9NX 8P9PB 8P9SS 8Q7DV 8Q7SC 8R1K 8S0A 8S0C 8S0W 8S4S 8S5X 8S6E 9A/AC6DD 9A/E73T 9A/OM2FY 9A/OM8A 9A/S50R 9A/S51DX 9A/VE3ZIK 9A0AA 9A0HQ 9A0M 9A0W 9A09P 9A1A 9A1AA 9A1ACD 9A1BM 9A1CAL 9A1CCB 9A1CCY 9A1CDO 9A1CFN 9A1CIG 9A1CKL 9A1CMA 9A1CMS 9A1DL 9A1HDE 9A1CHP 9A1MB 9A1MM 9A1O 9A1P 9A1UN 9A1ZZ 9A2AA 9A2AJ 9A2BD 9A2BW 9A2CD 9A2CW 9A2DI 9A2DQ 9A2DS 9A2EA 9A2EU 9A2EY 9A2F 9A2FW 9A2GA 9A2GF 9A2GW 9A2HQ 9A2JG 9A2JH 9A2JK 9A2KD 9A2L 9A2LM 9A2MF 9A2N 9A2NA 9A2NO 9A2NY 9A2OU 9A2QF 9A2R 9A2RD 9A2SY 9A2TD 9A2TN 9A2U 9A2UA 9A2UU 9A2VJ 9A2VQ 9A2VR 9A2WJ 9A2WT 9A2X 9A2Y 9A2YM 9A2Z 9A2ZR 9A3AAX 9A3AG 9A3AGS 9A3ALD 9A3ARN 9A3B 9A3CCB 9A3CNN 9A3DF 9A3FY 9A3GA 9A3GI 9A3GL 9A3GS 9A3IH 9A3IV 9A3IW 9A3JB 9A3KS 9A3LE 9A3MA 9A3MJ 9A3ML 9A3MN 9A3MR 9A3ND 9A3OS 9A3QB 9A3SM 9A3ST 9A3TA 9A3TN 9A3TR 9A3TU 9A3VM 9A3W 9A3W/P 9A3WX 9A3XV 9A3Y 9A3ZI 9A4AA 9A4BA 9A4BB 9A4BL 9A4BT 9A4C 9A4D 9A4GM 9A4J 9A4KW 9A4M 9A4MF 9A4QV 9A4R 9A4SS 9A4TT 9A4U 9A4VM 9A4W 9A4WW 9A4WY 9A4ZZ 9A5A 9A5AMC 9A5AMG 9A5AN 9A5AX 9A5BB 9A5BKI 9A5BS 9A5BTP 9A5CW 9A5CY 9A5D 9A5DU 9A5E 9A5K 9A5MT 9A5PV 9A5RJ 9A5SM 9A5ST 9A5V 9A5W 9A5X 9A5Y 9A5ZM 9A5ZP 9A6A 9A6AIB 9A6AKD 9A6AR 9A6C 9A6D 9A6GWQ 9A6ILI 9A6K 9A6KTB 9A6M 9A6NDD 9A6NDH 9A6NNS 9A6R 9A6SJU 9A6SUR 9A6XX 9A6Z 9A6ZT 9A7A 9A7B 9A7BDJ 9A7D 9A7IMR 9A7IUP 9A7P 9A7R 9A7T 9A7V 9A7W 9A7WA 9A7YY 9A8A 9A8M 9A8MM 9A8W 9A8WW 9A800VZ 9A9A 9A9DR 9A9L 9A9R 9A9SF 9A9XX 9A9YY 9G5XA 9G5ZZ 9H1CG 9H1DE 9H1PF 9H1SP 9H1XT 9H3HH 9H3TX 9H4JX 9H5DX 9J2BO 9J3A 9K/K6PAU 9K2CQ 9K2HN 9K2K 9K2MU 9K2RA 9K2/SP4R 9K2YM 9K9HQ 9L1BTB 9L5A 9M2AX 9M2CNC 9M2CQC 9M2IDJ 9M2JKL 9M2MRS 9M2MT 9M2NNM 9M2SMC 9M2TO 9M4DXX 9M6BG 9M6BOB 9M6BRC 9M6LSC 9M6NA 9M6XRO 9M6YBG 9M8DX 9M8YY 9M8Z 9Q1EK 9Q6CC 9V1DE 9V1PC 9V1QQ 9V1UV 9V1/W4LT 9V1YC 9W2NTO 9Y/DL2DBE 9Y4D 9Y4/DF8AN 9Y4HQ 9Y4LDK 9Y4VU 9Y4W 9Z4CP 9Z4CT tlf_1.1.5/share/Makefile.am0000664000175000017500000000033612072353226013701 0ustar jtnjtnTLF_FILES = callmaster cty.dat logcfg.dat arrl10m_mults arrldx_mults \ arrlsections ea_sections paccmults spdxmults ssamults tlfdir = $(pkgdatadir) tlf_DATA = $(TLF_FILES) EXTRA_DIST = $(TLF_FILES) CLEANFILES = *~ tlf_1.1.5/share/arrl10m_mults0000664000175000017500000000050512072353226014270 0ustar jtnjtnAL AK AZ AR CA CO CT DE FL GA HI ID IL IN IA KS KY LA ME MD MA MI MN MS MO MT NC ND NE NV NH NJ NM NY OH OK OR PA RI SC SD TN TX UT VT VA WA WV WI WY DC NB NS QC ON MB SK AB BC NWT NF LB YT PEI NU AGS BAC BCS CAM CHI CHH COA COL DFE DGO EMX GTO GRO HGO JAL MIC MOR NAY NLE OAX PUE QRO QUI SLP SIN SON TAB TAM TLX VER YUC ZAC tlf_1.1.5/share/logcfg.dat0000664000175000017500000000763612072353226013612 0ustar jtnjtnRULES=cqww # ################################# # # # TLF-LOGCFG.DAT v. 1.1.0 # # # # Uncomment the options you # # want to enable. See tlf.doc # # for a description of the # # options. You can keep diff- # # erent versions for different # # contests. I keep separate # # configuration files for # # each contest. If you enable # # more than 1 mutually exclu- # # sive options, the last one # # will be efective. # # # # # ################################# # #CTCOMPATIBLE # ################################# # # # EDITOR # # # ################################# # EDITOR=joe #EDITOR=vi #EDITOR=e3 #EDITOR=MC # ################################# # # # CALL # # # ################################# # CALL=NOCALL # # ################################# # # # Time offset from UTC # # # ################################# # TIME_OFFSET=0 TIME_MASTER # ################################# # # # LAN PORT # # # ################################# # addnode only OTHER nodes !! # #ADDNODE=10.0.0.115 #ADDNODE=192.168.1.2 # THISNODE=A # LAN_DEBUG # ################################# # # # KEYERPORT # # # ################################# # NETKEYER #NETKEYERPORT=6789 #NETKEYERHOST=127.0.0.1 # ################################# # # # KEYERPARAMETERS # # # ################################# #---speed (6 ... 60 wpm) CWSPEED=30 #---weight (-5 ... 5 ms) WEIGHT=1 #---cq delay (in 0,5 s) CQDELAY=10 #---txdelay (ms) TXDELAY=2 #---sidetone (200...800, 0 = mute) CWTONE=800 ################################# # # # PACKET INTERFACE # # # ################################# # Cluster: PI4TUE (Eindhoven) #TELNETHOST=131.155.192.179 #TELNETPORT=8000 # automatic login ############### #CLUSTERLOGIN=yourcall # write log to disk ############# #CLUSTER_LOG # # use tnc instead of telnet ##### #TNCPORT=/dev/ttyS0 #TNCPORT=/dev/ttyUSB1 #TNCSPEED=2400 # # get clusterinfo from network ## #FIFO_INTERFACE # ################################# # # # RADIO CONTROL # # (comment out if not present) # # Rigmodel = Hamlib index, here # # for ten tec OMNI VI # ################################# # #RADIO_CONTROL #RIGMODEL=351 #RIGSPEED=2400 #RIGPORT=/dev/ttyS0 #RIGPORT=/dev/ttyUSB2 # #SSBMODE # #RIT_CLEAR # #SHOW_FREQUENCY # ################################# # # # INFORMATION WINDOWS # # # ################################# # #CLUSTER BANDMAP=S,900 # skipdupes, 900s livetime #FILTER # SCOREWINDOW # CHECKWINDOW ################################# # # # CHECK PARTIAL FUNCTION # # # ################################# # PARTIALS #USEPARTIALS # ################################# # # # CONDX (info for muf calc.) # # # ################################# # SUNSPOTS=30 SFI=100 # ################################# # # # Misc commands # # # ################################# # No automatic 'qso before msg' NOB4 # # No automatic cq #NOAUTOCQ # # Left/right arrows don't change band... #NO_BANDSWITCH_ARROWKEYS # # Marker file for Xplanet MARKERS=tlfmarkers # #############END################# tlf_1.1.5/share/arrldx_mults0000664000175000017500000000027512072353226014312 0ustar jtnjtnAL AZ AR CA CO CT DE FL GA ID IL IN IA KS KY LA ME MD MA MI MN MS MO MT NC ND NE NV NH NJ NM NY OH OK OR PA RI SC SD TN TX UT VT VA WA WV WI WY DC NB NS QC ON MB SK AB BC NT NF LB YT PE NU tlf_1.1.5/share/ssamults0000664000175000017500000000006612072353226013443 0ustar jtnjtnA B C D E F G H I K L M N O P R S T U W X Y Z AC BD tlf_1.1.5/share/spdxmults0000664000175000017500000000004712072353226013632 0ustar jtnjtnB C D F G R J K L M O P S U W Z -end- tlf_1.1.5/ChangeLog0000664000175000017500000012565012072353226012324 0ustar jtnjtn2012-12-01 Thomas Beierlein * ChangeLog, NEWS, configure.ac: Prepare for 1.1.5 maintenance release 2012-12-01 Thomas Beierlein * src/getexchange.c: Support also F10 and F11 in exchange field during digimode. 2012-11-29 Thomas Beierlein * src/callinput.c, src/getexchange.c: enable F-keys for digimode also in exchange field - While in digimode the F-keys only worked in the input field. Changed logic so that they will also be accepted in the exchange field. - While using CTCOMPATIBLE 'INS' key always send only a cw message even when in SSB mode. Fixed. 2012-11-25 Thomas Beierlein * src/callinput.c, src/getexchange.c: simplify - drop unneeded cursor positioning - redraw call and comment input field before waiting for a new character - use printcall() and refresh_comment(), but only if needed - unify handling of band up and down - drop unneeded call to time_update() 2012-11-28 Thomas Beierlein * src/getexchange.c, src/searchlog.c: fix display of zone and section in searchlog window 2012-11-27 Thomas Beierlein * src/addmult.c: Fix memory leak 2012-11-25 Thomas Beierlein * src/callinput.c: Drop not needed duplication of code for handling Fx message keys 2012-11-24 Thomas Beierlein * src/changepars.c: Adapt behaviour of :SCVOLUME command. - Can be set even if sidetone device is console speaker. 2012-11-22 Thomas Beierlein * src/main.c, src/parse_logcfg.c, tlf.1.in: Allow setting of SIDETONE_VOLUME even if SOUNDCARD is not set. - To allow to turn off cwdaemons sidetone output it is needed to set the volume of the sidetone to 0. Until now that was only possible if SOUNDCARD was set in logcfg.dat which switches to a soundcard for sidetone output. - Fix recognition of SIDETONE_VOLUME value (drop trailing \n) - Allow volume setting independent of choosen sidetone device. - Add information to man page. * src/callinput.c: Cleanup old code * src/initial_exchange.c, src/initial_exchange.h, src/main.c: Make errors in initial exchange file more verbose. Thanks Mario DH5YM. - make_ie_list() checks format of initial exchange entries (exactly one call exchange) and complains about errors. It is difficult to find the problematic line for long exchange files. - New code reports the line number and ask for confirmation to continue without initial exchanges in case of error. 2012-10-28 Thomas Beierlein * ChangeLog, NEWS, configure.ac: Prepare for 1.1.4 maintenance release 2012-10-28 Thomas Beierlein * tlf.1.in: minor correction to man page 2012-10-26 Thomas Beierlein * src/callinput.c: fix tune logic. - adapt to cwdaemons behaviour. It tunes only for a given time and than automatically stop. - So request some tuning time (6s) and allow for an early stop with any key press. - Change TUNE_UP constant if you want a different time. 2012-10-24 Thomas Beierlein * src/callinput.c, src/getexchange.c, src/time_update.c: stop flickering cursor while searchlog is shown - during wait for input in call input or exchange field the searchlog panel is regularly updated. That makes the cursor switch between different places and showing a flickering effect. - New logic dropped the time delay from 'time_update()' (as that function should not determine the speed of the keyboard polling) and added the delay into the polling loop so that the cursor is a long time in the input field. 2012-10-27 Thomas Beierlein * src/callinput.c: convert file back to Unix LF endings 2012-10-26 Thomas Beierlein * src/set_tone.c: work around bugs in cwdaemon versions - cwdaemon < 0.9.6 always set volume to 70% at change of tone freq - cwdaemon >=0.9.6 do not set volume at all after change of freq resulting in no tone output if you have a freq=0 in between - So... to be sure we set the volume back to our chosen value or to 70% (like cwdaemon) if no volume got specified 2012-10-23 Thomas Beierlein * src/sendspcall.c: use '}' and '{' only for MFJ1278 keyer to switch TX on and off 2012-10-18 Thomas Beierlein * src/main.c, src/parse_logcfg.c, src/parse_logcfg.h, src/rules.c: ask for confirmation if errors in logcfg.dat or rule file detected - for some time tlf reports errors in both configuration files but gives user only 2 seconds time to read the problem. The changes records that some problems exists and ask the user after processing the files if we should continue or stop the program and fix the problem. That gives them time to read the problems and think it over. 2012-10-14 Thomas Beierlein * src/parse_logcfg.c, src/set_tone.c: fix control of sidetone output - CWTONE drops trailing newline now (was not recognized by cwdaemon 0.9.2 if there was a trailing newline) - :tone did not initialize box correctly. Old screen contents showed through the frame. 2012-10-09 Thomas Beierlein * src/parse_logcfg.c: Correct wording for some error message * rules/arrl10m_dx: fix typo wrt CQ_TU_MSG 2012-10-13 Thomas Beierlein * src/sendbuf.c: correct parsing of special characters in sendbuf() function - old logic assumes that there is always a trailing newline so it checks only until strlen(text)-1 is reached - new code checks all characters until string end. * src/write_keyer.c: shorten macro output in digimode - old implementation had 5 empty lines for each macro output. 1 from message eol, 2 from write_keyer routine, 1 from echo, 1 from fldigi - dropped 1 of the lines in output string - used '-n' switch to force echo to not append a further newline - simplify command formatting 2012-10-06 Thomas Beierlein * src/getexchange.c, src/rtty.c: update miniterm also while in getexchange() * src/rtty.c: make miniterm output more robust - strncpy may leave non terminated strings, so switch to g_strlcpy - mvprintw needs a format string to avoid interpretation of '%' signs in the received text. * src/rtty.c: rework digimode receive routine 'rx_rtty()' - fix buffer overrun in rx_addtext - better logic to skip start of line info from GMFSK and FlDigi - do not skip start of line if serial modem (MFJ or siimilar) 2012-09-14 Thomas Beierlein * src/searchlog.c: Old code segfaults for really long calls in 'searchlog' - happens for long call signs which fill the call field - strchr return NULL if space is not found, so limit string only if a space is really found 2012-08-23 Thomas Beierlein * configure.ac, ChangeLog, AUTHORS, NEWS: prepare for 1.1.3 maintenance release * src/parse_logcfg.c: Second part of reworked parsing logic - All keywords which require a parameter after an '=' use the preparsed fields[1] variable now. - To catch wrong syntax in the config file the macro PARAMETER_NEEDED tests if needed that there was such a '=' in the config entry. 2012-08-16 Thomas Beierlein * src/parse_logcfg.c: Fixes nasty problem in parsing of preferences from logcfg.dat and rules file - David N1EA and Martin OK1RR are reporting not working CLUSTERLOGIN. - Reason was change in parsing logic done between tlf-1.0.5 and tlf-1.1.0. TLF now stopped at keyword CLUSTER mas it was a substring of CLUSTERLOGIN. So CLUSTERLOGIN got never called. Thorough inspection showed that it may affect also other settings. - New logic starts by splitting the inputline at a potential '=' sign. First part: the keyword, second part (if available): the parameters. The keyword gets stripped on both sides, the parameter only from leading spaces. That allows something like ' CALL = DL1JBE'. - All keywords in the keyword list were stripped from a trailing '=' sign. If you need to decide if it got called correctly, than look at the second field in the parsed array. 2012-08-13 Thomas Beierlein * src/changepars.c, src/main.c, src/parse_logcfg.c: Add tilde expansion for config file switch (-f) - -f command line switch allows use of an alternate logfilei. Until now it does not recognize '~' as abbreviation for the users HOME directory (Thanks David N1EA for reporting). - If logfilename starts with ~/ it gets replaced now by users home directory. 2012-08-13 Thomas Beierlein * tlf.1.in: comment CWBANDWIDTH= preference switch - Normally in CW mode tlf sets the (hamlib defined) default bandwidth i during each switch of bands. - If you need a different bandwidth you can set it with these switch i in logcfg.dat 2012-08-23 Thomas Beierlein * .gitignore, aclocal.m4: remove unneeded 'aclocal.m4' and add it to .gitignore They will be created automatically if you run 'autoreconf' after an checkout. so there is no need to have it in the repository. 2012-08-10 Thomas Beierlein * config.h.in, configure.ac, configure.in: Prepare for Automake-1.13 which no longer accepts a configure.in * move configure.in to configure.ac * regenerate config.h.in 2012-06-06 Thomas Beierlein * configure.in: Abort configure if ncurses libs not vailable. Tnx Jens DK2AB for pointing it out. 2012-06-05 Thomas Beierlein * src/gettxinfo.c, src/main.c, src/parse_logcfg.c: drop 'nobandchange' variable Got set only if CWBANDWIDTH was 0 and than the code sets the DEFAULTBANDWIDTH anyway. 2012-06-06 Thomas Beierlein * src/showscore.c: Drop unneeded include statement 2012-04-18 Thomas Beierlein * share/usa_canada_states: remove old 'usa_canada_states' file, use arrldx_mults instead * rules/arrldx_dx, share/arrldx_mults: add actual mults file for ARRLDX contest for DX and adapt path (tnx Fred DH5FS) 2012-03-31 Thomas Beierlein * rules/arrl10m_dx, share/arrl10m_mults: add ARRL 10m contest (tnx Fred DH5FS) * src/parse_logcfg.c, src/score.c: correct naming of functions * src/score.c: simplify loop exit logic 2012-03-18 Thomas Beierlein * src/parse_logcfg.c: fix recognition of COUNTRY_LIST= keyword - multiplier_list was uninitialized. If it was not empty COUNTRY_LIST definitions would not be recognized - use glib for better handling of string termination 2012-03-19 Thomas Beierlein * src/main.c, src/parse_logcfg.c, src/score.c: simplify COUNTRYLIST handling - renamed 'multiplier_only' to 'countrylist_only' - renamed 'multiplier_points' to 'countrylist_points' - simplify naming scheme for local variables 2012-03-16 Thomas Beierlein * src/getexchange.c: rework checkexchange handling - fix out of bounds error resulting in a segfault - better maintainability by automatic calculation of loop boundaries for pattern scanning 2012-02-28 Thomas Beierlein * src/parse_logcfg.c: better regognition of unknown keywords in logcfg.dat and rules file 2012-02-27 Thomas Beierlein * rules/arrldx_dx, rules/pacc_dx, rules/spdx_dx: fix wrong keyword: 'RECALL_EXCHANGE' is 'RECALL_MULTS' now 2012-02-19 Thomas Beierlein * src/audio.c: Simplify audio recording by factoring out common code 2012-01-18 Thomas Beierlein * src/main.c: simplify string handling 2012-01-17 Thomas Beierlein * src/Makefile.am, src/printfield.c, src/printfield.h, src/showscore.c, src/showscore.h: Merge printfield() into showscore.c - only used for showscore() - simplify printfield() function. - drop unneeded include file from showscore.c 2012-01-15 Thomas Beierlein * NEWS: Fix spelling error for G4KNO 2012-01-14 Thomas Beierlein * src/calledit.c: simplify calledit() - drop not working keys for 'home' and 'down' - factor out display code - fix display of background for partials when leaving edit mode 2012-01-12 Thomas Beierlein * src/changepars.c, src/main.c: Make sure that no packet related functions get called if started with 'tlf -n' 2012-01-12 Thomas Beierlein * src/makelogline.c, src/makelogline.h: Fix makelogline segfault if not in contest mode Logline gets not cut back to 68 characters. Results in a buffer overflow. Add description of logline format 2012-01-08 Thomas Beierlein * doc/Makefile.am, doc/README.ssb: Added README.ssb from Andy, G4KNO. Thanks for contributing. 2012-01-03 Thomas Beierlein * scripts/play_vk: fix spelling of unmute command. Tnx G4KNO 2011-12-22 Thomas Beierlein * NEWS, doc/README: move tlf's history of changes to NEWS file * tlf.1.in: adapt man page to new features 2011-12-21 Thomas Beierlein * Makefile.am, NEWS, New_Bandmap.txt, doc/Makefile.am, doc/New_Bandmap.txt: Move New_Bandmap.txt to doc/ * NEWS: summarize changes made between tlf-1.0.5 and tlf-1.1.0 * share/cty.dat: new cty.dat from OK1RR. Thanks 2011-12-17 Thomas Beierlein * New_Bandmap.txt, share/logcfg.dat: document configuration of bandmap filtering * src/parse_logcfg.c: fix location of #endif line * src/bandmap.c: leave some headroom for grabbing next frequency * src/bandmap.c, src/checklogfile.h, src/logit.c, src/netkeyer.c, src/printcall.c, src/showscore.c, src/splitscreen.c, src/startmsg.c, src/tlf.h: further cleanup - fix implicit declaration warnings - drop unused variables 2011-12-14 Thomas Beierlein * src/parse_logcfg.c, src/rules.c: cleanup - drop unused variable - fix wrong initialisation of 'buff' 2011-12-14 Thomas Beierlein * tlf.1.in: Fix description of LOWBAND_DOUBLE keyword in man page. 2011-12-13 Thomas Beierlein * src/parse_logcfg.c: divide livetime by 2 as aging is done every two seconds * src/parse_logcfg.c: allow configuration of bandmap filtering in logcfg.dat 2011-12-12 Thomas Beierlein * src/parse_logcfg.c, src/tlf.h: fix recognition of keywords - keywords with parameters did not work if keyword was not in first column 2011-12-10 Thomas Beierlein * src/bandmap.c, src/bandmap.h: dupes will be skipped during ctrl-g - make that feature configurable via bm_config.skipdupes 2011-12-11 Thomas Beierlein * src/parse_logcfg.c, src/parse_logcfg.h: better report of unsupported config keywords 2011-11-24 Thomas Beierlein * src/dxcc.c, src/grabspot.c, src/grabspot.h: fix prototypes - fix missing '#include ' - add missing prototype for 'grab_next' - change prototype of grabspot to return void * src/addmult.c: fix wrong check for empty string in multiplier file * src/callinput.c, src/changepars.c, src/main.c, src/printcall.c, src/rtty.c: Fix use of 'miniterm' variable - clean old code - add comments - save and restore variable if temporary disabled * New_Bandmap.txt: Add some additional informations describing the new bandmap functions. * src/callinput.c, src/grabspot.c: Fix calculation of zone and prefix for grabspot() - Zone and prefix was not calculated correctly during grab of a station from bandmap. It was needed to call 'getctydata()' instead of 'getctynr()' - Drop clear_display after grab. Now the info line is displayed properly. Thanks Fred DM3F for reporting. 2011-11-16 Thomas Beierlein * INSTALL, configure.in: prepare for TLF-1.1pre3 release * scripts/Makefile.am, scripts/play_vk, src/callinput.c: Use external script 'play_vk' for playing of SSB voice key messages * share/Makefile.am: add list of usa_canada_states to installation files - in distribution since 0.9.11 but forgotten in Makefile.am 2011-11-14 Thomas Beierlein * src/getexchange.c: change parsing of section for ARRL SS - trailing spaces in mults_possible[] and cut out section string deleted - compare only pure non-space strings * src/getexchange.c: Fix possible segfaults - old code segfaults if serial number >9999 was entered - simplify reading of check value * src/getexchange.c, src/searchlog.c, src/searchlog.h: Display parsing results for ARRL SS - displayed on lower line of Search panel again * src/searchlog.c: fix display of needed sections - readcalls cuts always 3 char to worked mults[] fro some contests - ignore possible trailing spaces in compare * src/clear_display.c: display contest name on info line 2011-11-10 Thomas Beierlein * rules/Makefile.am: add forgotten general 'contest' rule file to installable files * rules/arrlss: Better defaults for CW messages - exchange has to use serial number instead of a fixed '1' - make check consistent between messages * src/getexchange.c: Fix recognition of 'U' precedent - got introduced late and was not recognized properly - add some comments to the meaning of the searchpatterns * src/searchlog.c: some minor optimization - drop unneeded statement - break out of loop as soon as possible * src/searchlog.c, src/showscore.c, src/showscore.h: Fix display of section in ARRL_SS - moved display code to searchlog.c - use SearchPanel for display - thanks for reporting to Ben NJ8J 2011-11-07 Thomas Beierlein * src/callinput.c, src/getexchange.c, src/logit.c, src/logit.h: make Ctrl-A also work in exchange field - calls addspot() to add the actual call to the bandmap - correct hide of searchlog 2011-11-07 Thomas Beierlein * src/readcalls.c: strip trailing spaces on comments from log file 2011-11-06 Thomas Beierlein * src/changefreq.c, src/changefreq.h: hide cursor during frequnecy change * src/callinput.c: Allow edit of old QSO's only if call field is empty * src/calledit.c, src/callinput.c, src/getexchange.c: correct display of cursor if searchwindow is shown 2011-11-05 Thomas Beierlein * src/main.c, src/searchlog.h: fix display of startup messages 2011-11-06 Thomas Beierlein * src/listmessages.c: correct displayed message name for CQmsg 2011-09-24 Thomas Beierlein * src/parse_logcfg.c, src/tlf.h: Report unsupported config keywords during startup * rules/arrldx_dx, rules/arrldx_usa, rules/arrlfd, rules/arrlss, rules/contest, rules/cqww, rules/dxped, rules/eusprint, rules/lzdx, rules/pacc_dx, rules/pacc_pa, rules/qso, rules/spdx_dx, rules/spdx_sp, rules/ssa_mt, rules/template, rules/wpx, src/parse_logcfg.c: change keywords in parse_logcfg.c to correspond to man page The keywords for CQ_TU_MSG, VKCQM and VKSPM were not recognized correctly. Fixed. Adapt contest rules to changed keywords. 2011-11-03 Thomas Beierlein * src/getexchange.c: Send VKCQM and VKSPM voice messages after end of QSO - Drop a change made by Rein in tlf-0.9.22 to not send these messages if in SSB mode 2011-11-01 Thomas Beierlein * src/getexchange.c: '+' and 'INSERT' respect CTCOMPATIBLE mode also during getexchange() 2011-10-29 Thomas Beierlein * src/callinput.c: '+' and 'INSERT' respect CTCOMPATIBLE mode now - if callfield not empty both keys are working now only if CTCOMPATIBLE is set in logcfg.dat 2011-10-28 Thomas Beierlein * src/gettxinfo.c: Fix upper boundaries for 160 and 40 meters. - Thanks Ben NJ8J for reporting 2011-10-27 Thomas Beierlein * aclocal.m4, configure.in: prepare for prerelease 2 of tlf-1.1 - fix aclocal.m4 * src/clear_display.c, src/printfield.c, src/showscore.c: move score display in upper right corner of display * src/logit.c, src/searchlog.c, src/searchlog.h: Hide searchlog panel at more points 2011-10-23 Thomas Beierlein * src/muf.c: propagation display uses panel code now * src/searchlog.c, src/searchlog.h, src/time_update.c: Use panel code for show and hide of searchlog 2011-01-30 Thomas Beierlein * src/nicebox.c, src/nicebox.h: factorisation to support nicebox for given window 2011-10-20 Thomas Beierlein * src/addmult.c, src/audio.c, src/autocq.c, src/background_process.c, src/bandmap.c, src/calledit.c, src/callinput.c, src/changepars.c, src/checklogfile.c, src/cleanup.c, src/clear_display.c, src/clusterinfo.c, src/deleteqso.c, src/displayit.c, src/edit_last.c, src/editlog.c, src/freq_display.c, src/getexchange.c, src/getmessages.c, src/gettxinfo.c, src/grabspot.c, src/keyer.c, src/lancode.c, src/listmessages.c, src/log_to_disk.c, src/logit.c, src/logview.c, src/main.c, src/messagechange.c, src/muf.c, src/netkeyer.c, src/parse_logcfg.c, src/printcall.c, src/readcalls.c, src/readctydata.c, src/recall_exchange.c, src/rtty.c, src/rules.c, src/searchlog.c, src/sendbuf.c, src/sendqrg.c, src/setparameters.c, src/show_help.c, src/showpxmap.c, src/showscore.c, src/splitscreen.c, src/startmsg.c, src/writeparas.c: switch all refresh() calls for use of curses panels - add a fake refreshp() function which replaces the old refresh() and calls 'update_panels()' followed by 'doupdate'. - serialize refreshp() calls from different threads 2011-10-23 Thomas Beierlein * src/bandmap.c: fix delete of first line in bandmap (was one char to short) 2011-01-28 Thomas Beierlein * config.h.in, configure.in: Prepare usage curses panel library 2011-10-17 Thomas Beierlein * src/clusterinfo.c, src/splitscreen.c: proper locking for spot_ptr[] array 2011-10-16 Thomas Beierlein * share/logcfg.dat, src/callinput.c, src/changepars.c, src/clusterinfo.c, src/main.c, src/parse_logcfg.c, src/setparameters.c, src/tlf.h, tlf.1.in: Drop old SPOTLIST display - ALT-a now switches between Nocluster->Cluster->Bandmap-> - 'cluster == MAP' displays the new bandmap and writes the last 8 spots to Xplanet's marker file. 2011-10-14 Thomas Beierlein * src/Makefile.am, src/cluster_bg.c, src/cluster_bg.h: Delete unneeded cluster_bg.[ch] files - functionality is now in clusterinfo.c * src/background_process.c, src/background_process.h, src/cluster_bg.c, src/clusterinfo.c: Move 'getclusterinfo()' to clusterinfo.c * src/cluster_bg.c, src/cluster_bg.h, src/clusterinfo.c, src/clusterinfo.h: Move 'loadbandmap()' to clusterinfo.c 2011-10-13 Thomas Beierlein * src/cluster_bg.c: change source of data for loadbandmap() 2011-10-11 Thomas Beierlein * src/callinput.c, src/cluster_bg.c, src/main.c: cleanup unneeded code - drop double extern declarations - drop handling of spotinfo filed as nobody uses that information * src/cluster_bg.c, src/main.c, src/splitscreen.c: on the fly recognition of WWV/WCY announcements 2011-10-07 Thomas Beierlein * src/bandmap.c: keep display of frequency memory (#) 2011-10-06 Thomas Beierlein * src/addmult.c, src/addmult.h, src/globalvars.h, src/readcalls.c: refactor registration of worked multiplier and multi initialisation * src/addmult.c, src/addmult.h, src/searchlog.c, src/searchlog.h: move 'load_multipliers()' to addmult.c * src/addmult.c: drop old comment regarding 'wysiwymultsg' variable 2011-10-05 Thomas Beierlein * README: Edited README 2011-10-05 Thomas Beierlein * .gitignore, src/showscore.c: Do not show mults per band in WYSIWYG_ONCE mode. 2011-10-05 Thomas Beierlein * src/addmult.c, src/globalvars.h, src/main.c, src/readcalls.c, src/showscore.c: Remove 'wysiwygmults' variable * src/addmult.c, src/changepars.c, src/getsummary.c, src/globalvars.h, src/readcalls.c, src/showscore.c: Remove 'multcount' variable 2011-10-02 Thomas Beierlein * src/addmult.c: Further simplifications 2011-10-01 Thomas Beierlein * src/addmult.c, src/changepars.c, src/getexchange.c, src/globalvars.h, src/main.c, src/showscore.c: Complete new handling of mults_possible[] length 2011-09-30 Thomas Beierlein * src/addmult.c: Prepare factorization of addmult() and addmult2() Prepare factorization of lookup of possible mults and worked mults 2011-09-24 Thomas Beierlein * src/parse_logcfg.c, src/tlf.h: Report unsupported config keywords during startup * rules/arrldx_dx, rules/arrldx_usa, rules/arrlfd, rules/arrlss, rules/contest, rules/cqww, rules/dxped, rules/eusprint, rules/lzdx, rules/pacc_dx, rules/pacc_pa, rules/qso, rules/spdx_dx, rules/spdx_sp, rules/ssa_mt, rules/template, rules/wpx, src/parse_logcfg.c: change keywords in parse_logcfg.c to correspond to man page The keywords for CQ_TU_MSG, VKCQM and VKSPM were not recognized correctly. Fixed. Adapt contest rules to changed keywords. 2011-10-01 Thomas Beierlein * src/addmult.c, src/changepars.c, src/getexchange.c, src/globalvars.h, src/main.c, src/showscore.c: Complete new handling of mults_possible[] length 2011-09-30 Thomas Beierlein * src/addmult.c: first steps to a rework multi scoring 2011-10-01 Thomas Beierlein * src/main.c, src/parse_logcfg.c, src/searchlog.c, tlf.1.in: Better handling of lines from external multiplier file - Allow comment lines (starting with '#') - strip leading and trailing whitespace - drop empty lines Furthermore drop unneeded string variables and make global ones local. 2011-02-03 Thomas Beierlein * rules/arrldx_dx, rules/arrldx_usa, rules/arrlfd, rules/arrlss, rules/contest, rules/cqww, rules/dxped, rules/eusprint, rules/lzdx, rules/pacc_dx, rules/pacc_pa, rules/qso, rules/spdx_dx, rules/spdx_sp, rules/ssa_mt, rules/template, rules/wpx: fix format and drop false comment in rule files 2011-09-24 Thomas Beierlein * share/logcfg.dat, src/main.c, src/parse_logcfg.c, src/showscore.c, tlf.1.in: drop MANY_CALLS config statement * datastructures: commented use of 'mults_possible' array 2011-09-19 Thomas Beierlein * src/readcalls.c: Correct rescoring for WYSIWYG_* methods * src/addmult.c: strip trailing spaces from comment for WYSIWYG_... handling * src/readcalls.c: Fixed handling of comments for WYSIWYG_ONCE and _MULTI - Old code dropped multi at first space in comment string. Changed to strip only trailing spaces. Was so back before tlf-0.9.21 * src/readcalls.c, src/recall_exchange.c, src/searchcallarray.c: Fix wrong use of callarray_nr 2011-09-22 Thomas Beierlein * src/addmult.c, src/changepars.c, src/getexchange.c, src/globalvars.h, src/main.c, src/searchlog.c, src/showscore.c: Switch mults_possible[] to a growing array. 2011-09-21 Thomas Beierlein * src/main.c, src/searchlog.c: add comments and rearrange variable definitions 2011-09-20 Thomas Beierlein * src/parse_logcfg.c: Logcfg.dat now allows >9 points for scoring Fix possible overflows if there are point declaration above 9 points. 2011-09-15 Thomas Beierlein * README: Add a summary description to README. The summary was copied from the TLF page on Savannah. It gives a short intro which is shown on GitHubs TLF repo page. 2011-07-26 Thomas Beierlein * tlf.1.in: Drop ORION exception from RIGMODEL explanation 2011-06-10 Thomas Beierlein * src/callinput.c, src/clear_display.c, src/getexchange.c, src/keyer.c, src/logit.c, src/main.c, src/sendbuf.c: make curx and cury local variables 2011-06-08 Thomas Beierlein * src/getpx.c, src/showinfo.c: Adding comments, small improvements, cleanup 2011-05-31 Thomas Beierlein * src/log_to_disk.c, src/log_to_disk.h: add spot to bandmap for stations worked in S&P 2011-05-29 Thomas Beierlein * config.h.in, configure.in: some modernisation 2011-05-11 Thomas Beierlein * src/background_process.c, src/log_to_disk.c, src/log_to_disk.h, src/logit.c, src/scroll_log.c: fixed handling of exclusive access to log_to_disk 2011-05-02 Thomas Beierlein * src/addcall.c, src/getctydata.c: simplify * src/set_tone.c: drop unneeded calculation of speedstr 2011-04-29 Thomas Beierlein * src/addcall.c, src/readcalls.c, src/searchcallarray.c: Fixed handling of callarray entries 2011-04-14 Thomas Beierlein * src/addmult.c: use #define instead of fixed value for number of bands * src/addspot.c: spot broadcasts to other stations contains the identifier of the sending station now * src/addcall.c: add_call() remembers worked band now * src/readcalls.c: regroup code fragment 2011-03-03 Thomas Beierlein * src/searchlog.c: correct position of pfx in bottom line of check window 2011-07-21 Thomas Beierlein * Makefile.am, New_Bandmap.txt: add New_Bandmap.txt to EXTRA_DIST File contains description of new bandmap features. 2011-07-23 Thomas Beierlein * src/grabspot.c: fix compilation without hamlib 2011-07-06 Thomas Beierlein * src/callinput.c, src/grabspot.c: implemented scanning up and down in grab_next() switch keys: ctrl-g is for scanning now as Alt-g gets grabbed from the terminal emulator 2011-07-05 Thomas Beierlein * src/callinput.c: change meaning of Alt-G to jump to next spot * src/bandmap.c, src/bandmap.h, src/grabspot.c: extended 'grab' function to switch to next spot up- or downwards 2011-07-04 Thomas Beierlein * src/grabspot.c: Grabspot switches to S&P if in run mode and remembers QRG * src/bandmap.c, src/bandmap.h, src/grabspot.c, src/main.c, src/main.h: started new grabspot implementation 2011-06-28 Thomas Beierlein * src/bandmap.c, src/bandmap.h: First work on grabspot 2011-06-27 Thomas Beierlein * src/bandmap.c, src/bandmap.h: restructure filtering 2011-06-23 Thomas Beierlein * src/bandmap.c: add some comments * src/bandmap.c: - rename 'spots' structure to 'allspots' - add mutex to protect 'allspots' data structure 2011-06-10 Thomas Beierlein * src/cluster_bg.c, src/getctydata.c, src/getctydata.h: implement getctynr which does not change any global strings like pfstr, ituzone, countrynr, continent and so on ... (port from tlf-1.0.5) 2011-05-16 Thomas Beierlein * src/addspot.c, src/bandmap.c: fix display of reporting node 2011-05-02 Thomas Beierlein * src/bandmap.c: Fix bandmap_show crashes 2011-04-29 Thomas Beierlein * src/addcall.c, src/readcalls.c, src/searchcallarray.c: Fixed handling of callarray entries 2011-04-14 Thomas Beierlein * src/bandmap.c: bm_isdupe() respects worked band now * src/bandmap.c: fix display of dupes in bandmap * src/addspot.c: spot broadcasts to other stations contains the identifier of the sending station now * src/callinput.c: '.' calls new bm_menu() now * src/bandmap.c, src/bandmap.h: bm_is_dupe() check implemented * src/readcalls.c: regroup code fragment 2011-03-09 Thomas Beierlein * src/cluster_bg.c: - drop display of old bandmap - call bm_show() to display the new one 2011-03-08 Thomas Beierlein * src/tlf.h: new definition of BANDINDEX_xx 2011-03-07 Thomas Beierlein * src/Makefile.am, src/bandmap.c, src/bandmap.h, src/cluster_bg.c, src/splitscreen.c: First work for new bandmap - add bandmap.[ch] - call according functions - bandmap stores freq in Hz as integers 2011-02-24 Thomas Beierlein * src/showinfo.c: - correct display of 1A stations - simplify 2011-02-25 Thomas Beierlein * src/bandmap.h: First steps to define the behaviour of the new bandmap 2011-02-23 Thomas Beierlein * src/addcall.c, src/cluster_bg.c, src/searchcallarray.c, src/tlf.h: - fix wrong false return value from searchcallarray - simplify 2011-02-22 Thomas Beierlein * src/main.c, src/makelogline.c, src/score.c: simplify handling of score points * configure.in, src/Makefile.am, src/addcall.c, src/addspot.c, src/callinput.c, src/cluster_bg.c, src/dxcc.c, src/dxcc.h, src/getctydata.c, src/getmessages.c, src/getwwv.c, src/globalvars.h, src/main.c, src/makelogline.c, src/muf.c, src/readctydata.c, src/score.c, src/searchlog.c, src/showinfo.c, src/showpxmap.c, src/tlf.h: switch cty data handling to growing arrays needs GLib, so also add a check to configure.in 2011-06-09 thomas beierlein version 1.0.5 * fixes some nasty racing condition between bandmap code and checkwindow. In result prefix in lower line of checkwindow got displayed wrong, but country was right. Thanks Martin OK1RR for reporting. 2011-05-22 thomas beierlein version 1.0.4 * fix for wrong handling of recalled exchange - Thanks Martin OK1RR for reporting. - All calls from initial exchange file will be recognised even if part of a complex call, e.g. DL1CCL in LA/DL1CCL/p - All calls from former QSO's have to be exact including any pre- or postcombination - Now complete exchange will be recalled (not only first word) 2011-02-07 thomas beierlein version 1.0.3 * fix buffer overflow in 'send_lan_message' * fix wrong count of points and qso's for last band entry. Thanks Martin OK1RR for reporting. 2011-01-31 thomas beierlein version 1.0.2 * fix bug in sendto call. cwdaemon needs a zero terminated string. Thanks for reporting Andy G4KNO 2011-01-15 thomas beierlein version 1.0.1 * fix calculation of sun up and down time based on longitude from country description in cty.dat 2011-01-13 thomas beierlein * fix bug in cty.dat and in the routine which reads in the file 2011-01-08 thomas beierlein * fix logfile read error. Last QSO got reead twice. * Optimize searchlog() for speed and also optimize partial call lookup. 2010-12-23 thomas beierlein version 1.0.0 * fix some possible buffer overflow in exchange handling for cqww * fix handling of changing RST, especially resetting the values to 59/599 * make Backspace and Delete-Keys the same 2010-12-19 thomas beierlein * fix some code problems reported by Stephan F8FCE. Thanks. * changed ESC handling in comment and call input field 2010-12-04 thomas beierlein * add new cty.dat provided by OK1RR * fix typos in man page and clarify CQDELAY handling * fix CQDELAY handling in parse_cfg 2010-11-29 thomas beierlein * fix parsing for MARKERDOTS and MARKERCALL keywords * fix buffer overrun during write of markerfile * add new callmaster file provided by OK1RR 2010-10-18 thomas beierlein * fix installation commands for 'make distcheck' 2010-09-11 thomas beierlein * fix calculation of sunrise and sunset times * fix calculation of QSO Rate * some minor fixes of uninitialized variables 2010-01-xx thomas beierlein * better recognition of hamlib install (tnx F8FCE) * fix a lot of buffer overrun for string handling (as glibc and gcc use -D_FORTIFY_SOURCE for stricter checking of buffer overuns) * rewrote handling of initial exchange file. It now allows empty and comment lines (#) and spaces around the callsign. Leading space before comment gets ignored. * Fix input handling of notes. * Fix autocq handling. First characters gets no longer swallowed. * Drop code for old not functional LPT_KEYER and COM1_KEYER. * strip autogenerated files from repository. 2007-12-21 rein couperus * changed searchlog.c ('possible calls') 2007-12-18 rein couperus * changed cluster_bg.c to fix possible buffer overflow * changed searchlog.c -> compare now starts at beginning of callsign. 2003-09-10 dimiter (mitko) kroumov version 0.9.1: * added an autoRXVTdiscovery and a hack XTERM arrows by putting "linux" native driver as TERMinal in the environment. * Introduced WAZMULT (CQWW like) and ITUMULT switches as contest rule multipliers * logcfg.dat has been split up. added a new "rules/" directory for the contest rules file. 2002-11-03 rein couperus version 0.8.6: * bug fixes: various modules * fixed getctydata.c to interpret ctydb properly * fixed bug in callinput.c allowing input of too many characters in call field * added TIME_OFFSET to allow running PC on local time instaead of UTC * added arrl sweepstakes contest with flexible exchange input 2002-10-01 rein couperus version 0.8.1: * various modules: added frequency data, talk data and serialnr data network distribution * added :info and :freq displays 2002-09-07 rein couperus version 0.8.0: * lancode.c, lancode.h: added networking module * various modules: major code changes to interface to the networking module for log data and packet data distribution 2002-08-30 rein couperus version 0.7.3: * background_process.c: added cw simulator mode * changeparams.c: added command :simulator * logit.c, call_input.c: added simulator code * main.c: added various global variables for cw simulator * searchlog.c: fixed bug to enable working more than 20 JA's (now 999) 2002-08-30 rein couperus version 0.7.2: * configure.in : added --enable-hamlib to switch on Hamlib support * sendtxinfo.c, main.c: changed the code to support library switch 2002-08-21 rein couperus version 0.7.1: * parse_logcfg.c: added RIGPORT parameter * clusterinfo.c : added ctrl-g support for spot list 2002-08-21 rein couperus version 0.7.0: * sendqrg.c: added Hamlib support * gettxinfo.c: added Hamlib support * parse_logconfig.c: added Hamlib support * added rig.h 2002-08-12 rein couperus version 0.6.1: * splitscreen.c: telnet client does now display correctly when long buffers come in. * preliminary fix for bandmap display * added FIFO interface to cluster monitor * added command to logcfg.dat: FIFO_INTERFACE this starts a FIFO called clfile in the working directory for added flexibility and backward compatability with previous versions 2002-08-08 rein couperus version 0.6.0: * major rewrite of all routines making disk access. * Removed all system calls. * included telnet client and tnc terminal based on splitscreen by Dave Brown, N2RJT. Now fully integrated with tlf. * Added commands to logcfg.com: TELNETHOST, TELNETPORT TNCPORT (1 or 2) * callinput.c: ESCAPE now erases call + exchange * show_score.c: Color change in header line 2002-07-21 rein couperus * searchlog.c: now keeps logdata in ram to speed up dupe check removed sys calls and reference to /tmp/tlf * store_to disk.c copy logdata into ram array * delete_qso.c remove qso from ram array * edit_last.c change qso in ram array * readcalls.c read qso data into ram array * main.c added global qso array (3000 qso's) 2002-07-21 rein couperus * searchlog.c: changed partials routine to run in RAM added load_partials function * main.c: added load partials from disk * time_update.c removed disk acces to logfile every 5 secs * score.c changed cqww scoring (2 pts within NA) 2002-07-14 Rein Couperus * edit_last.c: added instert and delete * removed call to tlf_deletelogline 2002-07-13 Rein Couperus tlf-0.5.4.3: * main.c: added mixedmode parameter * searchlog.c added mixed mode capability to dupe logic * writecabrillo.c added wysiwyg multiplier format and mixed capability * changeparameters.c added :CWMODE, :SSBMODE and :DIGIMODE commands * show_help.c added new mode switch commands 2002-07-07 Rein Couperus tlf-0.5.4.2: * readcalls.c: fixed logic for wysiwyg multipliers * getexchange.c : added "\" command 2002-06-09 Rein Couperus tlf-0.5.4.1: adjustments for bugs in debian floppy version (delete last qso, write cabrillo) * deleteqso.c: killed the system call to script tlf_deletelogline, wrote inline code to do the job. *writecabrillo.c: removed system call to 'sed' 2002-05-31 Rein Couperus tlf-0.5.4: * tlf.h: added definition of EDITOR_E3 * various: added support for e3 editor (debian floppy ) * clusterinfo.c: read cl3file only if read successful 2002-05-26 Rein Couperus tlf-0.5.3: * getmessages.c: don't initialize call and logfile name if present in logcfg.dat * getctydata.c: bug fix: calculate right cty for /P calls 2002-05-26 Rein Couperus tlf-0.5.3: * score.c: wpx + cqww: added 2 point mode for NA stations * searchlog.c: added red warning signal in case of call lock (check partials) * parse_logcfg.c: added generic parameters 2EU3DX_POINTS, COUNTRY_MULT, PORTABLE_MULT2 , SERIAL_EXCHANGE for use in logcfg.dat (e.g. in Region 1 field day..). * added new parameters and logic to various files to enable "universal" contest * edit_last.c : added new code to edit last qso ("@" command) 2002-05-24 Rein Couperus tlf-0.5.2a: bug fixes: * deleteqso.c: fixed call to tlf_deletelogline * writecabrillo.c: changed version to 0.5.2 New feature: allow CW logging without external keyer.... * tlf.h: added #definition NO_KEYER * write_keyer.c: check explicitly for presence of keyer * parse_logcfg.c: make default NO_KEYER * main.c: initialize keyerport to NO_KEYER * keyer.c: bail out if NO_KEYER * sendbuf.c: bail out if NO_KEYER 2002-05-24 Rein Couperus * tlf-0.5.2: Automatic generation of .paras file in working directory * changed tlf_cleanup to automatically generate clfile and wwvfile at startup * removed .paras, clfile, wwvfile and logfiles from /examples/xxx/ * added parameter MANY_CALLS to logcfg.dat * added parameters POWERMULT to logcfg.dat (for arrlfd) * update of scoring routine for arrlfd * added larger partial call window 2002-05-19 Rein Couperus * tlf-0.5.1: Initial version with automake and autoconf. tlf_1.1.5/config.sub0000755000175000017500000010517612105506435012533 0ustar jtnjtn#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012 Free Software Foundation, Inc. timestamp='2012-02-10' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file 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, see . # # 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. # Please send patches to . Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | be32 | be64 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ | open8 \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i386-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: tlf_1.1.5/src/0000775000175000017500000000000012105506436011330 5ustar jtnjtntlf_1.1.5/src/stoptx.c0000664000175000017500000000263712072353226013045 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Stop TX * *--------------------------------------------------------------*/ #include "stoptx.h" #include "tlf.h" #include "cwkeyer.h" #include "clear_display.h" #include "netkeyer.h" int stoptx(void) { extern int trxmode; extern int keyerport; if (trxmode != CWMODE){ return(1); } if (keyerport == NET_KEYER) { if (netkeyer (K_ABORT, NULL) < 0) { mvprintw(24,0, "keyer not active; switching to SSB"); trxmode = SSBMODE; clear_display(); } } return(0); } tlf_1.1.5/src/getmessages.c0000664000175000017500000001074312072353226014010 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Get messages from -paras file * and gets the last 5 qso records for display * also gets the nr of the last qso from the logfile *--------------------------------------------------------------*/ #include "globalvars.h" #include "getmessages.h" #include "qsonr_to_str.h" #include "dxcc.h" int getmessages(void) { extern char call[]; extern int mycountrynr; extern char mycqzone[]; extern char mycontinent[]; extern char logfile[]; extern int qsonum; extern char qsonrstr[]; extern char backgrnd_str[]; extern char C_QTH_Lat[]; extern char C_QTH_Long[]; extern int emptydir; FILE *fp; dxcc_data *mydx; int i, ii; char logline[5][82]; char printcall[12] = ""; char *rp; printw("\n Call = "); printcall[0] = '\0'; strncat(printcall, call, sizeof(printcall) - 1); printw(printcall); mycountrynr = getctydata(call); /* whoami? */ mydx = dxcc_by_index(mycountrynr); mycqzone[0] = '\0'; sprintf(mycqzone, "%02d", mydx -> cq); strcpy(mycontinent, mydx->continent); sprintf(C_QTH_Lat, "%6.2f", mydx->lat); /* whereami? */ sprintf(C_QTH_Long, "%7.2f", mydx->lon); printw(" My Zone = "); printw(mycqzone); printw(" My Continent = "); printw(mycontinent); printw("\n\n"); refreshp(); checklogfile(); if ((fp = fopen(logfile, "r")) == NULL) { printw("\nError opening logfile.\nExiting...\n"); refreshp(); sleep(5); exit(1); } for (i = 5; i >= 1; i--) { ii = 5 - i; if (fseek(fp, -1 * i * 81, SEEK_END) == 0) { rp=fgets(logline[ii], 85, fp); } else { strncpy(logline[ii], backgrnd_str, 81); } logline[ii][80] = '\0'; logline[ii][78] = 32; logline[ii][79] = 32; } strncpy(qsonrstr, logline[4] + 23, 4); qsonrstr[4] = '\0'; qsonum = atoi(qsonrstr) + 1; if (qsonum == 1) { strncpy(qsonrstr, logline[3] + 23, 4); qsonrstr[4] = '\0'; qsonum = atoi(qsonrstr) + 1; qsonr_to_str(); } if (strlen(logline[0]) >= 75) strncpy(logline0, logline[0], 80); else strcpy(logline0, backgrnd_str); if (strlen(logline[1]) >= 75) strncpy(logline1, logline[1], 80); else strcpy(logline1, backgrnd_str); if (strlen(logline[2]) >= 75) strncpy(logline2, logline[2], 80); else strcpy(logline2, backgrnd_str); if (strlen(logline[3]) >= 75) strncpy(logline3, logline[3], 80); else strcpy(logline3, backgrnd_str); if (strlen(logline[4]) >= 75) strncpy(logline4, logline[4], 80); else strcpy(logline4, backgrnd_str); refreshp(); fclose(fp); if (emptydir == 1) { printw("\n"); printw(" TTTTT L FFFFF\n"); printw(" T L F \n"); printw(" T L FFFFF\n"); printw(" T L F \n"); printw(" T LLLLL F \n"); printw ("\n\n This program is copyright 2002, 2003, 2004 by Rein Couperus, PA0R\n\n"); printw (" It is free software; you can redistribute it and/or modify"); printw (" it under the terms of the GNU General Public License as published by"); printw (" the Free Software Foundation; either version 2 of the License, or"); printw(" (at your option) any later version.\n\n"); printw (" This program is distributed in the hope that it will be useful,"); printw (" but WITHOUT ANY WARRANTY; without even the implied warranty of"); printw (" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. �See the"); printw(" GNU General Public License for more details.\n"); refreshp(); sleep(5); } return (0); } tlf_1.1.5/src/edit_last.c0000664000175000017500000001503512072353226013450 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * edit last qso * *--------------------------------------------------------------*/ #include "globalvars.h" #include "edit_last.h" #include "clear_display.h" char logline_edit[5][88]; int edit_last(void) { int j = 0, b, k, ii = 0; int lfile, rc; struct stat statbuf; int editline = 4; stop_backgrnd_process = 1; //(no qso add during edit process) attron(A_STANDOUT); attron(COLOR_PAIR(COLOR_GREEN)); mvprintw(7 + editline, 0, logline_edit[editline]); refreshp(); b = 29; mvprintw(7 + editline, b, ""); while ((j != 27) && (j != '\n')) { j = onechar(); if (j == 1) { // ctrl A, beginning of line b = 1; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(7 + editline, 0, logline_edit[editline]); mvprintw(7 + editline, b, ""); refreshp(); } else if (j == 5) { // ctrl E, end of line b = 77; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(7 + editline, 0, logline_edit[editline]); mvprintw(7 + editline, b, ""); refreshp(); } else if (j == 9) { // TAB, next field if (b == 1) b = 17; else if (b == 17) b = 29; else if (b == 29) b = 54; else if (b == 54) b = 68; else if (b == 68) b = 77; else if (b == 77) b = 1; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(7 + editline, 0, logline_edit[editline]); mvprintw(7 + editline, b, ""); refreshp(); } else if (j == 152) { // up if (editline > (6 - nr_qsos) && (editline > 0)) { attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT); mvprintw(7 + editline, 0, logline_edit[editline]); editline--; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(7 + editline, 0, logline_edit[editline]); mvprintw(7 + editline, b, ""); refreshp(); } else { logview(); j = 27; } } else if (j == 153) { // down if (editline < 4) { attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT); mvprintw(7 + editline, 0, logline_edit[editline]); editline++; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(7 + editline, 0, logline_edit[editline]); mvprintw(7 + editline, b, ""); refreshp(); } else j = 27; /* escape */ } else if (j == 155) { if (b >= 1) b--; mvprintw(7 + editline, 0, logline_edit[editline]); mvprintw(7 + editline, b, ""); refreshp(); } else if (j == 154) { if (b < 79) { b++; } mvprintw(7 + editline, 0, logline_edit[editline]); mvprintw(7 + editline, b, ""); refreshp(); } else if ((j == 160) && (b >= 0) && (b < 28)) { // insert for (k = 28; k > b; k--) logline_edit[editline][k] = logline_edit[editline][k - 1]; logline_edit[editline][b] = ' '; mvprintw(7 + editline, 0, logline_edit[editline]); mvprintw(7 + editline, b, ""); refreshp(); } else if ((j == 160) && (b >= 29) && (b < 39)) { // insert call for (k = 39; k > b; k--) logline_edit[editline][k] = logline_edit[editline][k - 1]; logline_edit[editline][b] = ' '; mvprintw(7 + editline, 0, logline_edit[editline]); mvprintw(7 + editline, b, ""); refreshp(); } else if ((j == 160) && (b >= 54) && (b < 64)) { // insert for (k = 64; k > b; k--) logline_edit[editline][k] = logline_edit[editline][k - 1]; logline_edit[editline][b] = ' '; mvprintw(7 + editline, 0, logline_edit[editline]); mvprintw(7 + editline, b, ""); refreshp(); } else if ((j == 160) && (b >= 68) && (b < 76)) { // insert for (k = 76; k > b; k--) logline_edit[editline][k] = logline_edit[editline][k - 1]; logline_edit[editline][b] = ' '; mvprintw(7 + editline, 0, logline_edit[editline]); mvprintw(7 + editline, b, ""); refreshp(); } else if ((j == 161) && (b >= 1) && (b < 28)) { // delete for (k = b; k < 28; k++) logline_edit[editline][k] = logline_edit[editline][k + 1]; mvprintw(7 + editline, 0, logline_edit[editline]); mvprintw(7 + editline, b, ""); refreshp(); } else if ((j == 161) && (b >= 29) && (b < 39)) { // delete for (k = b; k < 39; k++) logline_edit[editline][k] = logline_edit[editline][k + 1]; mvprintw(7 + editline, 0, logline_edit[editline]); mvprintw(7 + editline, b, ""); refreshp(); } else if ((j == 161) && (b >= 68) && (b < 76)) { // delete for (k = b; k < 76; k++) logline_edit[editline][k] = logline_edit[editline][k + 1]; mvprintw(7 + editline, 0, logline_edit[editline]); mvprintw(7 + editline, b, ""); refreshp(); } else if ((j == 161) && (b >= 54) && (b < 64)) { // delete for (k = b; k < 64; k++) logline_edit[editline][k] = logline_edit[editline][k + 1]; mvprintw(7 + editline, 0, logline_edit[editline]); mvprintw(7 + editline, b, ""); refreshp(); } else if (j != 27) { if ((j >= 97) && (j <= 122)) j = j - 32; if ((j >= 32) && (j < 97)) { logline_edit[editline][b] = j; mvprintw(7 + editline, 0, logline_edit[editline]); if ((b < strlen(logline_edit[editline]) - 2) && (b < 80)) b++; mvprintw(7 + editline, b, ""); } } } attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT); mvprintw(7 + editline, 0, logline_edit[editline]); refreshp(); if ((lfile = open(logfile, O_RDWR)) < 0) { mvprintw(24, 0, "I can not find the logfile..."); refreshp(); sleep(2); } else { for (ii = 4; ii >= 0; ii--) { fstat(lfile, &statbuf); if (statbuf.st_size > 80) { rc = ftruncate(lfile, statbuf.st_size - 81); nr_qsos--; qsos[nr_qsos][0] = '\0'; fsync(lfile); } else break; } } close(lfile); ii++; while (ii < 5) { store_qso(logline_edit[ii]); ii++; } scroll_log(); stop_backgrnd_process = 0; return (0); } tlf_1.1.5/src/get_time.h0000664000175000017500000000160312072353226013276 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include void get_time(void); tlf_1.1.5/src/changefreq.c0000664000175000017500000000466212072353226013607 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "changefreq.h" void change_freq (void) { extern float freq; extern int trx_control; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; #endif int brkflg = 0; int x; if (trx_control == 0) return; curs_set(0); while (1) { freq_display(); if (outfreq == 0) { x = onechar(); switch (x) { case 152:{ //up #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (freq * 1000); #else outfreq = (int) (freq * 1000); #endif outfreq += 100; break; } case 153:{ //down #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (freq * 1000); #else outfreq = (int) (freq * 1000); #endif outfreq -= 100; break; } case 154:{ //right #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (freq * 1000); #else outfreq = (int) (freq * 1000); #endif outfreq += 20; break; } case 155:{ //left #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (freq * 1000); #else outfreq = (int) (freq * 1000); #endif outfreq -= 20; break; } case 156:{ //left #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (freq * 1000); #else outfreq = (int) (freq * 1000); #endif outfreq += 500; break; } case 157:{ //left #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (freq * 1000); #else outfreq = (int) (freq * 1000); #endif outfreq -= 500; break; } default:{ brkflg = 1; break; } } } if (brkflg == 1) { brkflg = 0; break; } freq_display(); time_update(); usleep(100000); } curs_set(1); } tlf_1.1.5/src/show_help.c0000664000175000017500000001317512072353226013473 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Show help file * *--------------------------------------------------------------*/ #include "show_help.h" int show_help(void) { extern char backgrnd_str[]; char helpinfo[9][85]; int i, j; char printbuffer[160]; strcpy (helpinfo[0], "SPOT : Last spots TONE : Sidetone(0=OFF) + : CQ/S&P "); strcpy (helpinfo[1], "MAP : Band spots EDIT : Edit Log - : Delete last qso "); strcpy (helpinfo[2], "CLOFF : Cluster OFF VIEW : View Log ; : Include note in log"); strcpy (helpinfo[3], "CLUSTER : Cluster info Ctl-k ,: Keyboard SPACE : Check dupe "); strcpy (helpinfo[4], "SHORT : Short exchange TAB : CALL/EXCHANGE . DEMODE : Toggle DE "); strcpy (helpinfo[5], "LONG : Long Exchange ESCAPE : Leave mode CONTEST : Contest mode "); strcpy (helpinfo[6], "MESSAGE : Change Messages F1-F11 : Play Message FILTER : Filter ON/OFF "); strcpy (helpinfo[7], "LIST : List Messages F12 : Auto CQ SCORE : Score window "); strcpy (helpinfo[8], "CHECK : Call Check ON NOCHECK: Call Check OFF _ (Und.): Send prev. nr. "); nicebox(13, 0, 9, 78, "Help(1)"); for ( i = 0 ; i <= 8; i++){ printbuffer[0] = '\0'; strncat (printbuffer, helpinfo[i], 78); strncat (printbuffer, backgrnd_str, 4); printbuffer[78] = '\0'; attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT ); mvprintw (i + 14, 1, "%s", printbuffer); } mvvline (14, 27, ACS_VLINE, 9); mvvline (14, 54, ACS_VLINE, 9); refreshp(); attroff(A_STANDOUT); mvprintw(23, 30, "Press any key for more"); i = onechar(); strcpy (helpinfo[0], "MESSAGE : Change Messages F1-F11 : Play Message FILTER : Filter ON/OFF "); strcpy (helpinfo[1], "LIST : List Messages F12 : Auto CQ SCORE : Score window "); strcpy (helpinfo[2], "CHECK : Call Check ON NOCHECK: Call Check OFF _ (Und.): Send prev. nr. "); strcpy (helpinfo[3], ", : keyboard on @ : Edit last qso = : Cfm last call "); strcpy (helpinfo[4], "\\ : log qso w/o CW ZONE : Show Zones CTY : Show Countries "); strcpy (helpinfo[5], "TRX : trxcontrol on/off RIT : RIT clear on/off Ctrl-g : Grab DX spot "); strcpy (helpinfo[6], "14011 : fast qsy # : TRX -> MEM Ctrl-p : Show Propagation "); strcpy (helpinfo[7], "CWMODE : CW SSB : SSB DIGIMODE: Digital modes "); strcpy (helpinfo[8], "MODE : CW/SSB/DIG EXIT : exit program SET : Set parameters "); nicebox(13, 0, 9, 78, "Help(2)"); for ( i = 0 ; i <= 8; i++){ printbuffer[0] = '\0'; strncat (printbuffer, helpinfo[i], 78); strncat (printbuffer, backgrnd_str, 4); printbuffer[78] = '\0'; attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT ); mvprintw (i + 14, 1, "%s", printbuffer); } mvvline (14, 27, ACS_VLINE, 9); mvvline (14, 54, ACS_VLINE, 9); refreshp(); attroff(A_STANDOUT); mvprintw(23, 30, "Press any key for more"); i = onechar(); strcpy (helpinfo[0], " ==== CT compatible commands ==== "); strcpy (helpinfo[1],"Alt-A : Announce window Alt-C : Countries Alt-G : Talk (GAB) "); strcpy (helpinfo[2], "Alt-H : Help Alt-I : Talk window Alt-J : TX freq. window "); strcpy (helpinfo[3], "Alt-K : Keyboard on/off Alt-M : Multipliers Alt-N : Include note in log"); strcpy (helpinfo[4], "Alt-Q : Quit tlf Alt-R : Rate display Alt-S : Summary display "); strcpy (helpinfo[5], "Alt-V : Vary CW speed Alt-X : Exit tlf Alt-Z : Zones Display "); strcpy (helpinfo[6], "Alt-, : Bandmap Insert : Send F2 + : Send F3 + Log "); strcpy (helpinfo[7], "F1 : Send CQ F2 : Send Exchange F3 : Send QRZ msg "); strcpy (helpinfo[8], "F4 : MyCall F5 : HisCall F6 : CL? "); nicebox(13, 0, 9, 78, "Help(3, CT cmds)"); for ( i = 0 ; i <= 8; i++){ printbuffer[0] = '\0'; strncat (printbuffer, helpinfo[i], 78); strncat (printbuffer, backgrnd_str, 4); printbuffer[78] = '\0'; attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT ); mvprintw (i + 14, 1, "%s", printbuffer); } mvvline (14, 27, ACS_VLINE, 9); mvvline (14, 54, ACS_VLINE, 9); refreshp(); attroff(A_STANDOUT); mvprintw(23, 30, "Press any key to return to tlf"); i = onechar(); clear_display(); attron(COLOR_PAIR(7) | A_STANDOUT); for (j = 13 ; j <= 23 ; j++){ mvprintw(j, 0, backgrnd_str); } refreshp(); return(0); } tlf_1.1.5/src/background_process.c0000664000175000017500000001654712072353226015366 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2011 Thomas Beierlein * * 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 Library 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. */ #include "background_process.h" #include "set_tone.h" #include "rtty.h" extern int stop_backgrnd_process; extern int this_second; extern int cluster; extern int packetinterface; extern int lan_active; extern char lan_message[]; extern char lan_recv_message[]; extern int recv_error; extern char thisnode; extern int lanspotflg; extern char talkarray[5][62]; extern float node_frequencies[MAXNODES]; extern int qsonum; extern char qsonrstr[5]; extern int lanqsos; extern int highqsonr; extern char zone_export[]; extern long lantime; extern long timecorr; extern int timeoffset; extern char call[]; extern int trxmode; extern int keyerport; int background_process(void) { extern int landebug; extern struct tm *time_ptr; static int i, t; static char prmessage[256]; static int lantimesync = 0; int n; char debugbuffer[160]; FILE *fp; i = 1; while (i) { while (stop_backgrnd_process == 1) { sleep(1); } usleep(10000); if (packetinterface != 0) { receive_packet(); } if (trxmode == DIGIMODE && (keyerport == MFJ1278_KEYER || keyerport == GMFSK)) rx_rtty(); if (stop_backgrnd_process == 0) { write_keyer(); cw_simulator(); } if (lan_active == 1) { if (lan_message[0] == '\0') { if (lan_recv() < 0) { recv_error++; } else { lan_message[strlen(lan_message) - 1] = '\0'; } } if (landebug == 1) { if ((fp = fopen("debuglog", "a")) == NULL) { fprintf(stdout, "store_qso.c: Error opening debug file.\n"); } get_time(); strftime(debugbuffer, 80, "%H:%M:%S-", time_ptr); if (strlen(lan_message) > 2) { strcat(debugbuffer, lan_message); strcat(debugbuffer, "\n"); fputs(debugbuffer, fp); } debugbuffer[0] = '\0'; fclose(fp); } if ((*lan_message != '\0') && (lan_message[0] == thisnode)) { mvprintw(24, 0, "Warning: NODE ID CONFLICT ?! You should use another ID! "); refreshp(); sleep(5); } if ((*lan_message != '\0') && (lan_message[0] != thisnode) && (stop_backgrnd_process != 1)) { switch (lan_message[1]) { case LOGENTRY: log_to_disk(true); break; case CLUSTERMSG: strncpy(prmessage, lan_message + 2, 80); if (strstr(prmessage, call) != NULL) // alert for cluster messages { mvprintw(24, 0, " "); mvprintw(24, 0, "%s", prmessage); refreshp(); } addtext(prmessage); break; case TLFSPOT: strncpy(prmessage, lan_message + 2, 80); lanspotflg = 1; addtext(prmessage); lanspotflg = 0; break; case TLFMSG: for (t = 0; t < 4; t++) strcpy(talkarray[t], talkarray[t + 1]); talkarray[4][0] = lan_message[0]; talkarray[4][1] = ':'; talkarray[4][2] = '\0'; strncat(talkarray[4], lan_message + 2, 60); mvprintw(24, 0, " "); mvprintw(24, 0, " MSG from %s", talkarray[4]); refreshp(); break; case FREQMSG: if ((lan_message[0] >= 'A') && (lan_message[0] <= 'A' + MAXNODES)) { node_frequencies[lan_message[0] - 'A'] = atof(lan_message + 2); break; } case INCQSONUM: n = atoi(lan_message + 2); if (highqsonr < n) highqsonr = n; if ((qsonum <= n) && (n > 0)) { qsonum = highqsonr + 1; qsonr_to_str(); } lan_message[0] = '\0'; case TIMESYNC: if ((lan_message[0] >= 'A') && (lan_message[0] <= 'A' + MAXNODES)) { lantime = atoi(lan_message + 2); if (lantimesync == 1) timecorr = ((4 * timecorr) + lantime - (time(0) + (timeoffset * 3600))) / 5; else { timecorr = lantime - (time(0) + (timeoffset * 3600)); lantimesync = 1; } break; } } lan_message[0] = '\0'; lan_message[1] = '\0'; } } gettxinfo(); /* get freq info from TRX */ } return (0); } int cw_simulator(void) { extern char callmasterarray[MAX_CALLMASTER][14]; extern int simulator; extern int simulator_mode; extern char buffer[]; extern int simulator_seed; extern char simulator_tone[5]; extern char tonestr[5]; extern char tonecpy[5]; extern int system_secs; extern int this_second; static int callnumber; char callcpy[80]; static int x; char datacpy[160]; if (simulator == 0) return (-1); if (simulator_mode == 1) { attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(0, 3, "Sim"); refreshp(); strcpy(tonecpy, tonestr); switch (this_second) { case 48: strcpy(simulator_tone, "625"); break; case 49: strcpy(simulator_tone, "800"); break; case 50: strcpy(simulator_tone, "650"); break; case 51: strcpy(simulator_tone, "750"); break; case 52: strcpy(simulator_tone, "700"); break; case 53: strcpy(simulator_tone, "725"); break; case 54: strcpy(simulator_tone, "675"); break; case 55: strcpy(simulator_tone, "775"); break; case 56: strcpy(simulator_tone, "600"); break; case 57: strcpy(simulator_tone, "640"); break; default: strcpy(simulator_tone, "750"); break; } strcpy(tonestr, simulator_tone); write_tone(); callnumber = callnumber + simulator_seed + system_secs - (60 * (int) (system_secs / 60)); if (callnumber >= 27000) callnumber -= 27000; strcpy(buffer, callmasterarray[callnumber]); sendbuf(); write_keyer(); buffer[0] = '\0'; simulator_mode = 0; strcpy(tonestr, tonecpy); write_tone(); } if (simulator_mode == 2) { strcpy(tonecpy, tonestr); strcpy(tonestr, simulator_tone); write_tone(); strcpy(callcpy, callmasterarray[callnumber]); x = getctydata(callcpy); buffer[0] = '\0'; strcat(buffer, "TU 5NN "); strncpy(datacpy, zone_export, 2); strncat(buffer, datacpy, 2); sendbuf(); buffer[0] = '\0'; simulator_mode = 0; write_keyer(); strcpy(tonestr, tonecpy); write_tone(); } if (simulator_mode == 3) { strcpy(tonecpy, tonestr); strcpy(tonestr, simulator_tone); write_tone(); strcpy(callcpy, callmasterarray[callnumber]); x = getctydata(callcpy); buffer[0] = '\0'; strcat(buffer, "DE "); strcat(buffer, callmasterarray[callnumber]); strcat(buffer, " TU 5NN "); strncpy(datacpy, zone_export, 2); strncat(buffer, datacpy, 2); sendbuf(); buffer[0] = '\0'; simulator_mode = 0; write_keyer(); strcpy(tonestr, tonecpy); write_tone(); } return (0); } tlf_1.1.5/src/getmessages.h0000664000175000017500000000217712072353226014017 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include "getctydata.h" #include "get_time.h" #include "checklogfile.h" #if defined (TLF_H) /* do nothing, already defined */ #else #define TLF_H #include "tlf.h" #endif int getmessages(void); tlf_1.1.5/src/netkeyer.c0000664000175000017500000001121312072353226013320 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include #include #include #include #include #include "netkeyer.h" #include "tlf.h" int netkeyer_port = 6789; char netkeyer_hostaddress[16] = "127.0.0.1"; int socket_descriptor; struct sockaddr_in address; struct hostent *hostbyname; int netkeyer_init(void) { /* Translate a host name to IP address */ hostbyname = gethostbyname(netkeyer_hostaddress); if (hostbyname == NULL) { perror("gethostbyname failed"); return (-1); } /* Initialize socket address structure for Internet Protocols The address comes from the datastructure returned by gethostbyname() */ bzero(&address, sizeof(address)); /* empty data structure */ address.sin_family = AF_INET; memcpy(&address.sin_addr.s_addr, hostbyname->h_addr, sizeof(address.sin_addr.s_addr)); address.sin_port = htons(netkeyer_port); /* Create a UDP socket */ socket_descriptor = socket(AF_INET, SOCK_DGRAM, 0); if (socket_descriptor == -1) { perror("socket call failed"); return (-1); } return (0); } /*-------------------------end netkeyer_init---------------*/ int netkeyer_close(void) { int close_rc; close_rc = close(socket_descriptor); if (close_rc == -1) { perror("close call failed"); return (-1); } return (0); } /*-------------------------end netkeyer_close---------------*/ int netkeyer(int cw_op, char *cwmessage) { char buf[80] = ""; ssize_t sendto_rc = 0; switch (cw_op) { case K_RESET: buf[0] = 27; sprintf(buf + 1, "0"); // reset break; case K_MESSAGE: sprintf(buf, "%s", cwmessage); // cw message break; case K_SPEED: buf[0] = 27; sprintf(buf + 1, "2"); // speed sprintf(buf + 2, "%s", cwmessage); // cw message break; case K_TONE: // tone buf[0] = 27; sprintf(buf + 1, "3"); sprintf(buf + 2, "%s", cwmessage); // cw message break; case K_ABORT: // message abort buf[0] = 27; sprintf(buf + 1, "4"); break; case K_STOP: // keyer daemon stop buf[0] = 27; sprintf(buf + 1, "5"); break; case K_WORDMODE: // non-interruptable buf[0] = 27; sprintf(buf + 1, "6"); break; case K_WEIGHT: // set weight buf[0] = 27; sprintf(buf + 1, "7"); sprintf(buf + 2, "%s", cwmessage); // cw message break; case K_DEVICE: // set device buf[0] = 27; sprintf(buf + 1, "8"); sprintf(buf + 2, "%s", cwmessage); // cw message break; case K_ADDRESS: // set device buf[0] = 27; sprintf(buf + 1, "9"); sprintf(buf + 2, "%s", cwmessage); break; case K_PTT: // PTT on/off buf[0] = 27; sprintf(buf + 1, "a"); sprintf(buf + 2, "%s", cwmessage); break; case K_SET14: // set pin 14 of lp port buf[0] = 27; sprintf(buf + 1, "b"); sprintf(buf + 2, "%s", cwmessage); break; case K_TUNE: // tune buf[0] = 27; sprintf(buf + 1, "c"); sprintf(buf + 2, "%s", cwmessage); break; case K_TOD: // set Turn On Delay (TXDELAY) buf[0] = 27; sprintf(buf + 1, "d"); sprintf(buf + 2, "%s", cwmessage); break; case K_SWITCH: // set band switch output buf[0] = 27; sprintf(buf + 1, "e"); sprintf(buf + 2, "%s", cwmessage); break; case K_SIDETONE: // set sidetone output to sound card buf[0] = 27; sprintf(buf + 1, "f"); sprintf(buf + 2, "s"); break; case K_STVOLUME: // set sound card output volume buf[0] = 27; sprintf(buf + 1, "g"); sprintf(buf + 2, "%s", cwmessage); break; default: buf[0] = '\0'; } if (buf[0] != '\0') { sendto_rc = sendto(socket_descriptor, buf, strlen(buf) + 1, 0, (struct sockaddr *) &address, sizeof(address)); } buf[0] = '\0'; cw_op = K_RESET; if (sendto_rc == -1) { mvprintw(24, 0, "Keyer send failed...!"); refreshp(); sleep(2); return (-1); } return (0); } tlf_1.1.5/src/background_process.h0000664000175000017500000000213712072353226015361 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "time_update.h" #include "write_keyer.h" #include "sendbuf.h" #include "tlf.h" #include "set_tone.h" #include "lancode.h" #include "splitscreen.h" #include "log_to_disk.h" #include "getctydata.h" int background_process(void); int cw_simulator(void); tlf_1.1.5/src/initial_exchange.h0000664000175000017500000000352312072353226014777 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 -2004 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------------------------ * initial exchange.h *-------------------------------------------------------------------------------*/ #include "startmsg.h" #include "tlf.h" #define MAX_CALL_LENGTH 13 #define MAX_IE_LENGTH 30 /** Dataelement for one initial entry item */ struct ie_list { struct ie_list *next; /**< pointer to next element */ char call[MAX_CALL_LENGTH+1]; /**< call of the station */ char exchange [MAX_IE_LENGTH+1]; /**< initial exchange field */ }; /** * Make linked list from initial exchange file. * File must be in CALL,EXCHANGE format. * Returns pointer to the top of the list. */ struct ie_list *make_ie_list (char *file); /** * Free linked list of all allocated entries pointed * to by 'head'. */ void free_ie_list(struct ie_list *head); /** * Print linked list from initial exchange file. * File must be in CALL,EXCHANGE format. * Returns 0 if o.k. */ int test_ie_list (struct ie_list *example_ie_list); tlf_1.1.5/src/getsummary.c0000664000175000017500000001726212072353226013701 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * write summary file * *--------------------------------------------------------------*/ #include "getsummary.h" extern int cluster; extern int showscore_flag; extern char call[]; extern int wpx; extern int total; extern int nr_of_px; extern int cqww; extern int arrldx_usa; extern int totalmults; extern char exchange[]; extern int arrlss; extern int serial_section_mult; extern int multarray_nr; int getsummary(void) { char buffer[80]; FILE *fp; cluster = NOCLUSTER; showscore_flag = 0; if ((fp = fopen("./header", "w")) == NULL) { fprintf(stdout, "Error opening header file.\n"); return (1); } fputs("START-OF-LOG: 2.0\n", fp); attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "Your exchange (e.g. State, province, age etc... (# if serial number)): "); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); strncpy(exchange, buffer, 10); attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "ARRL-SECTION:"); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); strcat(buffer, "\n"); if (strncmp(buffer, "none", 4) != 0) { fputs("ARRL-SECTION: ", fp); fputs(buffer, fp); } fputs("CALLSIGN: ", fp); fputs(call, fp); fputs("CATEGORY: ", fp); attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "Cat.:(SINGLE-OP, SINGLE-OP-ASSISTED,MULTI-ONE,MULTI-TWO,MULTI-MULTI,CHECKLOG)"); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); strcat(buffer, " "); fputs(buffer, fp); attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "Bands:(ALL,160M,80M,40M,20M,15M,10M)"); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); strcat(buffer, " "); fputs(buffer, fp); attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "POWER: (HIGH,LOW,QRP)"); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); strcat(buffer, " "); fputs(buffer, fp); attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "Mode: (CW,SSB,MIXED)"); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); strcat(buffer, "\n"); fputs(buffer, fp); fputs("CATEGORY-OVERLAY: ", fp); attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "Overlay: (ROOKIE,BAND-LIMITED,TB-WIRES,OVER-50,HQ)"); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); strcat(buffer, "\n"); fputs(buffer, fp); if (wpx == 1) sprintf(buffer, "%d\n", total * (nr_of_px)); if (cqww == 1) sprintf(buffer, "%d\n", total * totalmults); if (arrldx_usa == 1) sprintf(buffer, "%d\n", total * totalmults); if (arrlss == 1) sprintf(buffer, "%d\n", multarray_nr * total); if (serial_section_mult == 1) sprintf(buffer, "%d\n", totalmults * total); fputs("CLAIMED-SCORE: ", fp); fputs(buffer, fp); fputs("CLUB: ", fp); attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "Club: "); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); strcat(buffer, "\n"); fputs(buffer, fp); fputs("CONTEST: ", fp); attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "Contest: (CQ-WW-CW/SSB, CQ-WPX-CW/SSB, ARRL-DX-CW/SSB)"); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); strcat(buffer, "\n"); fputs(buffer, fp); // LU4HKN mod. strcpy(buffer, "CREATED-BY: tlf-"); strcat(buffer, VERSION); strcat(buffer, "\n"); fputs(buffer, fp); // end attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "Name: "); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); strcat(buffer, "\n"); fputs("NAME: ", fp); fputs(buffer, fp); attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "ADDRESS: "); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); strcat(buffer, "\n"); fputs("ADDRESS: ", fp); fputs(buffer, fp); attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "ADDRESS(2): "); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); strcat(buffer, "\n"); fputs("ADDRESS: ", fp); fputs(buffer, fp); attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "ADDRESS(3): "); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); strcat(buffer, "\n"); fputs("ADDRESS: ", fp); fputs(buffer, fp); attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "Operators: "); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); strcat(buffer, "\n"); fputs("OPERATORS: ", fp); fputs(buffer, fp); attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "SOAPBOX: (use any text editor to include more lines)"); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); strcat(buffer, "\n"); fputs("SOAPBOX: ", fp); fputs(buffer, fp); fclose(fp); return (0); } tlf_1.1.5/src/makelogline.c0000664000175000017500000002426712072353226013776 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004-2005 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Makelogline takes care of formatting the log * items *--------------------------------------------------------------*/ #include "globalvars.h" #include "makelogline.h" #include "dxcc.h" #include /** Construct a new line to add to the logfile. * * The structure of a logline entry is as follows: * - each logline contains exactly 80 characters * - it consists of 2 parts * | fixed part one (54 chars) | contest dependent part 2 (26 chars) | * - fixed part:\n * \verbatim * 0 1 2 3 4 5 * 123456789012345678901234567890123456789012345678901234 * bndmod dd-mmm-yy hh:mm qso. call.......... rst rst * nr.. his my.\endverbatim * Alternatively in 'qso' or 'dxped' mode if 'LOGFREQUENCY' is set * there is the khz part of the working frequnecy instead of * the qso number: * \verbatim * 0 1 2 3 4 5 * 123456789012345678901234567890123456789012345678901234 * bndmod dd-mmm-yy hh:mm khz call.......... rst rst * his my.\endverbatim * - contest dependent part (list may not complete):\n * - QSO mode * \verbatim * 5 6 7 8 * 56789012345678901234567890 * comment................\endverbatim * - wpx * \verbatim * 5 6 7 8 * 56789012345678901234567890 * serialnr pfx pp\endverbatim * pfx - new prefix, pp -points * - cqww * \verbatim * 5 6 7 8 * 56789012345678901234567890 * hiszone pfx zn pp\endverbatim * zn - new zone * - normal contest * \verbatim * 5 6 7 8 * 56789012345678901234567890 * exchange mult pp\endverbatim * mult - multi (cty, province, ...) * - arllss * \verbatim * 5 6 7 8 * 56789012345678901234567890 * nr.. p cc sctn pp\endverbatim * nr - serial exchange, p - precedent, cc - check, sctn - section */ void makelogline(void) { extern int logfrequency; extern int trx_control; extern char whichcontest[]; extern float freq; extern int points; static char time_buf[80]; char fillspaces[50] = " "; static int lastbandinx = 0; char grid[7] = ""; int sr_nr = 0; int i; char khz[5] = " 000"; int fnr = 0; int new_pfx; /* first fixed (contest independent) part */ logline4[0] = '\0'; qsonr_to_str(); get_time(); strftime(time_buf, 60, " %d-%b-%y %H:%M ", time_ptr); if (wpx == 1) { // 10 minute timer if (lastbandinx != bandinx) { lastbandinx = bandinx; minute_timer = 600; // 10 minutes } } strcat(logline4, band[bandinx]); if (trxmode == CWMODE) strcat(logline4, "CW "); else if (trxmode == SSBMODE) strcat(logline4, "SSB"); else strcat(logline4, "DIG"); strcat(logline4, time_buf); if (logfrequency == 1 && trx_control == 1 && ((strcmp(whichcontest, "qso") == 0) || (strcmp(whichcontest, "dxped") == 0))) { fnr = (int) freq; fnr = fnr % 1000; sprintf(khz, " %3d", fnr); // show freq. strcat(logline4, khz); } else { if ((lan_active == 1) && (exchange_serial == 1)) { // show qso nr strcat(logline4, lastqsonr); lastqsonr[0] = '\0'; } else strcat(logline4, qsonrstr); } if (lan_active == 1 && cqwwm2 == 1) { logline4[27] = thisnode; // set node ID... logline4[28] = '\0'; strcat(logline4, " "); } else strcat(logline4, " "); strcat(logline4, hiscall); /* 29 */ lastcall[0] = '\0'; /* remember for edit */ strcat(lastcall, hiscall); strncat(logline4, fillspaces, (15 - strlen(hiscall))); /* 44 */ if ((trxmode == CWMODE) || (trxmode == DIGIMODE)) { his_rst[2] = '9'; my_rst[2] = '9'; } else { his_rst[2] = ' '; my_rst[2] = ' '; } strcat(logline4, his_rst); /* till 54 */ strcat(logline4, " "); strcat(logline4, my_rst); strcat(logline4, " "); his_rst[1] = '9'; /* restore RST to 599 */ my_rst[1] = '9'; /* second (contest dependent part of logline */ if (arrlss == 1) { // ----------------------------arrlss---------------- strcat(logline4, ssexchange); section[0] = '\0'; } else if (serial_section_mult == 1) { //-------------------------serial_section--------------- sprintf(logline4 + 54, "%s", comment); section[0] = '\0'; } else if (serial_grid4_mult == 1) { //-------------------------serial_grid 4 characters--------------- sr_nr = atoi(comment); for (i = 0; i < 11; i++) { if (comment[i] > 64 && comment[i] < 91) { break; } } strncpy(grid, comment + i, 6); grid[6] = '\0'; sprintf(logline4 + 54, "%4.0d %s", sr_nr, grid); section[4] = '\0'; } else if (sectn_mult == 1) { //-------------------------section only--------------- sprintf(logline4 + 54, "%s", section); section[0] = '\0'; } else if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) { //-------------------------cqww---------------- /* if (strlen(zone_fix) > 1) { strcat (logline4, zone_fix); } else strcat (logline4, zone_export); */ strcat(logline4, comment); } else { strcat(logline4, comment); } //----------------------end cqww --------------- lastcomment[0] = '\0'; strcat(lastcomment, comment); /* remember for edit */ strncat(logline4, fillspaces, (77 - strlen(logline4))); if (contest == 1) logline4[68] = '\0'; /* If WPX * -> add prefix to prefixes_worked and include new pfx in log line */ new_pfx = (add_pfx(pxstr) == 0); /* add prefix, remember if new */ if (wpx ==1) { /* wpx */ if (new_pfx) { strcat(logline4, pxstr); strncat(logline4, fillspaces, (5 - strlen(pxstr))); } else strncat(logline4, fillspaces, 5); } if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) { /* ------------cqww --------------------- */ logline4[68] = '\0'; if (addcty != 0) { strcat(logline4, dxcc_by_index(addcty) -> pfx); strncat(logline4, fillspaces, 72 - strlen(logline4)); addcty = 0; } else { strcat(logline4, " "); } if (addzone != 0) { /* if (strlen(zone_fix) > 1) { strncat (logline4, zone_fix, 2); } else strncat (logline4, zone_export, 2); */ if (strlen(comment) < 2) { strcat(logline4, "0"); strncat(logline4, comment, 1); } else strncat(logline4, comment, 2); strcat(logline4, " "); addzone = 0; } else { strcat(logline4, " "); zone_fix[0] = '\0'; } //----------------------------------end cqww----------------- } else if (arrldx_usa == 1) { logline4[68] = '\0'; if (addcty != 0) { strcat(logline4, dxcc_by_index(addcty) -> pfx); strncat(logline4, fillspaces, 77 - strlen(logline4)); addcty = 0; } else strncat(logline4, fillspaces, 9); } else if ((dx_arrlsections == 1) && (countrynr != w_cty) && (countrynr != ve_cty)) { logline4[68] = '\0'; if (addcty != 0) { strcat(logline4, dxcc_by_index(addcty) -> pfx); strncat(logline4, fillspaces, 77 - strlen(logline4)); addcty = 0; } else { strncat(logline4, fillspaces, 9); } } else if ((wysiwyg_multi == 1) || (serial_section_mult == 1) || (sectn_mult == 1) || (serial_grid4_mult)) { logline4[68] = '\0'; if (shownewmult >= 0) { strcat(logline4, mults[shownewmult]); strncat(logline4, " |", 77 - strlen(logline4)); shownewmult = -1; } else strncat(logline4, fillspaces, 9); } else if ((dx_arrlsections == 1) && ((countrynr == w_cty) || (countrynr == ve_cty))) { logline4[68] = '\0'; if (shownewmult >= 0) { strcat(logline4, mults[shownewmult]); strncat(logline4, " |", 77 - strlen(logline4)); shownewmult = -1; } else strncat(logline4, fillspaces, 9); } else if (pacc_pa_flg == 1) { logline4[68] = '\0'; if (addcty != 0) { strcat(logline4, dxcc_by_index(addcty) -> pfx); strncat(logline4, fillspaces, 77 - strlen(logline4)); addcty = 0; } else if (addcallarea == 1) { strcat(logline4, pxstr); if (strlen(pxstr) == 2) { strcat(logline4, " "); } strcat(logline4, " "); addcallarea = 0; strcat(logline4, " "); } else strncat(logline4, fillspaces, 9); } else if ((universal == 1) && ((country_mult == 1) || (dx_arrlsections == 1))) { logline4[68] = '\0'; if (addcty != 0) { strcat(logline4, dxcc_by_index(addcty) -> pfx); strncat(logline4, fillspaces, 77 - strlen(logline4)); addcty = 0; } else strncat(logline4, fillspaces, 9); } else if (wpx == 1) { strncat(logline4, fillspaces, 4); } else if (arrl_fd == 1) { strncat(logline4, fillspaces, 4); } else if ((one_point == 1) || (two_point == 1) || (three_point == 1)) { strncat(logline4, fillspaces, 4); } else { strncat(logline4, fillspaces, 4); } score(); /* update qso's per band */ if (contest == 1) { if (dxped != 1) { /* no points for dxpedition */ sprintf(logline4 + 76, "%2d", points); } else { sprintf(logline4 + 76, " "); } } else { sprintf(logline4 + 76, " "); } assert(strlen(logline4) <= 80); strncat(logline4, fillspaces, 80 - strlen(logline4)); } tlf_1.1.5/src/gettxinfo.c0000664000175000017500000001602012072353226013502 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * get trx info * *--------------------------------------------------------------*/ #include "gettxinfo.h" #include #include "sendqrg.h" int gettxinfo(void) { #ifdef HAVE_LIBHAMLIB extern RIG *my_rig; extern freq_t rigfreq; extern freq_t outfreq; extern int cw_bandwidth; #else extern float rigfreq; extern int outfreq; #endif extern float freq; extern int bandinx; extern float bandfrequency[]; extern int rignumber; extern int trx_control; extern int trxmode; int retval = 0; int qrg = 0; char qrg_string[8]; static int oldbandinx; void send_bandswitch(int freq); if (trx_control != 1) return (0); if (outfreq == 0) { #ifdef HAVE_LIBHAMLIB // Code for Hamlib interface if (rignumber < 2000) retval = rig_get_freq(my_rig, RIG_VFO_CURR, &rigfreq); else rigfreq = native_rig_get_freq(rignumber); //ORION #else rigfreq = (float) native_rig_get_freq(rignumber); //ORION #endif if (rigfreq > 1800.0) { freq = rigfreq / 1000.0; qrg = (int) rigfreq / 1000; } qrg_string[7] = '\0'; switch (qrg) { case 1800 ... 2000:{ bandinx = 0; bandfrequency[bandinx] = freq; break; } case 3500 ... 4000:{ bandinx = 1; bandfrequency[bandinx] = freq; break; } case 7000 ... 7300:{ bandinx = 2; bandfrequency[bandinx] = freq; break; } case 10100 ... 10150:{ bandinx = 3; bandfrequency[bandinx] = freq; break; } case 14000 ... 14350:{ bandinx = 4; bandfrequency[bandinx] = freq; break; } case 18068 ... 18168:{ bandinx = 5; bandfrequency[bandinx] = freq; break; } case 21000 ... 21450:{ bandinx = 6; bandfrequency[bandinx] = freq; break; } case 24890 ... 24990:{ bandinx = 7; bandfrequency[bandinx] = freq; break; } case 28000 ... 29700:{ bandinx = 8; bandfrequency[bandinx] = freq; break; } } if (bandinx != oldbandinx) // band change on trx { oldbandinx = bandinx; send_bandswitch((int) freq); if (rignumber < 2000) { #ifdef HAVE_LIBHAMLIB // Code for Hamlib interface if (trxmode == SSBMODE) { if (freq < 14000.0) retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_LSB, RIG_PASSBAND_NORMAL); else retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_USB, RIG_PASSBAND_NORMAL); if (retval != RIG_OK) { mvprintw(24, 0, "Problem with rig link: set mode!\n"); refreshp(); sleep(1); } } else if (trxmode == DIGIMODE) { retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_LSB, RIG_PASSBAND_NORMAL); if (retval != RIG_OK) { mvprintw(24, 0, "Problem with rig link: set mode!\n"); refreshp(); sleep(1); } } else { // retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_CW, RIG_PASSBAND_NORMAL); if (cw_bandwidth == 0) { retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_CW, RIG_PASSBAND_NORMAL); } else { retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_CW, cw_bandwidth); } if (retval != RIG_OK) { mvprintw(24, 0, "Problem with rig link: set mode!\n"); refreshp(); sleep(1); } } #endif } else { // native rig driver if (trxmode == SSBMODE) { if (freq < 14000.0) retval = native_rig_set_mode(rignumber, N_RIGMODE_LSB); else retval = native_rig_set_mode(rignumber, N_RIGMODE_USB); if (retval != 0) { mvprintw(24, 0, "Problem with rig link: set mode!\n"); refreshp(); sleep(1); } } else if (trxmode == DIGIMODE) { retval = native_rig_set_mode(rignumber, N_RIGMODE_LSB); if (retval != 0) { mvprintw(24, 0, "Problem with rig link: set mode!\n"); refreshp(); sleep(1); } } else { retval = native_rig_set_mode(rignumber, N_RIGMODE_CW); if (retval != 0) { mvprintw(24, 0, "Problem with rig link: set mode!\n"); refreshp(); sleep(1); } } } } } else if (outfreq == SETCWMODE) { if (rignumber < 2000) { #ifdef HAVE_LIBHAMLIB // Code for Hamlib interface if (cw_bandwidth == 0) { retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_CW, RIG_PASSBAND_NORMAL); } else { retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_CW, cw_bandwidth); } #endif } else { retval = native_rig_set_mode(rignumber, N_RIGMODE_CW); } if (retval != 0) { mvprintw(24, 0, "Problem with rig link!\n"); refreshp(); sleep(1); } outfreq = 0; } else if (outfreq == SETSSBMODE) { if (rignumber < 2000) { #ifdef HAVE_LIBHAMLIB // Code for Hamlib interface if (freq > 13999.9) retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_USB, RIG_PASSBAND_NORMAL); else retval = rig_set_mode(my_rig, RIG_VFO_CURR, RIG_MODE_LSB, RIG_PASSBAND_NORMAL); if (retval != RIG_OK) { mvprintw(24, 0, "Problem with rig link!\n"); refreshp(); sleep(1); } #endif } else { if (freq > 13999.9) retval = native_rig_set_mode(rignumber, N_RIGMODE_USB); else retval = native_rig_set_mode(rignumber, N_RIGMODE_LSB); if (retval != 0) { mvprintw(24, 0, "Problem with rig link!\n"); refreshp(); sleep(1); } } outfreq = 0; } else if (outfreq == RESETRIT) { if (rignumber < 2000) { #ifdef HAVE_LIBHAMLIB // Code for Hamlib interface retval = rig_set_rit(my_rig, RIG_VFO_CURR, 0); if (retval != RIG_OK) { mvprintw(24, 0, "Problem with rig link!\n"); refreshp(); sleep(1); } #endif } else native_rig_reset_rit(rignumber); outfreq = 0; } else { if (rignumber < 2000) { #ifdef HAVE_LIBHAMLIB // Code for Hamlib interface retval = rig_set_freq(my_rig, RIG_VFO_CURR, outfreq); if (retval != RIG_OK) { mvprintw(24, 0, "Problem with rig link: set frequency!\n"); refreshp(); sleep(1); } #endif } else retval = native_rig_set_freq(rignumber, outfreq); if (retval != 0) { mvprintw(24, 0, "Problem with rig link: set frequency!\n"); refreshp(); sleep(1); } outfreq = 0; } return (0); } tlf_1.1.5/src/paccdx.h0000664000175000017500000000210712072353226012743 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" #include "getpx.h" #define W_CALL 0 #define VE_CALL 1 #define ZL_CALL 2 #define JA_CALL 3 #define PY_CALL 4 #define CE_CALL 5 #define LU_CALL 6 #define VK_CALL 7 #define ZS_CALL 8 #define UA9_CALL 9 int pacc_pa(void); tlf_1.1.5/src/showinfo.c0000664000175000017500000000617612072353226013342 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * * Make info string for lower status line * x - countrynumber *--------------------------------------------------------------*/ /** Show infos for selected country on bottom of screen * * Prepares info string for the selected country and shows it on the * bottom line of the screen. * * /param x Country number */ #include "showinfo.h" #include "dxcc.h" int showinfo(int x) { extern int use_rxvt; extern char cqzone[]; extern char ituzone[]; extern char C_DEST_Lat[]; extern char C_DEST_Long[]; extern double bearing; extern double range; extern int timeoffset; extern int timecorr; extern char itustr[]; extern int mycountrynr; int cury, curx; char pxstr[16]; char countrystr[26]; char zonestr[3]; char contstr[3] = ""; char timebuff[80]; dxcc_data *dx; double d; time_t now; struct tm *ptr1; dx = dxcc_by_index(x); strcpy(pxstr, dx->pfx); strcpy(countrystr, dx->countryname); /* country */ if (strlen(cqzone) < 2) { sprintf(zonestr, "%02d", dx->cq); /* cqzone */ strcpy(cqzone, zonestr); } else { strncpy(zonestr, cqzone, 2); zonestr[2] = '\0'; } if (strlen(ituzone) < 2) { sprintf(itustr, "%02d", dx->itu); /* itu zone */ } else { strncpy(itustr, ituzone, 2); itustr[2] = '\0'; } d = dx->timezone; /* GMT difference */ now = (time(0) + ((timeoffset - d) * 3600) + timecorr); ptr1 = gmtime(&now); strftime(timebuff, 80, "%H:%M", ptr1); sprintf(C_DEST_Lat, "%6.2f", dx->lat); /* where is he? */ sprintf(C_DEST_Long, "%7.2f", dx->lon); strncpy(contstr, dx->continent, 2); /* continent */ contstr[2] = '\0'; getyx(stdscr, cury, curx); attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(24, 0, " %s %s ", pxstr, countrystr); mvprintw(24, 26, " %s %s ", contstr, zonestr); if (x != 0 && x != mycountrynr) { qrb(); mvprintw(24, 35, "%.0f km/%.0f deg ", range, bearing); } mvprintw(24, 64, " DX time: %s", timebuff); if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(cury, curx, ""); return (0); } tlf_1.1.5/src/showscore.c0000664000175000017500000002567312072353226013525 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2010, 2011 Thomas Beierlein * * 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 Library 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. */ /* ------------------------------------------------------------ * showscore * *-------------------------------------------------------------*/ #include "globalvars.h" #include "showscore.h" void printfield (int x, int y, int number); int showscore(void) { extern int showscore_flag; extern int band_score[9]; extern int cqww; extern int arrldx_usa; extern int arrl_fd; extern int arrlss; extern int pacc_pa_flg; extern int universal; extern int country_mult; extern int wysiwyg_once; extern int wysiwyg_multi; extern int fixedmult; extern int zonescore[6]; extern int countryscore[6]; extern int totalmults; extern int totalcountries; extern int totalzones; extern int nr_of_px; extern int qsonum; extern int total; extern int wpx; extern int sprint; extern int bandinx; extern int multscore[]; extern int multlist; extern int serial_section_mult; extern int sectn_mult; extern int dx_arrlsections; int p, q, r, n, l10; if (showscore_flag == 1) { attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); if ((bandinx != BANDINDEX_30) && (bandinx != BANDINDEX_17) && (bandinx != BANDINDEX_12)) { attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); mvprintw(1, 45, "Band 160 80 40 20 15 10"); attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT); mvprintw(2, 45, "QSO's "); printfield(2, 50, band_score[BANDINDEX_160]); printfield(2, 55, band_score[BANDINDEX_80]); printfield(2, 60, band_score[BANDINDEX_40]); printfield(2, 65, band_score[BANDINDEX_20]); printfield(2, 70, band_score[BANDINDEX_15]); printfield(2, 75, band_score[BANDINDEX_10]); } else { attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); mvprintw(1, 45, "Band 160 80 40 30 17 12"); attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT); mvprintw(2, 45, "QSO's "); printfield(2, 50, band_score[BANDINDEX_160]); printfield(2, 55, band_score[BANDINDEX_80]); printfield(2, 60, band_score[BANDINDEX_40]); printfield(2, 65, band_score[BANDINDEX_30]); printfield(2, 70, band_score[BANDINDEX_17]); printfield(2, 75, band_score[BANDINDEX_12]); } mvprintw(3, 45, " "); mvprintw(4, 45, " "); mvprintw(5, 45, " "); if ((wysiwyg_multi == 1) || (serial_section_mult == 1) || (serial_grid4_mult == 1) || (sectn_mult == 1)) { mvprintw(3, 45, "Mult "); printfield(3, 50, multscore[BANDINDEX_160]); printfield(3, 55, multscore[BANDINDEX_80]); printfield(3, 60, multscore[BANDINDEX_40]); printfield(3, 65, multscore[BANDINDEX_20]); printfield(3, 70, multscore[BANDINDEX_15]); printfield(3, 75, multscore[BANDINDEX_10]); } if (dx_arrlsections == 1) { mvprintw(3, 45, "Cty "); printfield(3, 50, countryscore[0]); printfield(3, 55, countryscore[1]); printfield(3, 60, countryscore[2]); printfield(3, 66, countryscore[3]); printfield(3, 70, countryscore[4]); printfield(3, 75, countryscore[5]); mvprintw(4, 45, "Sect"); printfield(4, 50, multscore[BANDINDEX_160]); printfield(4, 55, multscore[BANDINDEX_80]); printfield(4, 60, multscore[BANDINDEX_40]); printfield(4, 65, multscore[BANDINDEX_20]); printfield(4, 70, multscore[BANDINDEX_15]); printfield(4, 75, multscore[BANDINDEX_10]); } if (cqww == 1) { mvprintw(3, 45, "Cty "); printfield(3, 50, countryscore[0]); printfield(3, 55, countryscore[1]); printfield(3, 60, countryscore[2]); printfield(3, 65, countryscore[3]); printfield(3, 70, countryscore[4]); printfield(3, 75, countryscore[5]); mvprintw(4, 45, "Zone "); printfield(4, 50, zonescore[0]); printfield(4, 55, zonescore[1]); printfield(4, 60, zonescore[2]); printfield(4, 65, zonescore[3]); printfield(4, 70, zonescore[4]); printfield(4, 75, zonescore[5]); } if (arrldx_usa == 1) { mvprintw(3, 45, "Cty "); printfield(3, 50, countryscore[0]); printfield(3, 55, countryscore[1]); printfield(3, 60, countryscore[2]); printfield(3, 65, countryscore[3]); printfield(3, 70, countryscore[4]); printfield(3, 75, countryscore[5]); } if (universal == 1) { if (country_mult == 1) { mvprintw(3, 45, "Cty "); printfield(3, 50, countryscore[0]); printfield(3, 55, countryscore[1]); printfield(3, 60, countryscore[2]); printfield(3, 65, countryscore[3]); printfield(3, 70, countryscore[4]); printfield(3, 75, countryscore[5]); } } if (pacc_pa_flg == 1) { mvprintw(3, 45, "Cty "); printfield(3, 50, countryscore[0]); printfield(3, 55, countryscore[1]); printfield(3, 60, countryscore[2]); printfield(3, 65, countryscore[3]); printfield(3, 70, countryscore[4]); printfield(3, 75, countryscore[5]); } if (sprint == 1) { mvprintw(5, 45, "Score: %d", total); } if (arrlss == 1) { mvprintw(5, 45, "Sections: %d Score: %d", multarray_nr, multarray_nr * total); } if (cqww == 1) { totalzones = 0; totalcountries = 0; for (n = 0; n <= 5; n++) { totalzones = totalzones + zonescore[n]; totalcountries = totalcountries + countryscore[n]; } totalmults = totalcountries + totalzones; mvprintw(5, 45, " "); mvprintw(5, 45, "Pts: %d Mul: %d Score: %d", total, totalmults, totalmults * total); } if (arrldx_usa == 1) { totalzones = 0; totalcountries = 0; for (n = 0; n <= 5; n++) { totalcountries = totalcountries + countryscore[n]; } totalmults = totalcountries; mvprintw(5, 45, " "); mvprintw(5, 45, "Pts: %d Mul: %d Score: %d", total, totalmults, totalmults * total); } if (arrl_fd == 1) { if (fixedmult != 0) { totalmults = fixedmult; } else { totalmults = 1; } mvprintw(5, 45, " "); mvprintw(5, 45, "Pts: %d Mul: %d Score: %d", total, totalmults, totalmults * total); } if (universal == 1 && country_mult == 1) { totalzones = 0; totalcountries = 0; for (n = 0; n <= 5; n++) { totalcountries = totalcountries + countryscore[n]; } totalmults = totalcountries; mvprintw(5, 45, " "); mvprintw(5, 45, "Pts: %d Mul: %d Score: %d", total, totalmults, totalmults * total); } if (universal == 1 && multlist == 1 && arrlss != 1) { mvprintw(5, 45, " "); mvprintw(5, 45, "Total: %d Mul: %d Score: %d", total, totalmults, totalmults * total); } if (pacc_pa_flg == 1) { totalzones = 0; totalcountries = 0; for (n = 0; n <= 5; n++) { totalcountries = totalcountries + countryscore[n]; } totalmults = totalcountries; mvprintw(5, 45, " "); mvprintw(5, 45, "Pts: %d Mul: %d Score: %d", total, totalmults, totalmults * total); } if (wysiwyg_once == 1) { totalmults = multarray_nr; mvprintw(5, 45, " "); mvprintw(5, 45, "Pts: %d Mul: %d Score: %d", total, totalmults, totalmults * total); } if ((wysiwyg_multi == 1) || (serial_section_mult == 1) || (serial_grid4_mult == 1) || (sectn_mult == 1)) { totalmults = multscore[BANDINDEX_160] + multscore[BANDINDEX_80] + multscore[BANDINDEX_40] + multscore[BANDINDEX_20] + multscore[BANDINDEX_15] + multscore[BANDINDEX_10]; mvprintw(5, 45, " "); mvprintw(5, 45, "Pts: %d Mul: %d Score: %d", total, totalmults, totalmults * total); } if (dx_arrlsections == 1) { totalmults = multscore[BANDINDEX_160] + multscore[BANDINDEX_80] + multscore[BANDINDEX_40] + multscore[BANDINDEX_20] + multscore[BANDINDEX_15] + multscore[BANDINDEX_10]; totalmults = totalmults + countryscore[0] + countryscore[1] + countryscore[2] + countryscore[3] + countryscore[4] + countryscore[5]; mvprintw(5, 45, " "); mvprintw(5, 45, "Pts: %d Mul: %d Score: %d", total, totalmults, totalmults * total); } if (wpx == 1) { /* wpx */ mvprintw(4, 45, " "); mvprintw(5, 45, " "); mvprintw(5, 47, "PX:%d Pts:%d Score: %d", nr_of_px, total, (total * (nr_of_px))); mvhline(3, 45, ACS_HLINE, 35); if (nr_of_px >= 2) { p = (qsonum - 1) / (nr_of_px); q = 10 * ((qsonum - 1) - (p * (nr_of_px))); r = q / (nr_of_px); } else { p = 1; r = 0; } } attron(COLOR_PAIR(COLOR_GREEN)); if ((cqww == 1) || (wpx == 1) || (arrldx_usa == 1) || (pacc_pa_flg == 1) || (wysiwyg_once == 1) || (universal == 1)) { /* cqww or wpx */ if (wpx == 1) totalmults = nr_of_px; /** \todo fix calculation of Q/M */ if (totalmults >= 2) p = (total / totalmults); else p = 1; if ((l10 = last10()) >= 1) mvprintw(6, 55, "Q/M %d Rate %d ", p, (60 * 10) / l10); if (wpx == 1) { if (minute_timer > 0) mvprintw(6, 75, "%d", minute_timer); } } attron(COLOR_PAIR(COLOR_MAGENTA) | A_STANDOUT); switch (bandinx) { case BANDINDEX_160: { mvprintw(1, 52, "160"); break; } case BANDINDEX_80: { mvprintw(1, 57, " 80"); break; } case BANDINDEX_40: { mvprintw(1, 62, " 40"); break; } case BANDINDEX_30: { mvprintw(1, 67, " 30"); break; } case BANDINDEX_20: { mvprintw(1, 67, " 20"); break; } case BANDINDEX_17: { mvprintw(1, 72, " 17"); break; } case BANDINDEX_15: { mvprintw(1, 72, " 15"); break; } case BANDINDEX_12: { mvprintw(1, 77, " 12"); break; } case BANDINDEX_10: { mvprintw(1, 77, " 10"); break; } } printcall(); } return (0); } /** formated print of integer number 0..9999 */ void printfield (int y, int x, int number) { attron(COLOR_PAIR(COLOR_WHITE)); mvprintw(y, x, " %4d", number); } tlf_1.1.5/src/store_qso.h0000664000175000017500000000170712072353226013524 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include "tlf.h" int store_qso(char *loglineptr); tlf_1.1.5/src/searchlog.h0000664000175000017500000000226612072353226013456 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "printcall.h" #include "tlf.h" #include "nicebox.h" #include "zone_nr.h" #include "getpx.h" #include "showscore.h" void InitSearchPanel(void); void ShowSearchPanel(void); void HideSearchPanel(void); void searchlog(char *searchstring); int load_callmaster(void); void show_needed_sections(void); void OnLowerSearchPanel(int x, char *str); tlf_1.1.5/src/getwwv.h0000664000175000017500000000177212072353226013033 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include "get_time.h" #include "printcall.h" #include "tlf.h" int getwwv(void); tlf_1.1.5/src/clear_display.h0000664000175000017500000000220312072353226014311 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include "get_time.h" #include "qsonr_to_str.h" #include "searchlog.h" #include "get_time.h" #if defined (TLF_H) /* do nothing, already defined */ #else #define TLF_H #include "tlf.h" #endif void clear_display(void); tlf_1.1.5/src/sockserv.c0000664000175000017500000003210212072353226013331 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* Socket server (and client!) utilities, */ /* intended to simplify the porting of JNOS servers and clients to Unix */ /* Written by N2RJT - Dave Brown */ #include #include #include #include #include #include #include #include #include #include #include #include #include "sockserv.h" #include "main.h" /* This structure holds the buffers for each open socket. It was an */ /* afterthought, so it is not used for anything else. The array is only */ /* allocated when the socket is opened, and freed when the socket is closed. */ struct sockbuffer { char *buf; int buflen; int fragment; int whole_lines; int cr_translation; } sockbuf[FD_SETSIZE]; /* This array holds the SERVED sockets, that can be connected to. */ /* It does not hold CLIENT sockets. */ static int lsock[MAX_SERVED_SOCKETS]; static int initialized = 0; static int nlsock = 0; static struct timeval *socktimeval = NULL; static struct timeval *selecttimeval = NULL; static struct sockaddr_in udp_peer; static int udpport = 0; static unsigned int peerlen = 0; int udp_socket = -1; static fd_set readfds, openfds; static int nfds = 0; static int ifds = -1; #define SOBUF 512 #define NULLCHAR (char *) NULL #define myperror perror void setlinemode(int s, int tf) { sockbuf[s].whole_lines = tf; } int close_s(int s) { FD_CLR(s, &openfds); if ( 0 != sockbuf[s].buflen ) free(sockbuf[s].buf); sockbuf[s].buflen = 0; sockbuf[s].fragment = 0; shutdown(s, 2); return close(s); } void fds_copy(fd_set *tofd, fd_set *fmfd) { memcpy(tofd, fmfd, sizeof(fd_set)); } int usputs(int s, char *buf) { int len, i; len = strlen(buf); if (sockbuf[s].cr_translation) { for (i = 0; i < len; i++) { if (buf[i] == '\n') usputb(s, "\r\n", 2); else usputb(s, buf + i, 1); } return len; } else return usputb(s, buf, len); } int usputb(int s, char *buf, int buflen) { extern WINDOW *sclwin; strcpy(sockserv_error, ""); if (udp_socket == s) { peerlen = sizeof(udp_peer); if (sendto(s, buf, buflen, 0, (struct sockaddr *) &udp_peer, peerlen) < 0) { myperror("usputb:sendto"); return -1; } else return buflen; } else { if (write(s, buf, buflen) < 0) { // myperror("usputb:write"); wprintw(sclwin, "Not connected !!"); wrefresh(sclwin); sleep(2); return -1; } else return buflen; } } int usvprintf(int s, char *fmt, va_list args) { int len, withargs; char *buf; if (strchr(fmt, '%') == NULLCHAR) { /* Common case optimization: no args */ withargs = 0; buf = fmt; len = strlen(fmt); } else { /* Use a default value that is huge */ withargs = 1; buf = (char *) malloc(SOBUF); if ((len = vsprintf(buf, fmt, args)) >= SOBUF) { /* It's too late to be sorry. He's dead, Jim */ fprintf(stderr, "usprintf() exceeded %d bytes (%d bytes)\n", SOBUF, len); exit(1); } } len = usputs(s, buf); if (withargs) free(buf); return len; } int usprintf(int s, char *fmt,...) { va_list args; int len; va_start(args, fmt); len = usvprintf(s, fmt, args); va_end(args); return len; } int tprintf(char *fmt,...) { va_list args; int len; va_start(args, fmt); len = usvprintf(ifds, fmt, args); va_end(args); return len; } int tputstr(char *buf) { return usputs(ifds, buf); } int tputc(char c) { char ic; ic = c; return usputb(ifds, &ic, 1); } static void (*login[MAX_SERVED_SOCKETS]) (int i); char sockserv_error[80]; static int initialize(void) { int i; strcpy(sockserv_error, ""); /* First-time initialization */ if (!initialized) { initialized = 1; for (i = 0; i < FD_SETSIZE; i++) { sockbuf[i].buf = NULL; sockbuf[i].buflen = 0; sockbuf[i].fragment = 0; sockbuf[i].whole_lines = 0; sockbuf[i].cr_translation = 0; } FD_ZERO(&openfds); } return 0; } int startup(int portnum, void (*newin) (int)) { struct sockaddr_in sin; initialize(); while ((lsock[nlsock] = socket(AF_INET, SOCK_STREAM, 0)) < 0) { if (errno != EINTR) { myperror("startup: socket"); exit(1); } } memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = INADDR_ANY; sin.sin_port = htons(portnum); setsockopt(lsock[nlsock], SOL_SOCKET, SO_REUSEADDR, (char *) 0, 0); while (bind(lsock[nlsock], (struct sockaddr *) &sin, sizeof(sin)) == -1) { if (errno != EINTR) { myperror("startup: bind"); exit(1); } } while (listen(lsock[nlsock], 5) == -1) { if (errno != EINTR) { myperror("startup: listen"); exit(1); } } login[nlsock] = newin; FD_SET(lsock[nlsock], &openfds); sockbuf[lsock[nlsock]].buf = (char *) malloc(sizeof(char) * SOBUF); sockbuf[lsock[nlsock]].buflen = 0; sockbuf[lsock[nlsock]].fragment = 0; sockbuf[lsock[nlsock]].whole_lines = 0; sockbuf[lsock[nlsock]].cr_translation = 0; if (nfds <= lsock[nlsock]) nfds = lsock[nlsock] + 1; if (ifds == -1) ifds = nfds - 1; nlsock++; return lsock[nlsock-1]; } int startup_udp(int portnum) { struct sockaddr_in sin; initialize(); if (udp_socket == -1) { while ((udp_socket = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { if (errno != EINTR) { myperror("startup_udp: socket"); exit(1); } } } if (portnum && !udpport) { memset(&sin, 0, sizeof(sin)); sin.sin_family = AF_INET; sin.sin_addr.s_addr = INADDR_ANY; sin.sin_port = htons(portnum); while (bind(udp_socket, (struct sockaddr *) &sin, sizeof(sin)) == -1) { if (errno != EINTR) { myperror("startup_udp: bind"); exit(1); } } } udpport = portnum; FD_SET(udp_socket, &openfds); sockbuf[udp_socket].buf = (char *) malloc(sizeof(char) * SOBUF); sockbuf[udp_socket].buflen = 0; sockbuf[udp_socket].fragment = 0; sockbuf[udp_socket].whole_lines = 0; sockbuf[udp_socket].cr_translation = 0; if (nfds <= udp_socket) nfds = udp_socket + 1; if (ifds == -1) ifds = nfds - 1; return udp_socket; } int recvline(int *fd, char *buf, int buflen) { unsigned int len; int ns, i; struct sockaddr_in client; char *nl; strcpy(sockserv_error, ""); if (selecttimeval != NULL && socktimeval != NULL) { selecttimeval->tv_sec = socktimeval->tv_sec; selecttimeval->tv_usec = socktimeval->tv_usec; } if (ifds == -1) ifds = nfds - 1; while (1) { if (++ifds == nfds) { fds_copy(&readfds, &openfds); while ((ifds = select(nfds, &readfds, (fd_set *) NULL, (fd_set *) NULL, selecttimeval)) < 0) { if (errno != EINTR) { myperror("recvline: select"); exit(1); } fds_copy(&readfds, &openfds); } if (!ifds) return -2; ifds = 0; } else if (FD_ISSET(ifds, &readfds)) { for (i = 0; i < nlsock; i++) if (lsock[i] == ifds) break; if (i < nlsock) { if (FD_ISSET(lsock[i], &readfds)) { len = sizeof(client); while ((ns = accept(lsock[i], (struct sockaddr *) &client, &len)) == -1) { if (errno != EINTR) { myperror("recvline: accept"); exit(1); } } if (nfds <= ns) nfds = ns + 1; FD_SET(ns, &openfds); sockbuf[ns].buf = (char *) malloc(sizeof(char) * SOBUF); sockbuf[ns].buflen = 0; sockbuf[ns].fragment = 0; sockbuf[ns].whole_lines = sockbuf[lsock[i]].whole_lines; sockbuf[ns].cr_translation = 0; (*login[i]) (ns); } FD_CLR(lsock[i], &readfds); } else { if (!sockbuf[ifds].buflen) { if (ifds == udp_socket) { peerlen = sizeof(udp_peer); while ((sockbuf[ifds].buflen = recvfrom(ifds, sockbuf[ifds].buf + sockbuf[ifds].fragment, SOBUF - 1, 0, (struct sockaddr *) &udp_peer, &peerlen)) == -1) { if (errno != EINTR) { break; } peerlen = sizeof(udp_peer); } } else { while ((sockbuf[ifds].buflen = read(ifds, sockbuf[ifds].buf + sockbuf[ifds].fragment, SOBUF - 1)) == -1) { if (errno != EINTR) { break; } } } if (sockbuf[ifds].buflen <= 0) { if (ifds != udp_socket) { FD_CLR(ifds, &openfds); free(sockbuf[ifds].buf); } sockbuf[ifds].buflen = 0; *fd = ifds; buf[0] = '\0'; return -1; } else { sockbuf[ifds].buflen += sockbuf[ifds].fragment; sockbuf[ifds].fragment = 0; sockbuf[ifds].buf[sockbuf[ifds].buflen] = '\0'; } } nl = strchr(sockbuf[ifds].buf, '\n'); if (nl == NULL && sockbuf[ifds].whole_lines) { nl = strchr(sockbuf[ifds].buf, '\r'); if (nl) { sockbuf[ifds].cr_translation = 1; printf("Enabling CR translation for socket %d\n", ifds); } } if (nl == NULL && sockbuf[ifds].whole_lines) { sockbuf[ifds].fragment = sockbuf[ifds].buflen; sockbuf[ifds].buflen = 0; continue; } else { if (sockbuf[ifds].whole_lines) { *nl = '\0'; len = strlen(sockbuf[ifds].buf) + 1; } else if (sockbuf[ifds].buflen > buflen) len = buflen; else len = sockbuf[ifds].buflen; memcpy(buf, sockbuf[ifds].buf, len); if (sockbuf[ifds].buflen > len) memcpy(sockbuf[ifds].buf, sockbuf[ifds].buf + len, sockbuf[ifds].buflen - len); sockbuf[ifds].buflen -= len; *fd = ifds; if (sockbuf[ifds].buflen) ifds--; } return len; } } } } long resolve(char *hostname) { unsigned long int haddr; unsigned char a[4]; int i; char *s, *d, *c; int valid = 1; if (initialize()) return -1L; s = hostname; for (i = 0; i < 4; i++) { if (s) { d = strchr(s, '.'); if (!d) d = s + strlen(s); for (c = s; c < d; c++) if (*c < '0' || *c > '9') valid = 0; if (!valid) break; a[i] = atoi(s); s = strchr(s, '.'); if (s) s++; } else { valid = 0; break; a[i] = 0; } } if (valid) { haddr = a[3] + 256 * (a[2] + 256 * (a[1] + 256 * a[0])); haddr = htonl(haddr); } else { struct hostent *hp; if ((hp = gethostbyname(hostname)) == NULL) { herror("resolve: gethostbyname"); return -1L; } memcpy(&haddr, hp->h_addr, hp->h_length); } strcpy(sockserv_error, ""); return (haddr); } int startcliaddr(int family, unsigned long int addr, unsigned short int portnum) { extern WINDOW *sclwin; int s; struct sockaddr_in sin; initialize(); memset(&sin, 0, sizeof(sin)); sin.sin_addr.s_addr = addr; sin.sin_family = family; sin.sin_port = htons(portnum); while ((s = socket(AF_INET, SOCK_STREAM, 0)) == -1) { if (errno != EINTR) { wprintw(sclwin, "socket failure"); wrefresh(sclwin); sleep(1); return -1; } } while (connect(s, (struct sockaddr *) &sin, sizeof(sin)) == -1) { if (errno != EINTR) { return (-1); } } if (nfds <= s) nfds = s + 1; if (ifds == -1) ifds = nfds - 1; FD_SET(s, &openfds); wprintw(sclwin, "still here..."); wrefresh(sclwin); sleep(2); sockbuf[s].buf = (char *) malloc(sizeof(char) * SOBUF); // sockbuf[s].buf = (char *)socketbuffer; // debug sockbuf[s].buflen = 0; sockbuf[s].fragment = 0; sockbuf[s].whole_lines = 0; wprintw(sclwin, "not dead..."); wrefresh(sclwin); sleep(1); return s; } int startcli(void) { extern char pr_hostaddress[]; extern int portnum; unsigned long int haddr; int addrtype; haddr = resolve(pr_hostaddress); addrtype = AF_INET; return (startcliaddr(addrtype, haddr, (short) portnum)); } void socktimeout(int msec) { if (!socktimeval) socktimeval = (struct timeval *) malloc(sizeof(struct timeval)); if (!selecttimeval) selecttimeval = (struct timeval *) malloc(sizeof(struct timeval)); socktimeval->tv_sec = msec / 1000L; socktimeval->tv_usec = (msec % 1000L) * 1000L; } void nosocktimeout(void) { free(socktimeval); socktimeval = NULL; free(selecttimeval); selecttimeval = NULL; } void set_udp_peer(long address, int portnum) { memset(&udp_peer, 0, sizeof(udp_peer)); udp_peer.sin_addr.s_addr = address; udp_peer.sin_family = AF_INET; udp_peer.sin_port = htons(portnum); peerlen = sizeof(udp_peer); } void get_udp_peer(long *address, int *portnum) { *address = udp_peer.sin_addr.s_addr; *portnum = 0; *portnum = ntohs(udp_peer.sin_port); } tlf_1.1.5/src/grabspot.c0000664000175000017500000000534412072353226013323 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "grabspot.h" #include "bandmap.h" #include int send_bandswitch(int outfreq); void grabspot(void) { extern char hiscall[]; extern char mode[]; extern int cqmode; extern int trx_control; extern float mem; extern float freq; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; #endif spot *data; if (trx_control == 0) return; if (hiscall[0] != '\0') { data = bandmap_lookup( hiscall ); if (data != NULL) { outfreq = data -> freq; send_bandswitch( outfreq ); strcpy( hiscall, data->call ); showinfo( getctydata( hiscall ) ); searchlog( hiscall ); /* if in CQ mode switch to S&P and remember QRG */ if (cqmode == CQ) { cqmode = S_P; strcpy(mode, "S&P "); mem = freq; mvprintw(14, 68, "MEM: %7.1f", mem); } refreshp(); g_free( data->call ); g_free( data ); } } } void grab_next(void) { extern char hiscall[]; extern char mode[]; extern int cqmode; extern int trx_control; extern float mem; extern float freq; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; #endif static int dir = 1; /* start scanning up */ spot *data; if (trx_control == 0) return; data = bandmap_next( dir, (unsigned int)(freq*1000) ); if (data == NULL) { /* nothing in that direction */ /* try other one */ dir = 1 - dir; data = bandmap_next( dir, (unsigned int)(freq*1000)); } if (data != NULL) { outfreq = data -> freq; send_bandswitch( outfreq ); strcpy( hiscall, data->call ); showinfo( getctydata( hiscall ) ); searchlog( hiscall ); /* if in CQ mode switch to S&P and remember QRG */ if (cqmode == CQ) { cqmode = S_P; strcpy(mode, "S&P "); mem = freq; mvprintw(14, 68, "MEM: %7.1f", mem); } refreshp(); g_free( data->call ); g_free( data ); } } tlf_1.1.5/src/getexchange.c0000664000175000017500000005213612072353226013765 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004-2005 Rein Couperus * 2011-2012 Thomas Beierlein * * 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 Library 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. */ /* ------------------------------------------------------------ * Getexchange handles the comment field * *--------------------------------------------------------------*/ #include "getexchange.h" #include "recall_exchange.h" #include "addspot.h" #include "logit.h" #include #define MULTS_POSSIBLE(n) ((char *)g_ptr_array_index(mults_possible, n)) #define LEN(array) (sizeof(array) / sizeof(array[0])) int play_file(char *audiofile); int getexchange(void) { extern int contest; extern char comment[]; extern char cqzone[]; extern char ituzone[]; extern char my_rst[]; extern char speedstr[]; extern int change_rst; extern char message[15][80]; extern char ph_message[14][80]; extern char hiscall[]; extern char buffer[]; extern char qsonrstr[]; extern int cqww; extern int wpx; extern int pacc_pa_flg; extern int arrldx_usa; extern int arrl_fd; extern int exchange_serial; extern int countrynr; extern int mycountrynr; extern int sprint; extern int trxmode; extern int recall_mult; extern int arrlss; extern int lan_active; extern char lastqsonr[]; extern char qsonrstr[]; extern char call[]; extern char section[]; extern int serial_section_mult; extern int serial_grid4_mult; extern int sectn_mult; extern int dx_arrlsections; extern int ctcomp; extern int wazmult; extern int itumult; extern int pfxmult; extern int exc_cont; extern char continent[]; extern int keyerport; extern int commentfield; int i; int x = 0; char instring[2]; char commentbuf[40] = ""; int retval; char *gridmult = ""; int keyspeed = 30; char speedbuf[3] = ""; instring[1] = '\0'; if ((lan_active == 1) && (exchange_serial == 1)) { strncpy(lastqsonr, qsonrstr, 5); send_lan_message(INCQSONUM, qsonrstr); } if (recall_mult == 1) retval = recall_exchange(); if ((arrldx_usa == 1) && (trxmode != CWMODE)) retval = recall_exchange(); if (arrl_fd == 1) retval = recall_exchange(); if (((cqww == 1) || (wazmult == 1) || (itumult == 1)) && (*comment == '\0') && (strlen(hiscall) != 0)) { if (itumult == 1) strcpy(comment, ituzone); else strcpy(comment, cqzone); } if ((exc_cont == 1) && (*comment == '\0') && (strlen(hiscall) != 0)) { strcpy(comment, continent); } commentfield = 1; for (i = strlen(comment); i < 26; i++) { refresh_comment(); /* wait for next char pressed, but update time, cluster and TRX qrg */ nodelay(stdscr, TRUE); /* main loop waiting for input */ x = -1; while (x < 1) { usleep(10000); time_update(); if (trxmode == DIGIMODE && (keyerport == GMFSK || keyerport == MFJ1278_KEYER)) { show_rtty(); } /* make sure that the wrefresh() inside getch() shows the cursor * in the input field */ wmove(stdscr, 12, 54 + strlen(comment)); x = onechar(); } nodelay(stdscr, FALSE); switch (x) { case 1: /* ctrl-a */ { addspot(); *comment = '\0'; x = 9; break; } case 127: /* erase */ { if (strlen(comment) >= 1) { comment[strlen(comment) - 1] = '\0'; i -= 2; } break; } case 27: { stoptx(); /* stop sending CW */ if (comment[0] != '\0') { /* if comment not empty */ /* drop exchange so far */ comment[0] = '\0'; i = 0; } else { /* back to callinput */ x = 9; } break; } case 160: // for CT compatibility { if (ctcomp != 0) { if (trxmode == CWMODE || trxmode == DIGIMODE) { strcat(buffer, message[1]); sendbuf(); } else play_file(ph_message[1]); } break; } case '+': // for CT compatibility { if ((ctcomp != 0) && (strlen(hiscall) > 2)) { if (trxmode == CWMODE || trxmode == DIGIMODE) { strcat(buffer, message[2]); /* F3 */ sendbuf(); } else play_file(ph_message[2]); x = 92; } break; } case 129: { if (trxmode == CWMODE || trxmode == DIGIMODE) { strcat(buffer, call); /* F1 */ sendbuf(); } else play_file(ph_message[5]); // call break; } case 130 ... 138: { if (trxmode == CWMODE || trxmode == DIGIMODE) { strcat(buffer, message[x - 129]); /* F2..F10 */ sendbuf(); } else play_file(ph_message[x - 129]); break; } case 140: { if (trxmode == CWMODE || trxmode == DIGIMODE) { strcat(buffer, message[10]); /* F11 */ sendbuf(); } else play_file(ph_message[10]); break; } case 176 ... 186: { strcat(buffer, message[x - 162]); /* alt-0 to alt-9 */ sendbuf(); break; } case 156: /* change MY RST */ { if (change_rst == 1) { if (my_rst[1] <= 56) { my_rst[1]++; mvprintw(12, 49, my_rst); } } else { /* speed up */ keyspeed = speedup(); strncpy(speedbuf, speedstr + (2 * keyspeed), 2); speedbuf[2] = '\0'; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(0, 14, "%s", speedbuf); } break; } case 157: { if (change_rst == 1) { if (my_rst[1] > 49) { my_rst[1]--; mvprintw(12, 49, my_rst); } } else { keyspeed = speeddown(); strncpy(speedbuf, speedstr + (2 * keyspeed), 2); speedbuf[2] = '\0'; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(0, 14, "%s", speedbuf); } break; } case 44: // , keyer { mvprintw(5, 0, ""); keyer(); x = 0; break; } case '\n': { /* log QSO immediately if CT compatible * or not in contest */ if ((ctcomp == 1) || (contest != 1)) x = 92; // if (dxped == 1) x = 92; break; } } if (x >= 'a' && x <= 'z') x = x - 32; if (i < 25) { /* normal character -> insert if space left */ if (x >= ' ' && x <= 'Z') { instring[0] = x; addch(x); strcat(comment, instring); if (keyerport == GMFSK) { show_rtty(); mvprintw(12, 54, comment); } refreshp(); } } else i--; if ((serial_section_mult == 1) || (dx_arrlsections == 1) || (sectn_mult == 1) || (arrlss == 1) || (cqww == 1)) { x = checkexchange(x); } if (x == '\n' || x == 9 || x == 11 || x == 92) { if ((exchange_serial == 1 && comment[0] >= '0' && comment[0] <= '9')) { /* align serial nr. */ if (strlen(comment) == 1) { strcpy(commentbuf, comment); comment[0] = '\0'; strcat(comment, "00"); strcat(comment, commentbuf); } if (strlen(comment) == 2) { strcpy(commentbuf, comment); comment[0] = '\0'; strcat(comment, "0"); strcat(comment, commentbuf); } } if (wpx == 1 && pfxmult == 0) { /* align serial nr. */ if ((strlen(comment) == 1) || (comment[1] == ' ')) { strcpy(commentbuf, comment); comment[0] = '\0'; strcat(comment, "00"); strcat(comment, commentbuf); } if ((strlen(comment) == 2) || (comment[2] == ' ')) { strcpy(commentbuf, comment); comment[0] = '\0'; strcat(comment, "0"); strcat(comment, commentbuf); } } if (sprint == 1) { if ((comment[1] == ' ') && (comment[0] != ' ')) { strcpy(commentbuf, "00"); commentbuf[2] = comment[0]; commentbuf[3] = '\0'; strcat(commentbuf, comment + 1); strcpy(comment, commentbuf); } if ((comment[2] == ' ') && (comment[1] != ' ')) { strcpy(commentbuf, "0"); commentbuf[1] = comment[0]; commentbuf[2] = comment[1]; commentbuf[3] = '\0'; strcat(commentbuf, comment + 2); strcpy(comment, commentbuf); } } if ((pacc_pa_flg == 1) && (countrynr != mycountrynr)) { if (strlen(comment) == 1) { strcpy(commentbuf, comment); comment[0] = '\0'; strcat(comment, "00"); strcat(comment, commentbuf); } if (strlen(comment) == 2) { strcpy(commentbuf, comment); comment[0] = '\0'; strcat(comment, "0"); strcat(comment, commentbuf); } } if ((arrlss == 1) && (x != 9) && (strlen(section) < 2)) { mvprintw(13, 54, "section?"); mvprintw(12, 54, comment); x = 0; } else if (((serial_section_mult == 1) || (sectn_mult == 1)) && ((x != 9) && (strlen(section) < 1))) { mvprintw(13, 54, "section?"); mvprintw(12, 54, comment); refreshp(); // x = 0; //##debug 17jan10 tb break; } else if (serial_grid4_mult == 1) { // mvprintw(13,54, "section?"); mvprintw(12, 54, comment); refreshp(); gridmult = getgrid(comment); strcpy(section, gridmult); section[4] = '\0'; break; // x = 0; //##debug } else break; } } refresh_comment(); commentfield = 0; return (x); } /* --------------------------------------------------------------------------*/ char cmpattern[32] = " "; // global char ssexchange[30] = ""; char section[8] = ""; char callupdate[7]; int call_update = 0; char zone_export[3] = " "; char zone_fix[3] = ""; /* --------------------------------------------------------------------------*/ int checkexchange(int x) { extern char comment[]; extern char ssexchange[]; extern GPtrArray *mults_possible; extern int cqww; extern int arrlss; extern char section[]; extern char callupdate[]; extern char hiscall[]; extern int call_update; extern char zone_export[]; extern char zone_fix[]; extern int serial_section_mult; extern int sectn_mult; extern int dx_arrlsections; char precedent[] = " "; char serial[5] = " "; char check[3] = " "; char checksection[30]; char zone[4] = ""; /* field of allowed pattern sequences * * The characters have the following meaning: * u - undefined (left or right delimiter) * b - blank character * a - ascii character * f - a figure / digit * * e.g. faf means a character between two digits */ char serpats[8][8] = { "bfb", "afb", "bfa", "bffab", "affab", "bffbffb", "fff", "ffff" }; char precpats[8][4] = { "faf", "fab", "bab", "baf", "fau", "bau", "uaf", "uab" }; char checkpats[6][5] = { "bffb", "bffu", "affu", "affb", "affa", "bffa" }; char secpats[10][6] = { "fab", "faab", "faaab", "bab", "baab", "baaab", "bau", "baau", "baaau", "baafb" }; char callpats[5][9] = { "bafaab", "baafab", "baafaab", "bafaaab", "baafaaab" }; char zonepats[6][6] = { "ufb", "uffb", "bfb", "bffb", "bffu", "bfu" }; char sectionpats[9][6] = { "uab", "uaab", "uaaab", "uau", "uaau", "uaaau", "bab", "baab", "baaab" }; int i, s, hr, ii, pr, jj; /* get the pattern sequence from comment string */ strcpy(cmpattern, "u "); if (strlen(comment) > 0) { for (i = 0; i < strlen(comment); i++) { switch ((int) comment[i]) { case 'A'...'Z':{ cmpattern[i + 1] = 'a'; cmpattern[i + 2] = 'u'; break; } case '0'...'9':{ cmpattern[i + 1] = 'f'; cmpattern[i + 2] = 'u'; break; } case ' ':{ cmpattern[i + 1] = 'b'; break; } default: cmpattern[i + 1] = 'u'; } } } // -----------------------------------cqww----------------------- if (cqww == 1) { s = atoi(comment); snprintf( zone, sizeof(zone), "%02d", s); for (ii = 0; ii < LEN(zonepats); ii++) { hr = getlastpattern(zonepats[ii]); //! \todo logik und Verwendung zone_fix vs zone_export unklar //! Was passiert, falls zonenummer in comment zu groess ist? if ((hr > 1) && (atoi(comment + hr - 1) != 0)) { sprintf(zone, "%02d", atoi(comment + hr - 1)); strncpy(zone_fix, zone, 2); zone_fix[2] = '\0'; } else { strncpy(zone_export, zone, 2); zone_export[2] = '\0'; } } if (strlen(hiscall) >= 2) OnLowerSearchPanel(32, zone_export); for (ii = 0; ii < LEN(callpats); ii++) { hr = getlastpattern(callpats[ii]); // call update ? if (hr > 0) { switch (ii) { case 0 ... 1: strncpy(callupdate, comment + hr, 4); callupdate[4] = '\0'; break; case 2 ... 3: strncpy(callupdate, comment + hr, 5); callupdate[5] = '\0'; break; case 4: strncpy(callupdate, comment + hr, 6); callupdate[6] = '\0'; } if (strlen(callupdate) > 3) { if (call_update == 1) strcpy(hiscall, callupdate); mvprintw(12, 29, " "); mvprintw(12, 29, "%s", hiscall); mvprintw(12, 54, "%s", comment); } } } return (x); } // ---------------------------arrls------------------------------ if (arrlss == 1) { // get serial nr. s = atoi(comment); if (s != 0) snprintf(serial, sizeof(serial), "%4d", s); for (ii = 0; ii < LEN(serpats); ii++) { hr = getlastpattern(serpats[ii]); if (hr > 0) snprintf(serial, sizeof(serial), "%4d", atoi(comment + hr - 1)); if (ii == 5 && hr > 0) { snprintf(serial, sizeof(serial), "%4d", atoi(comment + hr - 1)); snprintf(check, sizeof(check), "%2d", atoi(comment + hr + 2)); } } // get precedent if (((comment[0] == 'A') || (comment[0] == 'B') || (comment[0] == 'M') || (comment[0] == 'Q') || (comment[0] == 'S') || (comment[0] == 'U')) && ((comment[1] == ' ') || (cmpattern[2] == 'f'))) { precedent[0] = comment[0]; } /* look for a single letter */ for (ii = 0; ii < LEN(precpats); ii++) { hr = getlastpattern(precpats[ii]); if (hr > 0) { pr = comment[hr]; if ((pr == 'Q') || (pr == 'A') || (pr == 'B') || (pr == 'U') || (pr == 'M') || (pr == 'S')) { precedent[0] = pr; precedent[1] = '\0'; } } } // get call update for (ii = 0; ii < LEN(callpats); ii++) { hr = getlastpattern(callpats[ii]); if (hr > 0) { if (((comment[hr] == 'A') && (comment[hr + 1] > 59)) || (comment[hr] == 'K') || (comment[hr] == 'N') || (comment[hr] == 'W') || (comment[hr] == 'V') || (comment[hr] == 'C')) { switch (ii) { case 0 ... 1: strncpy(callupdate, comment + hr, 4); callupdate[4] = '\0'; break; case 2 ... 3: strncpy(callupdate, comment + hr, 5); callupdate[5] = '\0'; break; case 4: strncpy(callupdate, comment + hr, 6); callupdate[6] = '\0'; } if (strlen(callupdate) > 3) { if (call_update == 1) strcpy(hiscall, callupdate); mvprintw(12, 29, " "); mvprintw(12, 29, "%s", hiscall); mvprintw(12, 54, "%s", comment); } } } } // get check for (ii = 0; ii < LEN(checkpats); ii++) { hr = getlastpattern(checkpats[ii]); if (hr > 0) { check[0] = comment[hr]; check[1] = comment[hr + 1]; check[2] = '\0'; } } // get section *section = '\0'; for (ii = 0; ii < LEN(secpats); ii++) { hr = getlastpattern(secpats[ii]); if (hr > 0) { g_strlcpy(checksection, comment + hr, 4); g_strchomp(checksection); for (jj = 0; jj < mults_possible->len; jj++) { char *multi = g_strdup(MULTS_POSSIBLE(jj)); g_strchomp(multi); if ((strlen(multi) >= 1) && (strcmp(checksection, multi) == 0)) { strcpy(section, multi); break; } g_free(multi); } } } { char buf[40]; sprintf(buf, " %4s %1s %2s %2s ", serial, precedent, check, section); OnLowerSearchPanel(8, buf); } /* \todo use sprintf */ ssexchange[0] = '\0'; strcat(ssexchange, serial); strcat(ssexchange, " "); strcat(ssexchange, precedent); strcat(ssexchange, " "); strcat(ssexchange, check); strcat(ssexchange, " "); strcat(ssexchange, section); mvprintw(12, 54, comment); refreshp(); return (x); // end arrlss } // ----------------------serial+section-------------------------- if ((serial_section_mult == 1) || (sectn_mult == 1) || (dx_arrlsections == 1)) { if (serial_section_mult == 1) { // get serial nr. s = atoi(comment); if (s != 0) snprintf(serial, sizeof(serial), "%4d", atoi(comment)); for (ii = 0; ii < LEN(serpats); ii++) { hr = getlastpattern(serpats[ii]); if (hr > 0) snprintf(serial, sizeof(serial), "%4d", atoi(comment + hr - 1)); if (ii == 5 && hr > 0) { snprintf(serial, sizeof(serial), "%4d", atoi(comment + hr - 1)); snprintf(check, sizeof(check), "%2d", atoi(comment + hr + 2)); } } // get section for (ii = 0; ii < LEN(secpats); ii++) { hr = getlastpattern(secpats[ii]); if (hr > 0) { memset(checksection, 0, 29); strncpy(checksection, comment + (hr), 3); if (checksection[strlen(checksection) - 1] == ' ') { checksection[strlen(checksection) - 1] = '\0'; } for (jj = 0; jj < mults_possible->len; jj++) { if ((strlen(MULTS_POSSIBLE(jj)) >= 1) && (strcmp(checksection, MULTS_POSSIBLE(jj)) == 0)) { strcpy(section, MULTS_POSSIBLE(jj)); break; // new } } } } } // end serial_section_mult if (sectn_mult == 1) { for (ii = 0; ii < LEN(sectionpats); ii++) { hr = getlastpattern(sectionpats[ii]); strncpy(checksection, comment, 3); checksection[3] = '\0'; for (jj = 0; jj < mults_possible->len; jj++) { if ((strlen(MULTS_POSSIBLE(jj)) >= 1) && (strstr(checksection, MULTS_POSSIBLE(jj)) != NULL)) { strcpy(section, MULTS_POSSIBLE(jj)); } } } } // end sectn_mult if (dx_arrlsections == 1) { for (ii = 0; ii < LEN(sectionpats); ii++) { hr = getlastpattern(sectionpats[ii]); strncpy(checksection, comment, 3); checksection[3] = '\0'; for (jj = 0; jj < mults_possible->len; jj++) { if ((strlen(MULTS_POSSIBLE(jj)) == strlen(checksection)) && (strstr(checksection, MULTS_POSSIBLE(jj)) != NULL)) { strcpy(section, MULTS_POSSIBLE(jj)); // if (strlen(section) == strlen(mults_possible[jj])) break; } } } } // end dx_arrlsections callupdate[0] = '\0'; } // get call update for (ii = 0; ii < LEN(callpats); ii++) { hr = getlastpattern(callpats[ii]); if (hr > 0) { if (((comment[hr] == 'A') && (comment[hr + 1] > 59)) || (comment[hr] == 'K') || (comment[hr] == 'N') || (comment[hr] == 'W') || (comment[hr] == 'V') || (comment[hr] == 'C')) { switch (ii) { case 0 ... 1: strncpy(callupdate, comment + hr, 4); callupdate[4] = '\0'; break; case 2 ... 3: strncpy(callupdate, comment + hr, 5); callupdate[5] = '\0'; break; case 4: strncpy(callupdate, comment + hr, 6); callupdate[6] = '\0'; } if (strlen(callupdate) > 3) { if (call_update == 1) strcpy(hiscall, callupdate); mvprintw(12, 29, " "); mvprintw(12, 29, "%s", hiscall); mvprintw(12, 54, "%s", comment); } } } } OnLowerSearchPanel(32, " "); OnLowerSearchPanel(32, section); /* show section on lower frame of Worked window */ ssexchange[0] = '\0'; /* if (serial_section_mult == 1) { strcat (ssexchange,serial); strcat (ssexchange, " "); } */ strcat(ssexchange, section); // ---------------------------end mults -------------------------- mvprintw(12, 54, comment); refreshp(); return (x); } /* --------------------------------------------------------------------------*/ /** search checkstring in cmpattern * * find first occurence of checkstring in cmpattern * \parm checkstring - the pattern to be found * \return offset of checkstring in cmpattern (or 0 if not found) */ int getlastpattern(char *checkstring) { extern char comment[]; char newpat[80]; int i, x = 0; if ((strlen(cmpattern) - strlen(checkstring)) > 0) { for (i = 0; i < (strlen(cmpattern) - strlen(checkstring)) - 1; i++) { newpat[0] = '\0'; strncat(newpat, cmpattern + i, strlen(comment)); if (strncmp(newpat, checkstring, strlen(checkstring)) == 0) { x = i; } } if (x > strlen(comment)) x = 0; } return (x); } /* --------------------------------------------------------------------------*/ char *getgrid(char *comment) { char *gridmult = ""; int multposition = 0; int i = 0; for (i = 0; i < strlen(comment); i++) { if (comment[i] > 64 && comment[i] < 91) { multposition = i; break; } } gridmult = comment + multposition; return (gridmult); } tlf_1.1.5/src/cwkeyer.h0000664000175000017500000000427012072353226013155 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include #define MACRO_QSONUMBER '#' #define MACRO_CALL '@' #define MACRO_RST '~' #define MACRO_SPEED_UP '+' #define MACRO_SPEED_DOWN '-' #define CWKEYER_IOC_MAGIC 'k' #define CWKEYER_IOCRESET _IO(CWKEYER_IOC_MAGIC, 0) /* * S means "Set" through a ptr, * T means "Tell" directly with the argument value * G means "Get": reply by setting through a pointer * Q means "Query": response is on the return value * X means "eXchange": G and S atomically * H means "sHift": T and Q atomically */ #define CWKEYER_IOCSSPEED _IOW(CWKEYER_IOC_MAGIC, 1, int) #define CWKEYER_IOCSFREQ _IOW(CWKEYER_IOC_MAGIC, 2, int) #define CWKEYER_IOCSMONI _IOW(CWKEYER_IOC_MAGIC, 3, int) #define CWKEYER_IOCSWEIGTH _IOW(CWKEYER_IOC_MAGIC, 4, int) #define CWKEYER_IOCSTXDELAY _IOW(CWKEYER_IOC_MAGIC, 5, int) #define CWKEYER_IOCSFLUSH _IOW(CWKEYER_IOC_MAGIC, 6, void *) #define CWKEYER_IOCSCALL _IOW(CWKEYER_IOC_MAGIC, 7, char[16]) #define CWKEYER_IOCSQSONUMBER _IOW(CWKEYER_IOC_MAGIC, 8, char[16]) #define CWKEYER_IOCSRST _IOW(CWKEYER_IOC_MAGIC, 9, char[16]) #define CWKEYER_IOCSPOSNEGKEY _IOW(CWKEYER_IOC_MAGIC, 10, int) #define CWKEYER_IOC_MAXNR 9 /* * Serial port keyer */ #define CWTONE 0xCC01 #define CWSPEED 0xCC02 #define CWMUTE 0xCC03 tlf_1.1.5/src/get_time.c0000664000175000017500000000254312072353226013275 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------------------ * get the local time from the kernel and put into global buffer (time_ptr) * for use by several routines ---------------------------------------------------------------------------*/ #include "get_time.h" void get_time(void) { extern struct tm *time_ptr; extern int timeoffset; extern long timecorr; time_t now; //time (&now); now = (time(0) + (timeoffset * 3600) + timecorr); time_ptr = gmtime(&now); } tlf_1.1.5/src/addpfx.c0000664000175000017500000000274012072353226012745 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * add prefix * *--------------------------------------------------------------*/ #include "addpfx.h" char prefixes_worked[MAX_CALLS][6]; int nr_of_px = 0; int add_pfx(char *pxstr) { int q = 0, found = 0; prefixes_worked[nr_of_px][0] = '\0'; for (q = 0; q <= nr_of_px; q++) { if (strcmp(pxstr, prefixes_worked[q]) == 0) { found = 1; break; } } if (found != 1) { strcpy(prefixes_worked[nr_of_px], pxstr); nr_of_px++; } return (found); } /*--------------------addpx for LAN qso's--------------------------------------*/ tlf_1.1.5/src/showzones.c0000664000175000017500000000361112072353226013534 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * show zone map * *--------------------------------------------------------------*/ #include "showzones.h" int show_zones(int bandinx) { extern int zonedisplay; extern int bandindex; extern int zones[41]; int i = 0, j = 0; int xloc = 19; int yloc = 15; if (zonedisplay != 1) return (0); switch (bandinx) { case 0:{ bandindex = BAND160; break; } case 1:{ bandindex = BAND80; break; } case 2:{ bandindex = BAND40; break; } case 4:{ bandindex = BAND20; break; } case 6:{ bandindex = BAND15; break; } case 8: bandindex = BAND10; } attron(COLOR_PAIR(4) | A_STANDOUT); for (i = 0; i <= 7; i++) { for (j = 1; j <= 5; j++) { if ((zones[(i * 5) + j] & bandindex) == 0) { mvprintw(i + yloc, (j * 3) + xloc, " %02d", (i * 5) + j); } else { mvprintw(i + yloc, (j * 3) + xloc, " "); } } } nicebox(14, 22, 8, 14, "Zones"); return (0); } tlf_1.1.5/src/log_to_disk.c0000664000175000017500000000676412072353226014006 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /*------------------------------------------------------------------------ Log QSO to disk and do all necessary actions to start a new one ------------------------------------------------------------------------*/ #include "globalvars.h" #include "log_to_disk.h" pthread_mutex_t disk_mutex = PTHREAD_MUTEX_INITIALIZER; /** \brief logs one record to disk * Logs one record to disk which may come from different soureces * * \param from_lan true - Log lanmessage, false - normal message */ int log_to_disk(int from_lan) { extern int use_rxvt; extern char hiscall[]; extern char comment[]; extern char my_rst[]; extern char his_rst[]; extern char qsonrstr[5]; extern char lan_logline[]; extern int rit; extern int trx_control; extern int cqmode; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; #endif extern int block_part; extern char lan_message[]; extern char thisnode; extern int lan_mutex; extern int cqwwm2; pthread_mutex_lock(&disk_mutex); if (!from_lan) { // qso from this node addcall(); /* add call to dupe list */ makelogline(); store_qso(logline4); // send qso to other nodes...... send_lan_message(LOGENTRY, logline4); if (trx_control && (cqmode == S_P)) addspot(); /* add call to bandmap if in S&P and no need to ask for frequency */ hiscall[0] = '\0'; /* reset the call string */ comment[0] = '\0'; /* reset the comment string */ comment[30] = '\0'; } else { // qso from lan strncpy(lan_logline, lan_message + 2, 80); strcat(lan_logline, " "); if (cqwwm2 == 1) { if (lan_logline[0] != thisnode) lan_logline[79] = '*'; } lan_logline[80] = '\0'; score2(); addcall2(); store_qso(lan_logline); } if (from_lan) lan_mutex = 2; else lan_mutex = 1; scroll_log(); lan_mutex = 0; if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); /* erase comment field */ else attron(COLOR_PAIR(NORMCOLOR)); if (!from_lan) mvprintw(12, 54, " "); attron(COLOR_PAIR(7) | A_STANDOUT); if (!from_lan) { mvprintw(7, 0, logline0); mvprintw(8, 0, logline1); mvprintw(9, 0, logline2); } mvprintw(10, 0, logline3); mvprintw(11, 0, logline4); refreshp(); attron(COLOR_PAIR(COLOR_CYAN)); mvprintw(12, 23, qsonrstr); mvprintw(12, 44, his_rst); mvprintw(12, 49, my_rst); sync(); if ((rit == 1) && (trx_control == 1)) outfreq = RESETRIT; block_part = 0; /* unblock use partials */ pthread_mutex_unlock(&disk_mutex); return (0); } tlf_1.1.5/src/freq_display.h0000664000175000017500000000207512072353226014167 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include "tlf.h" #include "nicebox.h" int freq_display (void); int print_dot(int y, int x); int print_space(int y, int x); int print_big_number(int number, int y_position, int x_position, int location); tlf_1.1.5/src/logview.h0000664000175000017500000000166112072353226013161 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include "clear_display.h" int logview(void); tlf_1.1.5/src/tlf.h0000664000175000017500000000674212072353226012277 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include #include #include #include #include #include #ifndef TLF_H #define TLF_H #ifdef HAVE_CONFIG_H #include #endif #define NO_KEYER 0 #define LPT_KEYER 1 /* deprecated */ #define COM1_KEYER 2 /* deprecated */ #define NET_KEYER 3 #define MFJ1278_KEYER 4 #define ORION_KEYER 5 #define K2_KEYER 6 #define GMFSK 7 #define SINGLE 0 /* single op */ #define MULTI 1 /* multi op / single tx */ #define TELNET_INTERFACE 1 #define TNC_INTERFACE 2 #define NETWORK_INTERFACE 3 #define FIFO_INTERFACE 4 #define NOCLUSTER 0 /* no cluster info */ #define MAP 1 /* show spots */ #define CLUSTER 3 /* full cluster info */ #define FREQWINDOW 4 /* M/M frequencies */ #define SHORTCW 1 /* short cw characters in exchange (e.g. 0 = T, 9 = N) */ #define LONGCW 0 #define SEARCHWINDOW 1 /* searchflg on */ #define CQ 1 /* cqmode on */ #define S_P 0 /* S&P mode on */ #define SEND_DE 1 /* de_mode on */ #define CONTEST 1 /* contest mode on */ #define FILTER_ANN 1 /* filter announcements */ #define FILTER_DX 3 #define FILTER_ALL 0 #define FILTER_TALK 2 #define CWMODE 0 #define SSBMODE 1 #define DIGIMODE 2 #define BAND160 32 #define BAND80 16 #define BAND40 8 #define BAND20 4 #define BAND15 2 #define BAND10 1 enum { BANDINDEX_160 = 0, BANDINDEX_80, BANDINDEX_40, BANDINDEX_30, BANDINDEX_20, BANDINDEX_17, BANDINDEX_15, BANDINDEX_12, BANDINDEX_10, NBANDS // not yet used everywhere, }; // many places have hardcode 9 // (or 8, being the maximum band index) // extern int inxes[NBANDS]; /*< conversion from BANDINDEX to BAND-mask, see addmult.c */ #define DUPECOLOR 5 #define NORMCOLOR 4 #define ISDUPE 1 #define NODUPE 0 #define MAX_QSOS 20000 /* internal qso array */ #define MAX_DATALINES 1000 /* from ctydb.dat */ #define MAX_CALLS 5000 /* max nr of calls in dupe array */ #define MAX_MULTS 1000 /* max nr of mults in mults array */ #define MAX_SPOTS 200 /* max nr. of spots in spotarray */ #define MAX_CALLMASTER 50000 /* max number of calls in callmaster array */ #define EDITOR_JOE 0 #define EDITOR_VI 1 #define EDITOR_E3 2 #define EDITOR_MC 3 #define CW_SPEEDS "06121416182022242628303234363840424446485060" #if defined (TLN_LOGLINE) /* do nothing, already defined */ #else #define TLN_LOGLINE struct tln_logline { struct tln_logline *next; struct tln_logline *prev; char *text; int attr; } ; #endif void refreshp(); #endif /* TLF_H */ tlf_1.1.5/src/showzones.h0000664000175000017500000000166212072353226013545 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include "tlf.h" #include "nicebox.h" int show_zones(int bandinx); tlf_1.1.5/src/clusterinfo.h0000664000175000017500000000225412072353226014041 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include "printcall.h" #include "tlf.h" #include "nicebox.h" #include "freq_display.h" #include "lancode.h" #include "get_time.h" #include "searchcallarray.h" #include "getctydata.h" #define MAXMINUTES 30 void clusterinfo(char *timestr); tlf_1.1.5/src/clear_display.c0000664000175000017500000001070112072353226014306 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Clear_display takes care of status lines and * backgrounds (general repaint of the screen) *--------------------------------------------------------------*/ #include "globalvars.h" #include "clear_display.h" void clear_display(void) { extern int use_rxvt; extern char speedstr[]; extern int speed; extern char mode[]; extern int cqdelay; extern char headerline[]; extern char terminal1[]; extern char terminal2[]; extern char terminal3[]; extern char terminal4[]; extern char backgrnd_str[]; extern char band[9][4]; extern int bandinx; extern int trxmode; extern char my_rst[]; extern char his_rst[]; extern char qsonrstr[]; extern int cqww; extern int arrldx_usa; extern char comment[]; extern char hiscall[]; extern int searchflg; extern int m; extern struct tm *time_ptr; extern char whichcontest[]; char time_buf[80]; char speedbuf[4] = " "; int cury, curx; strncpy(speedbuf, speedstr + (2 * speed), 2); speedbuf[2] = '\0'; getyx(stdscr, cury, curx); mvprintw(0, 0, ""); attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(0, 0, " "); mvprintw(0, 0, " %s S=%s D=%i ", mode, speedbuf, cqdelay); mvprintw(0, 21, headerline); if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_WHITE | A_BOLD | A_STANDOUT)); else attron(COLOR_PAIR(COLOR_WHITE | A_STANDOUT)); mvaddstr(1, 0, terminal1); mvaddstr(2, 0, terminal2); mvaddstr(3, 0, terminal3); mvaddstr(4, 0, terminal4); mvaddstr(5, 0, backgrnd_str); mvprintw(6, 0, ""); mvaddstr(6, 0, ""); attron(COLOR_PAIR(COLOR_GREEN)); // hline(ACS_HLINE, 80); mvaddstr(6, 0, backgrnd_str); mvprintw(6, (80 - strlen(whichcontest))/2 - 4, " == %s == ", whichcontest); showscore(); if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_WHITE) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT); mvaddstr(7, 0, logline0); mvaddstr(8, 0, logline1); mvaddstr(9, 0, logline2); mvaddstr(10, 0, logline3); mvaddstr(11, 0, logline4); attron(COLOR_PAIR(COLOR_CYAN)); mvaddstr(12, 0, backgrnd_str); mvaddstr(12, 0, band[bandinx]); get_time(); if (trxmode == CWMODE) strftime(time_buf, 60, "CW %d-%b-%y %H:%M ", time_ptr); else if (trxmode == SSBMODE) strftime(time_buf, 60, "SSB %d-%b-%y %H:%M ", time_ptr); else strftime(time_buf, 60, "DIG %d-%b-%y %H:%M ", time_ptr); m = time_ptr->tm_mon; /* month for muf calc */ mvprintw(12, 3, time_buf); qsonr_to_str(); mvaddstr(12, 23, qsonrstr); if (trxmode != SSBMODE) { my_rst[2] = '9'; his_rst[2] = '9'; } else { my_rst[2] = ' '; his_rst[2] = ' '; } mvaddstr(12, 44, his_rst); mvaddstr(12, 49, my_rst); if (cqww == 1) { if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvaddstr(12, 54, comment); } if (arrldx_usa == 1) { if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvaddstr(12, 54, comment); } if (searchflg == SEARCHWINDOW) searchlog(hiscall); if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvaddstr(12, 29, hiscall); attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(24, 0, backgrnd_str); if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(cury, curx, ""); refreshp(); } tlf_1.1.5/src/messagechange.c0000664000175000017500000000737012072353226014275 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Change CW messages * last change: 25.2.02 11:50 *--------------------------------------------------------------*/ #include "messagechange.h" int message_change(int x) { extern char backgrnd_str[]; extern char message[15][80]; extern char sp_return[]; extern char cq_return[]; int j; int count; int mes_length; int bufnr = 0; char printbuf[80]; clear_display(); attron(COLOR_PAIR(7) | A_STANDOUT); for (j = 13; j <= 23; j++) { mvprintw(j, 0, backgrnd_str); } if (x == 6) { nicebox(14, 3, 2, 60, "Enter message (F1-12, C, S)"); attron(COLOR_PAIR(7) | A_STANDOUT); while (1) { bufnr = onechar(); if ((bufnr == 'C') || (bufnr == 'S')) break; if (bufnr >= 129 && bufnr <= 141) break; } if (bufnr == 'S') { bufnr = 12; } else if (bufnr == 'C') { bufnr = 13; } else { if (bufnr <= 138) { bufnr = bufnr - 129; } else { bufnr = bufnr - 130; } } printbuf[0] = '\0'; strncat(printbuf, message[bufnr], strlen(message[bufnr]) - 1); mvprintw(15, 4, "%s", printbuf); refreshp(); mvprintw(16, 4, ""); message[bufnr][0] = '\0'; echo(); getnstr(message[bufnr], 60); noecho(); strcat(message[bufnr], "\n"); mes_length = strlen(message[bufnr]); if (mes_length < 2) { clear_display(); attron(COLOR_PAIR(7) | A_STANDOUT); for (j = 13; j <= 23; j++) { mvprintw(j, 0, backgrnd_str); } return (1); } for (count = 0; count <= mes_length; count++) { if ((message[bufnr][count] > 96) && (message[bufnr][count] < 123)) message[bufnr][count] = message[bufnr][count] - 32; } } else { // from shift F1 - F8 (x = 142 - 150) if ((x > 141) && (x < 151)) { bufnr = x - 142; if (bufnr >= 3) bufnr--; nicebox(14, 3, 2, 60, "Edit message"); attron(COLOR_PAIR(7) | A_STANDOUT); printbuf[0] = '\0'; strncat(printbuf, message[bufnr], strlen(message[bufnr]) - 1); mvprintw(15, 4, "%s", printbuf); refreshp(); mvprintw(16, 4, ""); message[bufnr][0] = '\0'; echo(); getnstr(message[bufnr], 60); noecho(); strcat(message[bufnr], "\n"); mes_length = strlen(message[bufnr]); if (mes_length < 2) { clear_display(); attron(COLOR_PAIR(7) | A_STANDOUT); for (j = 13; j <= 23; j++) { mvprintw(j, 0, backgrnd_str); } return (1); } for (count = 0; count <= mes_length; count++) { if ((message[bufnr][count] > 96) && (message[bufnr][count] < 123)) message[bufnr][count] = message[bufnr][count] - 32; } } } mvprintw(12, 29, ""); refreshp(); clear_display(); attron(COLOR_PAIR(7) | A_STANDOUT); for (j = 13; j <= 23; j++) { mvprintw(j, 0, backgrnd_str); } writeparas(); strncpy(sp_return, message[12], 79); strncpy(cq_return, message[13], 79); return (0); } tlf_1.1.5/src/sendqrg.c0000664000175000017500000003073112072353226013143 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "sendqrg.h" #include "tlf.h" int send_bandswitch(int trxqrg); int sendqrg(void) { extern char hiscall[]; extern int trx_control; #ifdef HAVE_LIBHAMLIB //extern RIG *my_rig; extern freq_t outfreq; #else //extern int my_rig; extern int outfreq; #endif float trxqrg; if (trx_control != 1) return (0); /* nothing to do here */ trxqrg = atof(hiscall); switch ((int) trxqrg) { case 0 ... 1799:{ trxqrg = 0; break; } case 1800 ... 2000: case 3500 ... 4000: case 7000 ... 7300: case 10100 ... 10150: case 14000 ... 14350: case 18068 ... 18168: case 21000 ... 21450: case 24890 ... 24990: case 28000 ... 29700: { #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (trxqrg * 1000); #else outfreq = (int) (trxqrg * 1000); #endif send_bandswitch((int) trxqrg); break; } default: trxqrg = 0; } return (trxqrg); } /********************************************************************************************/ #ifdef HAVE_LIBHAMLIB //code for Hamlib interface int init_tlf_rig(void) { extern RIG *my_rig; extern rig_model_t myrig_model; extern freq_t rigfreq; /* frequency */ extern freq_t outfreq; extern char rigconf[]; extern int serial_rate; extern int rig_port; extern char rigportname[]; extern int verbose; extern int debugflag; int retcode; /* generic return code from functions */ const char *ptt_file = NULL, *dcd_file = NULL; ptt_type_t ptt_type = RIG_PTT_NONE; dcd_type_t dcd_type = RIG_DCD_NONE; char *cnfparm, *cnfval; int rigconf_len, i; /* * allocate memory, setup & open port */ rig_set_debug(RIG_DEBUG_NONE); my_rig = rig_init(myrig_model); if (!my_rig) { shownr("Unknown rig num %d", (int) myrig_model); sleep(2); return (-1); } else { if (strlen(rigportname) > 1) { rigportname[strlen(rigportname) - 1] = '\0'; // remove '\n' strncpy(my_rig->state.rigport.pathname, rigportname, FILPATHLEN); } else { if (rig_port == 0) strncpy(my_rig->state.rigport.pathname, "/dev/ttyS0", FILPATHLEN); else strncpy(my_rig->state.rigport.pathname, "/dev/ttyS1", FILPATHLEN); } } if (ptt_type != RIG_PTT_NONE) my_rig->state.pttport.type.ptt = ptt_type; if (dcd_type != RIG_DCD_NONE) my_rig->state.dcdport.type.dcd = dcd_type; if (ptt_file) strncpy(my_rig->state.pttport.pathname, ptt_file, FILPATHLEN); if (dcd_file) strncpy(my_rig->state.dcdport.pathname, dcd_file, FILPATHLEN); my_rig->state.rigport.parm.serial.rate = serial_rate; cnfparm = cnfval = rigconf; rigconf_len = strlen(rigconf); for (i = 0; i < rigconf_len; i++) { /* FIXME: left hand value of = cannot be null */ if (rigconf[i] == '=' && cnfval == cnfparm) { cnfval = rigconf + i + 1; rigconf[i] = '\0'; continue; } if (rigconf[i] == ',' || i + 1 == rigconf_len) { if (cnfval <= cnfparm) { showstring("Missing parm value in RIGCONF: ", rigconf); refreshp(); sleep(2); return (-1); } if (rigconf[i] == ',') rigconf[i] = '\0'; retcode = rig_set_conf(my_rig, rig_token_lookup(my_rig, cnfparm), cnfval); if (retcode != RIG_OK) { showmsg("rig_set_conf: error "); refreshp(); sleep(5); return (-1); } cnfparm = cnfval = rigconf + i + 1; continue; } } retcode = rig_open(my_rig); if (retcode != RIG_OK) { showmsg("rig_open: error "); // mvprintw(7,0,"rig_open: error = %s \n", rigerror(retcode)); refreshp(); sleep(2); return (-1); } retcode = rig_get_freq(my_rig, RIG_VFO_CURR, &rigfreq); if (retcode != RIG_OK) { showmsg("Problem with rig link!"); sleep(1); } else { shownr("freq =", (int) rigfreq); if (verbose == 1) sleep(1); } if (debugflag == 1) { // debug routines sleep(10); retcode = rig_get_freq(my_rig, RIG_VFO_CURR, &rigfreq); if (retcode != RIG_OK) { showmsg("Problem with rig get freq!"); sleep(1); } else { shownr("freq =", (int) rigfreq); if (verbose == 1) sleep(1); } sleep(10); outfreq = 14000000; //test set frequency retcode = rig_set_freq(my_rig, RIG_VFO_CURR, outfreq); if (retcode != RIG_OK) { showmsg("Problem with rig set freq!"); sleep(1); } else { showmsg("Rig set freq ok!"); sleep(1); } outfreq = 0; retcode = rig_get_freq(my_rig, RIG_VFO_CURR, &rigfreq); // read qrg if (retcode != RIG_OK) { showmsg("Problem with rig get freq!"); sleep(1); } else { shownr("freq =", (int) rigfreq); if (verbose == 1) sleep(1); } sleep(10); } // end debug if (verbose == 1 || debugflag == 1) sleep(1); return (0); } int close_tlf_rig(RIG * my_rig) { rig_close(my_rig); /* close port */ rig_cleanup(my_rig); /* if you care about memory */ printf("port %s closed ok \n", SERIAL_PORT); return (0); } #endif // end code for Hamlib interface /* ------------------------------------------ native get mode ----------------------------- */ int native_rig_get_mode(rignumber) { extern int native_rig_fd; extern int trxmode; int i, rc; char line[20] = ""; char inputline[80] = ""; const char eom[2] = { '\015', '\0' }; strcpy(line, "?RMM"); strcat(line, eom); if (native_rig_fd > 0) rc = write(native_rig_fd, line, strlen(line)); usleep(30000); inputline[0] = '\0'; if (native_rig_fd > 0) { i = read(native_rig_fd, inputline, sizeof(inputline) - 1); if (strncmp(inputline, "Z!", 2) != 0) { if (strncmp(inputline, "@RMM", 4) == 0) { if (inputline[4] == '0') trxmode = SSBMODE; else if (inputline[4] == '1') trxmode = SSBMODE; else trxmode = CWMODE; mvprintw(23, 30, "%s", inputline); refreshp(); sleep(1); } } else { mvprintw(24, 0, "Rig communication error"); refreshp(); sleep(2); } } return (0); } /*--------------------------------- native rig init------------------------------------------------*/ int init_native_rig(void) { extern char rigportname[]; extern int serial_rate; extern int native_rig_fd; extern int rignumber; int i, rc; struct termios termattribs; char line[20] = ""; char inputline[80] = ""; const char eom[2] = { '\015', '\0' }; if (rigportname[strlen(rigportname) - 1] == '\n') rigportname[strlen(rigportname) - 1] = '\0'; // remove \n if ((native_rig_fd = open(rigportname, O_RDWR | O_NONBLOCK)) < 0) { mvprintw(5, 0, "open of %s failed!!!", rigportname); refreshp(); sleep(2); return (-1); } termattribs.c_iflag = IGNBRK | IGNPAR | IMAXBEL | IXOFF; termattribs.c_oflag = 0; termattribs.c_cflag = CS8 | CSTOPB | CREAD | CLOCAL; // termattribs.c_cflag = CS8 | CREAD | CLOCAL; termattribs.c_lflag = 0; /* Set some term flags */ /* The ensure there are no read timeouts (possibly writes?) */ termattribs.c_cc[VMIN] = 1; termattribs.c_cc[VTIME] = 0; switch (serial_rate) { case 1200:{ cfsetispeed(&termattribs, B1200); /* Set input speed */ cfsetospeed(&termattribs, B1200); /* Set output speed */ break; } case 2400:{ cfsetispeed(&termattribs, B2400); /* Set input speed */ cfsetospeed(&termattribs, B2400); /* Set output speed */ break; } case 4800:{ cfsetispeed(&termattribs, B4800); /* Set input speed */ cfsetospeed(&termattribs, B4800); /* Set output speed */ break; } case 9600:{ cfsetispeed(&termattribs, B9600); /* Set input speed */ cfsetospeed(&termattribs, B9600); /* Set output speed */ break; } case 57600:{ cfsetispeed(&termattribs, B57600); /* Set input speed */ cfsetospeed(&termattribs, B57600); /* Set output speed */ break; } default:{ cfsetispeed(&termattribs, B9600); /* Set input speed */ cfsetospeed(&termattribs, B9600); /* Set output speed */ } } tcsetattr(native_rig_fd, TCSANOW, &termattribs); /* Set the serial port */ strcpy(line, "XX"); strcat(line, eom); if (native_rig_fd > 0) rc = write(native_rig_fd, line, strlen(line)); usleep(30000); if (native_rig_fd > 0) { // i = read (native_rig_fd, inputline, RIG_BUFFERSIZE-1); ### bug fix i = read(native_rig_fd, inputline, sizeof(inputline)); if (strncmp(inputline, "Z!", 2) != 0) { rignumber = 2000; // ORION mvprintw(23, 0, "%s", inputline); refreshp(); sleep(1); } else { mvprintw(23, 0, "Rig communication not initialized"); refreshp(); sleep(2); } } native_rig_get_mode(rignumber); return (0); } /* ----------------------------------------------- close native rig ----------------------------*/ int close_native_rig(void) { extern int native_rig_fd; if (native_rig_fd > 0) close(native_rig_fd); return (0); } /* ------------------------------------------ native rig get freqency --------------------------*/ float native_rig_get_freq(int rignumber) // ORION only { extern int native_rig_fd; extern int rig_comm_error; extern int rig_comm_success; char line[20] = ""; char inputline[20] = ""; const char eom[2] = { '\015', '\0' }; // ORION int i, rc, rigfreq; strcpy(line, "?AF"); // ORION strcat(line, eom); if (native_rig_fd > 0) rc = write(native_rig_fd, line, strlen(line)); usleep(100000); if (native_rig_fd > 0) { i = read(native_rig_fd, inputline, sizeof(inputline) - 1); if (strncmp(inputline, "Z!", 2) != 0) { if (strncmp(inputline, "@AF", 3) == 0 && strlen(inputline) == 12) { rigfreq = atof(inputline + 3); rig_comm_success++; return (rigfreq); } else { rig_comm_error++; } } else { mvprintw(24, 0, "Rig communication error"); refreshp(); } inputline[0] = '\0'; } return (0.0); } /* ------------------------------------------ native set mode ----------------------------- */ int native_rig_set_mode(int rignumber, int mode) { extern int native_rig_fd; int rc; char line[20] = ""; const char eom[2] = { '\015', '\0' }; // ORION switch (mode) { case N_RIGMODE_USB: strcpy(line, "*RMM0"); // ORION break; case N_RIGMODE_LSB: strcpy(line, "*RMM1"); break; default: strcpy(line, "*RMM3"); } strcat(line, eom); if (native_rig_fd > 0) rc = write(native_rig_fd, line, strlen(line)); return (0); } /* ------------------------------------------ native set frequency----------------------------- */ int native_rig_set_freq(int rignumber, int outfreq) { int rc; extern int native_rig_fd; char line[20] = ""; const char eom[2] = { '\015', '\0' }; // ORION sprintf(line, "%s%d", "*AF", outfreq); strcat(line, eom); if (native_rig_fd > 0) rc = write(native_rig_fd, line, strlen(line)); outfreq = 0; return (0); } /* ------------------------------------------ native reset rit----------------------------- */ int native_rig_reset_rit(int rignumber) { int rc; extern int native_rig_fd; #ifdef HAVE_LIBHAMLIB //code for Hamlib interface extern freq_t outfreq; #else extern int outfreq; #endif char line[20] = "*RMR0"; const char eom[2] = { '\015', '\0' }; // ORION strcat(line, eom); if (native_rig_fd > 0) rc = write(native_rig_fd, line, strlen(line)); outfreq = 0; return (0); } /* -------------------------------------- set cw speed --------------------------------- */ int orion_set_cw_speed(int speed) { int rc; extern int native_rig_fd; char buffer[10]; //sprintf(buffer, "%s%d%c%", "*CS", speed, '\015'); ### bug fix sprintf(buffer, "%s%d%c", "*CS", speed, '\015'); if (native_rig_fd > 0) rc = write(native_rig_fd, buffer, strlen(buffer)); return (0); } tlf_1.1.5/src/muf.h0000664000175000017500000000202212072353226012264 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include "sunup.h" #define PI 3.14159265 #define I "INVALID" int muf(void); tlf_1.1.5/src/write_tone.h0000664000175000017500000000156112072353226013663 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ void write_tone(void); tlf_1.1.5/src/paccdx.c0000664000175000017500000000755312072353226012750 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "paccdx.h" #include #include "getctydata.h" int pacc_pa(void) { extern int w_cty; extern int ve_cty; extern int zl_cty; extern int ja_cty; extern int py_cty; extern int ce_cty; extern int lu_cty; extern int vk_cty; extern int zs_cty; extern int ua9_cty; extern char pxstr[]; extern int addcallarea; extern char hiscall[]; extern int bandinx; extern int countrynr; extern int countryscore[]; extern int pacc_qsos[10][10]; //extern int band_score[]; int pxnr; int i = 0, j = 0, k; k = 1; switch (bandinx) { case BANDINDEX_160:{ i = BAND160; j = 0; break; } case BANDINDEX_80:{ i = BAND80; j = 1; break; } case BANDINDEX_40:{ i = BAND40; j = 2; break; } case BANDINDEX_20:{ i = BAND20; j = 3; break; } case BANDINDEX_15:{ i = BAND15; j = 4; break; } case BANDINDEX_10:{ i = BAND10; j = 5; break; } } getpx(hiscall); pxnr = pxstr[strlen(pxstr) - 1] - 48; getctydata(hiscall); if (countrynr == w_cty) { if ((pacc_qsos[0][pxnr] & i) == 0) { pacc_qsos[0][pxnr] = pacc_qsos[0][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == ve_cty) { if ((pacc_qsos[1][pxnr] & i) == 0) { pacc_qsos[1][pxnr] = pacc_qsos[1][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == zl_cty) { if ((pacc_qsos[2][pxnr] & i) == 0) { pacc_qsos[2][pxnr] = pacc_qsos[2][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == ja_cty) { if ((pacc_qsos[3][pxnr] & i) == 0) { pacc_qsos[3][pxnr] = pacc_qsos[3][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == py_cty) { if ((pacc_qsos[4][pxnr] & i) == 0) { pacc_qsos[4][pxnr] = pacc_qsos[4][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == ce_cty) { if ((pacc_qsos[5][pxnr] & i) == 0) { pacc_qsos[5][pxnr] = pacc_qsos[5][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == lu_cty) { if ((pacc_qsos[6][pxnr] & i) == 0) { pacc_qsos[6][pxnr] = pacc_qsos[6][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == vk_cty) { if ((pacc_qsos[7][pxnr] & i) == 0) { pacc_qsos[7][pxnr] = pacc_qsos[7][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == zs_cty) { if ((pacc_qsos[8][pxnr] & i) == 0) { pacc_qsos[8][pxnr] = pacc_qsos[8][pxnr] | i; countryscore[j]++; addcallarea = 1; } k = 0; } else if (countrynr == ua9_cty) { if ((pxnr == 9) || (pxnr == 0)) { if ((pacc_qsos[9][pxnr] & i) == 0) { pacc_qsos[9][pxnr] = pacc_qsos[9][pxnr] | i; // countryscore[j]++; addcallarea = 1; } k = 0; } } else { addcallarea = 0; k = 1; } return (k); } tlf_1.1.5/src/write_keyer.h0000664000175000017500000000172212072353226014034 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include "tlf.h" #include "autocq.h" int write_keyer(void); tlf_1.1.5/src/audio.c0000664000175000017500000004461712072353226012611 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004-2005 Rein Couperus * 2012 Thomas Beierlein * * 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 Library 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. */ /* ------------------------------------------------------------ * audio.c soundcard input routine * *--------------------------------------------------------------*/ #include "audio.h" #include #include #include #include "gettxinfo.h" #include "onechar.h" extern char sc_device[]; int afd; #define ABUFSIZE 4000 void init_audio() { char afile[40]; /* Audio device name */ int sndfmt; /* Encoding of audio from */ int channels; /* Number of channels to record */ int speed; /* Sample rate of audio */ sndfmt = AFMT_MU_LAW; channels = 1; speed = 8000; /* Audio device setup */ strcpy(afile, sc_device); if ((afd = open(afile, O_RDONLY, 0)) == -1) { perror(afile); exit(errno); } if (ioctl(afd, SNDCTL_DSP_SETFMT, &sndfmt) == -1) { perror("mu law"); exit(errno); } if (ioctl(afd, SNDCTL_DSP_CHANNELS, &channels) == -1) { perror("mono"); exit(errno); } if (ioctl(afd, SNDCTL_DSP_SPEED, &speed) == -1) { perror("8000 sps"); exit(errno); } } int close_audio() { close(afd); return (0); } /* ------------ rescale bar ----------*/ int rescale(int testvalue) { extern int scale_values[]; if (testvalue > scale_values[0]) testvalue = 19; else if (testvalue > scale_values[1]) testvalue = 18; else if (testvalue > scale_values[2]) testvalue = 17; else if (testvalue > scale_values[3]) testvalue = 16; else if (testvalue > scale_values[4]) testvalue = 15; else if (testvalue > scale_values[5]) testvalue = 14; else if (testvalue > scale_values[6]) testvalue = 13; else if (testvalue > scale_values[7]) testvalue = 12; else if (testvalue > scale_values[8]) testvalue = 11; else if (testvalue > scale_values[9]) testvalue = 10; else if (testvalue > scale_values[10]) testvalue = 9; else if (testvalue > scale_values[11]) testvalue = 8; else if (testvalue > scale_values[12]) testvalue = 7; else if (testvalue > scale_values[13]) testvalue = 6; else if (testvalue > scale_values[14]) testvalue = 5; else if (testvalue > scale_values[15]) testvalue = 4; else if (testvalue > scale_values[16]) testvalue = 3; else if (testvalue > scale_values[17]) testvalue = 2; else if (testvalue > scale_values[18]) testvalue = 1; else testvalue = 0; return (testvalue); } float get_audio_sample(void) { int rc = 0; /* Return value from subs */ static float avg = 128.0; static float maxval = 0; static float minval = 0; static float retval = 0.0; unsigned char abuf[ABUFSIZE]; /* Audio data buffer */ int i, k; for (k = 0; k < 4; k++) { if ((rc = read(afd, abuf, ABUFSIZE)) == -1) { perror("audio read"); exit(errno); } for (i = 0; i < rc; i++) // calculate average { if ((maxval - minval) != 0.0) { if (i > 2) avg = avg + (abuf[i] + abuf[i - 1] + abuf[i - 2] + abuf[i - 3]) / 5; else avg = avg + (abuf[i] + abuf[i + 1] + abuf[i + 2] + abuf[i + 3]) / 5; } if (avg >= 188.0) avg = 128.0; if (avg <= 60.0) avg = 128.0; } for (i = 0; i < rc; i++) // calculate maximum avg value { if (abuf[i] >= avg) { if (i > 0) maxval = ((510 * maxval) + abuf[i] + abuf[i - 1]) / 512; else maxval = ((510 * maxval) + abuf[i] + abuf[i + 1]) / 512; if (maxval < avg) maxval = avg + 1; } else { if (i > 0) minval = ((510 * minval) + abuf[i] + abuf[i - 1]) / 512; else minval = ((510 * minval) + abuf[i] + abuf[i + 1]) / 512; if (minval >= avg) minval = avg - 1; } } retval = (maxval - minval); if (retval < 0.0) retval = 0.0; } mvprintw(23, 5, " "); mvprintw(23, 5, "%4.0f", retval); refreshp(); retval = rescale(retval); return (retval); } /* ----------make bar for s meter ------------*/ int make_bar(int xpos, int ypos, int yheight, unsigned int value, int bar_type) { int i; if (bar_type == S_BAR) { for (i = 0; i < yheight; i++) mvprintw(ypos - i, xpos, " "); } /* Make the bar */ if (bar_type == S_BAR || bar_type == PAN_BAR) { for (i = 0; i < value && i < 20; i++) mvprintw(ypos - i, xpos, "#"); } else mvprintw(21 - value, xpos, "@"); refreshp(); return (0); } /* ------------ draw noise bridge screen ----------*/ int draw_nb_screen(int xpos, int ypos, int yheight, int bar_type) { int i; attroff(A_BOLD); for (i = 0; i < 21; i++) { switch (i) { case 0: case 20: mvprintw(ypos + i, xpos, "+---------+---------+---------+---------+---------+"); break; case 1 ... 4: case 6 ... 9: case 11 ... 14: case 16 ... 19: mvprintw(ypos + i, xpos, "| | | | | | | | | | |"); break; case 5: case 10: case 15: mvprintw(ypos + i, xpos, "+----+----+----+----+----+----+----+----+----+----+"); } } attron(A_BOLD); mvprintw(ypos + 1, 2, "%2d-", 0); // 0 mvprintw(ypos + 3, 2, "%2d-", 3); // 3 mvprintw(ypos + 5, 2, "%2d-", 6); // 6 mvprintw(ypos + 10, 2, "%2d-", 10); mvprintw(ypos + 15, 2, "%2d-", 20); // 20 mvprintw(ypos + 20, 2, "%2d-", 40); return (0); } /* ------------ draw scanner screen ----------*/ int drawscreen(int xpos, int ypos, int yheight, int bar_type) { int i; attroff(A_BOLD); for (i = 0; i < 21; i++) { switch (i) { case 0: case 20: mvprintw(ypos + i, xpos, "+---------+---------+---------+---------+---------+"); break; case 1 ... 4: case 6 ... 9: case 11 ... 14: case 16 ... 19: mvprintw(ypos + i, xpos, "| | | | | | | | | | |"); break; case 5: case 10: case 15: mvprintw(ypos + i, xpos, "+----+----+----+----+----+----+----+----+----+----+"); } } attron(A_BOLD); mvprintw(ypos + 1, 2, "%2d-", 20); mvprintw(ypos + 3, 2, "%2d-", 10); mvprintw(ypos + 5, 2, "%2d-", 9); mvprintw(ypos + 7, 2, "%2d-", 8); mvprintw(ypos + 9, 2, "%2d-", 7); mvprintw(ypos + 11, 2, "%2d-", 6); mvprintw(ypos + 13, 2, "%2d-", 5); mvprintw(ypos + 15, 2, "%2d-", 4); mvprintw(ypos + 17, 2, "%2d-", 3); mvprintw(ypos + 19, 2, "%2d-", 2); return (0); } /* ------------ draw S meter screen ----------*/ int drawSmeter(int xpos, int ypos, int yheight, float testvalue) { extern int use_rxvt; int i; for (i = 0; i < 21; i++) { switch (i) { case 0: case 20: mvprintw(ypos + i, xpos, "+---+"); break; case 1 ... 4: case 6 ... 19: mvprintw(ypos + i, xpos, "| |"); break; case 5: if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_GREEN) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(ypos + i, xpos, "> <"); if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_CYAN) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); } } mvprintw(ypos + 1, 3, "%2d", 20); mvprintw(ypos + 3, 3, "%2d", 10); mvprintw(ypos + 5, 3, "%2d", 9); mvprintw(ypos + 7, 3, "%2d", 8); mvprintw(ypos + 9, 3, "%2d", 7); mvprintw(ypos + 11, 3, "%2d", 6); mvprintw(ypos + 13, 3, "%2d", 5); mvprintw(ypos + 15, 3, "%2d", 4); mvprintw(ypos + 17, 3, "%2d", 3); mvprintw(ypos + 19, 3, "%2d", 2); make_bar(7, 20, 20, (int) testvalue, S_BAR); refreshp(); return (0); } /* ------------------ Panoramic scan -------------------- */ int panscan(void) { extern int use_rxvt; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; #endif int rc, j, key = 0; float testvalue; float FromFrequency = 0.0; float FrequencyStep = 0.0; float frequencies[51]; while (1) { key = 0; if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_CYAN) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); for (j = 0; j <= 24; j++) mvprintw(j, 0, " "); drawscreen(5, 1, 21, 0); mvprintw(1, 60, "- PANORAMIC SCAN -"); mvprintw(5, 60, "Frequency: "); refreshp(); echo(); rc = scanf("%f", &FromFrequency); noecho(); mvprintw(5, 72, "%5.1f", FromFrequency); mvprintw(22, 1, "%5.1f", FromFrequency); refreshp(); mvprintw(7, 60, "Step (kHz): "); refreshp(); rc = scanf("%f", &FrequencyStep); mvprintw(7, 72, "%5.1f", FrequencyStep); refreshp(); for (j = 0; j < 51; j++) { frequencies[j] = FromFrequency + j * FrequencyStep; switch (j) { case 10: case 20: case 30: case 40: case 50: mvprintw(22, j + 1, "%5.1f", frequencies[j]); break; default: ; } } refreshp(); /* ------------- scan --------------------- */ for (j = 0; j < 5; j++) testvalue = get_audio_sample(); for (j = 0; j < 51; j++) { int i; for (i = 0; i < 100; i++) { if (outfreq == 0) break; usleep(10000); } #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (frequencies[j] * 1000); #else outfreq = (int) (frequencies[j] * 1000); #endif usleep(50 * 1000); testvalue = get_audio_sample(); make_bar(5 + j, 20, 20, (int) testvalue, PAN_BAR); nodelay(stdscr, TRUE); key = getch(); nodelay(stdscr, FALSE); if (key == 27 || key == '\n') break; } // end for /* -----------end scan -------------------- */ mvprintw(23, 60, "---- Key? ----"); j = getch(); if (j == 27) break; } // end while return (0); } /* ------------------ Noise bridge scan -------------------- */ int nbscan(void) { extern int use_rxvt; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; #endif int rc, j, key = 0; float testvalue; float FromFrequency = 0.0; float FrequencyStep = 0.0; float frequencies[51]; float values[51]; while (1) { key = 0; if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_CYAN) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); for (j = 0; j <= 24; j++) // wipe the screen mvprintw(j, 0, " "); draw_nb_screen(5, 1, 21, 0); // draw the grid mvprintw(1, 60, "- NOISE BRIDGE -"); // get the parameters mvprintw(5, 60, "Frequency: "); refreshp(); rc = scanf("%f", &FromFrequency); mvprintw(5, 72, "%5.1f", FromFrequency); mvprintw(22, 1, "%5.1f", FromFrequency); refreshp(); mvprintw(7, 60, "Step (kHz): "); refreshp(); rc = scanf("%f", &FrequencyStep); mvprintw(7, 72, "%5.1f", FrequencyStep); refreshp(); for (j = 0; j < 51; j++) { // draw the X scale frequencies[j] = FromFrequency + j * FrequencyStep; switch (j) { case 10: case 20: case 30: case 40: case 50: mvprintw(22, j + 1, "%5.1f", frequencies[j]); break; default: ; } } refreshp(); /* ------------- scan --------------------- */ for (j = 0; j < 5; j++) testvalue = get_audio_sample(); for (j = 0; j < 51; j++) { int i; for (i = 0; i < 100; i++) { if (outfreq == 0) break; usleep(10000); } #ifdef HAVE_LIBHAMLIB outfreq = (freq_t) (frequencies[j] * 1000); #else outfreq = (int) (frequencies[j] * 1000); #endif usleep(50 * 1000); testvalue = get_audio_sample(); values[j] = testvalue; if (j > 0) testvalue = (values[j - 1] + values[j]) / 2; make_bar(5 + j, 20, 20, (int) testvalue, SPOT_BAR); nodelay(stdscr, TRUE); key = getch(); nodelay(stdscr, FALSE); if (key == 27 || key == '\n') break; } // end for /* -----------end scan -------------------- */ mvprintw(23, 60, "---- Key? ----"); j = getch(); if (j == 27) break; } // end while return (0); } void scanmenu(void) { extern int use_rxvt; int j; if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_CYAN) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); for (j = 0; j <= 24; j++) mvprintw(j, 0, " "); mvprintw(1, 20, "--- TLF SCANNER UTILITY ---"); mvprintw(6, 20, "0.: Calibrate S-meter on S9 !"); mvprintw(8, 20, "1.: Panorama scan"); mvprintw(9, 20, "2.: Noise bridge scan"); //mvprintw (10, 20, "3.: Channel scan (n.a.)"); //mvprintw (11, 20, "4.: Beacon scan (n.a.)"); mvprintw(11, 20, "ESC: Exit scan function"); mvprintw(23, 20, " --- Press a key to continue --- "); refreshp(); } /* -------------------main test routine ------- */ int testaudio() { float testvalue; char key = '\0'; int runnit = 1; clear(); scanmenu(); /* ------------initialize sound card --------*/ init_audio(); while (runnit == 1) { testvalue = get_audio_sample(); drawSmeter(5, 1, 21, testvalue); nodelay(stdscr, TRUE); key = getch(); nodelay(stdscr, FALSE); switch (key) { case '1': panscan(); scanmenu(); break; case '2': nbscan(); scanmenu(); break; case 27: runnit = 0; } } close_audio(); clear(); return (0); } void recordmenue(void) { extern int use_rxvt; int j; if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_CYAN) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); for (j = 0; j <= 24; j++) mvprintw(j, 0, " "); mvprintw(1, 20, "--- TLF SOUND RECORDER UTILITY ---"); mvprintw(6, 20, "F1 ... F12, S, C: Record Messages"); mvprintw(9, 20, "1.: Enable contest recorder"); mvprintw(10, 20, "2.: Disable contest recorder"); mvprintw(11, 20, "3.: Play back file"); mvprintw(13, 20, "ESC: Exit sound recorder function"); refreshp(); } /*--------------------------------------------------------------------------*/ void do_record(int message_nr) { extern char ph_message[14][80]; int rc; char commands[80] = ""; mvprintw(15, 20, "recording %s", ph_message[message_nr]); mvprintw(16, 20, "ESC to exit"); mvprintw(17, 20, ""); refreshp(); strcpy(commands, "rec -r 8000 "); //G4KNO strcat(commands, ph_message[message_nr]); strcat(commands, " -q &"); //G4KNO rc = system(commands); //G4KNO: Loop until keypress while (1) { if (getch() == 27) { //kill process (SIGINT=Ctrl-C). rc = system("pkill -SIGINT -n rec"); break; } } } /*--------------------------------------------------------------------------*/ void record(void) { extern char ph_message[14][80]; int rc, runnit = 1, key, i = 0, j = 4; char commands[80] = ""; char playbackfile[40]; char printname[7]; DIR *sounddir; struct dirent *soundfilename; recordmenue(); while (runnit == 1) { nodelay(stdscr, TRUE); key = onechar(); nodelay(stdscr, FALSE); switch (key) { case 129: do_record(0); runnit = 0; break; case 130: do_record(1); runnit = 0; break; case 131: do_record(2); runnit = 0; break; case 132: do_record(3); runnit = 0; break; case 133: do_record(4); runnit = 0; break; case 134: do_record(5); runnit = 0; break; case 135: do_record(6); runnit = 0; break; case 136: do_record(7); runnit = 0; break; case 137: do_record(8); runnit = 0; break; case 138: do_record(9); runnit = 0; break; case 140: do_record(10); runnit = 0; break; case 141: do_record(11); runnit = 0; break; case 's': case 'S': do_record(12); runnit = 0; break; case 'c': case 'C': do_record(13); runnit = 0; break; case '1': rc = system("echo " " > ~/.VRlock"); rc = system ("cd ~/tlf/soundlogs; ./soundlog > /dev/null 2> /dev/null &"); mvprintw(15, 20, "Contest recording enabled..."); refreshp(); sleep(1); runnit = 0; break; case '2': mvprintw(15, 20, "Contest recording disabled..."); refreshp(); sleep(1); rc = system("rm ~/.VRlock"); rc = system("pkill -f soundlogs > /dev/null 2> /dev/null "); runnit = 0; break; case '3': sounddir = opendir("$HOME/tlf/soundlogs/"); // (W9WI) if (sounddir == NULL) break; for (i = 4; i < 15; i++) mvprintw(i, 0, " "); mvprintw(4, 10, ""); for (i = 10; i < 81; i += 10) { soundfilename = readdir(sounddir); if (soundfilename == NULL) break; else { if (strstr(soundfilename->d_name, ".au") != NULL) { if (i > 60) { i = 10; j++; } strncpy(printname, soundfilename->d_name, 6); mvprintw(j, i, "%s", printname); refreshp(); } else if (i >= 10) i -= 10; } } closedir(sounddir); case '4': mvprintw(15, 20, "Play back file (ddhhmmxx): "); refreshp(); echo(); getnstr(playbackfile, 8); noecho(); strcpy(commands, "play -d "); strcat(commands, sc_device); strcat(commands, " ~/tlf/soundlogs/"); if (strlen(playbackfile) > 6) { strncat(commands, playbackfile, 6); strcat(commands, ".au trim "); strcat(commands, playbackfile + 6); } else if (strlen(playbackfile) < 5) { strcat(commands, playbackfile); strcat(commands, "00.au"); } else { strcat(commands, playbackfile); strcat(commands, ".au"); } mvprintw(16, 20, "Use Ctrl-c to stop and return to tlf"); mvprintw(18, 20, ""); refreshp(); rc = system(commands); runnit = 0; break; case 27: runnit = 0; } } } tlf_1.1.5/src/last10.h0000664000175000017500000000176212072353226012613 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include "get_time.h" #include "tlf.h" int last10(void); tlf_1.1.5/src/rules.h0000664000175000017500000000212312072353226012631 0ustar jtnjtn/*************************************************************************** rules.h - description ------------------- begin : Tue Sep 16 2003 copyright : (C) 2003 by lz3ny email : lz3ny@bfra.org ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #include #include "tlf.h" #include "parse_logcfg.h" #include "setcontest.h" int read_rules(); tlf_1.1.5/src/recall_exchange.h0000664000175000017500000000160712072353226014611 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" int recall_exchange(void); tlf_1.1.5/src/qrb.h0000664000175000017500000000177612072353226012300 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include #define RADIAN (180.0 / M_PI) int qrb(void); tlf_1.1.5/src/showinfo.h0000664000175000017500000000176312072353226013344 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include "tlf.h" #include "qrb.h" #include "sunup.h" int showinfo(int x); tlf_1.1.5/src/showpxmap.h0000664000175000017500000000175512072353226013537 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include "tlf.h" #include "multiplierinfo.h" int show_mults(void); tlf_1.1.5/src/writecabrillo.h0000664000175000017500000000210512072353226014341 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include #include #include "getsummary.h" #include "tlf.h" int write_cabrillo(void); int write_adif(void); tlf_1.1.5/src/writecabrillo.c0000664000175000017500000004040512072353226014341 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * write cabrillo file * *--------------------------------------------------------------*/ #include "writecabrillo.h" #include "printcall.h" #include "curses.h" int write_cabrillo(void) { extern char backgrnd_str[]; extern char logfile[]; extern char call[]; extern int cqww; extern int arrldx_usa; extern int other_flg; extern int wysiwyg_multi; extern int wysiwyg_once; extern int serial_grid4_mult; extern char mycqzone[]; extern char exchange[]; extern int cqwwm2; extern int arrlss; extern int wpx; extern char whichcontest[]; int rc; char standardexchange[70] = ""; char buf[181]; char buffer[4000] = ""; FILE *fp1, *fp2; getsummary(); if (strlen(exchange) > 0) strcpy(standardexchange, exchange); if ((fp1 = fopen(logfile, "r")) == NULL) { fprintf(stdout, "Opening logfile not possible.\n"); return (1); } if ((fp2 = fopen("./cabrillo", "w")) == NULL) { fprintf(stdout, "Opening cbr file not possible.\n"); fclose(fp1); //added by F8CFE return (2); } if (strlen(standardexchange) == 0) { nicebox(14, 0, 1, 78, "Exchange used:"); mvprintw(15, 1, " "); mvprintw(15, 1, ""); attron(COLOR_PAIR(7) | A_STANDOUT); echo(); if (arrlss == 1) getnstr(standardexchange, 6); else getnstr(standardexchange, 10); noecho(); } while ( fgets(buf, 180, fp1) != NULL ) { if (buf[0] != ';' && strlen(buf) > 60) { buffer[0] = '\0'; strcat(buffer, "QSO: "); /*------------------------------------------------------------------ frequency -------------------------------------------------------------------*/ if (buf[1] == '6') strcat(buffer, " 1800"); else if (buf[1] == '8') strcat(buffer, " 3500"); else if (buf[1] == '4') strcat(buffer, " 7000"); else if (buf[1] == '2') strcat(buffer, "14000"); else if (buf[1] == '1' && buf[2] == '5') strcat(buffer, "21000"); else if (buf[1] == '1' && buf[2] == '0') strcat(buffer, "28000"); /*------------------------------------------------------------------ mode -------------------------------------------------------------------*/ if (buf[3] == 'C') strcat(buffer, " CW 20"); else if (buf[3] == 'S') strcat(buffer, " PH 20"); else strcat(buffer, " RY 20"); /*------------------------------------------------------------------ date -------------------------------------------------------------------*/ strncat(buffer, buf + 14, 2); /* year */ if (buf[10] == 'J' && buf[11] == 'a') strcat(buffer, "-01-"); if (buf[10] == 'F') strcat(buffer, "-02-"); if (buf[10] == 'M' && buf[12] == 'r') strcat(buffer, "-03-"); if (buf[10] == 'A' && buf[12] == 'r') strcat(buffer, "-04-"); if (buf[10] == 'M' && buf[12] == 'y') strcat(buffer, "-05-"); if (buf[10] == 'J' && buf[11] == 'u' && buf[12] == 'n') strcat(buffer, "-06-"); if (buf[10] == 'J' && buf[12] == 'l') strcat(buffer, "-07-"); if (buf[10] == 'A' && buf[12] == 'g') strcat(buffer, "-08-"); if (buf[10] == 'S') strcat(buffer, "-09-"); if (buf[10] == 'O') strcat(buffer, "-10-"); if (buf[10] == 'N') strcat(buffer, "-11-"); if (buf[10] == 'D') strcat(buffer, "-12-"); /*------------------------------------------------------------------ day -------------------------------------------------------------------*/ strncat(buffer, buf + 7, 2); /*------------------------------------------------------------------ time -------------------------------------------------------------------*/ strncat(buffer, buf + 16, 3); strncat(buffer, buf + 20, 3); /*------------------------------------------------------------------ mycall -------------------------------------------------------------------*/ strncat(buffer, call, strlen(call) - 1); /* strip the \n */ strncat(buffer, backgrnd_str, 15 - strlen(call)); /*------------------------------------------------------------------ exchange given -------------------------------------------------------------------*/ if (arrlss == 1) { /*------------------------------------------------------------------ report given -------------------------------------------------------------------*/ sprintf(buffer + 41, "%4d", atoi(buf + 22)); strcat(buffer, " "); /*------------------------------------------------------------------ exchange given -------------------------------------------------------------------*/ sprintf(buffer + 46, "%c", standardexchange[0]); strcat(buffer, " "); sprintf(buffer + 48, "%2d", atoi(standardexchange + 1)); strcat(buffer, " "); sprintf(buffer + 51, "%s", standardexchange + 3); strcat(buffer, " "); sprintf(buffer + 55, "%s", buf + 29); strcat(buffer, " "); /*------------------------------------------------------------------ exchange received -------------------------------------------------------------------*/ sprintf(buffer + 66, "%4d", atoi(buf + 54)); strcat(buffer, " "); sprintf(buffer + 71, "%c", buf[59]); strcat(buffer, " "); sprintf(buffer + 72, "%s", buf + 60); strcat(buffer, " "); sprintf(buffer + 75, "%s", buf + 63); strcat(buffer, " "); buffer[79] = '\0'; strcat(buffer, "\n"); } else // not arllss { /*------------------------------------------------------------------ report given -------------------------------------------------------------------*/ if (buf[3] == 'S') strcat(buffer, "59 "); else strcat(buffer, "599 "); /*------------------------------------------------------------------ exchange given -------------------------------------------------------------------*/ if (other_flg == 1 || wysiwyg_multi == 1 || wysiwyg_once == 1) { strcat(buffer, standardexchange); strncat(buffer, " ", 7 - strlen(standardexchange)); } /* end other (wysiwyg) */ else if ((wpx == 1) || ((standardexchange[0] == '#') && (strcmp(whichcontest, "ssa_mt") != 0))) { strncat(buffer, buf + 23, 4); strncat(buffer, standardexchange + 1, 7); strcat(buffer, " "); } else if (cqww == 1) { strcat(buffer, mycqzone); strcat(buffer, " "); } else if (arrldx_usa == 1) { strncat(buffer, exchange, 2); strcat(buffer, " "); } else if (serial_grid4_mult == 1) { strcat(buffer, " "); sprintf(buffer + 49, "%s", buf + 24); sprintf(buffer + 52, "%s", standardexchange + 1); strcat(buffer, " "); sprintf(buffer + 60, "%s ", buf + 29); buffer[74] = '\0'; } else { strncat(buffer, standardexchange, 10); strncat(buffer, " ", strlen(buffer) - 8); } /*------------------------------------------------------------------ his call -------------------------------------------------------------------*/ if (strcmp(whichcontest, "ssa_mt") != 0) strncat(buffer, buf + 29, 14); /*------------------------------------------------------------------ rprt given -------------------------------------------------------------------*/ if (buf[3] == 'S') strcat(buffer, "59 "); else strcat(buffer, "599 "); if (serial_grid4_mult == 1) { char ssa_mt_exchange[30]; int i = 0, j = 0, k = 0; // strncat(buffer, buf+54, 9); // tbf for all contests? RC strcat(buffer, " "); sprintf(buffer + 79, "%03d ", atoi(buf + 54)); for (i = 0; i < 12; i++) { if (isalpha(buf[54 + i])) { for (j = 0; j < (13 - i); j++) { if (isalnum(buf[54 + i + j])) { ssa_mt_exchange[k] = buf[54 + i + j]; k++; } else { if (j > 0 && isspace(buf[54 + i + j - 1])) { ssa_mt_exchange[k] = '\0'; break; } } } if (j > 0) break; } } sprintf(buffer + 83, "%s ", ssa_mt_exchange); sprintf(buffer + 90, "%s", "0"); } else strncat(buffer, buf + 54, 6); strcat(buffer, " "); if ((cqww == 1) && (cqwwm2 == 1)) { // cqww M2 mode if (buf[79] == '*') { strcat(buffer, " 1\n"); } else strcat(buffer, " 0\n"); } else { if (strcmp(whichcontest, "ssa_mt") == 1) strcat(buffer, " 0\n"); else strcat(buffer, "\n"); } } // end else arrlss if (strlen(buffer) > 11) fputs(buffer, fp2); } } // end while !eof fclose(fp1); fclose(fp2); fp2 = fopen("cabrillo", "a"); fputs("END-OF-LOG:\n", fp2); fclose(fp2); rc = system("cat cabrillo >> header"); rc = system("cp header cabrillo"); rc = system("mv header summary.txt"); return (0); } /* just >>TRIM<< */ char *trim(char *string) { int runner; size_t strLength = strlen(string); for (runner = 0; runner < strLength; runner++) { if (*(string + runner) != ' ' && *(string + runner) != '\t') break; } strcpy(string, string + runner); strLength = strlen(string); for (runner = 1; runner < strLength; runner++) { if (*(string + strLength - runner) != ' ' && *(string + strLength - runner) != '\t') break; } *(string + strLength - runner + 1) = 0; return (string); } /* The ADIF function has been written according ADIF v1.00 specifications as shown on http://home.no.net/jlog/adif/adif.html or http://www.adif.org LZ3NY */ int write_adif(void) { extern char logfile[]; extern char exchange[]; extern char whichcontest[]; extern int exchange_serial; extern char modem_mode[]; // char buf[81]=""; ### bug fix char buf[181] = ""; char buffer[181] = ""; char standardexchange[70] = ""; char adif_tmp_name[40] = ""; char adif_tmp_call[13] = ""; char adif_tmp_str[2] = ""; char adif_year_check[3] = ""; char adif_rcvd_num[16] = ""; char resultat[16]; char adif_tmp_rr[5] = ""; int adif_mode_dep = 0; FILE *fp1, *fp2; if (strlen(exchange) > 0) strcpy(standardexchange, exchange); if ((fp1 = fopen(logfile, "r")) == NULL) { fprintf(stdout, "Opening logfile not possible.\n"); fclose(fp1); //added by F8CFE return (1); } strcpy(adif_tmp_name, whichcontest); strcat(adif_tmp_name, ".adif"); if ((fp2 = fopen(adif_tmp_name, "w")) == NULL) { fprintf(stdout, "Opening ADIF file not possible.\n"); return (2); } else { fputs ("######################################################################################\n", fp2); fputs ("# ADIF v1.00 data file exported by TLF\n", fp2); fputs ("# according to specifications on http://home.no.net/jlog/adif/adif.html\n", fp2); fputs("#\n", fp2); fputs ("######################################################################################\n", fp2); fputs("1.00\n\n", fp2); } /* in case using write_adif() without write_cabrillo() */ if ((strlen(standardexchange) == 0) && (exchange_serial != 1)) { nicebox(14, 0, 1, 78, "Exchange used:"); mvprintw(15, 1, " "); mvprintw(15, 1, ""); attron(COLOR_PAIR(7) | A_STANDOUT); echo(); getnstr(standardexchange, 30); noecho(); } //while (fgets (buf, 180, fp1)) ### bug fix while (fgets(buf, sizeof(buf), fp1)) { if ((buf[0] != ';') && ((buf[0] != ' ') || (buf[1] != ' ')) && (buf[0] != '#') && (buf[0] != '\n') && (buf[0] != '\r')) { buffer[0] = '\0'; /* CALLSIGN */ strcat(buffer, ""); strcat(buffer, adif_tmp_call); /* BAND */ if (buf[1] == '6') strcat(buffer, "160M"); else if (buf[1] == '8') strcat(buffer, "80M"); else if (buf[1] == '4') strcat(buffer, "40M"); else if (buf[1] == '3') strcat(buffer, "30M"); else if (buf[1] == '2') strcat(buffer, "20M"); else if (buf[1] == '1' && buf[2] == '5') strcat(buffer, "15M"); else if (buf[1] == '1' && buf[2] == '7') strcat(buffer, "17M"); else if (buf[1] == '1' && buf[2] == '0') strcat(buffer, "10M"); /* QSO MODE */ if (buf[3] == 'C') strcat(buffer, "CW"); else if (buf[3] == 'S') strcat(buffer, "SSB"); else if (strcmp(modem_mode, "RTTY") == 0) strcat(buffer, "RTTY"); else strcat(buffer, "DIGI"); /* QSO_DATE */ /* Y2K :) */ adif_year_check[0] = '\0'; strncpy(adif_year_check, buf + 14, 2); if (atoi(adif_year_check) <= 70) strcat(buffer, "20"); else strcat(buffer, "19"); /* year */ strncat(buffer, buf + 14, 2); /*month */ if (buf[10] == 'J' && buf[11] == 'a') strcat(buffer, "01"); if (buf[10] == 'F') strcat(buffer, "02"); if (buf[10] == 'M' && buf[12] == 'r') strcat(buffer, "03"); if (buf[10] == 'A' && buf[12] == 'r') strcat(buffer, "04"); if (buf[10] == 'M' && buf[12] == 'y') strcat(buffer, "05"); if (buf[10] == 'J' && buf[11] == 'u' && buf[12] == 'n') strcat(buffer, "06"); if (buf[10] == 'J' && buf[12] == 'l') strcat(buffer, "07"); if (buf[10] == 'A' && buf[12] == 'g') strcat(buffer, "08"); if (buf[10] == 'S') strcat(buffer, "09"); if (buf[10] == 'O') strcat(buffer, "10"); if (buf[10] == 'N') strcat(buffer, "11"); if (buf[10] == 'D') strcat(buffer, "12"); /*date */ strncat(buffer, buf + 7, 2); /* TIME_ON */ strcat(buffer, ""); strncat(buffer, buf + 17, 2); strncat(buffer, buf + 20, 2); /* RS(T) flag */ if (buf[3] == 'S') adif_mode_dep = 2; else adif_mode_dep = 3; /* RST_SENT */ strcat(buffer, ""); strncat(buffer, buf + 44, adif_mode_dep); /* STX - sent contest number */ strcat(buffer, ""); strncat(buffer, buf + 23, 4); } else { snprintf(resultat, sizeof(resultat), "%d", strlen(standardexchange)); strcat(buffer, resultat); strcat(buffer, ">"); strcat(buffer, trim(standardexchange)); } /* RST_RCVD */ strncpy(adif_tmp_rr, buf + 49, 4); strcpy(adif_tmp_rr, trim(adif_tmp_rr)); strcat(buffer, ""); strncat(buffer, buf + 49, adif_mode_dep); /* SRX - received contest number */ strncpy(adif_rcvd_num, buf + 54, 14); strcpy(adif_rcvd_num, trim(adif_rcvd_num)); snprintf(resultat, sizeof(resultat), "%d", strlen(adif_rcvd_num)); strcat(buffer, ""); if (strcmp(buf + 54, " ") != 0) strcat(buffer, adif_rcvd_num); /* */ strcat(buffer, "\n"); //end of ADIF row } if (strlen(buffer) > 1) fputs(buffer, fp2); buffer[0] = '\0'; } // end fgets() loop fclose(fp1); fclose(fp2); return (0); } // end write_adif tlf_1.1.5/src/bandmap.h0000664000175000017500000000701012072353226013101 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2011 Thomas Beierlein * * 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 Library 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. */ #ifndef _BANDMAP_H #define _BANDMAP_H typedef struct { char *call; int freq; /* freq in Hz */ char mode; short band; int node; int timeout; char dupe; /* only used internal in bm_show() */ } spot; #define SPOT_NEW (bm_config.livetime) #define SPOT_NORMAL (SPOT_NEW * 95) / 100 #define SPOT_OLD (SPOT_NEW * 2) / 3 typedef struct { short allband; short allmode; short showdupes; short skipdupes; short livetime; } bm_config_t; extern bm_config_t bm_config; enum { CB_DUPE = 8, CB_OLD, CB_NORMAL, CB_NEW, CB_MULTI }; void bm_init(); void bm_add(char *s); void bm_menu(); /** check if call is new multi * * \return true if new multi */ int bm_ismulti(char *call); /** check if call is a dupe * * \return true if is dupe */ int bm_isdupe(char *call, int band); /** add a new spot to bandmap data * \param call the call to add * \param frequ on which frequency heard * \param reason - new cluster spot * - local announcement (Ctrl-A) * - own cluster announcement (Ctrl-B) * - just worked in S&P */ void bandmap_addspot(char *call, unsigned int frequ, char node); /* * - if call already on that band and mode replace old entry with new one and * set age to 0 otherwise add it to collection * - if other call on same frequency (with some tolerance) replace it and set * age to 0 * - round all frequencies from cluster to 100 Hz, remember all other exactly * but display only rounded to 100 Hz - sort exact */ void bandmap_age(); /* * - go through all entries * + increment age * + set state to new, normal, aged or dead * + if dead -> drop it from collection */ void bandmap_show(); /* * display depending on filter state * - all bands on/off * - all mode on/off * - dupes on/off * * If more entries to show than place in window, show around current frequency * * mark entries according to age, source and worked state. Mark new multis * - new brigth blue * - normal blue * - aged black * - worked small caps * - new multi underlined * - self announced stations * small preceeding letter for repoting station * * maybe show own frequency as dashline in other color * (maybee green highlighted) * - highligth actual spot if near its frequency * * Allow selection of one of the spots (switches to S&P) * - Ctrl-G as known * - '.' and cursor plus 'Enter' * * '.' goes into map, shows help line above and supports * - cursormovement * - 'ESC' leaves mode * - 'Enter' selects spot * - 'B', 'D', 'M' switches filtering for band, dupes and mode on or off. */ spot *bandmap_lookup(char *partialcall); spot *bandmap_next(unsigned int upwards, unsigned int freq); #endif tlf_1.1.5/src/speedup.c0000664000175000017500000000547012072353226013147 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Page-up increases CW speed with 2 wpm * *--------------------------------------------------------------*/ #include "speedup.h" #include "tlf.h" #include "cwkeyer.h" #include "clear_display.h" #include "netkeyer.h" int speedup(void) { extern int speed; extern char speedstr[]; extern int trxmode; extern int keyerport; extern int cfd; extern char buffer[]; int retval = 0; char buff[3]; if (trxmode != CWMODE) return (0); if (keyerport == NET_KEYER) { if (speed < 20) { speed++; strncpy(buff, speedstr + (speed * 2), 2); buff[2] = '\0'; retval = netkeyer(K_SPEED, buff); if (retval < 0) { mvprintw(24, 0, "keyer not active"); // trxmode = SSBMODE; sleep(1); clear_display(); } } } if (keyerport == MFJ1278_KEYER) { if (speed < 20) { speed++; strncpy(buff, speedstr + (speed * 2), 2); buff[2] = '\0'; strcpy(buffer, "\\\015"); sendbuf(); usleep(500000); strcpy(buffer, "MSP "); strcat(buffer, buff); strcat(buffer, " \015"); sendbuf(); usleep(500000); strcpy(buffer, "CONV\015\n"); sendbuf(); if (retval < 0) { mvprintw(24, 0, "keyer not active"); // trxmode = SSBMODE; sleep(1); clear_display(); } } } if (keyerport == ORION_KEYER) { if (speed < 20) { speed++; strncpy(buff, speedstr + (speed * 2), 2); buff[2] = '\0'; orion_set_cw_speed(atoi(buff)); } } return (speed); } int setweight(int weight) { // write weight to netkeyer extern int keyerport; int retval; char buff[4]; if (keyerport == NET_KEYER && weight > -51 && weight < 51) { sprintf(buff, "%d", weight); retval = netkeyer(K_WEIGHT, buff); if (retval < 0) { mvprintw(24, 0, "keyer not active ?"); sleep(1); clear_display(); } } return (0); } tlf_1.1.5/src/printcall.h0000664000175000017500000000160512072353226013473 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include void printcall(void); tlf_1.1.5/src/checkparameters.c0000664000175000017500000000235112072353226014636 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Check for .paras file * *--------------------------------------------------------------*/ #include "checkparameters.h" int checkparameters(void) { extern int emptydir; FILE *fp; if ((fp = fopen(".paras", "r")) == NULL) { writeparas(); emptydir = 1; } else { fclose(fp); } return (0); } tlf_1.1.5/src/gettxinfo.h0000664000175000017500000000205612072353226013513 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * This program is free oftware; 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 Library 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. */ #include #include #include #include "tlf.h" #ifdef HAVE_LIBHAMLIB #include #endif #define SETCWMODE 1 #define SETSSBMODE 2 #define RESETRIT 99 int gettxinfo(void); tlf_1.1.5/src/getpx.h0000664000175000017500000000161512072353226012633 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include void getpx(char *checkcall); tlf_1.1.5/src/initial_exchange.c0000664000175000017500000000747412072353226015003 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 -2004 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------------------------ * initial exchange.c * * makes list of calls and exchanges from comma separated file * and retrieves them * *-------------------------------------------------------------------------------*/ #include "initial_exchange.h" struct ie_list *make_ie_list(char *file) { FILE *fp; char inputbuffer[91]; char *loc; struct ie_list *ie_listhead = NULL; struct ie_list *new; char *token; int linectr = 0; if ((fp = fopen(file, "r")) == NULL) { showmsg("Cannot find initial exchange file"); return (NULL); } else showstring("Using initial exchange file", file); while (fgets(inputbuffer, 90, fp) != NULL) { linectr++; /* allow empty and comment lines */ if ((inputbuffer[0] == '#') || strspn(inputbuffer, " \t") == strlen(inputbuffer)-1) continue; /* strip trailing newline */ if ((loc = strchr(inputbuffer, '\n')) != NULL) *loc = '\0'; if (strlen(inputbuffer) > 80) { /* line to long */ char msg[80]; free_ie_list(ie_listhead); fclose(fp); sprintf( msg, "Line %d: too long", linectr); showmsg(msg); return NULL; } loc = strchr(inputbuffer, ','); if (loc != NULL) { // comma found new = malloc(sizeof(struct ie_list)); if (new == NULL) { free_ie_list(ie_listhead); fclose(fp); showmsg("Out of memory"); return (NULL); } *loc = '\0'; /* split the string into call and exchange */ token = strtok(inputbuffer, " \t"); /* callsign is first token delimited by whitespace */ if ((token == NULL) || strtok(NULL, " \t")) { /* 0 or >1 token before comma */ char msg[80]; free_ie_list(ie_listhead); fclose(fp); sprintf( msg, "Line %d: 0 or more than one token before comma", linectr); showmsg(msg); return (NULL); } strncpy(new->call, token, MAX_CALL_LENGTH); new->call[MAX_CALL_LENGTH] = '\0'; /* proper termination */ loc += strspn(loc+1, " \t"); /* skip leading space */ strncpy(new->exchange, loc + 1, MAX_IE_LENGTH); new->exchange[MAX_IE_LENGTH] = '\0'; /* proper termination */ /* prepend new entry to existing list */ new->next = ie_listhead; ie_listhead = new; inputbuffer[0] = '\0'; } else { /* no comma found */ char msg[80]; free_ie_list(ie_listhead); fclose(fp); sprintf( msg, "Line %d: no comma found", linectr); showmsg(msg); return NULL; } } fclose(fp); return (ie_listhead); } void free_ie_list(struct ie_list *head) { struct ie_list *next; while (head) { next = head->next; free(head); head = next; } } int test_ie_list(struct ie_list *example_ie_list) { if (example_ie_list == NULL) return (-1); while (1) { showmsg(example_ie_list->call); showmsg(example_ie_list->exchange); if (example_ie_list->next != NULL) example_ie_list = example_ie_list->next; else break; } return (0); } tlf_1.1.5/src/nicebox.h0000664000175000017500000000205012072353226013125 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include void wnicebox(WINDOW *win, int y, int x, int height, int width, char *boxname); void nicebox(int y, int x, int height, int width, char *boxname); tlf_1.1.5/src/sendspcall.h0000664000175000017500000000165512072353226013640 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include "tlf.h" #include "sendbuf.h" void sendspcall(void); tlf_1.1.5/src/searchcallarray.c0000664000175000017500000000312312072353226014633 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2011 Thomas Beierlein * * 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 Library 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. */ /* ------------------------------------------------------------ * search call array * *--------------------------------------------------------------*/ #include "searchcallarray.h" /** \brief lookup 'hiscall' in callarray * * See if 'hiscall' was already worked by looking it up in callarray * \param hiscall callsign to lookup * \return index in callarray where hiscall was found (-1 if not found) */ int searchcallarray(char *hiscall) { extern int callarray_nr; extern char callarray[MAX_CALLS][20]; int found = -1; int i; for (i = 0; i < callarray_nr; i++) { if (strcmp(callarray[i], hiscall) == 0) { found = i; break; } } return (found); } tlf_1.1.5/src/audio.h0000664000175000017500000000265312072353226012610 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * audio.h include file for soundcard input routine * *--------------------------------------------------------------*/ #include #include #include #include #ifdef __OpenBSD__ # include #else # include #endif #include #include #include #include #define FS 11025 #define S_BAR 0 #define SPOT_BAR 1 #define PAN_BAR 2 void init_audio(); int close_audio(); int testaudio(); void record (void); tlf_1.1.5/src/sendqrg.h0000664000175000017500000000321512072353226013145 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include #include #include #include #include #include "startmsg.h" #include "tlf.h" #ifdef HAVE_LIBHAMLIB #include #endif #define SERIAL_PORT "/dev/ttyS0" #define RIG_BUFFERSIZE 8000 #define N_RIGMODE_USB 0 #define N_RIGMODE_LSB 1 #define N_RIGMODE_CW 3 int sendqrg(void); #ifdef HAVE_LIBHAMLIB int init_tlf_rig (void); int close_tlf_rig (RIG *my_rig); #endif int init_native_rig(void); int close_native_rig(void); float native_rig_get_freq (int my_rig); int native_rig_set_mode(int rignumber, int mode); int native_rig_set_freq(int rignumber, int outfreq); int native_rig_reset_rit(int rignumber); int orion_set_cw_speed(int speed); tlf_1.1.5/src/main.h0000664000175000017500000000270012072353226012424 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include "checkparameters.h" #include "readctydata.h" #include "getmessages.h" #include "setcontest.h" #include "checklogfile.h" #include "readcalls.h" #include "clear_display.h" #include "logit.h" #include "getwwv.h" #include "scroll_log.h" #include "background_process.h" #include "searchlog.h" #include "qrb.h" #include "cwkeyer.h" #include "parse_logcfg.h" #include "sendqrg.h" #include "netkeyer.h" #include "lancode.h" #include "rules.h" #include "startmsg.h" #include "rtty.h" #include "initial_exchange.h" #include "bandmap.h" tlf_1.1.5/src/keyer.c0000664000175000017500000002016012072353226012612 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /*------------------------------------------------------------------------ CW keyboard routine ------------------------------------------------------------------------*/ #include "keyer.h" #include "netkeyer.h" int mfj1278_control(int x); int keyer(void) { extern char mode[20]; extern int bufloc; extern char buffer[]; extern char termbuf[]; extern int keyspeed; extern char message[15][80]; extern char wkeyerbuffer[]; extern int data_ready; extern int keyerport; extern int weight; int x = 0, i = 0, j = 0; int cury, curx; char nkbuffer[2]; char keyerstring[30] = " "; char weightbuf[15]; const char txcontrolstring[2] = { 20, '\0' }; const char rxcontrolstring[2] = { 18, '\0' }; const char crcontrolstring[2] = { 13, '\0' }; const char ctl_c_controlstring[2] = { 92, '\0' }; strcpy(mode, "Keyboard"); clear_display(); attron(COLOR_PAIR(7) | A_STANDOUT); if (keyerport == NO_KEYER) /* no keyer present */ return (1); if (keyerport == MFJ1278_KEYER) { buffer[0] = 20; // 1 char at the time ! buffer[1] = '\0'; if (data_ready != 1) { strcat(wkeyerbuffer, buffer); data_ready = 1; } buffer[0] = '\0'; } while (1) { x = onechar(); if (x == 34) { /* bug fix */// " x = 32; } if (x == '\n') x = 32; if (x == 27 || x == 11 || x == 235) { // esc, ctrl-k, alt-k if (keyerport == MFJ1278_KEYER) { buffer[0] = 18; // 1 char at the time ! buffer[1] = '\0'; if (data_ready != 1) { strcat(wkeyerbuffer, buffer); data_ready = 1; } } else { stoptx(); } buffer[0] = '\0'; break; } if (x >= 32 && x <= 125) { // display space ... } addch(x); refreshp(); i++; if ((i >= 40)) { i = 0; mvprintw(4, 0, " "); mvprintw(4, 0, ""); refreshp(); displayit(); } refreshp(); } if (x == 127 && (strlen(buffer) >= 1)) { /* erase */ getyx(stdscr, cury, curx); mvprintw(5, curx - 1, " "); mvprintw(5, curx - 1, ""); buffer[strlen(buffer) - 1] = '\0'; bufloc--; } if (x > 96 && x < 123) /* upper case only */ x = x - 32; if (x > 9 && x < 91) { if (bufloc >= 38) // maximum buffer = 39 { bufloc = 38; printw("\nBuffer overflow !, bufloc = %d\n", bufloc); refreshp(); } else { if (x > 31 || x == 10) { if (keyerport == MFJ1278_KEYER) { mfj1278_control(x); } else if (keyerport == NET_KEYER) { nkbuffer[0] = x; // 1 char at the time ! nkbuffer[1] = '\0'; netkeyer(K_MESSAGE, nkbuffer); nkbuffer[0] = '\0'; for (j = 0; j < 29; j++) { keyerstring[j] = keyerstring[j + 1]; } keyerstring[28] = x; keyerstring[29] = '\0'; attron(COLOR_PAIR(7) | A_STANDOUT); mvprintw(5, 0, "%s", keyerstring); refreshp(); } else if (keyerport == ORION_KEYER) { nkbuffer[0] = x; nkbuffer[1] = '\0'; strcat(wkeyerbuffer, nkbuffer); sendbuf(); nkbuffer[0] = '\0'; for (j = 0; j < 29; j++) { keyerstring[j] = keyerstring[j + 1]; } keyerstring[28] = x; keyerstring[29] = '\0'; attron(COLOR_PAIR(7) | A_STANDOUT); mvprintw(5, 0, "%s", keyerstring); refreshp(); } } else // control char... { if (data_ready != 1) { strcat(wkeyerbuffer, buffer); data_ready = 1; } else buffer[0] = '\0'; getyx(stdscr, cury, curx); attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvaddstr(0, 0, " "); attron(COLOR_PAIR(7)); mvaddstr(cury, curx, ""); refreshp(); strcat(termbuf, buffer); strcat(termbuf, " "); mvprintw(5, 0, termbuf); refreshp(); if ((strlen(buffer) + strlen(termbuf) > 39) || x == '=') { i = 0; mvprintw(5, 0, " "); mvprintw(5, 0, ""); refreshp(); displayit(); } bufloc = 0; buffer[bufloc] = '\0'; } } } else { switch (x) { case 9: { bufloc = 0; buffer[bufloc] = '\0'; strcpy(mode, "Log "); clear_display(); return (2); } case '\n': case 13: { if (keyerport == MFJ1278_KEYER && strlen(buffer) < 39) { strcat(buffer, crcontrolstring); sendbuf(); bufloc = 0; } break; } case 27: case 11: { stoptx(); bufloc = 0; buffer[bufloc] = '\0'; strcpy(mode, "Log "); clear_display(); return (2); } case 123: { if (keyerport == MFJ1278_KEYER) { strcat(buffer, txcontrolstring); sendbuf(); } break; } case 125: { if (keyerport == MFJ1278_KEYER) { strcat(buffer, rxcontrolstring); sendbuf(); } break; } case 92: { if (keyerport == MFJ1278_KEYER) { strcat(buffer, ctl_c_controlstring); sendbuf(); } break; } case 247: // Alt-w, set weight { mvprintw(1, 0, "Weight= "); mvprintw(1, 7, ""); refreshp(); echo(); getnstr(weightbuf, 2); noecho(); weight = atoi(weightbuf); netkeyer(K_WEIGHT, weightbuf); break; } case 156: { keyspeed = speedup(); clear_display(); break; } case 157: { keyspeed = speeddown(); clear_display(); break; } case 129: { strcat(buffer, message[0]); /* F1 */ getyx(stdscr, cury, curx); mvprintw(5, 0, ""); sendbuf(); mvprintw(cury, curx, ""); break; } case 130: { strcat(buffer, message[1]); /* F2 */ sendbuf(); break; } case 131: { strcat(buffer, message[2]); /* F3 */ sendbuf(); break; } case 132: { strcat(buffer, message[3]); /* F4 */ sendbuf(); break; } case 133: { strcat(buffer, message[4]); /* F5 */ sendbuf(); break; } case 134: { strcat(buffer, message[5]); /* F6 */ sendbuf(); break; } case 135: { strcat(buffer, message[6]); /* F7 */ sendbuf(); break; } case 136: { strcat(buffer, message[7]); /* F8 */ sendbuf(); break; } case 137: { strcat(buffer, message[8]); /* F9 */ sendbuf(); break; } case 138: { strcat(buffer, message[9]); /* F10 */ sendbuf(); break; } case 140: { strcat(buffer, message[10]); /* F11 */ sendbuf(); break; } case 141: { strcat(buffer, message[11]); /* F12 */ sendbuf(); break; } case 142 ... 150: /* CTRL O */ { message_change(x); break; } default: x = x; } } } strcpy(mode, "Log "); clear_display(); return (2); /* show end of keyer routine */ } /* ------------------------------------------ convert input for 1278 ctrl -----------------------*/ int mfj1278_control(int x) { extern int trxmode; extern char wkeyerbuffer[]; extern int data_ready; int y = 0; char buffer[2]; if (trxmode == CWMODE || trxmode == DIGIMODE) { if (trxmode == DIGIMODE) { if (x == 10) x = 13; // tnc needs CR } buffer[0] = x; // 1 char at the time ! buffer[1] = '\0'; if (data_ready != 1) { strcat(wkeyerbuffer, buffer); data_ready = 1; } buffer[0] = '\0'; } y = x; return (y); } tlf_1.1.5/src/nicebox.c0000664000175000017500000000353112072353226013125 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Nicebox draws a box with a header * *--------------------------------------------------------------*/ #include "nicebox.h" void wnicebox(WINDOW *win, int y, int x, int height, int width, char *boxname) { extern int use_rxvt; height += 1; width += 1; if (use_rxvt == 0) wattrset(win, COLOR_PAIR(COLOR_YELLOW) | A_BOLD); else wattrset(win, COLOR_PAIR(COLOR_YELLOW)); mvwaddch(win, y, x, ACS_ULCORNER); whline(win, ACS_HLINE, width); mvwaddch(win, y, x + width, ACS_URCORNER); mvwaddch(win, y + height, x, ACS_LLCORNER); whline(win, ACS_HLINE, width); mvwaddch(win, y + height, x + width, ACS_LRCORNER); mvwvline(win, y + 1, x + width, ACS_VLINE, height - 1); mvwvline(win, y + 1, x, ACS_VLINE, height - 1); mvwprintw(win, y, x + 2, boxname); return; } void nicebox(int y, int x, int height, int width, char *boxname) { wnicebox( stdscr, y, x, height, width, boxname); } tlf_1.1.5/src/callinput.c0000664000175000017500000005543312072353226013501 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2005 Rein Couperus * 2009-2012 Thomas Beierlein * * 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 Library 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. */ /* ------------------------------------------------------------ * Callinput handles the call input field * *--------------------------------------------------------------*/ #include "callinput.h" #include "addspot.h" #include "changefreq.h" #include "bandmap.h" #include "glib.h" #define TUNE_UP 6 /* tune up for 6 s (no more than 10) */ void send_bandswitch(int freq); /** callsign input loop * * \return code of last typed character */ char callinput(void) { extern int itumult; extern int wazmult; extern int use_rxvt; extern int no_arrows; extern int isdupe; // LZ3NY auto-b4 patch extern int contest; extern int dxped; extern int cwstart; extern int early_started; extern int sending_call; extern char hiscall[]; extern char hiscall_sent[]; extern char comment[]; extern char call[]; extern int cqmode; extern int trxmode; extern char mode[]; extern char lastcall[]; extern char band[9][4]; extern int bandinx; extern char speedstr[]; extern int keyspeed; extern int cqdelay; extern char his_rst[]; extern char backgrnd_str[]; extern int demode; extern int cluster; extern int announcefilter; extern char buffer[]; extern char message[15][80]; extern char ph_message[14][80]; extern float freq; extern float mem; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; extern int rignumber; #endif extern int trx_control; extern float bandfrequency[]; extern SCREEN *mainscreen; extern int simulator; extern int simulator_mode; extern char talkarray[5][62]; extern int lan_active; extern int cluster; extern int zonedisplay; extern int showscore_flag; extern int searchflg; extern int cqww; extern char cqzone[]; extern char ituzone[]; extern int ctcomp; extern int nob4; extern int change_rst; extern int weight; extern int k_pin14; extern int k_ptt; extern int noautocq; extern int keyerport; extern int miniterm; int cury, curx; int i, j, ii, rc, t, x = 0, y = 0; char instring[2] = { '\0', '\0' }; char dupecall[17]; char speedbuf[3] = ""; char weightbuf[5]; static int lastwindow; if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); printcall(); /* print call input field */ searchlog(hiscall); for (i = strlen(hiscall); i <= 13; i++) { printcall(); /* wait for next char pressed, but update time, cluster and TRX qrg */ nodelay(stdscr, TRUE); /* main loop waiting for input */ x = -1; while (x < 1) { usleep(10000); time_update(); if (trxmode == DIGIMODE && (keyerport == GMFSK || keyerport == MFJ1278_KEYER)) { show_rtty(); printcall(); } /* make sure that the wrefresh() inside getch() shows the cursor * in the input field */ wmove(stdscr, 12, 29 + strlen(hiscall)); x = onechar(); } nodelay(stdscr, FALSE); /* special handling of some keycodes if call field is empty */ if (i == 0 || *hiscall == '\0') { if ((x == '+') && (*hiscall == '\0') && (ctcomp == 0)) { /* switch to other mode */ if (cqmode == CQ) { cqmode = S_P; } else cqmode = CQ; /* and show new mode */ attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); if (cqmode == CQ) { mvprintw(0, 2, "Log "); strcpy(mode, "Log "); } else { mvprintw(0, 2, "S&P "); strcpy(mode, "S&P "); } cleanup(); } if (x == '\n' && *hiscall == '\0') { if (cqmode == CQ) { if (noautocq != 1) x = auto_cq(); } else { sendspcall(); break; } } if (x == 152 || x == 229) { // up-arrow or alt-e edit_last(); break; } if (x == '=' && *hiscall == '\0') { strcat(buffer, lastcall); strcat(buffer, " OK "); sendbuf(); break; } else if (x == '=' && strlen(hiscall) != 0) { /** \todo check if unreachable code */ strcat(buffer, lastcall); strcat(buffer, " OK "); sendbuf(); break; } } switch (x) { case '+': { if ((ctcomp != 0) && (strlen(hiscall) > 2)) { if (trxmode == CWMODE || trxmode == DIGIMODE) { strcat(buffer, message[2]); /* F3 */ sendbuf(); } else play_file(ph_message[2]); if (((cqww == 1) || (wazmult == 1)) && (*comment == '\0')) strcpy(comment, cqzone); if ((itumult == 1) && (*comment == '\0')) strcpy(comment, ituzone); x = 92; } break; } case 153: // down - start sending call if cw mode case 32: // space { if (trxmode == CWMODE && contest == 1) { strcpy(buffer, hiscall); early_started = 1; sending_call = 1; sendbuf(); sending_call = 0; strcpy(hiscall_sent, hiscall); printcall(); x = 153; } break; } case 155: /* left */ { if (*hiscall != '\0') { calledit(); } if (bandinx >= 0 && *hiscall == '\0' && no_arrows == 0) { bandinx--; if (bandinx == -1) bandinx = 8; if ((contest == 1) && (dxped == 0) && ((bandinx == 3) || (bandinx == 5) || (bandinx == 7))) bandinx--; attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); mvprintw(12, 0, band[bandinx]); i--; #ifdef HAVE_LIBHAMLIB if (trx_control == 1) { outfreq = (int) (bandfrequency[bandinx] * 1000); } #else if (trx_control == 1 && rignumber >= 2000) { outfreq = (int) (bandfrequency[bandinx] * 1000); } #endif send_bandswitch(bandinx); } break; } case 154: /* right */ { if (bandinx <= 8 && *hiscall == '\0' && no_arrows == 0) { bandinx++; if (bandinx > 8) bandinx = 0; if ((contest == 1) && (dxped == 0) && ((bandinx == 3) || (bandinx == 5) || (bandinx == 7))) bandinx++; attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); mvprintw(12, 0, band[bandinx]); #ifdef HAVE_LIBHAMLIB if (trx_control == 1) { freq = bandfrequency[bandinx]; outfreq = (int) (bandfrequency[bandinx] * 1000); } #else if (trx_control == 1 && rignumber >= 2000) { freq = bandfrequency[bandinx]; outfreq = (int) (bandfrequency[bandinx] * 1000); } #endif send_bandswitch(bandinx); } break; } case 247: // Alt-w set weight { strncpy(speedbuf, speedstr + (2 * keyspeed), 2); speedbuf[2] = '\0'; nicebox(1, 1, 2, 11, "Cw"); attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT); mvprintw(2, 2, "Speed: %s ", speedbuf); if (weight < 0) mvprintw(3, 2, "Weight:%d ", weight); else mvprintw(3, 2, "weight: %d ", weight); mvprintw(3, 10, ""); refreshp(); x = onechar(); if (x == '-') { mvprintw(3, 9, "%c", '-'); refreshp(); weightbuf[0] = x; x = onechar(); if (x != 27) { mvprintw(3, 10, "%c", (char) x); refreshp(); weightbuf[1] = x; weightbuf[2] = '\0'; x = onechar(); } if (x != 27) { mvprintw(3, 11, "%c", (char) x); refreshp(); weightbuf[2] = x; weightbuf[3] = '\0'; } } else { weightbuf[0] = x; weightbuf[1] = '\0'; mvprintw(3, 10, "%c", (char) x); refreshp(); x = onechar(); if (x != 27) { weightbuf[1] = x; weightbuf[2] = '\0'; } } x = -1; weight = atoi(weightbuf); if (weight > -51 && weight < 50) { netkeyer(K_WEIGHT, weightbuf); } attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT); mvprintw(1, 1, " "); mvprintw(2, 1, " "); mvprintw(3, 1, " "); mvprintw(4, 1, " "); printcall(); break; } case 246: // Alt-v { if (ctcomp == 1) { while (x != 27) //escape { strncpy(speedbuf, speedstr + (2 * keyspeed), 2); speedbuf[2] = '\0'; nicebox(1, 1, 2, 9, "Cw"); attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT); mvprintw(2, 2, "Speed: %s", speedbuf); mvprintw(3, 2, "Weight: %d", weight); printcall(); refreshp(); x = onechar(); if (x == 152) { keyspeed = speedup(); strncpy(speedbuf, speedstr + (2 * keyspeed), 2); speedbuf[2] = '\0'; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(0, 14, "%s", speedbuf); } else if (x == 153) { keyspeed = speeddown(); strncpy(speedbuf, speedstr + (2 * keyspeed), 2); speedbuf[2] = '\0'; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(0, 14, "%s", speedbuf); } else x = 27; attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT); mvprintw(1, 1, " "); mvprintw(2, 1, " "); mvprintw(3, 1, " "); mvprintw(4, 1, " "); } } else { // trlog compatible, band switch if (bandinx >= 0 && *hiscall == '\0') { bandinx--; if (bandinx == -1) bandinx = 8; if ((contest == 1) && (dxped == 0) && ((bandinx == 3) || (bandinx == 5) || (bandinx == 7))) bandinx--; attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); mvprintw(12, 0, band[bandinx]); printcall(); i--; #ifdef HAVE_LIBHAMLIB if (trx_control == 1) { outfreq = (int) (bandfrequency[bandinx] * 1000); } #endif send_bandswitch(bandinx); } } x = -1; break; } case 156: /* pgup */ { if ((change_rst == 1) && (strlen(hiscall) != 0)) { // change RST if (his_rst[1] <= 56) { his_rst[1]++; mvprintw(12, 44, his_rst); mvprintw(12, 29, hiscall); } } else { // change cw speed keyspeed = speedup(); strncpy(speedbuf, speedstr + (2 * keyspeed), 2); speedbuf[2] = '\0'; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(0, 14, "%s", speedbuf); } break; } case 412: /* ctrl-pgup, cqdelay (not for TERM=linux */ { if (cqdelay <= 60) { cqdelay++; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(0, 19, " "); mvprintw(0, 19, "%i", cqdelay); } break; } case 157: /* pgdown */ { if ((change_rst == 1) && (strlen(hiscall) != 0)) { if (his_rst[1] > 49) { his_rst[1]--; mvprintw(12, 44, his_rst); mvprintw(12, 29, hiscall); } } else { keyspeed = speeddown(); strncpy(speedbuf, speedstr + (2 * keyspeed), 2); speedbuf[2] = '\0'; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(0, 14, "%s", speedbuf); } break; } case 413:{ // ctrl-pgdown, cqdelay (not for TERM=linux) if (cqdelay >= 4) { cqdelay--; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(0, 19, " "); mvprintw(0, 19, "%i", cqdelay); } break; } case '\n':{ if (strlen(hiscall) > 2 && ctcomp == 1) { /* there seems to be a call * means: log it (in CT mode */ x = 92; break; } if (strlen(hiscall) < 3 || nob4 == 1) break; /* check b4 QSO if call is long enough and 'nob4' off */ isdupe = 0; // LZ3NY auto-b4 patch searchlog(hiscall); if (isdupe != 0) { strcat(buffer, message[6]); /* as with F7 */ sendbuf(); cleanup(); clear_display(); } break; } case 160: /* insert */ { if (ctcomp != 0) { if (trxmode == CWMODE || trxmode == DIGIMODE) { strcat(buffer, message[1]); sendbuf(); } else play_file(ph_message[1]); } break; } case 58: /* : change parameters */ { changepars(); hiscall[0] = '\0'; x = 0; clear_display(); attron(COLOR_PAIR(7) | A_STANDOUT); for (j = 13; j <= 23; j++) { mvprintw(j, 0, backgrnd_str); } if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(12, 29, " "); mvprintw(12, 29, ""); refreshp(); break; } case 35: /* # memory */ { if (mem == 0.0) { mem = freq; mvprintw(14, 68, "MEM: %7.1f", mem); } else { freq = mem; #ifdef HAVE_LIBHAMLIB outfreq = (int) (mem * 1000); #else outfreq = (mem * 1000); #endif mem = 0.0; mvprintw(14, 68, " "); } mvprintw(29, 12, " "); mvprintw(29, 12, ""); refreshp(); break; } case 45: /* - delete qso */ { delete_qso(); break; } case 59: /* ; note */ case 238: /* alt-n */ { include_note(); x = -1; break; } case 176 ... 186: { strcat(buffer, message[x - 162]); /* alt-0 to alt-9 */ sendbuf(); break; } case 129: /* F1 */ { if (trxmode == CWMODE || trxmode == DIGIMODE) { if (cqmode == 0) { if (demode == SEND_DE) strcat(buffer, "DE "); strcat(buffer, call); /* S&P */ } else { strcat(buffer, message[0]); /* CQ */ } sendbuf(); if (simulator != 0) { simulator_mode = 1; } break; } else { if (cqmode == 0) play_file(ph_message[5]); /* S&P */ else play_file(ph_message[0]); } break; } case 130 ... 138: /* F2.. F10 */ { if (trxmode == CWMODE || trxmode == DIGIMODE) { strcat(buffer, message[x - 129]); /* F2 */ sendbuf(); } else play_file(ph_message[x - 129]); break; } case 140: { if (trxmode == CWMODE || trxmode == DIGIMODE) { strcat(buffer, message[10]); /* F11 */ sendbuf(); } else play_file(ph_message[10]); break; } case 141: /* F12 */ { x = auto_cq(); } case 127: /* backspace */ { if (*hiscall != '\0') { getyx(stdscr, cury, curx); mvprintw(12, curx - 1, " "); mvprintw(12, curx - 1, ""); hiscall[strlen(hiscall) - 1] = '\0'; if (atoi(hiscall) < 1800) { /* no frequency */ strncpy(dupecall, hiscall, 16); x = getctydata(dupecall); showinfo(x); searchlog(hiscall); refreshp(); } i--; x = -1; break; } break; } case 242: // alt-R case 243: // alt-S { if (showscore_flag == 0) showscore_flag = 1; else { showscore_flag = 0; /** \todo drop display of scrore */ attron(COLOR_PAIR(7) | A_STANDOUT); for (ii = 14; ii < 24; ii++) mvprintw(ii, 0, backgrnd_str); refreshp(); } break; } case 142 ... 150: { message_change(x); break; } case 235: { //alt-K == ctrl-K x = 11; break; } case 225: // Alt-a { if (cluster == NOCLUSTER) { cluster = CLUSTER; // alt-A announcefilter = FILTER_ALL; } else if (cluster == CLUSTER) { attron(COLOR_PAIR(7) | A_STANDOUT); for (ii = 14; ii < 24; ii++) mvprintw(ii, 0, backgrnd_str); refreshp(); cluster = MAP; } else if (cluster == MAP) { attron(COLOR_PAIR(7) | A_STANDOUT); for (ii = 14; ii < 24; ii++) mvprintw(ii, 0, backgrnd_str); refreshp(); cluster = NOCLUSTER; } break; } case 226: // alt-b (band-up for trlog) { if (ctcomp == 0) { if (bandinx <= 8 && *hiscall == '\0') { bandinx++; if (bandinx > 8) bandinx = 0; if ((contest == 1) && (dxped == 0) && ((bandinx == 3) || (bandinx == 5) || (bandinx == 7))) bandinx++; attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); mvprintw(12, 0, band[bandinx]); #ifdef HAVE_LIBHAMLIB if (trx_control == 1) { freq = bandfrequency[bandinx]; outfreq = (int) (bandfrequency[bandinx] * 1000); } #endif send_bandswitch(bandinx); } } break; } case 234: // alt-J { if (cluster != FREQWINDOW) { lastwindow = cluster; cluster = FREQWINDOW; } else cluster = lastwindow; break; } case 232: // alt-H { endwin(); rc=system("clear"); rc=system("less help.txt"); rc=system("clear"); set_term(mainscreen); clear_display(); break; } case 172: // alt-, case 46: // . (dot) { bm_menu(); break; } case 227: //Alt-C { if (searchflg != SEARCHWINDOW) searchflg = SEARCHWINDOW; else searchflg = 0; break; } case 237: // alt-M { show_mults(); refreshp(); break; } case 240: // Alt-p (toggle ptt) { if (k_ptt == 0) { k_ptt = 1; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(0, 2, "PTT on "); mvprintw(12, 29, ""); refreshp(); netkeyer(K_PTT, "1"); // ptt on x = onechar(); // any character to stop tuning if (x == 240) netkeyer(K_PTT, "0"); // ptt off k_ptt = 0; mvprintw(0, 2, "%s", mode); refreshp(); } else netkeyer(K_PTT, "0"); // ptt off in any case. break; } case 244: // Alt-t (tune) { int count; gchar *buff; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(0, 2, "Tune "); mvprintw(12, 29, ""); refreshp(); buff = g_strdup_printf("%d", TUNE_UP); netkeyer(K_TUNE, buff); // cw on g_free(buff); nodelay (stdscr, TRUE); count = TUNE_UP / 0.25; while (count != 0) { usleep( 250000 ); if ((onechar()) != -1) // any key pressed ? break; count--; } nodelay (stdscr, FALSE); netkeyer( K_ABORT, ""); // cw abort mvprintw(0, 2, "%s", mode); refreshp(); break; } case 250: //Alt-z { if (cqww == 1) { if (zonedisplay == 0) zonedisplay = 1; else { zonedisplay = 0; clear_display(); } } else { multiplierinfo(); } break; } case 241: /* EXIT */ case 248: // Alt-q || Alt-x { mvprintw(13, 29, "You want to leave tlf? (y/n): "); while (x != 'n' && x != 'N') { x = onechar(); if (x == 'y' || x == 'Y') { writeparas(); endwin(); puts("\n\nThanks for using TLF.. 73\n"); exit(0); } } x = 27; break; } case 27: // ESC { if (early_started == 0) { /* if CW not started early drop call and start anew */ cleanup(); clear_display(); } else { /* otherwise just stop sending */ stoptx(); *hiscall_sent = '\0'; early_started = 0; } break; } case 95: { prev_qso(); break; } case '!': { endwin(); rc=system("clear"); rc=system("sh"); rc=system("clear"); set_term(mainscreen); clear_display(); break; } case 12: // ctrl-L { endwin(); set_term(mainscreen); clear_display(); break; } case 16: // ctrl-P { int currentterm = miniterm; miniterm = 0; muf(); miniterm = currentterm; clear_display(); break; } case 1: // ctl-A { addspot(); HideSearchPanel(); break; } case 2: // ctl-b { announcefilter = 0; cluster = CLUSTER; send_cluster(); break; } case 6: // ctl-f { change_freq(); break; } case 7: // ctl-g { grab_next(); break; } case 231: // alt-g { grabspot(); break; } case '\"': // " { if (lan_active != 0) talk(); break; } case 18: // ctrl-r { if (k_pin14 == 0) { k_pin14 = 1; netkeyer(K_SET14, "1"); } else { k_pin14 = 0; netkeyer(K_SET14, "0"); } break; } case 20: // ctrl-t case 233: // alt-I { if (lan_active != 0) { for (t = 0; t <= 5; t++) mvprintw(14 + t, 1, " "); for (t = 0; t <= 4; t++) mvprintw(15 + t, 1, talkarray[t]); nicebox(14, 0, 5, 59, "Messages"); refreshp(); getchar(); attron(COLOR_PAIR(7) | A_STANDOUT); for (t = 0; t <= 6; t++) mvprintw(14 + t, 0, " "); clear_display(); } break; } } /* end switch */ /* convert to upper case */ if (x >= 'a' && x <= 'z') x = x - 32; if (x >= '/' && x <= 'Z') { if (strlen(hiscall) < 13) { instring[0] = x; instring[1] = '\0'; addch(x); strcat(hiscall, instring); if (cwstart != 0 && trxmode == CWMODE && contest == 1) { /* early start keying after 'cwstart' characters */ if (strlen(hiscall) == cwstart) { strcpy(buffer, hiscall); early_started = 1; sending_call = 1; sendbuf(); sending_call = 0; strcpy(hiscall_sent, hiscall); } } } refreshp(); if (atoi(hiscall) < 1800) { /* no frequency */ strncpy(dupecall, hiscall, 16); y = getctydata(dupecall); showinfo(y); searchlog(hiscall); } else { attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(24, 0, " "); mvprintw(12, 29 + strlen(hiscall), ""); } refreshp(); } if ((x == '\n') || x == 32 || x == 9 || x == 11 || x == 44 || x == 92) break; if (trxmode == DIGIMODE && (keyerport == GMFSK || keyerport == MFJ1278_KEYER)) { show_rtty(); refreshp(); } } return (x); } int play_file(char *audiofile) { extern int txdelay; int fd,rc; char playcommand[120]; if (*audiofile == '\0') return (0); if ((fd = open(audiofile, O_RDONLY, 0664)) < 0) { mvprintw(24, 0, "cannot open sound file %s!", audiofile); } else { close(fd); if (access("./play_vk", X_OK) == 0 ) { sprintf( playcommand, "./play_vk %s", audiofile); } else { sprintf( playcommand, "play_vk %s", audiofile); } netkeyer(K_PTT, "1"); // ptt on usleep(txdelay * 1000); rc=system(playcommand); printcall(); netkeyer(K_PTT, "0"); // ptt off } return (0); } void send_bandswitch(int freq) { extern int use_bandoutput; extern int bandinx; extern int bandindexarray[]; char outnibble[3]; int bandswitch = 0; if (use_bandoutput == 1) { if (freq > 15) { // cannot be a freq... switch ((int) freq) { case 1800 ... 2000: bandswitch = 1; break; case 3500 ... 4000: bandswitch = 2; break; case 7000 ... 7300: bandswitch = 3; break; case 10100 ... 10150: bandswitch = 4; break; case 14000 ... 14350: bandswitch = 5; break; case 18068 ... 18168: bandswitch = 6; break; case 21000 ... 21450: bandswitch = 7; break; case 24890 ... 24990: bandswitch = 8; break; case 28000 ... 29700: bandswitch = 9; } } else // use the bandinx bandswitch = bandinx + 1; bandswitch = bandindexarray[bandswitch]; sprintf(outnibble, "%d", bandswitch); netkeyer(K_SWITCH, outnibble); } } tlf_1.1.5/src/sunup.c0000664000175000017500000000350112072353226012645 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "sunup.h" #include #include #include #include /** Compute sun up and down at given lattitude * \parm lat - Lattitude */ int sunup(double DEST_Lat) { extern struct tm *time_ptr; extern double sunrise; extern double sundown; double lat; double sun_lat; double total_days; double sunshine; lat = DEST_Lat / RADIAN; get_time(); total_days = time_ptr->tm_yday + 10; /* days after lower culmination of the sun */ if (total_days >= 365.25) total_days -= 365.25; if (total_days <= 0.0) total_days += 365.25; /* calculate todays lattitude of the sun */ sun_lat = asin( sin(23.439 / RADIAN) * sin(((total_days - 90.086) / 365.25) * 360 / RADIAN)) * RADIAN; /* sunshine period today at given lat */ sunshine = (24.0 / 180.0) * RADIAN * acos(-tan(lat) * tan(sun_lat / RADIAN)); sunrise = 12.0 - sunshine / 2; sundown = 12.0 + sunshine / 2; return (0); } tlf_1.1.5/src/Makefile.in0000664000175000017500000006116112105506436013402 0ustar jtnjtn# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = tlf$(EXEEXT) subdir = src DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) am_tlf_OBJECTS = addarea.$(OBJEXT) addcall.$(OBJEXT) addmult.$(OBJEXT) \ addpfx.$(OBJEXT) addspot.$(OBJEXT) audio.$(OBJEXT) \ autocq.$(OBJEXT) background_process.$(OBJEXT) \ bandmap.$(OBJEXT) calledit.$(OBJEXT) callinput.$(OBJEXT) \ changefreq.$(OBJEXT) changepars.$(OBJEXT) \ checklogfile.$(OBJEXT) checkparameters.$(OBJEXT) \ cleanup.$(OBJEXT) clear_display.$(OBJEXT) \ clusterinfo.$(OBJEXT) dxcc.$(OBJEXT) deleteqso.$(OBJEXT) \ displayit.$(OBJEXT) edit_last.$(OBJEXT) editlog.$(OBJEXT) \ freq_display.$(OBJEXT) get_time.$(OBJEXT) getctydata.$(OBJEXT) \ getexchange.$(OBJEXT) getmessages.$(OBJEXT) getpx.$(OBJEXT) \ getsummary.$(OBJEXT) gettxinfo.$(OBJEXT) getwwv.$(OBJEXT) \ grabspot.$(OBJEXT) initial_exchange.$(OBJEXT) keyer.$(OBJEXT) \ lancode.$(OBJEXT) last10.$(OBJEXT) listmessages.$(OBJEXT) \ log_to_disk.$(OBJEXT) logit.$(OBJEXT) logview.$(OBJEXT) \ main.$(OBJEXT) makelogline.$(OBJEXT) messagechange.$(OBJEXT) \ muf.$(OBJEXT) nicebox.$(OBJEXT) note.$(OBJEXT) \ netkeyer.$(OBJEXT) onechar.$(OBJEXT) paccdx.$(OBJEXT) \ parse_logcfg.$(OBJEXT) prevqso.$(OBJEXT) printcall.$(OBJEXT) \ qrb.$(OBJEXT) qsonr_to_str.$(OBJEXT) readcalls.$(OBJEXT) \ readctydata.$(OBJEXT) recall_exchange.$(OBJEXT) \ rules.$(OBJEXT) score.$(OBJEXT) scroll_log.$(OBJEXT) \ searchcallarray.$(OBJEXT) searchlog.$(OBJEXT) \ sendbuf.$(OBJEXT) sendqrg.$(OBJEXT) sendspcall.$(OBJEXT) \ set_tone.$(OBJEXT) setcontest.$(OBJEXT) \ setparameters.$(OBJEXT) show_help.$(OBJEXT) showinfo.$(OBJEXT) \ showpxmap.$(OBJEXT) showscore.$(OBJEXT) showzones.$(OBJEXT) \ sockserv.$(OBJEXT) speeddown.$(OBJEXT) speedup.$(OBJEXT) \ stoptx.$(OBJEXT) store_qso.$(OBJEXT) sunup.$(OBJEXT) \ splitscreen.$(OBJEXT) startmsg.$(OBJEXT) rtty.$(OBJEXT) \ time_update.$(OBJEXT) write_keyer.$(OBJEXT) \ writecabrillo.$(OBJEXT) writeparas.$(OBJEXT) zone_nr.$(OBJEXT) tlf_OBJECTS = $(am_tlf_OBJECTS) tlf_DEPENDENCIES = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(tlf_SOURCES) DIST_SOURCES = $(tlf_SOURCES) HEADERS = $(noinst_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GREP = @GREP@ HAMLIB_CFLAGS = @HAMLIB_CFLAGS@ HAMLIB_LIBS = @HAMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ INCLUDES = \ @GLIB_CFLAGS@ tlf_SOURCES = \ addarea.c addcall.c addmult.c addpfx.c addspot.c audio.c autocq.c \ background_process.c bandmap.c \ calledit.c callinput.c changefreq.c changepars.c checklogfile.c \ checkparameters.c cleanup.c clear_display.c clusterinfo.c \ dxcc.c \ deleteqso.c displayit.c \ edit_last.c editlog.c \ freq_display.c \ get_time.c getctydata.c getexchange.c getmessages.c getpx.c \ getsummary.c gettxinfo.c getwwv.c grabspot.c \ initial_exchange.c \ keyer.c \ lancode.c last10.c listmessages.c log_to_disk.c logit.c logview.c \ main.c makelogline.c messagechange.c muf.c \ nicebox.c note.c netkeyer.c\ onechar.c \ paccdx.c parse_logcfg.c prevqso.c printcall.c \ qrb.c qsonr_to_str.c \ readcalls.c readctydata.c recall_exchange.c rules.c \ score.c scroll_log.c searchcallarray.c searchlog.c sendbuf.c \ sendqrg.c sendspcall.c set_tone.c setcontest.c \ setparameters.c show_help.c showinfo.c showpxmap.c \ showscore.c showzones.c sockserv.c speeddown.c \ speedup.c stoptx.c store_qso.c sunup.c splitscreen.c startmsg.c\ rtty.c time_update.c \ write_keyer.c writecabrillo.c writeparas.c \ zone_nr.c tlf_LDADD = @GLIB_LIBS@ noinst_HEADERS = \ addarea.h addcall.h addmult.h addpfx.h addspot.h audio.h autocq.h \ background_process.h bandmap.h \ calledit.h callinput.h changefreq.h changepars.h checklogfile.h \ checkparameters.h cleanup.h clear_display.h clusterinfo.h cwkeyer.h \ dxcc.h \ deleteqso.h displayit.h \ edit_last.h editlog.h \ freq_display.h \ get_time.h getctydata.h getexchange.h getmessages.h getpx.h \ getsummary.h gettxinfo.h getwwv.h globalvars.h grabspot.h \ initial_exchange.h \ keyer.h \ lancode.h last10.h listmessages.h log_to_disk.h logit.h logview.h \ main.h makelogline.h messagechange.h muf.h multiplierinfo.h \ nicebox.h note.h netkeyer.h\ onechar.h \ paccdx.h parse_logcfg.h prevqso.h printcall.h \ qrb.h qsonr_to_str.h \ readcalls.h readctydata.h recall_exchange.h \ rules.h \ score.h scroll_log.h searchcallarray.h searchlog.h sendbuf.h \ sendqrg.h sendspcall.h set_tone.h setcontest.h \ setparameters.h show_help.h showinfo.h showpxmap.h showscore.h \ showzones.h sockserv.h speed_conversion.h speeddown.h speedup.h \ splitscreen.h startmsg.h stoptx.h store_qso.h sunup.h \ rtty.h time_update.h tlf.h \ write_keyer.h write_tone.h writecabrillo.h writeparas.h \ zone_nr.h all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) tlf$(EXEEXT): $(tlf_OBJECTS) $(tlf_DEPENDENCIES) $(EXTRA_tlf_DEPENDENCIES) @rm -f tlf$(EXEEXT) $(LINK) $(tlf_OBJECTS) $(tlf_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addarea.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addcall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addmult.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addpfx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addspot.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audio.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/autocq.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/background_process.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bandmap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calledit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callinput.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/changefreq.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/changepars.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/checklogfile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/checkparameters.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cleanup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clear_display.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clusterinfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/deleteqso.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/displayit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dxcc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/edit_last.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/editlog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/freq_display.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_time.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getctydata.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getexchange.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getmessages.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getpx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsummary.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettxinfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getwwv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/grabspot.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/initial_exchange.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/keyer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lancode.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/last10.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/listmessages.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log_to_disk.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logview.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/makelogline.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/messagechange.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/muf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netkeyer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nicebox.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/note.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/onechar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paccdx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parse_logcfg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prevqso.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printcall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qrb.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qsonr_to_str.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readcalls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readctydata.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/recall_exchange.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtty.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rules.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/score.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scroll_log.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/searchcallarray.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/searchlog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendbuf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendqrg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendspcall.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_tone.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setcontest.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setparameters.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/show_help.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/showinfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/showpxmap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/showscore.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/showzones.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockserv.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/speeddown.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/speedup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splitscreen.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/startmsg.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stoptx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/store_qso.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sunup.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/time_update.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/write_keyer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writecabrillo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/writeparas.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zone_nr.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic ctags distclean distclean-compile \ distclean-generic distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-binPROGRAMS # 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: tlf_1.1.5/src/messagechange.h0000664000175000017500000000201512072353226014271 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include "tlf.h" #include "clear_display.h" #include "nicebox.h" #include "onechar.h" #include "writeparas.h" int message_change(int x); tlf_1.1.5/src/deleteqso.c0000664000175000017500000000364012072353226013464 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * delete last qso * *--------------------------------------------------------------*/ #include "globalvars.h" #include "deleteqso.h" int delete_qso(void) { int x, isnote, rc; int lfile; struct stat statbuf; mvprintw(13, 29, "OK to delete last qso (y/n)?"); x = onechar(); if ((x == 'y') || (x == 'Y')) { if ((lfile = open(logfile, O_RDWR)) < 0) { mvprintw(24, 0, "I can not find the logfile..."); refreshp(); sleep(2); } else { nr_qsos--; qsos[nr_qsos][0] = '\0'; fstat(lfile, &statbuf); if (statbuf.st_size > 80) rc = ftruncate(lfile, statbuf.st_size - 81); fsync(lfile); close(lfile); } if (logline4[0] == ';') isnote = 1; else isnote = 0; if (isnote == 0) { band_score[bandinx]--; qsonum--; qsonr_to_str(); } scroll_log(); } attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT); mvprintw(13, 29, " "); printcall(); clear_display(); return (0); } tlf_1.1.5/src/netkeyer.h0000664000175000017500000000271412072353226013333 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #define K_RESET 0 #define K_MESSAGE 1 #define K_SPEED 2 #define K_TONE 3 #define K_ABORT 4 #define K_STOP 5 #define K_WORDMODE 6 #define K_WEIGHT 7 #define K_DEVICE 8 #define K_TOD 9 // set txdelay (turn on delay) #define K_ADDRESS 10 // set port address of device #define K_SET14 11 // set pin 14 on lpt #define K_TUNE 12 // tune #define K_PTT 13 // PTT on/off #define K_SWITCH 14 // set band switch output pins 2,7,8,9 on lpt #define K_SIDETONE 15 // set sidetone to sound card #define K_STVOLUME 16 // set sidetone volume int netkeyer(int cw_op, char *cwmessage); int netkeyer_close(void); int netkeyer_init (void); tlf_1.1.5/src/setparameters.c0000664000175000017500000001055712072353226014363 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * List and set parameters * *--------------------------------------------------------------*/ #include "setparameters.h" int setparameters(void) { extern int cluster; extern int shortqsonr; extern int searchflg; extern int contest; extern int announcefilter; extern int showscore_flag; extern char call[]; extern char logfile[]; extern char whichcontest[]; extern int stop_backgrnd_process; int i = '9'; char callcpy[12] = ""; char logbuffer[20]; stop_backgrnd_process = 1; /* to prevent race condition */ while ((i == '7') || (i == '8') || (i == '9')) { for (i = 14; i <= 22; i++) mvprintw(i, 2, " "); if (cluster == NOCLUSTER) mvprintw(14, 2, "1: Cluster = OFF"); else if (cluster == MAP) mvprintw(14, 2, "1: Cluster = BANDMAP"); else mvprintw(14, 2, "1: Cluster = Full info"); if (shortqsonr == SHORTCW) mvprintw(15, 2, "2: SHORT QSONR"); else mvprintw(15, 2, "2: LONG QSONR"); if (searchflg == SEARCHWINDOW) mvprintw(16, 2, "3: Duping ON"); else mvprintw(16, 2, "3: Duping OFF"); if (contest == CONTEST) mvprintw(17, 2, "4: CONTEST MODE"); else mvprintw(17, 2, "4: QSO MODE"); if (announcefilter == FILTER_ANN) mvprintw(18, 2, "5: FILTER ON"); else mvprintw(18, 2, "5: FILTER OFF"); if (showscore_flag == 0) mvprintw(19, 2, "6: Score window OFF"); else mvprintw(19, 2, "6: Score window ON"); mvprintw(20, 2, "7: Logfile: %s", logfile); strncpy(callcpy, call, strlen(call) - 1); mvprintw(21, 2, "8: Call: %s", callcpy); mvprintw(22, 2, "9: Contest: %s", whichcontest); attroff(A_STANDOUT); mvprintw(23, 25, "Change parameter: 7,8,9, none"); refreshp(); i = onechar(); if (i == '7') { mvprintw(20, 14, " "); mvprintw(20, 14, ""); echo(); getnstr(logbuffer, 20); noecho(); logfile[0] = '\0'; // if (logbuffer[0] != '.') // strcat(logfile, "./"); strcat(logfile, logbuffer); logfile[strlen(logfile) - 1] = '\0'; writeparas(); clear(); attron(COLOR_PAIR(7) | A_STANDOUT); getmessages(); /* read .paras file */ sleep(2); checklogfile(); /* make sure logfile is there */ setcontest(); /* set contest parameters */ getwwv(); /* get the latest wwv info from packet */ scroll_log(); /* read the last 5 log lines and set the qso number */ readcalls(); /* read the logfile for score and dupe */ clear_display(); /* tidy up the display */ return (0); } if (i == '8') { mvprintw(21, 14, " "); mvprintw(21, 14, ""); echo(); getnstr(call, 20); noecho(); strcat(call, "\n"); } if (i == '9') { mvprintw(1, 2, "cqww "); mvprintw(2, 2, "wpx "); mvprintw(3, 2, "arrldx_usa"); mvprintw(4, 2, "pacc_pa "); mvprintw(5, 2, "dxped "); mvprintw(6, 2, "qso "); mvprintw(1, 12, " other "); mvprintw(2, 12, " "); mvprintw(3, 12, " arrldx_dx "); mvprintw(4, 12, " pacc_dx "); mvprintw(5, 12, " "); mvprintw(6, 12, " "); mvprintw(22, 14, " "); mvprintw(22, 14, ""); echo(); getnstr(whichcontest, 20); noecho(); setcontest(); } writeparas(); beep(); } stop_backgrnd_process = 0; /* release backgrnd process */ return (0); } tlf_1.1.5/src/setcontest.h0000664000175000017500000000163212072353226013676 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" #include "getctydata.h" int setcontest(void); tlf_1.1.5/src/set_tone.h0000664000175000017500000000174712072353226013332 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include "tlf.h" #include "nicebox.h" int set_tone(void); void write_tone(void); tlf_1.1.5/src/readcalls.c0000664000175000017500000002635512072353226013441 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Initialize call array for dupes * *--------------------------------------------------------------*/ #include "readcalls.h" #include "addpfx.h" #include "addmult.h" #include "get_time.h" #include #include "tlf.h" #include "globalvars.h" #include int readcalls(void) { char inputbuffer[160]; char tmpbuf[20]; char bndbuf[20]; char zonebuf[3]; char checkcall[20]; int i = 0, k = 0, l = 0, n = 0, r = 0, s = 0; int m = 0; int t = 0, tt = 0; int z = 0; int add_ok; char multbuffer[40]; char presentcall[20]; // copy of call.. char *tmpptr; int points; FILE *fp; clear(); mvprintw(4, 0, "Reading logfile...\n"); refreshp(); /* reset counter and score anew */ for (s = 0; s < MAX_QSOS; s++) qsos[s][0] = '\0'; for (i = 0; i < MAX_CALLS; i++) callarray[i][0] = '\0'; for (i = 1; i <= MAX_DATALINES - 1; i++) countries[i] = 0; for (i = 0; i < NBANDS; i++) band_score[i] = 0; for (i = 0; i <= 5; i++) countryscore[i] = 0; for (n = 1; n <= 40; n++) zones[n] = 0; for (n = 0; n < 6; n++) zonescore[n] = 0; for (n = 0; n < NBANDS; n++) //F6CFE multscore[n] = 0; init_mults(); if ((fp = fopen(logfile, "r")) == NULL) { mvprintw(5, 0, "Error opening logfile.\n"); refreshp(); sleep(2); } i = 0; k = 0; l = 0; total = 0; s = 0; t = 0; while (fgets(inputbuffer, 90, fp) != NULL) { r++; if (r >= 100) { r = 0; printw("*"); refreshp(); } strcat(inputbuffer, " "); /* repair the logfile */ inputbuffer[79] = ' '; inputbuffer[80] = '\0'; for (t = 0; t <= strlen(inputbuffer); t++) { if (inputbuffer[t] == '\n') inputbuffer[t] = ' '; } strncpy(qsos[s], inputbuffer, 81); s++; if (inputbuffer[0] == ';') continue; /* note in log */ strncpy(presentcall, inputbuffer + 29, 13); presentcall[13] = '\0'; strncpy(bndbuf, inputbuffer + 1, 2); bndbuf[2] = '\0'; if (bndbuf[0] == '1' && bndbuf[1] == '0') bandinx = BANDINDEX_10; if (bndbuf[0] == '1' && bndbuf[1] == '5') bandinx = BANDINDEX_15; if (bndbuf[0] == '2') bandinx = BANDINDEX_20; if (bndbuf[0] == '4') bandinx = BANDINDEX_40; if (bndbuf[0] == '8') bandinx = BANDINDEX_80; if (bndbuf[0] == '6') bandinx = BANDINDEX_160; /* get the country number, not known at this point */ tmpptr = strchr(presentcall, ' '); if (tmpptr) *tmpptr = '\0'; strcpy(tmpbuf, presentcall); countrynr = getctydata(tmpbuf); if (contest == 1) { strncpy(tmpbuf, inputbuffer + 76, 2); /* get the points */ tmpbuf[2] = '\0'; points = atoi(tmpbuf); total = total + points; if (cqww == 1) { strncpy(zonebuf, inputbuffer + 54, 2); /* get the zone */ zonebuf[2] = '\0'; z = zone_nr(zonebuf); } if (wysiwyg_once == 1 || wysiwyg_multi == 1 || arrlss == 1 || serial_section_mult == 1 || serial_grid4_mult == 1 || sectn_mult == 1 || ((dx_arrlsections == 1) && ((countrynr == w_cty) || (countrynr == ve_cty)))) { multbuffer[0] = '\0'; if (arrlss == 1) { other_flg = 0; if (inputbuffer[63] == ' ') strncpy(multbuffer, inputbuffer + 64, 3); else strncpy(multbuffer, inputbuffer + 63, 3); multbuffer[3] = '\0'; } else if (serial_section_mult == 1) { tt = 0; memset(multbuffer, 0, 39); for (t = 54; t < 64; t++) { if (inputbuffer[t] >= 'A' && inputbuffer[t] <= 'Z') { multbuffer[tt] = inputbuffer[t]; tt++; } } } else if (serial_grid4_mult == 1) { memset(multbuffer, 0, 39); for (t = 0; t < 4; t++) { multbuffer[t] = inputbuffer[t + 59]; } } else { strncpy(multbuffer, inputbuffer + 54, 10); // normal case multbuffer[10] = '\0'; g_strchomp(multbuffer); } remember_multi( multbuffer, bandinx, 0 ); } // end wysiwig if (other_flg == 1) { /* mult = max 3 characters */ strncpy(multbuffer, inputbuffer + 54, 3); multbuffer[3] = '\0'; if (multbuffer[3] == ' ') multbuffer[3] = '\0'; if (multbuffer[2] == ' ') multbuffer[2] = '\0'; if (multbuffer[1] == ' ') multbuffer[1] = '\0'; remember_multi( multbuffer, bandinx, 0 ); } } /* once per call ! */ for (k = 0; k < i; k++) { // changed k=< i m = strcmp(callarray[k], presentcall); if (m == 0) { l = k; break; } else l = i; } strncpy(callarray[l], inputbuffer + 29, 19); callarray[l][19] = 0; strtok(callarray[l], " \r"); /* delimit first word */ call_country[l] = countrynr; g_strlcpy(call_exchange[l], inputbuffer + 54, 12); g_strchomp(call_exchange[l]); /* strip trailing spaces */ add_ok = 1; /* look if calls are excluded */ if ((arrldx_usa == 1) && ((countrynr == w_cty) || (countrynr == ve_cty))) add_ok = 0; if (pacc_pa_flg == 1) { strcpy(hiscall, presentcall); add_ok = pacc_pa(); if (add_ok == 0) { band_score[bandinx]++; } hiscall[0] = '\0'; } if (add_ok == 1) { call_band[l] |= inxes[bandinx]; /* mark band as worked */ band_score[bandinx]++; /* qso counter per band */ if (cqww == 1) zones[z] |= inxes[bandinx]; countries[countrynr] |= inxes[bandinx]; } /* end add_ok */ if (l == i) i++; } fclose(fp); /* remember nuber of callarray entries */ callarray_nr = i; if (wpx == 1) { /* build prefixes_worked array from list of worked stations */ nr_of_px = 0; for (n = 0; n < i; n++) { strcpy(checkcall, callarray[n]); getpx(checkcall); add_pfx(pxstr); } } if (cqww == 1) { for (n = 1; n <= 40; n++) { if ((zones[n] & BAND160) != 0) zonescore[0]++; if ((zones[n] & BAND80) != 0) zonescore[1]++; if ((zones[n] & BAND40) != 0) zonescore[2]++; if ((zones[n] & BAND20) != 0) zonescore[3]++; if ((zones[n] & BAND15) != 0) zonescore[4]++; if ((zones[n] & BAND10) != 0) zonescore[5]++; } for (n = 1; n <= MAX_DATALINES - 1; n++) { if ((countries[n] & BAND160) != 0) countryscore[0]++; if ((countries[n] & BAND80) != 0) countryscore[1]++; if ((countries[n] & BAND40) != 0) countryscore[2]++; if ((countries[n] & BAND20) != 0) countryscore[3]++; if ((countries[n] & BAND15) != 0) countryscore[4]++; if ((countries[n] & BAND10) != 0) countryscore[5]++; } } /* end cqww */ if (dx_arrlsections == 1) { int cntr; for (cntr = 1; cntr < MAX_DATALINES; cntr++) { if (cntr != w_cty && cntr != ve_cty) // W and VE don't count here... { if ((countries[cntr] & BAND160) != 0) countryscore[0]++; if ((countries[cntr] & BAND80) != 0) countryscore[1]++; if ((countries[cntr] & BAND40) != 0) countryscore[2]++; if ((countries[cntr] & BAND20) != 0) countryscore[3]++; if ((countries[cntr] & BAND15) != 0) countryscore[4]++; if ((countries[cntr] & BAND10) != 0) countryscore[5]++; } } } // end dx_arrlsections if ((arrldx_usa == 1) && (countrynr != w_cty) && (countrynr != ve_cty)) { int cntr; for (cntr = 1; cntr < MAX_DATALINES; cntr++) { if ((countries[cntr] & BAND160) != 0) countryscore[0]++; if ((countries[cntr] & BAND80) != 0) countryscore[1]++; if ((countries[cntr] & BAND40) != 0) countryscore[2]++; if ((countries[cntr] & BAND20) != 0) countryscore[3]++; if ((countries[cntr] & BAND15) != 0) countryscore[4]++; if ((countries[cntr] & BAND10) != 0) countryscore[5]++; } } /* end arrldx_usa */ if (pacc_pa_flg == 1) { for (n = 1; n < MAX_DATALINES; n++) { if ((countries[n] & BAND160) != 0) countryscore[0]++; if ((countries[n] & BAND80) != 0) countryscore[1]++; if ((countries[n] & BAND40) != 0) countryscore[2]++; if ((countries[n] & BAND20) != 0) countryscore[3]++; if ((countries[n] & BAND15) != 0) countryscore[4]++; if ((countries[n] & BAND10) != 0) countryscore[5]++; } } if (country_mult == 1) { for (n = 1; n <= MAX_DATALINES - 1; n++) { if ((countries[n] & BAND160) != 0) countryscore[0]++; if ((countries[n] & BAND80) != 0) countryscore[1]++; if ((countries[n] & BAND40) != 0) countryscore[2]++; if ((countries[n] & BAND20) != 0) countryscore[3]++; if ((countries[n] & BAND15) != 0) countryscore[4]++; if ((countries[n] & BAND10) != 0) countryscore[5]++; } } if (qsonum == 1) { nr_of_px = 0; total = 0; for (i = 0; i < NBANDS; i++) band_score[i] = 0; for (i = 0; i <= 5; i++) countryscore[i] = 0; for (i = 0; i < NBANDS; i++) multscore[i] = 0; } /* \todo check what the following code is for tb 19sep2011 */ if (((serial_section_mult == 1) // || (serial_grid4_mult == 1) || (sectn_mult == 1)) && multarray_nr == 1) { // correction ...... mults[1][0] = '\0'; mult_bands[1] = 0; } else if (serial_section_mult == 1 && multarray_nr > 1) multarray_nr++; return (s); // nr of lines in log } //------------------------------------------------------------------------ int synclog(char *synclogfile) { extern char logfile[]; extern struct tm *time_ptr; int rc; char wgetcmd[120] = "wget ftp://"; //user:password@hst/dir/file char date_buf[60]; get_time(); strftime(date_buf, 9, "%d%H%M", time_ptr); if (strlen(synclogfile) < 80) strcat(wgetcmd, synclogfile); else { showmsg("Warning: Name of syncfile too long\n"); sleep(5); exit(1); } strcat(wgetcmd, " -O log1 -o wgetlogfile"); if (system(wgetcmd) == 0) showmsg("Syncfile o.k.\n"); else { showmsg("Warning: Did not get syncfile !!\nExiting...\n"); sleep(5); exit(1); } wgetcmd[0] = '\0'; sprintf(wgetcmd, "cp %s log2", logfile); if (system(wgetcmd) != 0) showstring("\nCopying logfile %s failed\n", logfile); showmsg("Backing up logfile.\n"); sleep(1); sprintf(wgetcmd, "cp %s %s%s", logfile, date_buf, logfile); if (system(wgetcmd) != 0) showstring("\nCopying logfile %s to backup failed\n", logfile); showmsg("Merging logfiles...\n"); sleep(1); sprintf(wgetcmd, "cat log1 log2 | sort -g -k4,4 | uniq -w79 > %s", logfile); if (system(wgetcmd) == 0) showmsg("Merging logs successfull\n"); else { showmsg("Problem merging logs.\nExiting...\n"); sleep(5); exit(1); } sleep(1); rc = system("rm log1"); rc = system("rm log2"); return (0); } tlf_1.1.5/src/stoptx.h0000664000175000017500000000166712072353226013054 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include "tlf.h" int stoptx(void); tlf_1.1.5/src/autocq.h0000664000175000017500000000207612072353226013002 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include "clear_display.h" #include "printcall.h" #include "sendbuf.h" #include "tlf.h" int auto_cq (void); int cw_char_length( char *message) ; tlf_1.1.5/src/time_update.h0000664000175000017500000000231312072353226014000 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include "tlf.h" #include "get_time.h" #include "gettxinfo.h" #include "clusterinfo.h" #include "showscore.h" #include "showzones.h" #include "printcall.h" #include "getwwv.h" #include "scroll_log.h" #include "lancode.h" #include "splitscreen.h" void time_update(void); tlf_1.1.5/src/sockserv.h0000664000175000017500000000544012072353226013343 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* External socket services: supported by sockserv.c */ /* Written by N2RJT */ /* Note that socket numbers are file descriptors, typically small integers */ #define MAX_SERVED_SOCKETS 4 /* Output functions: return number of bytes transmitted, or -1 on error */ extern int usputb(int s, char *buf, int buflen); extern int usputs(int s, char *buf); extern int usprintf(int s, char *fmt,...); extern int tprintf(char *fmt,...); /* Close a socket */ extern int close_s(int s); /* ** Startup a server program ** portnum = TCP port to listen to ** login = procedure to be called when a new socket is accepted; ** should be declared as: void login(int s); ** where: s is the new socket number ** The logout condition is detected by a -1 returned from recvline(). */ extern int startup(int portnum, void (*login) (int)); /* ** Set timeout for recvline call */ void socktimeout(int msec); void nosocktimeout(void); /* ** Set line mode: TRUE - only give me complete lines. ** FALSE- give me any data received, even multiple lines. ** The default is FALSE. */ void setlinemode(int s, int tf); /* ** Receive a line from a socket ** s = [OUT] the socket data was received on; ** buf = [OUT] character buffer containing socket data; ** if linemode = TRUE, buffer is terminated with null character ** buflen = [IN] length of the character buffer; ** returns the number of bytes read, or -1 indicating EOF on the socket. ** or -2 indicating timeout (if enabled). */ extern int recvline(int *s, char *buf, int buflen); extern int startcli(void); extern int startcliaddr(int family, unsigned long int addr, unsigned short int portnum); extern long resolve(char *hostname); extern int startup_udp(int portnum); extern void set_udp_peer(long address, int portnum); extern void get_udp_peer(long *address, int *portnum); extern int udp_socket; extern char sockserv_error[]; tlf_1.1.5/src/addarea.c0000664000175000017500000000531612072353226013062 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * add call area to list for one band * *--------------------------------------------------------------*/ #include "globalvars.h" #include "addarea.h" int add_callarea(void) { extern int callareas[]; extern char hiscall[]; extern int manise80; extern int bandinx; extern int total; extern int multscore[]; int addarea = 0; int found = 0; if (manise80 == 1) { if (strncmp(hiscall, "EA1", 3) == 0) { if (callareas[1] == 0) { callareas[1] = 1; addarea = 1; } } if (strncmp(hiscall, "EA2", 3) == 0) { if (callareas[2] == 0) { callareas[2] = 1; addarea = 1; } } if (strncmp(hiscall, "EA3", 3) == 0) { if (callareas[3] == 0) { callareas[3] = 1; addarea = 1; } } if (strncmp(hiscall, "EA4", 3) == 0) { if (callareas[4] == 0) { callareas[4] = 1; addarea = 1; } } if (strncmp(hiscall, "EA5", 3) == 0) { if (callareas[5] == 0) { callareas[5] = 1; addarea = 1; } if (strncmp(hiscall, "EA5URW", 6) == 0) total = total + 9; } if (strncmp(hiscall, "EA6", 3) == 0) { if (callareas[6] == 0) { callareas[6] = 1; addarea = 1; } } if (strncmp(hiscall, "EA7", 3) == 0) { if (callareas[7] == 0) { callareas[7] = 1; addarea = 1; } } if (strncmp(hiscall, "EA8", 3) == 0) { if (callareas[8] == 0) { callareas[8] = 1; addarea = 1; } } if (strncmp(hiscall, "EA9", 3) == 0) { if (callareas[9] == 0) { callareas[9] = 1; addarea = 1; } } if (strncmp(hiscall, "CT", 2) == 0) { if (callareas[0] == 0) { callareas[0] = 1; addarea = 1; } } if (strncmp(hiscall, "C3", 2) == 0) { if (callareas[10] == 0) { callareas[10] = 1; addarea = 1; } } } if (addarea == 1) { addarea = 0; multscore[bandinx]++; } return (found); } tlf_1.1.5/src/changefreq.h0000664000175000017500000000203412072353226013603 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include "freq_display.h" #include "onechar.h" #include "gettxinfo.h" #include "time_update.h" #ifdef HAVE_LIBHAMLIB #include #endif void change_freq(void); tlf_1.1.5/src/getsummary.h0000664000175000017500000000174712072353226013707 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include "nicebox.h" #include "tlf.h" int getsummary(void); tlf_1.1.5/src/score.c0000664000175000017500000001751312072353226012616 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * score * *--------------------------------------------------------------*/ #include "score.h" int calc_continent(int zone); /* LZ3NY - check if call is in COUNTRY_LIST from logcfg.dat */ int country_found(char prefix[]) { extern int countrynr; extern char hiscall[]; extern char call[]; extern char mit_multiplier_list[][6]; char tmpcall[15]; int mit_fg = 0; if (strlen(hiscall) == 0) { strcpy(tmpcall, call); } else strcpy(tmpcall, hiscall); if (countrynr == 0) countrynr = getctydata(tmpcall); while (strlen(mit_multiplier_list[mit_fg]) != 0) { if (getctydata(mit_multiplier_list[mit_fg]) == getctydata(tmpcall)) { return 1; } mit_fg++; } return 0; } int exist_in_country_list() { // extern char mit_multiplier_list[][6]; extern char pxstr[]; char prefix[10]; memset(prefix, '\0', 10); strcpy(prefix, pxstr); if (country_found(prefix) == 1) { return (1); } else { if ((prefix[strlen(prefix) - 1] < 58) /* last char '0'..'9' */ && (prefix[strlen(prefix) - 1] > 47)) { prefix[strlen(prefix) - 1] = '\0'; /* strip number */ if (country_found(prefix) == 1) { return 1; } else { if ((prefix[strlen(prefix) - 1] < 58) /* see above */ && (prefix[strlen(prefix) - 1] > 47)) { prefix[strlen(prefix) - 1] = '\0'; if (country_found(prefix) == 1) return (1); else return (0); } else return 0; } } else return 0; } } /* end LZ3NY code */ int score() { extern int dupe; extern int points; extern int one_point; extern int two_point; extern int three_point; extern int band_score[9]; extern int bandinx; extern int wpx; extern int pfxmult; extern int countrynr; extern int mycountrynr; extern int total; extern char continent[]; extern char mycontinent[]; extern char comment[]; extern int cqww; extern int arrl_fd; extern int arrldx_usa; extern int w_cty; extern int ve_cty; extern int trxmode; extern int cwpoints; extern int ssbpoints; extern int lowband_point_mult; extern int portable_x2; extern char hiscall[]; /* LZ3NY mods */ extern int countrylist_points; extern int my_cont_points; extern int my_country_points; extern int dx_cont_points; extern int countrylist_only; int is_mult = 0; /* end LZ3NY mods */ int zone; char *loc; if (dupe == ISDUPE) { points = 0; dupe = NODUPE; return (0); } band_score[bandinx]++; /* qso's per band */ if ((arrldx_usa == 1) && ((countrynr == w_cty) || (countrynr == ve_cty))) band_score[bandinx]--; if (wpx == 1 && pfxmult == 0) { if (countrynr == mycountrynr) { points = 1; total = total + 1; return (0); } if ((strcmp(continent, mycontinent) == 0) && (bandinx > BANDINDEX_30)) { if (strstr(mycontinent, "NA") != NULL) { points = 2; total = total + 2; } else { points = 1; total = total + 1; } return (0); } if ((strcmp(continent, mycontinent) == 0) && (bandinx < BANDINDEX_30)) { if (strstr(mycontinent, "NA") != NULL) { points = 4; total = total + 4; } else { points = 2; total = total + 2; } return (0); } if ((strcmp(continent, mycontinent) != 0) && (bandinx > BANDINDEX_30)) { points = 3; total = total + 3; return (0); } if ((strcmp(continent, mycontinent) != 0) && (bandinx < BANDINDEX_30)) { points = 6; total = total + 6; return (0); } } // end wpx if (cqww == 1) { if (countrynr == 0) { zone = atoi(comment); calc_continent(zone); // sets continent } if ((countrynr == mycountrynr)) { points = 0; total = total + 0; return (0); } if (strcmp(continent, mycontinent) == 0) { if (strstr(mycontinent, "NA") != NULL) { points = 2; total = total + 2; } else { points = 1; total = total + 1; } return (0); } else { points = 3; total = total + 3; return (0); } } /* end cqww */ if (arrl_fd == 1) { if (trxmode == SSBMODE) { points = 1; total = total + 1; } else { points = 2; total = total + 2; } return (0); } // end arrl_fd if (one_point == 1) { points = 1; total++; return (0); } if (two_point == 1) { points = 2; total = total + 2; return (0); } if (three_point == 1) { points = 3; total = total + 3; return (0); } if (arrldx_usa == 1) { if ((countrynr == w_cty) || (countrynr == ve_cty)) { points = 0; } else { points = 3; total = total + 3; } return (0); } /* end arrldx_usa */ /* LZ3NY mods */ is_mult = exist_in_country_list(); if (countrylist_only == 1) { if (is_mult == 1 && countrylist_points != -1) points = countrylist_points; else points = 0; } else { if (is_mult == 1) { if (countrylist_points != -1) points = countrylist_points; else points = 0; if (countrynr == mycountrynr) { if (my_country_points != -1) points = my_country_points; else if (my_cont_points != -1) points = my_cont_points; else points = 0; } } else if (countrynr == mycountrynr) { if (my_country_points != -1) points = my_country_points; else if (my_cont_points != -1) points = my_cont_points; else points = 0; } else if (strcmp(continent, mycontinent) == 0) { if (my_cont_points != -1) points = my_cont_points; else points = 0; } else if (dx_cont_points != -1) points = dx_cont_points; else points = 0; } if (ssbpoints != 0 && cwpoints != 0) // e.g. arrl 10m contest { if (trxmode == CWMODE) { points = cwpoints; } else if (trxmode == SSBMODE) { points = ssbpoints; } else points = 0; } if (lowband_point_mult != 0 && (bandinx < BANDINDEX_30)) // lowband 2x points points *= 2; if (portable_x2 == 1) { // portable x2 loc = strstr(hiscall, "/P"); if (loc == hiscall + strlen(hiscall) - 2) { points *= 2; } } /* The Result of all ABOVE */ total = total + points; return (0); } /* -----------------------------------------------------------------*/ int score2(void) { extern char lan_logline[]; extern int total; total = total + atoi(lan_logline + 75); return (0); } /* ----------------------------------------------------------------- */ int calc_continent(int zone) { // calculates continent from zone and sets continent extern char continent[]; switch (zone) { case 1 ... 8: strncpy(continent, "NA", 3); break; case 9 ... 13: strncpy(continent, "SA", 3); break; case 14 ... 16: strncpy(continent, "EU", 3); break; case 17 ... 26: strncpy(continent, "AS", 3); break; case 27 ... 32: strncpy(continent, "AS", 3); break; case 33 ... 39: strncpy(continent, "AF", 3); break; case 40: strncpy(continent, "EU", 3); break; default: strncpy(continent, "??", 3); } return (0); } tlf_1.1.5/src/logit.c0000664000175000017500000001333512072353226012617 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004-2005 Rein Couperus * 2010, 2011 Thomas Beierlein * * 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 Library 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. */ /* ------------------------------------------------------------------------ * * Log routine * ------------------------------------------------------------------------*/ #include "logit.h" void refresh_comment(void); int logit(void) { extern char mode[]; extern int trxmode; extern char hiscall[]; extern int cqmode; extern int contest; extern char buffer[]; extern char message[15][80]; extern char ph_message[14][80]; extern char comment[]; extern int cqww; extern char cqzone[]; extern char itustr[]; extern char cq_return[]; extern char sp_return[]; extern int defer_store; extern int stop_backgrnd_process; extern int recall_mult; extern int simulator; extern int simulator_mode; extern int ctcomp; extern int wazmult; extern int itumult; extern int qsonum; extern int exchange_serial; extern char tonestr[]; extern int dxped; char callreturn = 0; int cury, curx; int qrg_out = 0; strcpy(mode, "Log "); clear_display(); defer_store = 0; stop_backgrnd_process = 0; /* start it up */ while (1) { printcall(); if ((callreturn == 0) && (defer_store == 2)) callreturn = ' '; else callreturn = callinput(); qrg_out = sendqrg(); if (qrg_out == 0) { /* no frequency entered? */ if ((trxmode == CWMODE || trxmode == DIGIMODE) && (callreturn == '\n') && ctcomp == 1) { callreturn = 92; /* '\' */ strcpy(comment, cqzone); } if ((callreturn == 9 || callreturn == 32)) { callreturn = getexchange(); } if (callreturn == '\n' && strlen(hiscall) >= 3) { if ((*comment == '\0') && contest == CONTEST && !ctcomp && !dxped) defer_store = 0; if ((cqmode == CQ) && (contest == CONTEST) && (defer_store == 0)) { /* CQ mode */ if (trxmode == CWMODE || trxmode == DIGIMODE) strcpy(buffer, message[2]); /* send F3 on ENTER */ else { play_file(ph_message[2]); if (exchange_serial == 1) mvprintw(13, 29, "Serial number: %d", qsonum); refreshp(); } if (simulator != 0) { strcpy(tonestr, "700"); write_tone(); if (strstr(hiscall, "?") != NULL) simulator_mode = 3; else simulator_mode = 2; } if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) { if (recall_exchange() == -1) { if (itumult == 1) strcpy(comment, itustr); /* fill in the ITUzone */ else strcpy(comment, cqzone); /* fill in the CQzone */ } refresh_comment(); } if (recall_mult == 1) { if (recall_exchange() == -1) { /* get the power */ comment[0] = '\0'; refresh_comment(); } } sendbuf(); defer_store = 1; callreturn = 0; } if ((cqmode == S_P) && (contest == CONTEST) && (defer_store == 0)) { /* S&P mode */ if (cqww == 1) { if (recall_exchange() == -1) strcpy(comment, cqzone); /* fill in the zone */ refresh_comment(); } else if (recall_mult == 1) { if (recall_exchange() == -1) { /* get the mult */ comment[0] = '\0'; refresh_comment(); } } if (trxmode == CWMODE || trxmode == DIGIMODE) sendspcall(); else { play_file(ph_message[5]); if (exchange_serial == 1) mvprintw(13, 29, "Serial number: %d", qsonum); refreshp(); } callreturn = 0; defer_store = 1; } if (defer_store == 1) { defer_store++; callreturn = 0; } else if (defer_store > 1) { if ((cqmode == CQ) && (contest == CONTEST)) { if (trxmode == CWMODE || trxmode == DIGIMODE) { strcat(buffer, cq_return); /* send cq return */ sendbuf(); if (simulator != 0) simulator_mode = 1; if (simulator != 0) write_tone(); } else { play_file(ph_message[13]); } defer_store = 0; } if ((cqmode == S_P) && (contest == CONTEST)) { if (trxmode == CWMODE || trxmode == DIGIMODE) { strcat(buffer, sp_return); sendbuf(); /* send S&P return */ } else play_file(ph_message[12]); defer_store = 0; } log_to_disk(false); HideSearchPanel(); } } if ((callreturn == 92) && (*hiscall != '\0')) { defer_store = 0; log_to_disk(false); HideSearchPanel(); } if (callreturn == 11 || callreturn == 44 || callreturn == 235) { /* CTRL K */ getyx(stdscr, cury, curx); mvprintw(5, 0, ""); keyer(); mvprintw(cury, curx, ""); } } else { /* user entered frequency -> clear input field */ hiscall[0] = '\0'; HideSearchPanel(); } } return (1); } /** reprint comment field */ void refresh_comment(void) { extern char comment[]; extern int use_rxvt; if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(12, 54, " "); mvprintw(12, 54, comment); } tlf_1.1.5/src/calledit.h0000664000175000017500000000201212072353226013255 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include "onechar.h" #include "searchlog.h" #include "getctydata.h" #include "showinfo.h" void calledit(void); int insert_char(int); tlf_1.1.5/src/note.c0000664000175000017500000000436412072353226012450 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Include note in log * *--------------------------------------------------------------*/ #include "globalvars.h" #include "note.h" int include_note(void) { extern char backgrnd_str[]; extern char logfile[]; extern char qsonrstr[]; extern char thisnode; char buffer[80] = ""; char buffer2[160] = ""; int i; FILE *fp; attron(A_STANDOUT); mvprintw(15, 1, " "); nicebox(14, 0, 1, 78, "Note"); attron(A_STANDOUT); mvprintw(15, 1, ""); echo(); getnstr(buffer, 78); noecho(); buffer2[0] = '\0'; if (lan_active == 1) { sprintf(buffer2, "; Node %c, %d : ", thisnode, atoi(qsonrstr) - 1); } else sprintf(buffer2, "; "); if (strlen(buffer) >= 1) { strncat(buffer2, buffer, 80 - strlen(buffer2)); strncat(buffer2, backgrnd_str, 80 - strlen(buffer2)); /* fill spaces */ strcat(buffer2, "\n"); if ((fp = fopen(logfile, "a")) == NULL) { endwin(); fprintf(stdout, "\nnote.c: Error opening log file.\n"); exit(1); } fputs(buffer2, fp); fclose(fp); scroll_log(); strncpy(logline4, buffer2, (strlen(buffer2) - 1)); clear_display(); } attron(COLOR_PAIR(COLOR_WHITE | A_STANDOUT)); for (i = 14; i <= 16; i++) mvprintw(i, 0, backgrnd_str); return (0); } tlf_1.1.5/src/prevqso.h0000664000175000017500000000166212072353226013205 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "qsonr_to_str.h" #include "sendbuf.h" #include int prev_qso(void); tlf_1.1.5/src/parse_logcfg.h0000664000175000017500000000216212072353226014135 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * * 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 Library 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. */ #include #include #include "setcontest.h" #include "lancode.h" #ifndef PARSE_LOGCFG_H #define PARSE_LOGCFG_H enum{ PARSE_OK, PARSE_ERROR, PARSE_CONFIRM }; int read_logcfg(void); int parse_logcfg(char *inputbuffer); #endif // PARSE_LOGCFG_H tlf_1.1.5/src/addcall.c0000664000175000017500000002303612072353226013064 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * add call/band to dupe list * *--------------------------------------------------------------*/ #include "addcall.h" #include "addpfx.h" #include int addcall(void) { extern char hiscall[]; extern int callarray_nr; extern char callarray[MAX_CALLS][20]; extern int call_country[MAX_CALLS]; extern int call_band[MAX_CALLS]; extern char comment[]; extern char call_exchange[MAX_CALLS][12]; extern int cqww; extern int bandinx; extern int countries[MAX_DATALINES]; extern int zones[]; extern int countryscore[]; extern int addcty; extern int zonescore[]; extern int addzone; extern int countrynr; extern int arrldx_usa; extern int pacc_pa_flg; extern int universal; extern int country_mult; extern int w_cty; extern int ve_cty; extern int dx_arrlsections; extern int wazmult; extern int itumult; static int found = 0; static int i, j, z = 0; static int add_ok; found = searchcallarray(hiscall); if (found == -1) { i = callarray_nr; g_strlcpy(callarray[i], hiscall, 20); callarray_nr++; } else i = found; j = getctydata(hiscall); call_country[i] = j; if (strlen(comment) >= 1) { /* remember last exchange */ strcpy(call_exchange[i], comment); if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) { /* if (strlen(zone_fix) > 1) { z = zone_nr(zone_fix); } else z = zone_nr(zone_export); */ z = zone_nr(comment); } } add_ok = 1; /* look if certain calls are excluded */ if ((arrldx_usa == 1) && ((countrynr == w_cty) || (countrynr == ve_cty))) add_ok = 0; if ((country_mult == 1) && (universal == 1)) add_ok = 1; if ((dx_arrlsections == 1) && ((countrynr == w_cty) || (countrynr == ve_cty))) add_ok = 0; if (pacc_pa_flg == 1) add_ok = pacc_pa(); if (add_ok == 1) { call_band[i] |= inxes[bandinx]; /* worked on this band */ switch (bandinx) { case BANDINDEX_160:{ if (j != 0 && (countries[j] & BAND160) == 0) { countries[j] = (countries[j] | BAND160); countryscore[0]++; addcty = j; } if (z != 0 && (zones[z] & BAND160) == 0) { zones[z] = (zones[z] | BAND160); zonescore[0]++; addzone = z; } break; } case BANDINDEX_80:{ if (j != 0 && (countries[j] & BAND80) == 0) { countries[j] = (countries[j] | BAND80); countryscore[1]++; addcty = j; } if (z != 0 && (zones[z] & BAND80) == 0) { zones[z] = (zones[z] | BAND80); zonescore[1]++; addzone = z; } break; } case BANDINDEX_40:{ if (j != 0 && (countries[j] & BAND40) == 0) { countries[j] = (countries[j] | BAND40); countryscore[2]++; addcty = j; } if (z != 0 && (zones[z] & BAND40) == 0) { zones[z] = (zones[z] | BAND40); zonescore[2]++; addzone = z; } break; } case BANDINDEX_20:{ if (j != 0 && (countries[j] & BAND20) == 0) { countries[j] = (countries[j] | BAND20); countryscore[3]++; addcty = j; } if (z != 0 && (zones[z] & BAND20) == 0) { zones[z] = (zones[z] | BAND20); zonescore[3]++; addzone = z; } break; } case BANDINDEX_15:{ if (j != 0 && (countries[j] & BAND15) == 0) { countries[j] = (countries[j] | BAND15); countryscore[4]++; addcty = j; } if (z != 0 && (zones[z] & BAND15) == 0) { zones[z] = (zones[z] | BAND15); zonescore[4]++; addzone = z; } break; } case BANDINDEX_10:{ if (j != 0 && (countries[j] & BAND10) == 0) { countries[j] = (countries[j] | BAND10); countryscore[5]++; addcty = j; } if (z != 0 && (zones[z] & BAND10) == 0) { zones[z] = (zones[z] | BAND10); zonescore[5]++; addzone = z; } break; } } } addmult(); /* for wysiwyg */ return (j); } /* -------------------------for network qso's-----------------------------------------*/ int addcall2(void) { extern int callarray_nr; extern char callarray[MAX_CALLS][20]; extern int call_country[MAX_CALLS]; extern int cqww; extern int countries[MAX_DATALINES]; extern int zones[]; extern int countryscore[]; extern int zonescore[]; extern int pacc_pa_flg; extern int universal; extern int country_mult; extern char lan_logline[]; extern int band_score[]; extern int wpx; extern int wazmult; extern int itumult; extern char cqzone[]; int found = 0; int i, j, p, z = 0; int add_ok; char lancopy[6]; char zonebuffer[4]; char hiscall[20]; char comment[40]; int bandinx; int k; g_strlcpy(hiscall, lan_logline + 29, 20); for (k = 0; k < strlen(hiscall); k++) { // terminate string at first space if (hiscall[k] == ' ') { hiscall[k] = '\0'; break; } } g_strlcpy(comment, lan_logline + 54, 31); for (k = 0; k < strlen(comment); k++) { // terminate string at first space if (comment[k] == ' ') { comment[k] = '\0'; break; } } found = searchcallarray(hiscall); if (found == -1) { i = callarray_nr; g_strlcpy(callarray[i], hiscall, 20); callarray_nr++; } else i = found; strncpy(zonebuffer, cqzone, 3); //hack: getctydata should not change zone! j = getctydata2(hiscall); strncpy(cqzone, zonebuffer, 3); //idem.... call_country[i] = j; if (strlen(comment) >= 1) { // strcpy(call_exchange[i],comment); if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) z = zone_nr(comment); } add_ok = 1; /* look if certain calls are excluded */ /* if ((arrldx_usa ==1) && ((countrynr == w_cty) || (countrynr == ve_cty))) add_ok = 0; */ if ((country_mult == 1) && (universal == 1)) add_ok = 1; if (pacc_pa_flg == 1) add_ok = pacc_pa(); if (add_ok == 1) { bandinx = get_band(lan_logline); band_score[bandinx]++; switch (bandinx) { case BANDINDEX_160:{ if (j != 0 && (countries[j] & BAND160) == 0) { countries[j] = (countries[j] | BAND160); countryscore[0]++; // addcty = j; } if (z != 0 && (zones[z] & BAND160) == 0) { zones[z] = (zones[z] | BAND160); zonescore[0]++; // addzone = z; } break; } case BANDINDEX_80:{ if (j != 0 && (countries[j] & BAND80) == 0) { countries[j] = (countries[j] | BAND80); countryscore[1]++; // addcty = j; } if (z != 0 && (zones[z] & BAND80) == 0) { zones[z] = (zones[z] | BAND80); zonescore[1]++; // addzone = z; } break; } case BANDINDEX_40:{ if (j != 0 && (countries[j] & BAND40) == 0) { countries[j] = (countries[j] | BAND40); countryscore[2]++; // addcty = j; } if (z != 0 && (zones[z] & BAND40) == 0) { zones[z] = (zones[z] | BAND40); zonescore[2]++; // addzone = z; } break; } case BANDINDEX_20:{ if (j != 0 && (countries[j] & BAND20) == 0) { countries[j] = (countries[j] | BAND20); countryscore[3]++; // addcty = j; } if (z != 0 && (zones[z] & BAND20) == 0) { zones[z] = (zones[z] | BAND20); zonescore[3]++; // addzone = z; } break; } case BANDINDEX_15:{ if (j != 0 && (countries[j] & BAND15) == 0) { countries[j] = (countries[j] | BAND15); countryscore[4]++; // addcty = j; } if (z != 0 && (zones[z] & BAND15) == 0) { zones[z] = (zones[z] | BAND15); zonescore[4]++; // addzone = z; } break; } case BANDINDEX_10:{ if (j != 0 && (countries[j] & BAND10) == 0) { countries[j] = (countries[j] | BAND10); countryscore[5]++; // addcty = j; } if (z != 0 && (zones[z] & BAND10) == 0) { zones[z] = (zones[z] | BAND10); zonescore[5]++; // addzone = z; } break; } } } if (wpx == 1) { if (lan_logline[68] != ' ') { strcpy(lancopy, " "); strncpy(lancopy, lan_logline + 68, 4); for (p = 0; p <= 5; p++) { // terminate at first space if (lancopy[p] == ' ') { lancopy[p] = '\0'; break; } } add_pfx(lancopy); } } addmult2(); /* for wysiwyg from LAN */ return (j); } int get_band(char *logline) { int j = 0; switch (atoi(logline)) { case 160: j = BANDINDEX_160; break; case 80: j = BANDINDEX_80; break; case 40: j = BANDINDEX_40; break; case 20: j = BANDINDEX_20; break; case 15: j = BANDINDEX_15; break; case 10: j = BANDINDEX_10; break; } return (j); } tlf_1.1.5/src/setparameters.h0000664000175000017500000000217112072353226014361 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" #include "setcontest.h" #include "writeparas.h" #include "onechar.h" #include "getmessages.h" #include "checklogfile.h" #include "getwwv.h" #include "scroll_log.h" #include "readcalls.h" #include "clear_display.h" #include "checkparameters.h" int setparameters(void); tlf_1.1.5/src/bandmap.c0000664000175000017500000003732512072353226013110 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2011 Thomas Beierlein * * 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 Library 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. */ #include "bandmap.h" #include "tlf.h" #include "searchcallarray.h" #include "getctydata.h" #include "showinfo.h" #include "searchlog.h" #include "onechar.h" #include #include #include #include #include #include #include #ifdef HAVE_LIBHAMLIB #include #endif #define TOLERANCE 50 unsigned int bandcorner[NBANDS][2] = {{ 1800000, 2000000 }, { 3500000, 4000000 }, { 7000000, 7300000 }, { 10100000, 10150000 }, { 14000000, 14350000 }, { 18068000, 18168000 }, { 21000000, 21450000 }, { 24890000, 24990000 }, { 28000000, 29700000 }}; unsigned int cwcorner[NBANDS] = { 1838000, 3580000, 7040000, 10140000, 14070000, 18095000, 21070000, 24915000, 28070000}; unsigned int ssbcorner[NBANDS] = { 1840000, 3600000, 7040000, 10150000, 14100000, 18120000, 21150000, 24930000, 28300000 }; pthread_mutex_t bm_mutex = PTHREAD_MUTEX_INITIALIZER; /** \brief sorted list of DX all recent spots * * a simple sorted linked list should do for a first start */ GList *allspots = NULL; /** \brief sorted list of filtered spots */ GPtrArray *spots; bm_config_t bm_config = { 1, /* show all bands */ 1, /* show all mode */ 1, /* show dupes */ 1, /* skip dupes during grab */ 900 /* default livetime */ }; short bm_initialized = 0; extern int bandinx; extern int trxmode; extern int thisnode; extern int call_band[]; /** \todo should not be public */ /** \brief initialize bandmap * * initalize colors and data structures for bandmap operation */ void bm_init() { pthread_mutex_lock( &bm_mutex ); init_pair (CB_NEW, COLOR_CYAN, COLOR_WHITE); init_pair (CB_NORMAL, COLOR_BLUE, COLOR_WHITE); init_pair (CB_DUPE, COLOR_BLACK, COLOR_WHITE); init_pair (CB_OLD, COLOR_YELLOW, COLOR_WHITE); init_pair (CB_MULTI, COLOR_WHITE, COLOR_BLUE); spots = g_ptr_array_sized_new( 128 ); pthread_mutex_unlock( &bm_mutex ); } /** \brief convert frequency to bandnumber * * \return bandnumber or -1 if not in any band */ int freq2band(unsigned int freq) { int i; for (i = 0; i < NBANDS; i++) { if (freq >= (unsigned int)bandcorner[i][0] && freq <= (unsigned int)bandcorner[i][1]) return i; /* in actual band */ } return -1; /* not in any band */ } /** \brief guess mode based on frequency * * \return CWMODE, DIGIMODE or SSBMODE */ int freq2mode(int freq, int band) { if (freq <= cwcorner[band]) return CWMODE; else if (freq < ssbcorner[band]) return DIGIMODE; else return SSBMODE; } /** \brief add DX spot message to bandmap * * check if cluster message is a dx spot, * if so split it into pieces and insert in spot list */ void bm_add(char *s) { char *line; char node = ' '; line = g_strdup(s); if (strncmp(line, "DX de ", 6) != 0) { g_free(line); return; } if (strncmp(line + 6, "TLF-", 4) == 0) node = line[10]; /* get sending node id */ bandmap_addspot (strtok(line+26, " \t") , (unsigned int)(atof(line+16)*1000) , node); g_free (line); } /* compare functions to search in list */ gint cmp_call (spot* ldata, char *call) { return g_strcmp0(ldata->call, call); } gint cmp_freq(spot *a, spot *b) { unsigned int af = a->freq; unsigned int bf = b->freq; if (af < bf) return -1; if (af > bf) return 1; return 0; } /** add a new spot to bandmap data * \param call the call to add * \param freq on which frequency heard * \param node reporting node */ void bandmap_addspot( char *call, unsigned int freq, char node) { /* - if a spot on that band and mode is already in list replace old entry * with new one and set timeout to SPOT_NEW, * otherwise add it to the list as new * - if other call on same frequency (with some TOLERANCE) replace it and set * timeout to SPOT_NEW * - all frequencies from cluster are rounded to 100 Hz, * remember all other frequencies exactly * but display only rounded to 100 Hz - sort exact */ GList *found; int band; char mode; /* add only HF spots */ if (freq > 30000000) return; band = freq2band(freq); if (band < 0) /* no ham band */ return; mode = freq2mode(freq, band); /* acquire bandmap mutex */ pthread_mutex_lock( &bm_mutex ); /* look if call is already on list in that mode and band */ /* each call is allowed in every combination of band and mode * but only once */ found = g_list_find_custom(allspots, call, (GCompareFunc)cmp_call); while (found != NULL) { /* if same band and mode -> found spot already in list */ if (((spot *)found->data)->band == band && ((spot *)found->data)->mode == mode) break; found = g_list_find_custom(found->next, call, (GCompareFunc)cmp_call); } /* if already in list on that band and mode * -> set timeout to SPOT_NEW, and set new freq and reporting node * if freq has changed enough sort list anew by freq */ if (found) { ((spot*)found->data)->timeout = SPOT_NEW; ((spot*)found->data)->node = node; if (abs(((spot*)found->data)->freq - freq) > TOLERANCE) { ((spot*)found->data)->freq = freq; allspots = g_list_sort(allspots, (GCompareFunc)cmp_freq); } } else { /* if not in list already -> prepare new entry and * insert in list at correct freq */ spot *entry = g_new(spot, 1); entry -> call = g_strdup(call); entry -> freq = freq; entry -> mode = mode; entry -> band = band; entry -> node = node; entry -> timeout = SPOT_NEW; allspots = g_list_insert_sorted( allspots, entry, (GCompareFunc)cmp_freq); /* lookup where it is */ found = g_list_find(allspots, entry); } /* check that spot is unique on freq +/- TOLERANCE Hz, * drop other entries if needed */ if (found->prev && (abs(((spot*)(found->prev)->data)->freq - freq) < TOLERANCE)) { spot *olddata; olddata = found->prev->data; allspots = g_list_remove_link(allspots, found->prev); g_free (olddata->call); g_free (olddata); } if (found->next && (abs(((spot*)(found->next)->data)->freq - freq) < TOLERANCE)) { spot *olddata; olddata = found->next->data; allspots = g_list_remove_link(allspots, found->next); g_free (olddata->call); g_free (olddata); } pthread_mutex_unlock( &bm_mutex ); } void bandmap_age() { /* * go through all entries * + decrement timeout * + set state to new, normal, aged or dead * + if dead -> drop it from collection */ GList *list = allspots; while (list) { spot *data = list->data; GList *temp = list; list = list->next; if (data->timeout) data->timeout--; if (data->timeout == 0) { allspots = g_list_remove_link( allspots, temp); g_free (data->call); g_free (data); } } } int bm_ismulti( char * call) { return 0; } /** \todo should check band AND mode if already worked.... */ int bm_isdupe( char *call, int band ) { int found = -1; /* spot for warc bands are never dupes */ if (!inxes[band]) return 0; found = searchcallarray(call); if (found == -1) /* new call */ return 0; if (call_band[found] & inxes[band]) return 1; else return 0; } void bm_show_info() { int curx, cury; getyx( stdscr, cury, curx); /* remember cursor */ /* show info field on the right */ attrset(COLOR_PAIR(CB_DUPE)|A_BOLD); move(14,66); vline(ACS_VLINE,10); mvprintw( 17, 68, "Spots: %3d", g_list_length(allspots)); mvprintw (19, 68, "bands: %s", bm_config.allband ? "all" : "own"); mvprintw (20,68, "modes: %s", bm_config.allmode ? "all" : "own"); mvprintw (21,68, "dupes: %s", bm_config.showdupes ? "yes" : "no"); attrset(COLOR_PAIR(CB_NEW)|A_STANDOUT); mvprintw( 22 ,69, "MULTI"); attrset(COLOR_PAIR(CB_NEW)|A_BOLD); printw( " NEW"); attrset(COLOR_PAIR(CB_NORMAL)); mvprintw( 23,67, "SPOT"); attrset(COLOR_PAIR(CB_OLD)); printw( " OLD"); attrset(COLOR_PAIR(CB_DUPE)|A_BOLD); printw( " dupe"); attroff (A_BOLD|A_STANDOUT); move(cury, curx); /* reset cursor */ } void bandmap_show() { /* * display depending on filter state * - all bands on/off * - all mode on/off * - dupes on/off * * If more entries to show than place in window, show around current frequency * * mark entries according to age, source and worked state. Mark new multis * - new brigth blue * - normal blue * - aged black * - worked small caps * - new multi underlined * - self announced stations * small preceeding letter for reporting station * * maybe show own frequency as dashline in other color * (maybee green highlighted) * - highligth actual spot if near its frequency * * Allow selection of one of the spots (switches to S&P) * - Ctrl-G as known * - '.' and cursor plus 'Enter' * - Test mouseclick... * * '.' goes into map, shows help line above and supports * - cursormovement * - 'ESC' leaves mode * - 'Enter' selects spot * - 'B', 'D', 'M' switches filtering for band, dupes and mode on or off. */ GList *list; spot *data; int cols = 0; int curx, cury; int bm_x, bm_y; int i,j; short dupe; if (!bm_initialized) { bm_init(); bm_initialized = 1; } /* acquire mutex * do not add new spots to allspots during * - aging and * - filtering * furthermore do not allow call lookup as long as * filter array is build anew */ pthread_mutex_lock( &bm_mutex ); bandmap_age(); /* age entries in bandmap */ /* make array of spots to display * filter spotlist according to settings */ if (spots) g_ptr_array_free( spots, TRUE); /* free array */ spots = g_ptr_array_sized_new( 128 ); /* allocate new one */ list = allspots; while (list) { data = list->data; /* if spot is allband or allmode is set or band or mode matches * actual one than add it to the filtered 'spot' array */ dupe = bm_isdupe(data->call, data->band); if ((bm_config.allband || (data->band == bandinx)) && (bm_config.allmode || (data->mode == trxmode)) && (bm_config.showdupes || !dupe)) { data -> dupe = dupe; g_ptr_array_add( spots, data ); } list = list->next; } pthread_mutex_unlock( &bm_mutex ); /* afterwards display filtered list around own QRG +/- some offest * (offset gets resest if we change frequency */ /** \todo Auswahl des Display Bereiches */ getyx( stdscr, cury, curx); /* remember cursor */ /* start in line 14, column 0 */ bm_y = 14; bm_x = 0; /* clear space for bandmap */ attrset(COLOR_PAIR(CB_DUPE)|A_BOLD); move(bm_y,0); /* do not overwrite # frequency */ for (j = 0; j < 67; j++) addch(' '); for (i = bm_y + 1; i < bm_y + 10; i++) { move (i,0); for (j = 0; j < 80; j++) addch (' '); } bm_show_info(); /** \fixme Darstellung des # Speichers */ for (i = 0; i < spots->len; i++) { data = g_ptr_array_index( spots, i ); attrset(COLOR_PAIR(CB_DUPE)|A_BOLD); mvprintw (bm_y, bm_x, "%7.1f %c ", (float)(data->freq/1000.), (data->node == thisnode ? '*' : data->node)); if (data -> timeout > SPOT_NORMAL) attrset(COLOR_PAIR(CB_NEW)|A_BOLD); else if (data -> timeout > SPOT_OLD) attrset(COLOR_PAIR(CB_NORMAL)); else attrset(COLOR_PAIR(CB_OLD)); if (bm_ismulti(data->call)) attron(A_STANDOUT); if (data->dupe) { if (bm_config.showdupes) { attrset(COLOR_PAIR(CB_DUPE)|A_BOLD); attroff(A_STANDOUT); printw ("%-12s", g_ascii_strdown(data->call, -1)); } } else { printw ("%-12s", data->call); } attroff (A_BOLD); bm_y++; if (bm_y == 24) { bm_y = 14; bm_x += 22; cols++; if (cols > 2) break; } } move(cury, curx); /* reset cursor */ refreshp(); } /** allow control of bandmap features */ void bm_menu() { int curx, cury; char c = -1; int j; getyx( stdscr, cury, curx); /* remember cursor */ attrset( COLOR_PAIR(7) | A_STANDOUT ); mvprintw( 13, 0, " Toggle and, ode or upes filter"); printw(" | any other - leave"); c = toupper( onechar()); switch (c) { case 'B': bm_config.allband = 1 - bm_config.allband; break; case 'M': bm_config.allmode = 1 - bm_config.allmode; break; case 'D': bm_config.showdupes = 1 - bm_config.showdupes; break; } bandmap_show(); /* refresh display */ move (13,0); for (j = 0; j < 80; j++) addch (' '); move (cury, curx); refreshp(); } spot *copy_spot(spot *data) { spot *result = NULL; result = g_new(spot, 1); result -> call = g_strdup(data -> call); result -> freq = data -> freq; result -> mode = data -> mode; result -> band = data -> band; result -> node = data -> node; result -> timeout = data -> timeout; result -> dupe = data -> dupe; return result; } /** Search partialcall in filtered bandmap * * Lookup given partial call in the list of filtered bandmap spots. * Return a copy of the first entry found (means with teh lowest frequency). * * \param partialcall - part of call to look up * \return spot * structure with a copy of the found spot * or NULL if not found (You have to free the structure * after use). */ spot *bandmap_lookup(char *partialcall) { spot *result = NULL; if ((*partialcall != '\0') && (spots->len > 0)) { int i; pthread_mutex_lock( &bm_mutex ); for (i = 0; i < spots->len; i++) { spot *data; data = g_ptr_array_index( spots, i ); if (strstr(data->call, partialcall) != NULL) { /* copy data into a new Spot structure */ result = copy_spot(data); break; } } pthread_mutex_unlock( &bm_mutex ); } return result; } /** Lookup next call in filtered spotlist * * Starting at given frequency lookup the array of filtered spots for * the next call up- or downwards. * Apply some headroom for frequency comparison (see problem with ORION rig * (Dec2011). * Returns a copy of the spot data or NULL if no such entry. * * \param upwards - lookup upwards if not 0 * \param freq - frequency to start from * * \return spot * structure with a copy of the found spot * or NULL if not found (You have to free the structure * after use). */ spot *bandmap_next(unsigned int upwards, unsigned int freq) { spot *result = NULL; if (spots->len > 0) { int i; pthread_mutex_lock( &bm_mutex ); if (upwards) { for (i = 0; i < spots->len; i++) { spot *data; data = g_ptr_array_index( spots, i ); if ((data->freq > freq + TOLERANCE/2) && (!bm_config.skipdupes || data->dupe == 0)) { /* copy data into a new Spot structure */ result = copy_spot(data); break; } } } else { for (i = spots->len-1; i >= 0; i--) { spot *data; data = g_ptr_array_index( spots, i ); if ((data->freq < freq - TOLERANCE/2) && (!bm_config.skipdupes || data->dupe == 0)) { /* copy data into a new Spot structure */ result = copy_spot(data); break; } } } pthread_mutex_unlock( &bm_mutex ); } return result; } tlf_1.1.5/src/note.h0000664000175000017500000000201312072353226012442 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include "nicebox.h" #include "scroll_log.h" #include "clear_display.h" int include_note(void); tlf_1.1.5/src/callinput.h0000664000175000017500000000327512072353226013503 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" #include "clear_display.h" #include "onechar.h" #include "stoptx.h" #include "speedup.h" #include "speeddown.h" #include "sendbuf.h" #include "scroll_log.h" #include "addcall.h" #include "makelogline.h" #include "store_qso.h" #include "qsonr_to_str.h" #include "writeparas.h" #include "printcall.h" #include "time_update.h" #include "cleanup.h" #include "autocq.h" #include "sendspcall.h" #include "edit_last.h" #include "changepars.h" #include "deleteqso.h" #include "note.h" #include "prevqso.h" #include "getctydata.h" #include "showinfo.h" #include "searchlog.h" #include "calledit.h" #include "muf.h" #include "clusterinfo.h" #include "grabspot.h" #include "splitscreen.h" #include "showpxmap.h" #ifdef HAVE_LIBHAMLIB #include #endif #include "lancode.h" #include "rtty.h" char callinput(void); int play_file(char *audiofile); tlf_1.1.5/src/getctydata.c0000664000175000017500000002657012072353226013637 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Parse various call formats * Convert country data *--------------------------------------------------------------*/ #include "globalvars.h" #include #include "getctydata.h" #include "dxcc.h" int getpfxindex(char *checkcallptr) { char checkbuffer[17] = ""; char checkncall[17] = ""; char checkcall[17] = ""; char findcall[17] = ""; prefix_data *pfx; int pfxmax = prefix_count(); int i = 0, w = 0, abnormal_call = 0; char portable = '\0'; int pp = 0; size_t loc; g_strlcpy(checkcall, checkcallptr, 17); portable = '\0'; if (strstr(checkcall, "/QRP") != NULL) /* drop QRP suffix */ checkcall[strlen(checkcall) - 4] = '\0'; if (strstr(checkcall, "/AM") != NULL) // airborne mobile, no country (0), no zone (0) checkcall[0] = '\0'; if (strstr(checkcall, "/MM") != NULL) // maritime mobile, no country, no zone checkcall[0] = '\0'; strncpy(findcall, checkcall, 16); loc = strcspn(checkcall, "/"); if (loc != strlen(checkcall)) { char call1[17]; char call2[17]; strncpy(call1, checkcall, loc); /* 1st part before '/' */ call1[loc] = '\0'; strcpy(call2, checkcall + loc + 1); /* 2nd part after '/' */ if (strlen(call2) < strlen(call1) && strlen(call2) > 1) { sprintf(checkcall, "%s/%s", call2, call1); abnormal_call = 1; loc = strcspn(checkcall, "/"); } if (loc > 3) { strncpy(checkbuffer, (checkcall + loc + 1), (strlen(checkcall) + 1) - loc); if (strlen(checkbuffer) == 1) checkcall[loc] = '\0'; if (checkbuffer[0] == 'M' && strlen(checkbuffer) <= 3) checkcall[loc] = '\0'; if (checkbuffer[0] == 'Q' && strlen(checkbuffer) == 3) /* /QRP */ checkcall[loc] = '\0'; if (checkbuffer[0] == 'A' && strlen(checkbuffer) <= 3) /* /A, /AM etc */ checkcall[loc] = '\0'; if ((strlen(checkbuffer) <= 3) && (checkbuffer[0] <= '9') && (checkbuffer[0] >= '0')) /* /3, etc */ portable = checkbuffer[0]; loc = strcspn(checkcall, "/"); } if (loc != strlen(checkcall)) { if (loc < 5) checkcall[loc] = '\0'; /* "PA/DJ0LN/P */ else { /* DJ0LN/P */ strncpy(checkcall, checkcall, loc + 1); } } /* ------------------------------------------------------------ */ if ((strlen(checkbuffer) == 1) && isdigit(checkbuffer[0])) { /* /3 */ for (pp = strlen(checkcall) - 1; pp > 0; pp--) { if (isdigit(checkcall[pp])) { checkcall[pp] = checkbuffer[0]; break; } } } else if (strlen(checkbuffer) > 1) strcpy(checkcall, checkbuffer); } /* -------------check full call exceptions first...--------------------- */ w = -1; if (abnormal_call == 1) { // pa3fwm 20040111: is pp guaranteed to be properly initialized // if/when we get here?? // pa0r 20040117: It is not. Code changed... // strncpy(checkncall , findcall, pp); strncpy(checkncall, findcall, sizeof(checkncall) - 1); for (i = 0; i < pfxmax; i++) { pfx = prefix_by_index(i); if (strcmp(checkncall, pfx->pfx) == 0) { w = i; break; } } } else { int bestlen = 0; for (i = 0; i < pfxmax; i++) { int l; pfx = prefix_by_index(i); if (*pfx->pfx != findcall[0]) continue; l = strlen(pfx->pfx); if (l <= bestlen) continue; if (strncmp(pfx->pfx, findcall, l) == 0) { bestlen = l; w = i; } } } if (w < 0 && 0 != strcmp(findcall, checkcall)) { // only if not found in prefix full call exception list int bestlen = 0; for (i = 0; i < pfxmax; i++) { int l; pfx = prefix_by_index(i); if (*pfx->pfx != checkcall[0]) continue; l = strlen(pfx->pfx); if (l <= bestlen) continue; if (strncmp(pfx->pfx, checkcall, l) == 0) { bestlen = l; w = i; } } } return w; } int getctynr(char *checkcall) { int w; w = getpfxindex(checkcall); if (w >= 0) return prefix_by_index(w)->dxcc_index; else return 0; /* no country found */ } int getctydata(char *checkcallptr) { char checkbuffer[17] = ""; char checkncall[17] = ""; char checkcall[17] = ""; char findcall[17] = ""; prefix_data *pfx; int pfxmax = prefix_count(); int i = 0, w = 0, x = 0, abnormal_call = 0; char portable = '\0'; int pp = 0; size_t loc; g_strlcpy(checkcall, checkcallptr, 17); portable = '\0'; if (strstr(checkcall, "/QRP") != NULL) /* drop QRP suffix */ checkcall[strlen(checkcall) - 4] = '\0'; if (strstr(checkcall, "/AM") != NULL) // airborne mobile, no country (0), no zone (0) checkcall[0] = '\0'; if (strstr(checkcall, "/MM") != NULL) // maritime mobile, no country, no zone checkcall[0] = '\0'; strncpy(findcall, checkcall, 16); loc = strcspn(checkcall, "/"); if (loc != strlen(checkcall)) { char call1[17]; char call2[17]; strncpy(call1, checkcall, loc); /* 1st part before '/' */ call1[loc] = '\0'; strcpy(call2, checkcall + loc + 1); /* 2nd part after '/' */ if (strlen(call2) < strlen(call1) && strlen(call2) > 1) { sprintf(checkcall, "%s/%s", call2, call1); abnormal_call = 1; loc = strcspn(checkcall, "/"); } if (loc > 3) { strncpy(checkbuffer, (checkcall + loc + 1), (strlen(checkcall) + 1) - loc); if (strlen(checkbuffer) == 1) checkcall[loc] = '\0'; if (checkbuffer[0] == 'M' && strlen(checkbuffer) <= 3) checkcall[loc] = '\0'; if (checkbuffer[0] == 'Q' && strlen(checkbuffer) == 3) /* /QRP */ checkcall[loc] = '\0'; if (checkbuffer[0] == 'A' && strlen(checkbuffer) <= 3) /* /A, /AM etc */ checkcall[loc] = '\0'; if ((strlen(checkbuffer) <= 3) && (checkbuffer[0] <= '9') && (checkbuffer[0] >= '0')) /* /3, etc */ portable = checkbuffer[0]; loc = strcspn(checkcall, "/"); } if (loc != strlen(checkcall)) { if (loc < 5) checkcall[loc] = '\0'; /* "PA/DJ0LN/P */ else { /* DJ0LN/P */ strncpy(checkcall, checkcall, loc + 1); } } /* ------------------------------------------------------------ */ if ((strlen(checkbuffer) == 1) && isdigit(checkbuffer[0])) { /* /3 */ for (pp = strlen(checkcall) - 1; pp > 0; pp--) { if (isdigit(checkcall[pp])) { checkcall[pp] = checkbuffer[0]; break; } } } else if (strlen(checkbuffer) > 1) strcpy(checkcall, checkbuffer); } if (wpx == 1 || pfxmult == 1) /* needed for wpx and other pfx contests */ getpx(checkcall); /* -------------check full call exceptions first...--------------------- */ w = -1; if (abnormal_call == 1) { // pa3fwm 20040111: is pp guaranteed to be properly initialized // if/when we get here?? // pa0r 20040117: It is not. Code changed... // strncpy(checkncall , findcall, pp); strncpy(checkncall, findcall, sizeof(checkncall) - 1); for (i = 0; i < pfxmax; i++) { pfx = prefix_by_index(i); if (strcmp(checkncall, pfx->pfx) == 0) { w = i; x = pfx->dxcc_index; break; } } } else { int bestlen = 0; for (i = 0; i < pfxmax; i++) { int l; pfx = prefix_by_index(i); if (*pfx->pfx != findcall[0]) continue; l = strlen(pfx->pfx); if (l <= bestlen) continue; if (strncmp(pfx->pfx, findcall, l) == 0) { bestlen = l; w = i; } } if (w >= 0) x = prefix_by_index(w)->dxcc_index; } if (w < 0 && 0 != strcmp(findcall, checkcall)) { // only if not found in prefix full call exception list int bestlen = 0; for (i = 0; i < pfxmax; i++) { int l; pfx = prefix_by_index(i); if (*pfx->pfx != checkcall[0]) continue; l = strlen(pfx->pfx); if (l <= bestlen) continue; if (strncmp(pfx->pfx, checkcall, l) == 0) { bestlen = l; w = i; } } if (w >= 0) x = prefix_by_index(w)->dxcc_index; } if (w > 0 ) { sprintf(cqzone, "%02d", prefix_by_index(w) -> cq); sprintf(ituzone, "%02d", prefix_by_index(w) -> itu); } if (itumult != 1) strcpy(zone_export, cqzone); else strcpy(zone_export, ituzone); // w must be >0 tb 17feb2011 // strncpy(ituzone, ituarray[w], 2); countrynr = x; strncpy(continent, dxcc_by_index(countrynr) -> continent , 3); continent[2] = '\0'; return (x); } /* --------------------for background ---------------------------*/ // pa3fwm, 20040113: I didn't "clean" this part yet int getctydata2(char *checkcall) { extern char cqzone[]; extern int countrynr; char checkbuffer[17] = ""; char membuffer[17] = ""; char checkncall[20]; prefix_data *pfx; int pfxmax = prefix_count(); int i = 0, w = 0, x = 0; char portable = '\0'; int pp = 0; size_t loc; strncpy(membuffer, checkcall, 16); portable = '\0'; if (strstr(checkcall, "/QRP") != NULL) //strip the qrp checkcall[strlen(checkcall) - 4] = '\0'; loc = strcspn(checkcall, "/"); if (loc > 4) { strncpy(checkbuffer, (checkcall + loc + 1), (strlen(checkcall) + 1) - loc); if (strlen(checkbuffer) == 1) checkcall[loc] = '\0'; if (checkbuffer[0] == 'M' && strlen(checkbuffer) <= 3) checkcall[loc] = '\0'; if (checkbuffer[0] == 'Q' && strlen(checkbuffer) == 3) /* /QRP */ checkcall[loc] = '\0'; if (checkbuffer[0] == 'A' && strlen(checkbuffer) <= 3) /* /A, /AM etc */ checkcall[loc] = '\0'; if ((strlen(checkbuffer) <= 3) && (checkbuffer[0] <= 57) && (checkbuffer[0] >= 48)) /* /3, etc */ portable = checkbuffer[0]; } loc = strcspn(checkcall, "/"); if (loc != strlen(checkcall)) { if (loc < 5) checkcall[loc] = '\0'; /* "PA/DJ0LN/P */ else { /* DJ0LN/P */ strncpy(checkcall, checkcall, loc + 1); } } /* ------------------------------------------------------------ */ if (strlen(checkbuffer) == 1) { /* /3 */ for (pp = strlen(checkcall) - 1; pp > 0; pp--) { if ((checkcall[pp] <= '9') && (checkcall[pp] >= '0')) if ((checkbuffer[0] <= '9') && (checkbuffer[0] >= '0')) { checkcall[pp] = checkbuffer[0]; break; } } } else if (strlen(checkbuffer) > 1) strcpy(checkcall, checkbuffer); getpx(checkcall); /* ------------------------------------------------------------ */ w = 0; for (pp = 1; pp <= strlen(checkcall); pp++) { strncpy(checkncall, checkcall, pp); checkncall[pp] = '\0'; for (i = 0; i < pfxmax; i++) { pfx = prefix_by_index(i); if ((strncmp (checkncall, pfx->pfx, strlen(pfx->pfx)) == 0)) { if (strlen(checkncall) == strlen(pfx->pfx)) { w = i; x = pfx->dxcc_index; break; } } } } sprintf(cqzone, "%02d", prefix_by_index(w) -> cq); countrynr = x; strcpy(checkcall, membuffer); return (x); } tlf_1.1.5/src/logview.c0000664000175000017500000000267712072353226013164 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * View Log using "less" function * *--------------------------------------------------------------*/ #include "logview.h" int logview(void) { extern char logfile[]; extern char backgrnd_str[]; char comstr[40] = ""; int j, rc; strcat(comstr, "less +G "); strcat(comstr, logfile); rc=system(comstr); attron(COLOR_PAIR(7) | A_STANDOUT); erase(); refreshp(); clear_display(); attron(COLOR_PAIR(7) | A_STANDOUT); for (j = 13 ; j <= 23 ; j++){ mvprintw(j, 0, backgrnd_str); } refreshp(); return(0); } tlf_1.1.5/src/cleanup.c0000664000175000017500000000347412072353226013133 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Cleanup call input field * *--------------------------------------------------------------*/ #include "cleanup.h" int cleanup(void) { extern int use_rxvt; extern char hiscall[]; extern char comment[]; extern char my_rst[]; extern char his_rst[]; extern int defer_store; extern char wkeyerbuffer[]; int k = 0; if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(12, 29, " "); mvprintw(12, 54, " "); mvprintw(12, 29, ""); attron(COLOR_PAIR(COLOR_WHITE | A_STANDOUT)); for (k = 1; k <= 5; k++) { mvprintw(k, 0, "%s", " "); } refreshp(); hiscall[0] = '\0'; comment[0] = '\0'; his_rst[1] = '9'; my_rst[1] = '9'; defer_store = 0; wkeyerbuffer[0] = '\0'; // stop keyer ?? return (0); } tlf_1.1.5/src/startmsg.c0000664000175000017500000000326712072353226013350 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" #include "startmsg.h" #include #include #include static int linectr; // global void showmsg(char *message) { extern int verbose; if (linectr == 24) linectr = 1; mvprintw(linectr, 0, message); refreshp(); if (verbose == 1) sleep(1); linectr++; } //--------------------------------------------------------------- void shownr(char *message, int nr) { extern int verbose; if (linectr == 24) linectr = 1; mvprintw(linectr, 0, "%s %d", message, nr); refreshp(); if (verbose == 1) sleep(1); linectr++; } //---------------------------------------------------------------- void showstring(char *message1, char *message2) { extern int verbose; if (linectr == 24) linectr = 1; mvprintw(linectr, 0, "%s %s", message1, message2); refreshp(); if (verbose == 1) sleep(1); linectr++; } tlf_1.1.5/src/speeddown.h0000664000175000017500000000165412072353226013477 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" #include "sendbuf.h" #include "sendqrg.h" int speeddown(void); tlf_1.1.5/src/Makefile.am0000664000175000017500000000455712072353226013377 0ustar jtnjtnINCLUDES = \ @GLIB_CFLAGS@ bin_PROGRAMS = tlf tlf_SOURCES = \ addarea.c addcall.c addmult.c addpfx.c addspot.c audio.c autocq.c \ background_process.c bandmap.c \ calledit.c callinput.c changefreq.c changepars.c checklogfile.c \ checkparameters.c cleanup.c clear_display.c clusterinfo.c \ dxcc.c \ deleteqso.c displayit.c \ edit_last.c editlog.c \ freq_display.c \ get_time.c getctydata.c getexchange.c getmessages.c getpx.c \ getsummary.c gettxinfo.c getwwv.c grabspot.c \ initial_exchange.c \ keyer.c \ lancode.c last10.c listmessages.c log_to_disk.c logit.c logview.c \ main.c makelogline.c messagechange.c muf.c \ nicebox.c note.c netkeyer.c\ onechar.c \ paccdx.c parse_logcfg.c prevqso.c printcall.c \ qrb.c qsonr_to_str.c \ readcalls.c readctydata.c recall_exchange.c rules.c \ score.c scroll_log.c searchcallarray.c searchlog.c sendbuf.c \ sendqrg.c sendspcall.c set_tone.c setcontest.c \ setparameters.c show_help.c showinfo.c showpxmap.c \ showscore.c showzones.c sockserv.c speeddown.c \ speedup.c stoptx.c store_qso.c sunup.c splitscreen.c startmsg.c\ rtty.c time_update.c \ write_keyer.c writecabrillo.c writeparas.c \ zone_nr.c tlf_LDADD = @GLIB_LIBS@ noinst_HEADERS = \ addarea.h addcall.h addmult.h addpfx.h addspot.h audio.h autocq.h \ background_process.h bandmap.h \ calledit.h callinput.h changefreq.h changepars.h checklogfile.h \ checkparameters.h cleanup.h clear_display.h clusterinfo.h cwkeyer.h \ dxcc.h \ deleteqso.h displayit.h \ edit_last.h editlog.h \ freq_display.h \ get_time.h getctydata.h getexchange.h getmessages.h getpx.h \ getsummary.h gettxinfo.h getwwv.h globalvars.h grabspot.h \ initial_exchange.h \ keyer.h \ lancode.h last10.h listmessages.h log_to_disk.h logit.h logview.h \ main.h makelogline.h messagechange.h muf.h multiplierinfo.h \ nicebox.h note.h netkeyer.h\ onechar.h \ paccdx.h parse_logcfg.h prevqso.h printcall.h \ qrb.h qsonr_to_str.h \ readcalls.h readctydata.h recall_exchange.h \ rules.h \ score.h scroll_log.h searchcallarray.h searchlog.h sendbuf.h \ sendqrg.h sendspcall.h set_tone.h setcontest.h \ setparameters.h show_help.h showinfo.h showpxmap.h showscore.h \ showzones.h sockserv.h speed_conversion.h speeddown.h speedup.h \ splitscreen.h startmsg.h stoptx.h store_qso.h sunup.h \ rtty.h time_update.h tlf.h \ write_keyer.h write_tone.h writecabrillo.h writeparas.h \ zone_nr.h tlf_1.1.5/src/dxcc.c0000664000175000017500000000541412072353226012421 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2011 Thomas Beierlein * * 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 Library 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. */ #include #include #include #include "dxcc.h" GPtrArray *dxcc; GPtrArray *prefix; void prefix_init(void) { prefix = g_ptr_array_new(); } /* return number of entries in prefix array */ int prefix_count(void) { return prefix->len; } /* give pointer to dxcc_data struct at 'index' */ prefix_data *prefix_by_index(int index) { return (prefix_data *)g_ptr_array_index(prefix, index); } /* add a new prefix description */ void prefix_add (char *pfxstr) { gchar *loc; gint last_index = dxcc_count() - 1; dxcc_data *last_dx = dxcc_by_index(last_index); prefix_data *new_prefix = g_new (prefix_data, 1); loc = strchr(pfxstr, '['); if (loc != NULL) { new_prefix -> itu = atoi(loc + 1); *loc = '\0'; } else new_prefix -> itu = last_dx -> itu; loc = strchr(pfxstr, '('); if (loc != NULL) { new_prefix -> cq = atoi(loc + 1); *loc = '\0'; } else new_prefix -> cq = last_dx -> cq; new_prefix -> pfx = g_strdup(pfxstr); new_prefix -> dxcc_index = last_index; g_ptr_array_add (prefix, new_prefix); } void dxcc_init(void) { dxcc = g_ptr_array_new(); } /* return number of entries in dxcc array */ int dxcc_count(void) { return dxcc->len; } /* give pointer to dxcc_data struct at 'index' */ dxcc_data *dxcc_by_index(int index) { return (dxcc_data *)g_ptr_array_index(dxcc, index); } void dxcc_add (char * dxcc_line) { gchar **split; gint item; dxcc_data *new_dxcc = g_new (dxcc_data, 1); /* split up the line */ split = g_strsplit(dxcc_line, ":", 9); for (item = 0; item < 8; item++) g_strstrip(split[item]); new_dxcc -> countryname = g_strdup(split[0]); new_dxcc -> cq = atoi(split[1]); new_dxcc -> itu = atoi(split[2]); new_dxcc -> continent = g_strdup(split[3]); new_dxcc -> lat = atof(split[4]); new_dxcc -> lon = atof(split[5]); new_dxcc -> timezone = atof(split[6]); new_dxcc -> pfx = g_strdup(split[7]); g_ptr_array_add (dxcc, new_dxcc); g_strfreev (split); } tlf_1.1.5/src/globalvars.h0000664000175000017500000000673312072353226013646 0ustar jtnjtn#include "tlf.h" #include extern char qsos[MAX_QSOS][82]; // array of log lines of QSOs so far; // note that not every log line needs // to be a QSO, it could also be a // comment, starting with a semicolon extern int nr_qsos; // number of lines in qsos[] extern char mults[MAX_MULTS][12]; // array of multipliers worked so far extern int multarray_nr; // number of entries in mults[] extern int mult_bands[]; // bitfield indicating on which band(s) // the multiplier has been worked; // bits assigned according to // BAND160..BAND10 defined in tlf.h extern int multscore[NBANDS]; // number of multipliers worked per // band; index is // BANDINDEX_160 ... BANDINDEX_10 // note: until 200409111, // index was 0...5 for only // the non-warc bands! extern char callarray[MAX_CALLS][20]; // list of all calls worked so far extern int callarray_nr; // number of entries in callarray[] extern int call_band[MAX_CALLS]; // for each of them, a bitfield // indicating bands extern int call_country[MAX_CALLS]; // for each call, the country extern char call_exchange[MAX_CALLS][12]; // for each call, the last exchange extern int countries[MAX_DATALINES]; // for every country, a bitfield // indicating bands on which it has // been worked extern int bandinx; // band we're currently working on extern char logfile[]; extern int contest; extern int cqww; extern int arrldx_usa; extern int pacc_pa_flg; extern int country_mult; extern int other_flg; extern char hiscall[20]; extern int total; extern int band_score[NBANDS]; extern int zones[41]; extern int wpx; extern char prefixes_worked[MAX_CALLS][6]; extern int arrlss; extern int serial_section_mult; extern int serial_grid4_mult; extern int sectn_mult; extern int dx_arrlsections; extern int wysiwyg_multi; extern int wysiwyg_once; extern char pxstr[]; extern int nr_of_px; extern int zonescore[6]; extern int countryscore[6]; extern int qsonum; extern int countrynr; extern int w_cty; extern int ve_cty; extern int pfxmult; extern int minute_timer; // extern char logline0[81]; // extern char logline1[81]; // extern char logline2[81]; // extern char logline3[81]; // extern char logline4[]; extern char logline_edit[5][88]; #define logline0 logline_edit[0] #define logline1 logline_edit[1] #define logline2 logline_edit[2] #define logline3 logline_edit[3] #define logline4 logline_edit[4] extern int stop_backgrnd_process; extern char band[9][4]; extern struct tm *time_ptr; extern int inxes[NBANDS]; // = {BAND160,BAND80,BAND40,0,BAND20,0,BAND15,0,BAND10} ; // from addmult.c extern char cqzone[]; extern char ituzone[]; extern char continent[]; extern char zone_export[]; extern int itumult; GPtrArray *mults_possible; /* growing array of possible mutlipliers */ extern char ssexchange[]; extern int shownewmult; extern char comment[]; extern char lan_logline[]; extern char logfile[]; extern char qsonrstr[]; extern int lan_mutex; extern int lan_active; extern int exchange_serial; extern int highqsonr; extern int trxmode; extern char lastqsonr[]; extern int cqwwm2; extern char thisnode; extern char lastcall[]; extern char my_rst[]; extern char his_rst[]; extern char section[]; extern int wazmult; extern char lastcomment[]; extern int addcallarea; extern int addcty; extern char zone_fix[]; extern int universal; extern int arrl_fd; extern int one_point; extern int two_point; extern int three_point; extern int dxped; extern char pointstring[]; extern int addzone; tlf_1.1.5/src/displayit.h0000664000175000017500000000170512072353226013506 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include "tlf.h" #include "clear_display.h" void displayit(void); tlf_1.1.5/src/showscore.h0000664000175000017500000000172512072353226013522 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include "tlf.h" #include "nicebox.h" #include "last10.h" #include "printcall.h" int showscore(void); tlf_1.1.5/src/addarea.h0000664000175000017500000000163212072353226013064 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" #include int add_callarea( void); tlf_1.1.5/src/log_to_disk.h0000664000175000017500000000236512072353226014004 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include "tlf.h" #include "scroll_log.h" #include "addcall.h" #include "makelogline.h" #include "store_qso.h" #include "qsonr_to_str.h" #include "writeparas.h" #ifdef HAVE_LIBHAMLIB #include #endif #include "gettxinfo.h" #include "lancode.h" #include "addspot.h" int log_to_disk (int from_lan); tlf_1.1.5/src/scroll_log.h0000664000175000017500000000173112072353226013642 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include "tlf.h" #include "qsonr_to_str.h" void scroll_log(void); tlf_1.1.5/src/writeparas.h0000664000175000017500000000165212072353226013666 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" #include #include int writeparas(void); tlf_1.1.5/src/keyer.h0000664000175000017500000000222712072353226012623 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include "tlf.h" #include "clear_display.h" #include "onechar.h" #include "stoptx.h" #include "displayit.h" #include "speedup.h" #include "speeddown.h" #include "sendbuf.h" #include "messagechange.h" int keyer(void); tlf_1.1.5/src/store_qso.c0000664000175000017500000000272112072353226013514 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Store_qso writes qso to disk * *--------------------------------------------------------------*/ #include "globalvars.h" #include "store_qso.h" int store_qso(char *loglineptr) { FILE *fp; if ( (fp = fopen(logfile,"a")) == NULL){ fprintf(stdout, "store_qso.c: Error opening file.\n"); endwin(); exit(1); } strcpy(qsos[nr_qsos], loglineptr); nr_qsos++; strcat(loglineptr, "\n"); // pa3fwm, 20040113: this looks suspicious, repeated calls to store_qso() could add multiple \n's fputs (loglineptr, fp); fclose(fp); return(0); } tlf_1.1.5/src/displayit.c0000664000175000017500000000326112072353226013500 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------------------ * scroll the loglines of the keyer terminal and show them * ---------------------------------------------------------------------------*/ #include "displayit.h" void displayit(void) { extern char termbuf[]; extern char backgrnd_str[]; extern char terminal1[]; extern char terminal2[]; extern char terminal3[]; extern char terminal4[]; char term2buf[85] = ""; strncat(term2buf, termbuf, strlen(termbuf) - 1); strncat(term2buf, backgrnd_str, 81 - strlen(termbuf)); /* fill with blanks */ term2buf[80] = '\0'; strcpy(terminal1, terminal2); strcpy(terminal2, terminal3); strcpy(terminal3, terminal4); strcpy(terminal4, term2buf); termbuf[0] = '\0'; mvprintw(5, 0, ""); clear_display(); refreshp(); } tlf_1.1.5/src/recall_exchange.c0000664000175000017500000000557512072353226014614 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * Copyright (C) 201-2011 Thomas Beierlein * * 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:q * 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 Library 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. */ #include "recall_exchange.h" #include "initial_exchange.h" /** \brief Recall former exchange or lookup initial exchange file * * First search 'hiscall' in already worked stations (callarray). If not found * there lookup 'hiscall' in initial exchange file. If found somewhere copy * the according exchange into the 'comment' field. * * \return 1 - found, -1 - not found, 0 - call field was empty */ int recall_exchange(void) { extern int callarray_nr; extern char callarray[MAX_CALLS][20]; extern char call_exchange[MAX_CALLS][12]; extern char hiscall[]; extern char comment[]; extern struct ie_list *main_ie_list; int i, l; int found = -1; char *loc, *loc2; struct ie_list *current_ie; if (strlen(hiscall) == 0) return (0); l = strlen(hiscall); /* search backwards through list of worked stations */ for (i = callarray_nr - 1; i >= 0; i--) { /* first search call in already worked stations */ /* call has to be exact -> la/dl1jbe/p must be the same again */ if ((strstr(callarray[i], hiscall) == callarray[i]) && (*(callarray[i]+l) == '\0' || *(callarray[i]+l) == ' ')) { found = 1; strcpy(comment, call_exchange[i]); break; } } if (found == -1) { /* if no exchange could be recycled and no comment available * search initial exchange list (if available) */ if (strlen(comment) == 0 && main_ie_list != NULL) { current_ie = main_ie_list; while (current_ie) { /* call from IE_List has to be a substring of hiscall * but must be delimited on both sides by '/' or eos */ if ((loc = strstr(hiscall, current_ie->call)) != NULL) { loc2 = loc + strlen(current_ie->call); if (((loc == hiscall) || (*(loc-1) == '/')) && ((*loc2 == '\0') || (*loc2 == '/'))) { found = 1; strcpy(comment, current_ie->exchange); break; } } current_ie = current_ie->next; } } } if (found) { mvprintw(12, 54, comment); refreshp(); } return found; } tlf_1.1.5/src/parse_logcfg.c0000664000175000017500000007717312072353226014146 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * 2011-2012 Thomas Beierlein * * 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 Library 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. */ #include "parse_logcfg.h" #include "speed_conversion.h" #include "tlf.h" #include "write_tone.h" #include "speedup.h" #include "speeddown.h" #include #include #include "startmsg.h" #include #ifdef HAVE_LIBHAMLIB #include #endif #include #include "bandmap.h" extern int keyerport; extern char tonestr[]; extern int speed, partials; extern int use_part; extern int contest; extern int portnum; extern int packetinterface; extern int tncport; extern int shortqsonr; int exist_in_country_list(); char inputbuffer[160]; FILE *fp; void KeywordNotSupported(char *keyword); void ParameterNeeded(char *keyword); void WrongFormat(char *keyword); #define MAX_COMMANDS 157 /* commands in list */ int read_logcfg(void) { extern int nodes; extern int node; extern char *config_file; char defltconf[80]; int status = PARSE_OK; contest = 0; speed = 14; partials = 0; use_part = 0; keyerport = 0; portnum = 0; packetinterface = 0; tncport = 0; nodes = 0; node = 0; shortqsonr = 0; strcpy(defltconf, PACKAGE_DATA_DIR); strcat(defltconf, "/logcfg.dat"); if (config_file == NULL) config_file = g_strdup("logcfg.dat"); if ((fp = fopen(config_file, "r")) == NULL) { if ((fp = fopen(defltconf, "r")) == NULL) { showmsg("Error opening logcfg.dat file."); showmsg("Exiting..."); sleep(5); endwin(); exit(1); } else { showstring("Using (Read Only) file", defltconf); } } else showstring("Opening config file", config_file); while ( fgets(inputbuffer, 120, fp) != NULL ) { if ((inputbuffer[0] != '#') && (strlen(inputbuffer) > 1)) { /* skip comments and * empty lines */ status |= parse_logcfg(inputbuffer); } } fclose(fp); return( status ); } static int confirmation_needed; #define PARAMETER_NEEDED(x) \ do { \ if (fields[1] == NULL) { \ ParameterNeeded(x); \ g_strfreev( fields ); \ return( confirmation_needed ); \ } \ } while(0) int parse_logcfg(char *inputbuffer) { extern int use_rxvt; extern char message[15][80]; extern char ph_message[14][80]; extern char sp_return[]; extern char cq_return[]; extern char call[]; extern char whichcontest[]; extern char logfile[]; extern int keyerport; extern int recall_mult; extern int one_point; extern int two_point; extern int three_point; extern int two_eu_three_dx_points; extern int exchange_serial; extern int country_mult; extern int wysiwyg_multi; extern int wysiwyg_once; extern int fixedmult; extern int portable_x2; extern int trx_control; extern int rit; extern int shortqsonr; extern int cluster; extern int clusterlog; extern int showscore_flag; extern int searchflg; extern int demode; extern int contest; extern int speed; extern int weight; extern int txdelay; extern char tonestr[]; extern int showfreq; extern int editor; extern int partials; extern int use_part; extern int mixedmode; extern char pr_hostaddress[]; extern int portnum; extern int packetinterface; extern int tncport; extern int tnc_serial_rate; extern char lastwwv[]; extern int serial_rate; #ifdef HAVE_LIBHAMLIB extern rig_model_t myrig_model; #endif extern int rig_port; extern char rigportname[]; extern int rignumber; extern char rigconf[]; extern char exchange_list[40]; extern char tncportname[]; extern int netkeyer_port; extern char netkeyer_hostaddress[]; extern char bc_hostaddress[MAXNODES][16]; extern int lan_active; extern char thisnode; extern int nodes; extern int node; extern int cqwwm2; extern int landebug; extern int call_update; extern int timeoffset; extern int time_master; extern int ctcomp; extern char multsfile[]; extern int multlist; extern int universal; extern int serial_section_mult; extern int serial_grid4_mult; extern int sectn_mult; extern int dx_arrlsections; extern int pfxmult; extern int exc_cont; extern int wpx; extern char markerfile[]; extern int xplanet; extern int nob4; extern int noautocq; extern int show_time; extern char keyer_device[]; extern int use_vk; extern int wazmult; extern int itumult; extern int cqdelay; extern int trxmode; extern int use_bandoutput; extern int no_arrows; extern int bandindexarray[]; extern int ssbpoints; extern int cwpoints; extern int lowband_point_mult; extern int sc_sidetone; extern char sc_volume[]; extern char modem_mode[]; /* LZ3NY mods */ extern int mult_side; extern int my_country_points; extern int my_cont_points; extern int dx_cont_points; extern int countrylist_points; extern int countrylist_only; char c_temp[11]; extern int my_cont_points; extern int dx_cont_points; extern int mult_side; extern char mit_multiplier_list[][6]; char *mit_mult_array; /* end LZ3NY mods */ extern int tlfcolors[8][2]; extern char synclogfile[]; extern int scale_values[]; extern char sc_device[40]; extern char controllerport[80]; // port for multi-mode controller extern char clusterlogin[]; extern int cw_bandwidth; extern int change_rst; extern char rttyoutput[]; extern int logfrequency; extern int ignoredupe; char commands[MAX_COMMANDS][30] = { "enable", /* 0 */ /* deprecated */ "disable", /* deprecated */ "F1", "F2", "F3", "F4", /* 5 */ "F5", "F6", "F7", "F8", "F9", /* 10 */ "F10", "F11", "F12", "S&P_TU_MSG", "CQ_TU_MSG", /* 15 */ "CALL", "CONTEST", "LOGFILE", "KEYER_DEVICE", "BANDOUTPUT", /* 20 */ "RECALL_MULTS", "ONE_POINT", "THREE_POINTS", "WYSIWYG_MULTIBAND", "WYSIWYG_ONCE", /* 25 */ "RADIO_CONTROL", "RIT_CLEAR", "SHORT_SERIAL", "LONG_SERIAL", "CONTEST_MODE", /* 30 */ "CLUSTER", "BANDMAP", "SPOTLIST", /* deprecated */ "SCOREWINDOW", "CHECKWINDOW", /* 35 */ "FILTER", /* deprecated */ "SEND_DE", "CWSPEED", "CWTONE", "WEIGHT", /* 40 */ "TXDELAY", "SUNSPOTS", "SFI", "SHOW_FREQUENCY", "EDITOR", /* 45 */ "PARTIALS", "USEPARTIALS", "POWERMULT_5", "POWERMULT_2", "POWERMULT_1", /* 50 */ "MANY_CALLS", /* deprecated */ "SERIAL_EXCHANGE", "COUNTRY_MULT", "2EU3DX_POINTS", "PORTABLE_MULT_2", /* 55 */ "MIXED", "TELNETHOST", "TELNETPORT", "TNCPORT", "FIFO_INTERFACE", /* 60 */ "RIGMODEL", "RIGSPEED", "TNCSPEED", "RIGPORT", "NETKEYER", /* 65 */ "NETKEYERPORT", "NETKEYERHOST", "ADDNODE", "THISNODE", "CQWW_M2", /* 70 */ "LAN_DEBUG", "ALT_0", "ALT_1", "ALT_2", "ALT_3", /* 75 */ "ALT_4", "ALT_5", "ALT_6", "ALT_7", "ALT_8", /* 80 */ "ALT_9", "CALLUPDATE", "TIME_OFFSET", "TIME_MASTER", "CTCOMPATIBLE", /* 85 */ "TWO_POINTS", "MULT_LIST", "SERIAL+SECTION", "SECTION_MULT", "MARKERS", /* 90 */ "DX_&_SECTIONS", "MARKERDOTS", "MARKERCALLS", "NOB4", /*LZ3NY */ "COUNTRYLIST", //by lz3ny /* 95 */ "COUNTRY_LIST_POINTS", //by lz3ny "USE_COUNTRYLIST_ONLY", //by lz3ny "MY_COUNTRY_POINTS", //by lz3ny "MY_CONTINENT_POINTS", //by lz3ny "DX_POINTS", //by lz3ny /* 100 */ "SHOW_TIME", "RXVT", "VKM1", "VKM2", "VKM3", /* 105 */ "VKM4", "VKM5", "VKM6", "VKM7", "VKM8", /* 110 */ "VKM9", "VKM10", "VKM11", "VKM12", "VKSPM", /* 115 */ "VKCQM", "WAZMULT", "ITUMULT", "CQDELAY", "PFX_MULT", /* 120 */ "CONTINENT_EXCHANGE", "RULES", "NOAUTOCQ", "SSBMODE", "NO_BANDSWITCH_ARROWKEYS", /* 125 */ "RIGCONF", "TLFCOLOR1", "TLFCOLOR2", "TLFCOLOR3", "TLFCOLOR4", /* 130 */ "TLFCOLOR5", "TLFCOLOR6", "SYNCFILE", "SSBPOINTS", "CWPOINTS", /* 135 */ "SOUNDCARD", "SIDETONE_VOLUME", "S_METER", "SC_DEVICE", "MFJ1278_KEYER", /* 140 */ "CLUSTERLOGIN", "ORION_KEYER", "INITIAL_EXCHANGE", "CWBANDWIDTH", "LOWBAND_DOUBLE", /* 145 */ "CLUSTER_LOG", "SERIAL+GRID4", "CHANGE_RST", "GMFSK", "RTTYMODE", /* 150 */ "DIGIMODEM", "LOGFREQUENCY", "IGNOREDUPE", "CW_TU_MSG", /* deprecated */ "VKCWR", /* 155 */ /* deprecated */ "VKSPR" /* deprecated */ }; char **fields; char teststring[80]; char buff[40]; char outputbuff[80]; int ii; char *j; int jj, hh; char *tk_ptr; /* split the inputline at '=' to max 2 elements * * leave the components in fields[0] (keyword) and * fields[1] for the parameters * * if only 1 component (no '='), it is only a keyword * g_strstrip it and test for keywordlist * * if 2 components (there is a '=' in the line) * g_strstrip first component and test for keywordlist * g_strchug second component -> strip leading space from parameters * * That allows plain keywords and also keywords with parameters (which * follows a '=' sign */ confirmation_needed = PARSE_OK; fields = g_strsplit( inputbuffer, "=", 2); g_strstrip( fields[0] ); if ( *fields[0] == '\0' ) { /* only whitespace found? */ g_strfreev( fields ); return( PARSE_OK ); } if (g_strv_length( fields ) == 2) { /* strip leading whitespace */ g_strchug( fields[1] ); /* from parameters */ } g_strlcpy( teststring, fields[0], sizeof(teststring) ); for (ii = 0; ii < MAX_COMMANDS; ii++) { if (strcmp(teststring, commands[ii]) == 0) { break; } } switch (ii) { case 0:{ KeywordNotSupported(teststring); break; } case 1:{ KeywordNotSupported(teststring); break; } case 2 ... 10:{ /* messages */ PARAMETER_NEEDED(teststring); strcpy(message[ii - 2], fields[1]); break; } case 11 ... 13:{ PARAMETER_NEEDED(teststring); strcpy(message[ii - 2], fields[1]); break; } case 14:{ PARAMETER_NEEDED(teststring); strcpy(message[12], fields[1]); strcpy(sp_return, message[12]); break; } case 15:{ PARAMETER_NEEDED(teststring); strcpy(message[13], fields[1]); strcpy(cq_return, message[13]); break; /* end messages */ } case 16:{ PARAMETER_NEEDED(teststring); if (strlen(fields[1]) > 20) { mvprintw(6,0, "WARNING: Defined call sign too long! exiting...\n"); refreshp(); exit(1); } if (strlen(fields[1]) == 0) { mvprintw(6, 0, "WARNING: No callsign defined in logcfg.dat! exiting...\n"); refreshp(); exit(1); } strcpy(call, fields[1]); // check that call sign can be found in cty database !! break; } case 17:{ PARAMETER_NEEDED(teststring); strcpy(whichcontest, fields[1]); whichcontest[strlen(whichcontest) - 1] = '\0'; if (strlen(whichcontest) > 40) { showmsg ("WARNING: contest name is too long! exiting..."); exit(1); } setcontest(); break; } case 18:{ PARAMETER_NEEDED(teststring); logfile[0] = '\0'; strcat(logfile, fields[1]); logfile[strlen(logfile) - 1] = '\0'; break; } case 19:{ PARAMETER_NEEDED(teststring); keyer_device[0] = '\0'; strncat(keyer_device, fields[1], 9); keyer_device[strlen(keyer_device) - 1] = '\0'; break; } case 20:{ // Use the bandswitch output on parport0 /* \todo add message if parameter too short */ use_bandoutput = 1; if ((fields[1] != NULL) && (strlen(fields[1]) >= 10)) { for (jj = 0; jj <= 9; jj++) // 10x { hh = ((int) (fields[1][jj])) - 48; if (hh >= 0 && hh <= 9) bandindexarray[jj] = hh; else bandindexarray[jj] = 0; } } break; } case 21:{ recall_mult = 1; break; } case 22:{ one_point = 1; universal = 1; break; } case 23:{ three_point = 1; universal = 1; break; } case 24:{ wysiwyg_multi = 1; break; } case 25:{ wysiwyg_once = 1; break; } case 26:{ trx_control = 1; break; } case 27:{ rit = 1; break; } case 28:{ shortqsonr = 1; break; } case 29:{ shortqsonr = 0; break; } case 30:{ contest = 1; break; } case 31:{ cluster = CLUSTER; break; } case 32:{ cluster = MAP; /* init bandmap filtering */ bm_config.allband = 1; bm_config.allmode = 1; bm_config.showdupes = 1; bm_config.skipdupes = 0; bm_config.livetime = 900; /* Allow configuration of bandmap display if keyword * is followed by a '=' * Parameter format is BANDMAP=, * - string parsed for the letters B, M, D and S * - spot livetime in seconds (>=30) */ if (fields[1] != NULL) { char **bm_fields; bm_fields = g_strsplit(fields[1], ",", 2); if (bm_fields[0] != NULL) { char *ptr = bm_fields[0]; while (*ptr != '\0') { switch (*ptr++) { case 'B': bm_config.allband = 0; break; case 'M': bm_config.allmode = 0; break; case 'D': bm_config.showdupes = 0; break; case 'S': bm_config.skipdupes = 1; break; default: break; } } } if (bm_fields[1] != NULL) { int livetime; g_strstrip(bm_fields[1]); livetime = atoi(bm_fields[1]); if (livetime >= 30) /* aging called every 2 seconds */ bm_config.livetime = livetime/2; } g_strfreev(bm_fields); } break; } case 33:{ KeywordNotSupported(teststring); break; } case 34:{ showscore_flag = 1; break; } case 35:{ searchflg = 1; break; } case 36:{ KeywordNotSupported(teststring); break; } case 37:{ demode = 1; break; } case 38:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strncat(buff, fields[1], 2); speed = speed_conversion(atoi(buff)); break; } case 39:{ int tone; PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); tone = atoi(buff); if ((tone > -1) && (tone < 1000)) { sprintf(tonestr, "%d", tone); } break; } case 40:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); weight = atoi(buff); if (weight < -50) weight = -50; if (weight > 50) weight = 50; break; } case 41:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); txdelay = atoi(buff); if (txdelay > 50) txdelay = 50; if (txdelay < 0) txdelay = 0; break; } case 42:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); outputbuff[0] = '\0'; sprintf(outputbuff, "WWV R=%d\n", atoi(buff)); strcpy(lastwwv, outputbuff); break; } case 43:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); outputbuff[0] = '\0'; sprintf(outputbuff, "WWV SFI=%d\n", atoi(buff)); strcpy(lastwwv, outputbuff); break; } case 44:{ showfreq = 1; break; } case 45:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); if ((strncmp(buff, "MC", 2) == 0) || (strncmp(buff, "mc", 2) == 0)) { editor = EDITOR_MC; break; } j = strstr(fields[1], "joe"); if (j != NULL) { editor = EDITOR_JOE; break; } j = strstr(fields[1], "vi"); if (j != NULL) { editor = EDITOR_VI; break; } else { editor = EDITOR_E3; break; } } case 46:{ partials = 1; break; } case 47:{ use_part = 1; break; } case 48:{ fixedmult = 5; break; } case 49:{ fixedmult = 2; break; } case 50:{ fixedmult = 1; break; } case 51:{ KeywordNotSupported(teststring); break; } case 52:{ exchange_serial = 1; break; } case 53:{ country_mult = 1; break; } case 54:{ two_eu_three_dx_points = 1; break; } case 55:{ portable_x2 = 1; break; } case 56:{ mixedmode = 1; break; } case 57:{ PARAMETER_NEEDED(teststring); strncpy(pr_hostaddress, fields[1], 47); pr_hostaddress[strlen(pr_hostaddress) - 1] = '\0'; break; } case 58:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strncat(buff, fields[1], 5); portnum = atoi(buff); packetinterface = TELNET_INTERFACE; break; } case 59:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); if (strlen(buff) > 2) { strncpy(tncportname, buff, 39); } else tncport = atoi(buff) + 1; packetinterface = TNC_INTERFACE; break; } case 60:{ packetinterface = FIFO_INTERFACE; break; } case 61:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); if (strncmp(buff, "ORION", 5) == 0) rignumber = 2000; else rignumber = atoi(buff); #ifdef HAVE_LIBHAMLIB myrig_model = (rig_model_t) rignumber; #endif break; } case 62:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); serial_rate = atoi(buff); break; } case 63:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); tnc_serial_rate = atoi(buff); break; } case 64:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); if (buff[0] == '0' || buff[0] == '1') { rig_port = atoi(buff); } else { strncpy(rigportname, buff, 39); } break; } case 65:{ keyerport = NET_KEYER; break; } case 66:{ PARAMETER_NEEDED(teststring); netkeyer_port = atoi(fields[1]); break; } case 67:{ PARAMETER_NEEDED(teststring); strncpy(netkeyer_hostaddress, fields[1], 16); netkeyer_hostaddress[strlen(netkeyer_hostaddress) - 1] = '\0'; break; } case 68:{ PARAMETER_NEEDED(teststring); if (node < MAXNODES) { strncpy(bc_hostaddress[node], fields[1], 16); bc_hostaddress[node][strlen(bc_hostaddress[node]) - 1] = '\0'; if (node++ < MAXNODES) nodes++; } lan_active = 1; break; } case 69:{ PARAMETER_NEEDED(teststring); thisnode = fields[1][0]; break; } case 70:{ cqwwm2 = 1; break; } case 71:{ landebug = 1; break; } case 72 ... 81:{ /* messages */ PARAMETER_NEEDED(teststring); strcpy(message[ii - 58], fields[1]); break; } case 82:{ call_update = 1; break; } case 83:{ PARAMETER_NEEDED(teststring); buff[0] = '\0'; strncat(buff, fields[1], 3); timeoffset = atoi(buff); if (timeoffset > 23) timeoffset = 23; if (timeoffset < -23) timeoffset = -23; break; } case 84:{ time_master = 1; break; } case 85:{ ctcomp = 1; break; } case 86:{ two_point = 1; universal = 1; break; } case 87:{ PARAMETER_NEEDED(teststring); multsfile[0] = '\0'; strncat(multsfile, fields[1], 79); g_strchomp(multsfile); multlist = 1; universal = 1; break; } case 88:{ serial_section_mult = 1; break; } case 89:{ sectn_mult = 1; break; } case 90:{ PARAMETER_NEEDED(teststring); strcpy(markerfile, g_strchomp(fields[1])); xplanet = 1; break; } case 91:{ dx_arrlsections = 1; setcontest(); break; } case 92:{ PARAMETER_NEEDED(teststring); strcpy(markerfile, g_strchomp(fields[1])); xplanet = 2; break; } case 93:{ PARAMETER_NEEDED(teststring); strcpy(markerfile, g_strchomp(fields[1])); xplanet = 3; break; } case 94:{ nob4 = 1; break; } /* LZ3NY mods */ case 95:{ /* COUNTRY_LIST (in file or listed in logcfg.dat) LZ3NY First of all we are checking if inserted data in COUNTRY_LIST= is a file name. If it is we start parsing the file. If we got our case insensitive contest name, we copy the multipliers from it into multipliers_list. If the input was not a file name we directly copy it into multiplier_list (must not have a preceeding contest name). The last step is to parse the multipliers_list into an array (mit_multiplier_list) for future use. */ int mit_fg = 0; static char multiplier_list[50] = ""; /* use only first COUNTRY_LIST definition */ char mit_multlist[255] = ""; char buffer[255] = ""; FILE *fp; PARAMETER_NEEDED(teststring); if (strlen(multiplier_list) == 0) { /* if first definition */ g_strlcpy(mit_multlist, fields[1], sizeof(mit_multlist)); g_strchomp(mit_multlist); /* drop trailing whitespace */ if ((fp = fopen(mit_multlist, "r")) != NULL) { while ( fgets(buffer, sizeof(buffer), fp) != NULL ) { g_strchomp( buffer ); /* no trailing whitespace*/ /* accept only a line starting with the contest name * (CONTEST=) followed by ':' */ if (strncasecmp (buffer, whichcontest, strlen(whichcontest) - 1) == 0) { strncpy(multiplier_list, buffer + strlen(whichcontest) + 1, strlen(buffer) - 1); } } fclose(fp); } else { /* not a file */ if (strlen(mit_multlist) > 0) strcpy(multiplier_list, mit_multlist); } } /* LZ3NY creating the array */ mit_mult_array = strtok(multiplier_list, ":,.- \t"); mit_fg = 0; if (mit_mult_array != NULL) { while (mit_mult_array) { strcpy(mit_multiplier_list[mit_fg], mit_mult_array); mit_mult_array = strtok(NULL, ":,.-_\t "); mit_fg++; } } /* on which multiplier side of the rules we are */ getpx(call); mult_side = exist_in_country_list(); setcontest(); break; } case 96:{ // COUNTRY_LIST_POINTS PARAMETER_NEEDED(teststring); g_strlcpy(c_temp, fields[1], sizeof(c_temp)); if (countrylist_points == -1) countrylist_points = atoi(c_temp); break; } case 97:{ // COUNTRY_LIST_ONLY countrylist_only = 1; if (mult_side == 1) countrylist_only = 0; break; } case 98:{ //HOW Many points scores my country lz3ny PARAMETER_NEEDED(teststring); g_strlcpy(c_temp, fields[1], sizeof(c_temp)); if (my_country_points == -1) my_country_points = atoi(c_temp); break; } case 99:{ //MY_CONTINENT_POINTS lz3ny PARAMETER_NEEDED(teststring); g_strlcpy(c_temp, fields[1], sizeof(c_temp)); if (my_cont_points == -1) my_cont_points = atoi(c_temp); break; } case 100:{ //DX_CONTINENT_POINTS lz3ny PARAMETER_NEEDED(teststring); g_strlcpy(c_temp, fields[1], sizeof(c_temp)); if (dx_cont_points == -1) dx_cont_points = atoi(c_temp); break; } /* end LZ3NY mod */ case 101:{ // show time in searchlog window show_time = 1; break; } case 102:{ // use rxvt colours use_rxvt = 1; break; } case 103 ... 111:{ // get phone messages PARAMETER_NEEDED(teststring); strncpy(ph_message[ii - 103], fields[1], 70); ph_message[ii - 103][strlen(ph_message[ii - 103]) - 1] = '\0'; mvprintw(15, 5, "A: Phone message #%d is %s", ii - 103, ph_message[ii - 103]); // (W9WI) refreshp(); // system ("sleep 2"); if (strlen(ph_message[ii - 103]) > 0) use_vk = 1; break; } case 112 ... 116:{ // get phone messages PARAMETER_NEEDED(teststring); strncpy(ph_message[ii - 103], fields[1], 39); ph_message[ii - 103][strlen(ph_message[ii - 103]) - 1] = '\0'; mvprintw(15, 5, "B: Phone message #%d is %s", ii - 103, ph_message[ii - 103]); // (W9WI) refreshp(); // system ("sleep 2"); if (strlen(ph_message[ii - 103]) > 0) use_vk = 1; break; } case 117:{ // WAZ Zone is a Multiplier wazmult = 1; break; } case 118:{ // ITU Zone is a Multiplier itumult = 1; break; } case 119:{ // CQ Delay (sec) PARAMETER_NEEDED(teststring); buff[0] = '\0'; strncpy(buff, fields[1], 3); cqdelay = atoi(buff); if ((cqdelay < 3) || (cqdelay > 60)) cqdelay = 20; break; } case 120:{ // wpx style prefixes mult pfxmult = 1; // enable set points wpx = 1; // handle like wpx break; } case 121:{ // exchange continent abbrev exc_cont = 1; break; } case 122:{ PARAMETER_NEEDED(teststring); strcpy(whichcontest, fields[1]); // RULES= whichcontest[strlen(whichcontest) - 1] = '\0'; if (strlen(whichcontest) > 40) { showmsg ("WARNING: contest name is too long! exiting..."); sleep(5); exit(1); } setcontest(); break; } case 123:{ // don't use auto_cq noautocq = 1; break; } case 124:{ // start in SSB mode trxmode = SSBMODE; break; } case 125:{ // arrow keys don't switch bands... no_arrows = 1; break; } case 126:{ // Hamlib rig conf parameters PARAMETER_NEEDED(teststring); if (strlen(fields[1]) >= 80) { showmsg ("WARNING: rigconf parameters too long! exiting..."); sleep(5); exit(1); } strncpy(rigconf, fields[1], 79); // RIGCONF= rigconf[strlen(rigconf) - 1] = '\0'; // chop LF break; } case 127:{ // define color GREEN (header) PARAMETER_NEEDED(teststring); if (strlen(fields[1]) >= 2 && isdigit(fields[1][0]) && isdigit(fields[1][1])) { tlfcolors[1][0] = fields[1][0] - 48; tlfcolors[1][1] = fields[1][1] - 48; } else { WrongFormat(teststring); } break; } case 128 ... 132:{ // define color CYAN (windows), WHITE (log win) // MAGENTA (Marker / dupes), BLUE (input field) // and YELLOW (Window frames) PARAMETER_NEEDED(teststring); if (strlen(fields[1]) >= 2 && isdigit(fields[1][0]) && isdigit(fields[1][1])) { tlfcolors[ii - 128 + 3][0] = fields[1][0] - 48; tlfcolors[ii - 128 + 3][1] = fields[1][1] - 48; } else { WrongFormat(teststring); } break; } case 133:{ // define name of synclogfile PARAMETER_NEEDED(teststring); synclogfile[0] = '\0'; strcat(synclogfile, fields[1]); synclogfile[strlen(synclogfile) - 1] = '\0'; break; } case 134:{ //SSBPOINTS= PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); ssbpoints = atoi(buff); break; } case 135:{ //CWPOINTS= PARAMETER_NEEDED(teststring); buff[0] = '\0'; strcat(buff, fields[1]); cwpoints = atoi(buff); break; } case 136:{ // SOUNDCARD, use soundcard for cw sidetone sc_sidetone = 1; break; } case 137:{ // sound card volume (default = 70) int volume; PARAMETER_NEEDED(teststring); volume = atoi(fields[1]); if (volume > -1 && volume < 101) sprintf(sc_volume, "%d", volume); else strcpy(sc_volume, "70"); break; } case 138:{ int i = 0; PARAMETER_NEEDED(teststring); tk_ptr = strtok(fields[1], ":,.-_\t "); if (tk_ptr != NULL) { while (tk_ptr) { if (i < 20) scale_values[i] = atoi(tk_ptr); tk_ptr = strtok(NULL, ":,.-_\t "); i++; } } break; } case 139:{ // dsp for s-meter PARAMETER_NEEDED(teststring); strncpy(sc_device, fields[1], sizeof(sc_device) - 1); sc_device[strlen(sc_device) - 1] = '\0'; break; } case 140:{ PARAMETER_NEEDED(teststring); keyerport = MFJ1278_KEYER; strncpy(controllerport, fields[1], sizeof(controllerport) - 1); controllerport[strlen(controllerport) - 1] = '\0'; break; } case 141:{ PARAMETER_NEEDED(teststring); strcpy(clusterlogin, fields[1]); break; } case 142:{ keyerport = ORION_KEYER; break; } case 143:{ PARAMETER_NEEDED(teststring); strncpy(exchange_list, fields[1], sizeof(exchange_list) - 1); exchange_list[strlen(exchange_list) - 1] = '\0'; break; } case 144:{ PARAMETER_NEEDED(teststring); cw_bandwidth = atoi(fields[1]); break; } case 145:{ lowband_point_mult = 1; break; } case 146:{ clusterlog = 1; break; } case 147:{ serial_grid4_mult = 1; break; } case 148:{ change_rst = 1; break; } case 149:{ PARAMETER_NEEDED(teststring); keyerport = GMFSK; strncpy(controllerport, fields[1], sizeof(controllerport) - 1); controllerport[strlen(controllerport) - 1] = '\0'; break; } case 150:{ // start in digital mode trxmode = DIGIMODE; modem_mode[0] = '\0'; strcat(modem_mode, "RTTY"); break; } case 151:{ PARAMETER_NEEDED(teststring); rttyoutput[0] = '\0'; strncat(rttyoutput, fields[1], 110); rttyoutput[strlen(rttyoutput) - 1] = '\0'; break; } case 152:{ logfrequency = 1; break; } case 153:{ ignoredupe = 1; break; } case 154: case 155: case 156: { KeywordNotSupported(teststring); break; } default: { KeywordNotSupported(g_strstrip(inputbuffer)); break; } } g_strfreev( fields ); return( confirmation_needed ); } int speed_conversion(int cwspeed) { int x; switch (cwspeed) { case 0 ... 6:{ x = 0; break; } case 7 ... 12:{ x = 1; break; } case 13 ... 14:{ x = 2; break; } case 15 ... 16:{ x = 3; break; } case 17 ... 18:{ x = 4; break; } case 19 ... 20:{ x = 5; break; } case 21 ... 22:{ x = 6; break; } case 23 ... 24:{ x = 7; break; } case 25 ... 26:{ x = 8; break; } case 27 ... 28:{ x = 9; break; } case 29 ... 30:{ x = 10; break; } case 31 ... 36:{ x = 11; break; } case 37 ... 42:{ x = 12; break; } case 43 ... 48:{ x = 13; break; } case 49 ... 50:{ x = 14; break; } case 51 ... 54:{ x = 15; break; } case 55 ... 57:{ x = 16; break; } case 58 ... 60:{ x = 17; break; } case 61 ... 63:{ x = 18; break; } default:{ x = 19; break; } } return (x); } /** Complain about problems in configuration * * Complains in standout mode about some problem. Beep and wait for * 2 seconds * * \param msg The reason for the problem to be shown */ void Complain(char *msg) { attron(A_STANDOUT); showmsg(msg); attroff(A_STANDOUT); confirmation_needed = PARSE_CONFIRM; beep(); } /** Complain about not supported keyword */ void KeywordNotSupported(char *keyword) { char msgbuffer[100]; sprintf(msgbuffer, "Keyword '%s' not supported. See man page.\n", keyword); Complain(msgbuffer); } /** Complain about missing parameter */ void ParameterNeeded(char *keyword) { char msgbuffer[100]; sprintf(msgbuffer, "Keyword '%s' must be followed by an parameter ('=....'). See man page.\n", keyword); Complain(msgbuffer); } /** Complain about wrong parameter format */ void WrongFormat(char *keyword) { char msgbuffer[100]; sprintf(msgbuffer, "Wrong parameter format for keyword '%s'. See man page.\n", keyword); Complain(msgbuffer); } tlf_1.1.5/src/last10.c0000664000175000017500000000377312072353226012612 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * last 10 - return time (in mins) for last 10 QSOs on * actual band *--------------------------------------------------------------*/ #include "globalvars.h" #include "last10.h" int last10(void) { char input[82]; int minsbefore; int minsnow; int span; int counter; int qsocount = 0; int thisband; if (nr_qsos < 10) return (-1); thisband = atoi(band[bandinx]); /* look backwards in actual band for QSOs */ for (counter = nr_qsos; counter >= 0; counter--) { if (thisband == (atoi(qsos[counter]))) { qsocount++; if (qsocount >= 10) /* stop after 10 QSOs found */ break; } } /* counter points to the first QSO */ if (counter < 0) return (-1); /* not 10 QSOs found */ strncpy(input, qsos[counter], 82); input[17 + 5] = '\0'; minsbefore = atoi(input + 17 + 3); input[17 + 2] = '\0'; minsbefore += (atoi(input + 17) * 60); get_time(); minsnow = time_ptr->tm_hour * 60 + time_ptr->tm_min; if ((minsnow - minsbefore) <= 0) minsnow += 1440; span = minsnow - minsbefore; return (span); } tlf_1.1.5/src/editlog.c0000664000175000017500000000630012072353226013122 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Edit Log * *--------------------------------------------------------------*/ #include "editlog.h" int logedit(void) { extern char logfile[]; extern char backgrnd_str[]; extern int editor; extern int stop_backgrnd_process; char comstr[40] = ""; int j; int lfile; int qsobytes; int qsolines; int errbytes; int rc; struct stat statbuf; FILE *infile; FILE *outfile; char inputbuffer[800]; char *rp; if (editor == EDITOR_JOE) strcat(comstr, "joe "); /* my favorite editor */ else if (editor == EDITOR_VI) strcat(comstr, "vi "); else strcat(comstr, "e3 "); strcat(comstr, logfile); rc = system(comstr); attron(COLOR_PAIR(7) | A_STANDOUT); erase(); refreshp(); clear_display(); attron(COLOR_PAIR(7) | A_STANDOUT); for (j = 13; j <= 23; j++) { mvprintw(j, 0, backgrnd_str); } if ((lfile = open(logfile, O_RDONLY)) < 0) { mvprintw(24, 0, "I can not find the logfile..."); refreshp(); sleep(2); } else { fstat(lfile, &statbuf); qsobytes = statbuf.st_size; qsolines = qsobytes / 81; errbytes = qsobytes - (qsolines * 81); if (errbytes != 0) { close(lfile); stop_backgrnd_process = 1; if ((infile = fopen(logfile, "r")) == NULL) { mvprintw(24, 0, "Unable to open logfile..."); refreshp(); sleep(2); } else { if ((outfile = fopen("./cpyfile", "w")) == NULL) { mvprintw(24, 0, "Unable to open cpyfile..."); refreshp(); sleep(2); } else { while (!(feof(infile))) { rp = fgets(inputbuffer, 160, infile); if (strlen(inputbuffer) != 81) { strcat(inputbuffer, backgrnd_str); inputbuffer[81] = '\0'; } fputs(inputbuffer, outfile); } fclose(infile); fclose(outfile); } if ((lfile = open("./cpyfile", O_RDWR)) < 0) { mvprintw(24, 0, "I can not find the copy file..."); refreshp(); sleep(2); } else { fstat(lfile, &statbuf); if (statbuf.st_size > 80) { rc = ftruncate(lfile, statbuf.st_size - 81); fsync(lfile); } close(lfile); } rename("./cpyfile", logfile); remove("./cpyfile"); } } else close(lfile); stop_backgrnd_process = 0; } close(lfile); scroll_log(); refreshp(); return (0); } tlf_1.1.5/src/addmult.h0000664000175000017500000000206112072353226013132 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" #include "addarea.h" #include int addmult( void); int addmult2( void); int load_multipliers(void); int remember_multi(char *multiplier, int band, int show_new_band); void init_mults(); tlf_1.1.5/src/printcall.c0000664000175000017500000000270412072353226013467 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * printcall * *--------------------------------------------------------------*/ #include "tlf.h" #include "printcall.h" void printcall(void) { extern int use_rxvt; extern char hiscall[]; extern int miniterm; int currentterm; currentterm = miniterm; miniterm = 0; if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_BLUE) | A_STANDOUT | A_BOLD); else attron(COLOR_PAIR(COLOR_BLUE) | A_STANDOUT); mvprintw(12, 29, " "); mvprintw(12, 29, hiscall); refreshp(); miniterm = currentterm; } tlf_1.1.5/src/zone_nr.c0000664000175000017500000000234312072353226013150 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * get zone number * *--------------------------------------------------------------*/ #include "zone_nr.h" int zone_nr(char *comment) { int z = 0; if (comment[0] <= 57 && comment[0] >= 48) z = (comment[0] - 48) * 10; if (comment[1] <= 57 && comment[1] >= 48) z = (comment[1] - 48) + z; return (z); } tlf_1.1.5/src/checklogfile.h0000664000175000017500000000170212072353226014120 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include "tlf.h" void checklogfile(void); tlf_1.1.5/src/sendbuf.c0000664000175000017500000001461312072353226013127 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004-2005 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------------------ * send the text buffer to the keyer driver * ---------------------------------------------------------------------------*/ #include "sendbuf.h" #include "netkeyer.h" void sendbuf(void) { extern int trxmode; extern char buffer[81]; extern char call[20]; extern char hiscall[20]; extern char his_rst[]; extern char qsonrstr[5]; extern int shortqsonr; extern int searchflg; extern char termbuf[81]; extern char backgrnd_str[]; extern int bufloc; extern char wkeyerbuffer[]; extern int keyerport; extern int data_ready; extern int simulator; extern int simulator_mode; extern int lan_active; extern int exchange_serial; extern char lastqsonr[]; extern int noleadingzeros; extern int arrlss; extern int keyerport; extern char hiscall_sent[]; extern int early_started; extern int sending_call; static char comstr[80] = ""; static char comstr2[2]; char comstr3[5]; static char printlinebuffer[82] = ""; static char qsonroutput[5] = ""; static char rst_out[4] = ""; int cury, curx; size_t loc; int i, nr; comstr[0] = '\0'; comstr2[0] = '\0'; printlinebuffer[0] = '\0'; if (arrlss == 1) shortqsonr = 0; if ((trxmode == CWMODE || trxmode == DIGIMODE) && (keyerport != NO_KEYER)) { loc = strcspn(buffer, "%"); /* mycall */ while (strlen(buffer) > loc) { if (loc != 0) strncat(comstr, buffer, loc); strncat(comstr, call, (strlen(call) - 1)); strcat(comstr, buffer + loc + 1); strcpy(buffer, comstr); strcpy(comstr, ""); loc = strcspn(buffer, "%"); } loc = strcspn(buffer, "@"); /* his call */ while (strlen(buffer) > loc) { if (loc != 0) strncat(comstr, buffer, loc); if (strlen(hiscall_sent) == 0) { strcat(comstr, hiscall); } else { strcat(comstr, hiscall + strlen(hiscall_sent)); hiscall_sent[0] = '\0'; early_started = 0; // sending_call = 0; } strcat(comstr, buffer + loc + 1); strcpy(buffer, comstr); strcpy(comstr, ""); loc = strcspn(buffer, "@"); } loc = strcspn(buffer, "["); /* his RST */ while (strlen(buffer) > loc) { if (loc != 0) strncat(comstr, buffer, loc); strncpy(rst_out, his_rst, 4); if (shortqsonr == 1) { if (rst_out[1] == '9') rst_out[1] = 'N'; if (rst_out[2] == '9') rst_out[2] = 'N'; } strcat(comstr, rst_out); strcat(comstr, buffer + loc + 1); strcpy(buffer, comstr); strcpy(comstr, ""); loc = strcspn(buffer, "["); } strcpy(qsonroutput, qsonrstr); if (shortqsonr != 0) { for (i = 0; i <= 4; i++) { if (qsonroutput[i] == '0') qsonroutput[i] = 'T'; if (qsonroutput[i] == '9') qsonroutput[i] = 'N'; } } loc = strcspn(buffer, "#"); /* serial nr */ while (strlen(buffer) > loc) { if (loc != 0) strncat(comstr, buffer, loc); if (noleadingzeros == 1) { nr = atoi(qsonroutput); sprintf(comstr3, "%d", nr); strcat(comstr, comstr3); } else { if (qsonroutput[0] == '0' || qsonroutput[0] == 'T') strcat(comstr, qsonroutput + 1); else strcat(comstr, qsonroutput); } strcat(comstr, buffer + loc + 1); strcpy(buffer, comstr); if ((lan_active == 1) && (exchange_serial == 1)) { strncpy(lastqsonr, qsonrstr, 5); send_lan_message(INCQSONUM, qsonrstr); } strcpy(comstr, ""); loc = strcspn(buffer, "#"); } if ((strlen(buffer) + strlen(termbuf)) < 80) { if (simulator == 0) strcat(termbuf, buffer); // if (sending_call == 1) { // strcat (termbuf, " "); // sending_call = 0; // } } attron(COLOR_PAIR(7) | A_STANDOUT); if (simulator == 0) strncat(printlinebuffer, termbuf, strlen(termbuf)); else strncat(printlinebuffer, termbuf, strlen(termbuf)); if (searchflg == 0 && simulator == 0) strncat(printlinebuffer, backgrnd_str, 80 - strlen(printlinebuffer)); else strncat(printlinebuffer, backgrnd_str, 40 - strlen(printlinebuffer)); if ((simulator_mode == 0)) { mvprintw(5, 0, printlinebuffer); refreshp(); } getyx(stdscr, cury, curx); attron(COLOR_PAIR(COLOR_RED) | A_STANDOUT); mvaddstr(0, 0, "x"); attron(COLOR_PAIR(COLOR_WHITE)); mvaddstr(cury, curx, ""); refreshp(); if (trxmode == DIGIMODE) { if (data_ready != 1) { if (keyerport == MFJ1278_KEYER) { int i = 0; for (i = 0; i < strlen(buffer); i++) if (buffer[i] == '\n') buffer[i] = 13; for (i = 0; i < strlen(buffer); i++) if (buffer[i] == 123) buffer[i] = 20; for (i = 0; i < strlen(buffer); i++) if (buffer[i] == 125) buffer[i] = 18; } strcat(wkeyerbuffer, buffer); buffer[0] = '\0'; data_ready = 1; } else buffer[0] = '\0'; } if (trxmode == CWMODE) { if (data_ready != 1) { if (keyerport == MFJ1278_KEYER) { int i = 0; for (i = 0; i < strlen(buffer); i++) if (buffer[i] == '\n') buffer[i] = 13; } strcat(wkeyerbuffer, buffer); if (keyerport == NET_KEYER) { netkeyer(K_MESSAGE, wkeyerbuffer); wkeyerbuffer[0] = '\0'; data_ready = 0; } else data_ready = 1; } else buffer[0] = '\0'; } getyx(stdscr, cury, curx); attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvaddstr(0, 0, " "); attron(COLOR_PAIR(COLOR_WHITE)); mvaddstr(cury, curx, ""); if (simulator == 0) { if (sending_call == 0) displayit(); refreshp(); } buffer[0] = '\0'; bufloc = 0; } } tlf_1.1.5/src/time_update.c0000664000175000017500000000516212072353226014000 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2003 Rein Couperus * 2011-2012 Thomas Beierlein * * 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 Library 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. */ /* ------------------------------------------------------------ * * Update time * * also updates windows every second *--------------------------------------------------------------*/ #include "globalvars.h" #include "time_update.h" void time_update(void) { extern struct tm *time_ptr; extern char qsonrstr[]; extern int bandinx; extern int this_second; extern long system_secs; extern int miniterm; char time_buf[11]; int currentterm = 0; static int s = 0; static int m = 0; static int oldsecs = -1; /* trigger immediate update */ get_time(); this_second = time_ptr->tm_sec; /* seconds */ system_secs = time_ptr->tm_min * 60 + time_ptr->tm_sec; if (this_second != oldsecs) { /* do it every second */ oldsecs = this_second; if (wpx == 1) { if (minute_timer > 0) minute_timer--; } s = (s + 1) % 2; if (s > 0) { /* every 2 seconds */ strftime(time_buf, 10, "%H:%M:%S", time_ptr); time_buf[5] = '\0'; if ((time_buf[6] == '1') && (m >= 30)) { m = 0; getwwv(); } else { m++; } currentterm = miniterm; miniterm = 0; clusterinfo(time_buf); /* update cluster info (2 seconds) */ attron(COLOR_PAIR(7) | A_STANDOUT); mvprintw(7, 0, logline0); mvprintw(8, 0, logline1); mvprintw(9, 0, logline2); mvprintw(10, 0, logline3); mvprintw(11, 0, logline4); mvprintw(13, 0, " "); attron(COLOR_PAIR(COLOR_CYAN)); mvprintw(12, 23, qsonrstr); printcall(); showscore(); /* update score window every 2 seconds */ show_zones(bandinx); miniterm = currentterm; } } } tlf_1.1.5/src/speeddown.c0000664000175000017500000000450312072353226013466 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Page down, decrementing the cw speed with 2 wpm * *--------------------------------------------------------------*/ #include "speeddown.h" #include "tlf.h" #include "cwkeyer.h" #include "clear_display.h" #include "netkeyer.h" int speeddown(void) { extern int speed; extern char speedstr[]; extern int trxmode; extern int keyerport; extern int cfd; extern char buffer[]; int retval; char buff[3]; if (trxmode != CWMODE) /* bail out, this is an SSB contest */ return (0); if (keyerport == NET_KEYER) { if (speed >= 1) { speed--; strncpy(buff, speedstr + (speed * 2), 2); buff[2] = '\0'; retval = netkeyer(K_SPEED, buff); if (retval < 0) { mvprintw(24, 0, "keyer not active; switching to SSB"); trxmode = SSBMODE; clear_display(); } } } if (keyerport == MFJ1278_KEYER) { if (speed >= 1) { speed--; strncpy(buff, speedstr + (speed * 2), 2); buff[2] = '\0'; strcpy(buffer, "\\\015"); sendbuf(); usleep(500000); strcpy(buffer, "MSP "); strcat(buffer, buff); strcat(buffer, " \015"); sendbuf(); usleep(500000); strcpy(buffer, "CONV\015\n"); sendbuf(); } } if (keyerport == ORION_KEYER) { if (speed >= 1) { speed--; strncpy(buff, speedstr + (speed * 2), 2); buff[2] = '\0'; orion_set_cw_speed(atoi(buff)); } } return (speed); } tlf_1.1.5/src/deleteqso.h0000664000175000017500000000221712072353226013470 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include #include #include "onechar.h" #include #include "qsonr_to_str.h" #include "printcall.h" #include "clear_display.h" #include "scroll_log.h" int delete_qso(void); tlf_1.1.5/src/sunup.h0000664000175000017500000000170012072353226012651 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "get_time.h" #include #define RADIAN (180.0 / M_PI) int sunup (double DEST_Lat); tlf_1.1.5/src/getwwv.c0000664000175000017500000000530712072353226013024 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "getwwv.h" #include "dxcc.h" int getwwv(void) { extern char lastwwv[]; extern char backgrnd_str[]; extern double r; extern int mycountrynr; extern int timeoffset; char printbuffer[81] = ""; char *i; char r_value[6]; char sf_value[6]; char timebuff[80]; double sfi, d; time_t now; struct tm *ptr1; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(24, 0, backgrnd_str); if (strlen(lastwwv) >= 2) { lastwwv[78] = '\0'; /* cut the bell chars */ if ((strncmp(lastwwv, "WCY", 3) == 0) || (strncmp(lastwwv, "WWV", 3) == 0)) { strcat(printbuffer, "Condx: "); i = strstr(lastwwv, "<"); if (i != NULL) { strncat(printbuffer, i + 1, 2); strcat(printbuffer, " GMT "); } i = strstr(lastwwv, "R="); if (i != NULL) { strncat(printbuffer, i, 5); r_value[0] = '\0'; strncat(r_value, i + 2, 3); r = atof(r_value); } strcat(printbuffer, " "); i = strstr(lastwwv, "SFI="); if (i != NULL) { strncat(printbuffer, i, 7); sf_value[0] = '\0'; strncat(sf_value, i + 4, 3); sfi = atof(sf_value); r = ((sfi - 70.0) * (200.0 / 180.0)); } i = strstr(lastwwv, "eru"); if (i != NULL) strcat(printbuffer, " eruptive "); i = strstr(lastwwv, "act"); if (i != NULL) strcat(printbuffer, " act "); i = strstr(lastwwv, "Au=au"); if (i != NULL) strcat(printbuffer, " AURORA!"); strcpy(lastwwv, printbuffer); mvprintw(24, 0, lastwwv); /* print WWV info */ d = dxcc_by_index(mycountrynr) -> timezone; // d -= timeoffset; now = (time(0) + ((timeoffset - d) * 3600)); ptr1 = gmtime(&now); strftime(timebuff, 80, "%H:%M", ptr1); printbuffer[0] = '\0'; mvprintw(24, 64, "local time %s", timebuff); } printcall(); } return (0); } tlf_1.1.5/src/clusterinfo.c0000664000175000017500000002770712072353226014046 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2011 Thomas Beierlein * * 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 Library 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. */ /* ------------------------------------------------------------ * * clusterinfo + time update *--------------------------------------------------------------*/ #include "clusterinfo.h" #include "dxcc.h" #include "bandmap.h" #include #include extern int bandinx; extern pthread_mutex_t spot_ptr_mutex; char *bandmap[MAX_SPOTS]; int loadbandmap(void); int getclusterinfo(void); void clusterinfo(char *timestr) { extern int use_rxvt; extern int cluster; extern char backgrnd_str[]; extern float freq; extern float mem; extern char band[9][4]; extern int bandinx; extern int trx_control; extern int showfreq; extern int showscore_flag; extern int spotarray[MAX_SPOTS]; extern char spot_ptr[MAX_SPOTS][82]; extern int lan_active; extern float node_frequencies[MAXNODES]; extern char thisnode; extern int time_master; extern int nroflines; extern struct tm *time_ptr; int f, j, k; char inputbuffer[160] = ""; char time_buf[40] = ""; static int frcounter; static int daysecs = 0; attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); strncpy(time_buf, timestr, 8); mvaddstr(12, 0, band[bandinx]); mvprintw(12, 17, time_buf); if (daysecs > 60) { // update the date 1x per minute daysecs = 0; get_time(); strftime(time_buf, 60, "%d-%b-%y", time_ptr); mvprintw(12, 7, time_buf); } else { daysecs++; } if (trx_control == 1) { if (freq != 0.0) { if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_WHITE) | A_BOLD); else attron(COLOR_PAIR(COLOR_WHITE)); if ((showfreq == 0) || (showscore_flag == 1)) mvprintw(13, 68, "TRX: %7.1f", freq); if (mem > 0.0) mvprintw(14, 68, "MEM: %7.1f", mem); else mvprintw(14, 68, " "); if ((showfreq == 1) && (showscore_flag == 0)) { freq_display(); } } } frcounter++; if (frcounter >= 60) { // 60 seconds frcounter = 0; if (lan_active != 0) { send_freq(freq); if (time_master == 1) send_time(); } } refreshp(); if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(12, 0, ""); if (cluster == MAP) { attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); nroflines = loadbandmap(); } if (cluster == FREQWINDOW) { for (f = 0; f < 8; f++) mvprintw(15 + f, 4, " "); if (trx_control == 0) node_frequencies[thisnode - 'A'] = atof(band[bandinx]); else node_frequencies[thisnode - 'A'] = freq; for (f = 0; f < MAXNODES; f++) { if (node_frequencies[f] != 0) mvprintw(15 + f, 4, " Stn %c : %5.0f", 'A' + f, node_frequencies[f]); } nicebox(14, 3, 8, 27, "Frequencies"); } if (cluster == CLUSTER) { attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); inputbuffer[0] = '\0'; strncat(inputbuffer, backgrnd_str, 78); for (j = 15; j <= 22; j++) { mvprintw(j, 1, "%s", inputbuffer); } inputbuffer[0] = '\0'; /** \todo minimize lock time */ pthread_mutex_lock (&spot_ptr_mutex); getclusterinfo(); k = 0; while (spotarray[k] > -1) { k++; if (k > (MAX_SPOTS - 2)) break; } k -= 9; if (k < 0) k = -1; attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); inputbuffer[0] = '\0'; strncat(inputbuffer, backgrnd_str, 78); for (j = 15; j <= 22; j++) { mvprintw(j, 1, "%s", inputbuffer); } for (j = 15; j <= 22; j++) { if (k < (MAX_SPOTS - 2) && spotarray[++k] > -1) { if (k > MAX_SPOTS - 1) k = MAX_SPOTS - 1; if (spotarray[k] >= 0 && spotarray[k] < MAX_SPOTS) strcpy(inputbuffer, spot_ptr[spotarray[k]]); else { mvprintw(24, 0, "error in packet table"); } if (strlen(inputbuffer) > 14) { strncat(inputbuffer, backgrnd_str, 65); inputbuffer[78] = '\0'; mvprintw(j, 1, "%s", inputbuffer); } else { inputbuffer[0] = '\0'; strncat(inputbuffer, backgrnd_str, 79); inputbuffer[78] = '\0'; mvprintw(j, 1, "%s", inputbuffer); } inputbuffer[0] = '\0'; } } pthread_mutex_unlock (&spot_ptr_mutex); nicebox(14, 0, 8, 78, "Cluster"); refreshp(); } printcall(); } /* ----------------------------------------------------*/ int loadbandmap(void) { extern int cluster; extern char *bandmap[MAX_SPOTS]; extern struct tm *time_ptr; extern int countries[]; extern int call_band[]; extern int xplanet; extern char markerfile[]; extern char lastmsg[]; extern char spot_ptr[MAX_SPOTS][82]; extern int ptr; int i = 0, j, jj, k, m, x, y; int spotminutes = 0; int sysminutes = 0; int timediff = 0; int linepos; int worked; int thisband = 10; /** \todo should it be NBANDS? */ int dupe; int spot_age[MAX_SPOTS]; float spot_freq[MAX_SPOTS]; char thisline[83]; char spotcall[20]; char spottime[6]; char spotline[38]; char callcopy[81]; FILE *fp; char marker_out[60]; char color[20]; int lon; int lat; int zz; int nofile = 0; int iswarc = 0; char xplanetmsg[160]; dxcc_data *dx; for (i = 0; i < MAX_SPOTS; i++) { if (bandmap[i] != NULL) { g_free(bandmap[i]); bandmap[i] = NULL; } } j = 0; i = 0; get_time(); sysminutes = 60 * time_ptr->tm_hour + time_ptr->tm_min; /* parse log of cluster output and find DX announcements. * Copy them to bandmap array and find spot_age and spot_freq */ pthread_mutex_lock (&spot_ptr_mutex); for (j = 0; j < ptr; j++) { strncpy ( thisline, spot_ptr[j], 82); if (strncmp(thisline, "DX de ", 6) == 0) { strncpy(spotcall, thisline + 26, 5); spotcall[5] = '\0'; strncpy(spottime, thisline + 70, 4); // how old? spottime[4] = spottime[3]; spottime[3] = spottime[2]; spottime[2] = ':'; spottime[5] = '\0'; spotminutes = 60 * atoi(spottime) + atoi(spottime + 3); timediff = (sysminutes - spotminutes) + 5; if (timediff + 30 < 0) timediff += 1440; /* is spot recent? */ if ((timediff + 30) <= (MAXMINUTES + 30)) { /* look for duplicates already in bandmap * => kill older one and keep younger entry */ for (k = 0; k <= i - 1; k++) { callcopy[0] = '\0'; strncat(callcopy, bandmap[k] + 26, 5); if (strncmp(callcopy, spotcall, 4) == 0) { bandmap[k][0] = 'd'; break; } } bandmap[i] = g_strdup(thisline); spot_age[i] = timediff; spot_freq[i] = atof(thisline + 17); i++; } } } pthread_mutex_unlock (&spot_ptr_mutex); linepos = (i < 8 ? 0 : i - 8); jj = 0; /* prune markerfile by opening it for write */ if (xplanet > 0 && nofile == 0) { if ((fp = fopen(markerfile, "w")) == NULL) { nofile = 1; /* remember: no write possible */ mvprintw(24, 0, "Opening marker file not possible.\n"); refreshp(); } else fclose(fp); } for (j = linepos; j < linepos + 8; j++) { if (bandmap[j] != NULL) { strncpy(spotline, bandmap[j] + 17, 22); // freq and call spotline[22] = '\0'; strncpy(spottime, bandmap[j] + 70, 5); // time spottime[5] = '\0'; strcat(spotline, spottime); strncpy(callcopy, bandmap[j] + 26, 16); // call for (m = 0; m < 16; m++) { if (callcopy[m] == ' ') { callcopy[m] = '\0'; break; } /* use strcspn? */ } x = getctynr(callcopy); // CTY of station y = searchcallarray(callcopy); // lookup index of call in // callarray (if already worked) worked = 0; dupe = 1; thisband = bandinx; /* check if country was already worked on this band */ if ((countries[x] & inxes[thisband]) != 0) worked = 1; /* no new country/multi */ /* check if already worked on these band */ if (y != -1) { /* found */ if ((call_band[y] & inxes[thisband]) == 0) dupe = 0; /* not worked on this band yet */ } if (inxes[thisband] == 0) { /* WARC band */ worked = 1; /* show as not needed */ dupe = 0; /* station new, but no country/multi */ } if (x != 0 && xplanet > 0 && nofile == 0) { if ((fp = fopen(markerfile, "a")) == NULL) { mvprintw(24, 0, "Opening markerfile not possible.\n"); } /* show no callsign if MARKERDOTS */ if (xplanet == 2) callcopy[0]='\0'; dx = dxcc_by_index(x); lon = (int)(dx -> lon) * -1; lat = (int)(dx -> lat); *color = '\0'; if (spot_age[j] > 15) strcat(color, "Green"); else { iswarc = 0; if (spot_freq[j] >= 10100.0 && spot_freq[j] <= 10150.0) iswarc = 1; if (spot_freq[j] >= 18068.0 && spot_freq[j] <= 18168.0) iswarc = 1; if (spot_freq[j] >= 24890.0 && spot_freq[j] <= 24990.0) iswarc = 1; if (iswarc == 0) { if (spot_freq[j] < 3500.0) strcat(color, "Red"); if (spot_freq[j] >= 3500.0 && spot_freq[j] <= 4000.0) strcat(color, "Magenta"); if (spot_freq[j] >= 7000.0 && spot_freq[j] <= 7300.0) strcat(color, "Yellow"); if (spot_freq[j] >= 14000.0 && spot_freq[j] <= 14350.0) strcat(color, "Blue"); if (spot_freq[j] >= 21000.0 && spot_freq[j] <= 21450.0) strcat(color, "White"); if (spot_freq[j] >= 28000.0 && spot_freq[j] <= 29700.0) strcat(color, "Green"); } else { strcat(color, "Cyan"); } } if (*color != '\0') { sprintf(marker_out, "%4d %4d \"%s\" color=%s\n", lat, lon, callcopy, color); } fputs(marker_out, fp); fclose(fp); } } } /* append last dx cluster message to markerfile; will be shown at bottom */ if (xplanet == 1 && nofile == 0) { xplanetmsg[0] = '\0'; strcat(xplanetmsg, " -82 -120 "); strcat(xplanetmsg, "\""); strcat(xplanetmsg, lastmsg); for (zz = 0; zz < strlen(lastmsg); zz++) if (lastmsg[zz] == 34) lastmsg[zz] = ' '; strcat(xplanetmsg, "\" color=Cyan\n"); if ((fp = fopen(markerfile, "a")) == NULL) { mvprintw(24, 0, "Opening markerfile not possible.\n"); } else { if (strlen(xplanetmsg) > 20) fputs(xplanetmsg, fp); fclose(fp); } } bandmap_show(); refreshp(); return (i); //--------------------------- the end ------------------ } int getclusterinfo(void) { extern char spot_ptr[MAX_SPOTS][82]; extern int ptr; extern int spotarray[]; extern int announcefilter; extern int cluster; extern char call[]; extern int bandinx; int i; int si = 0; char calldupe[12]; strcpy(calldupe, call); calldupe[strlen(call) - 1] = '\0'; i = 0; si = 0; for (si = 0; si < (MAX_SPOTS - 2); si++) spotarray[si] = -1; si = 0; while (1) { if (strstr(spot_ptr[i], "DX de") != NULL) { spotarray[si] = i; si++; i++; } else if (strstr(spot_ptr[i], calldupe) != NULL) { if ((announcefilter <= 2)) { spotarray[si] = i; si++; i++; } else i++; } else if (strstr(spot_ptr[i], "To ALL") != NULL) { if ((announcefilter <= 1)) { spotarray[si] = i; si++; } i++; } else if ((announcefilter == 0) && (strlen(spot_ptr[i]) > 20)) { spotarray[si] = i; si++; i++; } else i++; if (i > (ptr - 1)) break; } return (si - 1); } tlf_1.1.5/src/getctydata.h0000664000175000017500000000176512072353226013643 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include "getpx.h" #include "tlf.h" int getctynr(char *checkcall); int getctydata(char *checkcall); int getctydata2(char *checkcall); tlf_1.1.5/src/rtty.c0000664000175000017500000001361712072353226012506 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * 2012 Thomas Beierlein * * 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 Library 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. */ /* ------------------------------------------------------------ * rtty mini terminal * *--------------------------------------------------------------*/ #include "rtty.h" #include #include #include #include #include #include "startmsg.h" #include #include #include #include "tlf.h" #include "printcall.h" #include static int fdcont; // global for this file: tty file descriptor static char ry_term[5][50] = { "", "", "", "", "" }; /* ----------------------- initialize controller ------------------------ */ int init_controller() { extern char controllerport[]; struct termios termattribs; if ((fdcont = open(controllerport, O_RDWR | O_NONBLOCK)) < 0) { showstring(controllerport, ": Open failed for controller port!!!\n"); sleep(1); return (-1); } termattribs.c_iflag = IGNBRK | IGNPAR | IMAXBEL | IXOFF; termattribs.c_oflag = 0; termattribs.c_cflag = CS8 | CSTOPB | CREAD | CLOCAL; termattribs.c_lflag = 0; /* Set some term flags */ /* The ensure there are no read timeouts (possibly writes?) */ termattribs.c_cc[VMIN] = 1; termattribs.c_cc[VTIME] = 0; cfsetispeed(&termattribs, B9600); /* Set input speed */ cfsetospeed(&termattribs, B9600); /* Set output speed */ tcsetattr(fdcont, TCSANOW, &termattribs); /* Set the serial port */ showstring(controllerport, " opened...\n"); return (fdcont); // return file descriptor } /* ------------------------ add text to terminal ------------------------ */ void ry_addchar(char c) { static int k = 0; FILE *ry_fp; if ((ry_fp = fopen("RTTYlog", "a")) == NULL) { mvprintw(24, 0, "cannot open RTTYlog"); refreshp(); return; } else { fputc(c, ry_fp); fclose(ry_fp); } if ((c & 0x80) != 0) return; /* drop on non ascii characters */ if ((c == '\n') || (c == '\r')) { /* start new line */ g_strlcpy(ry_term[0], ry_term[1], 41); g_strlcpy(ry_term[1], ry_term[2], 41); g_strlcpy(ry_term[2], ry_term[3], 41); g_strlcpy(ry_term[3], ry_term[4], 41); ry_term[4][0] = '\0'; k = 0; } else { if (iscntrl( c )) { /* replace all other control characters by space */ c = ' '; } if (k >= 40) { // scroll line g_strlcpy(ry_term[0], ry_term[1], 41); g_strlcpy(ry_term[1], ry_term[2], 41); g_strlcpy(ry_term[2], ry_term[3], 41); g_strlcpy(ry_term[3], ry_term[4], 41); ry_term[4][0] = '\0'; k = 0; } // add char to line ry_term[4][k++] = c; ry_term[4][k] = '\0'; } } /* ---------------------- display rtty ---------------------------------- */ int show_rtty(void) { extern int use_rxvt; extern int trxmode; //extern char hiscall[]; extern int miniterm; extern int commentfield; extern char comment[]; if (trxmode != DIGIMODE || miniterm == 0) return (-1); attroff(A_STANDOUT); if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_GREEN) | A_BOLD); else attron(COLOR_PAIR(COLOR_GREEN)); mvprintw(1, 0, " "); mvprintw(1, 0, "%s", ry_term[0]); mvprintw(2, 0, " "); mvprintw(2, 0, "%s", ry_term[1]); mvprintw(3, 0, " "); mvprintw(3, 0, "%s", ry_term[2]); mvprintw(4, 0, " "); mvprintw(4, 0, "%s", ry_term[3]); mvprintw(5, 0, " "); mvprintw(5, 0, "%s", ry_term[4]); if (commentfield == 0) { printcall(); } else { mvprintw(12, 54, comment); } refreshp(); attron(A_STANDOUT); return (0); } /* --------------------- receive rtty ----------------------------------- */ int rx_rtty() { extern char hiscall[]; extern int miniterm; extern int keyerport; int i; int j; char line[40]; char c; static int miniterm_status = 0; /* for one time initialization */ static int state = 0; /* 0 - line start found 1 - ')' found 2 - ':' found 3 - additional space passed */ if (fdcont > 0) { if (miniterm_status == 0 && miniterm == 1) { miniterm_status = 1; ry_term[0][0] = '\0'; ry_term[1][0] = '\0'; ry_term[2][0] = '\0'; ry_term[3][0] = '\0'; ry_term[4][0] = '\0'; } i = read(fdcont, line, 39); if (i == 0) return 0; if (keyerport == GMFSK) { /* skip begin of line until '):' if keyer == GMFSK */ /* RX (2006-03-31 14:41Z): */ for (j = 0; j < i; j++) { c = line[j]; switch (state) { case 0: if (c == ')') state++; break; case 1: if (c == ':') state++; else state = 0; break; case 2: if (c == '\n') state = 0; else state++; break; case 3: if (c == '\n') state = 0; ry_addchar( c ); break; default: break; } } } else { /* serial modem */ for (j = 0; j < i; j++) { ry_addchar( line[j] ); } } } return (0); } tlf_1.1.5/src/addspot.h0000664000175000017500000000175512072353226013147 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include "splitscreen.h" #include "get_time.h" int addspot(void); tlf_1.1.5/src/readctydata.c0000664000175000017500000000452012072353226013762 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2011 Thomas Beierlein * * 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 Library 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. */ /* ------------------------------------------------------------ * * Read country data from disk *--------------------------------------------------------------*/ #include "dxcc.h" #include "readctydata.h" #ifdef HAVE_CONFIG_H # include #endif int readctydata(void) { char buf[181] = ""; char ctydb_location[80]; char *loc; FILE *fp_db; strcpy(ctydb_location, "cty.dat"); if ((fp_db = fopen(ctydb_location, "r")) == NULL) { strcpy(ctydb_location, PACKAGE_DATA_DIR); strcat(ctydb_location, "/cty.dat"); if ((fp_db = fopen(ctydb_location, "r")) == NULL) { mvprintw(4, 0, "Error opening cty.dat file.\n"); refreshp(); sleep(5); endwin(); exit(1); } } dxcc_init(); prefix_init(); // set default for empty country dxcc_add("Not Specified : --: --: --: -00.00: 00.00: 0.0: :"); /* read ctydb.dat file ---------------------------------------------------- */ while (fgets(buf, sizeof(buf), fp_db) != NULL) { /* drop CR and/or NL */ if ((loc = strpbrk(buf, "\r\n"))) *loc = '\0'; /* else { * Fehlermeldung 'string too long */ if (*buf == '\0') /* ignore empty lines */ continue; if (buf[0] != ' ') { // data line dxcc_add(buf); } else // prefix line { loc = strtok(buf, " ,;"); while (loc != NULL) { prefix_add (loc); loc = strtok(NULL, " ,;"); } } } fclose(fp_db); return (0); } tlf_1.1.5/src/showpxmap.c0000664000175000017500000000643312072353226013530 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * show prefix map * *--------------------------------------------------------------*/ #include "showpxmap.h" #include "dxcc.h" int show_mults(void) { extern int use_rxvt; extern int countries[MAX_DATALINES]; extern int bandinx; extern int cqww; int i, j, k, l, bandmask = 0; static char prefix[5]; static char zonecmp[3] = ""; int ch; int iMax = dxcc_count(); if (cqww == 1) { mvprintw(12, 29, "E,A,F,N,S,O"); refreshp(); ch = getchar(); while (ch != '\015') { if (ch == 27) break; zonecmp[0] = '\0'; if (ch == 'E' || ch == 'e') strcat(zonecmp, "EU"); else if (ch == 'A' || ch == 'a') strcat(zonecmp, "AS"); else if (ch == 'F' || ch == 'f') strcat(zonecmp, "AF"); else if (ch == 'N' || ch == 'n') strcat(zonecmp, "NA"); else if (ch == 'S' || ch == 's') strcat(zonecmp, "SA"); else if (ch == 'O' || ch == 'o') strcat(zonecmp, "OC"); else strcat(zonecmp, "EU"); attron(COLOR_PAIR(7) | A_STANDOUT); i = 0; for (k = 1; k <= 5; k++) { for (j = 0; j <= 19; j++) { while ((i < iMax) && ((strncmp(dxcc_by_index(i) -> continent, zonecmp, 2)) != 0)) { i++; } if (i == iMax) break; switch (bandinx) { case BANDINDEX_160:{ bandmask = BAND160; break; } case BANDINDEX_80:{ bandmask = BAND80; break; } case BANDINDEX_40:{ bandmask = BAND40; break; } case BANDINDEX_20:{ bandmask = BAND20; break; } case BANDINDEX_15:{ bandmask = BAND15; break; } case BANDINDEX_10:{ bandmask = BAND10; break; } } if ((countries[i] & bandmask) == 0) { prefix[0] = '\0'; strncat(prefix, dxcc_by_index(i)->pfx, 3); strncat(prefix, " ", 4 - strlen(prefix)); if (use_rxvt == 0) attron(COLOR_PAIR(4) | A_BOLD); else attron(COLOR_PAIR(4)); mvprintw(k + 1, j * 4, prefix); refreshp(); i++; } else { mvprintw(k + 1, j * 4, " "); refreshp(); i++; } } if (i == iMax) break; } ch = getchar(); attron(COLOR_PAIR(7) | A_STANDOUT); for (l = 1; l <= 6; l++) mvprintw(l, 0, " "); } // end while } else multiplierinfo(); return (0); } tlf_1.1.5/src/splitscreen.c0000664000175000017500000006430612072353226014040 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* Splitscreen telnet client */ /* Uses ncurses, so hopefully compatible with much */ /* dave brown n2rjt (dcb@vectorbd.com) wrote most of this */ /* TLF integration and TNC interface by PA0RCT 07/30/2002 */ #define VERSIONSPLIT "V1.4.1 5/18/96 - N2RJT" #include "splitscreen.h" #include "bandmap.h" #include "get_time.h" #include pthread_mutex_t spot_ptr_mutex = PTHREAD_MUTEX_INITIALIZER; int currow; int curcol; int maxtln_loglines = DEFAULTTLN_LOGLINES; int attr[3]; int color[3][2]; int curattr = 0; int insmode = TRUE; char outbuffer[82]; char lanflag; int lanspotflg = 0; int tln_loglines = 0; int view_state = STATE_EDITING; char tln_input_buffer[2 * BUFFERSIZE]; void addlog(char *s) { extern char lastwwv[]; extern struct tln_logline *loghead; extern struct tln_logline *logtail; extern struct tln_logline *viewing; extern char spot_ptr[MAX_SPOTS][82]; extern char lastmsg[]; extern int ptr; extern int clusterlog; int len; FILE *fp; struct tln_logline *temp; pthread_mutex_lock (&spot_ptr_mutex); for (len = 0; len < strlen(s); len += 80) { strncpy(spot_ptr[ptr], s + len, 82); if (strlen(spot_ptr[ptr]) > 5) { lastmsg[0] = '\0'; strncat(lastmsg, spot_ptr[ptr], 82); } if (clusterlog == 1) { if ((fp = fopen("clusterlog", "a")) == NULL) { mvprintw(24, 0, "Opening clusterlog not possible."); } else { if (strlen(lastmsg) > 20) { fputs(lastmsg, fp); fputs("\n", fp); } fclose(fp); } } ptr++; if (ptr > MAX_SPOTS - 1) { for (ptr = 10; ptr <= MAX_SPOTS - 1; ptr++) strncpy(spot_ptr[ptr - 10], spot_ptr[ptr], 82); for (ptr = MAX_SPOTS - 1; ptr >= MAX_SPOTS - 11; ptr--) spot_ptr[ptr][0] = '\0'; ptr = MAX_SPOTS - 10; } } pthread_mutex_unlock (&spot_ptr_mutex); // \todo drop it later tb mar11 bm_add(s); if ((strncmp( s, "WWV", 3) == 0) || strncmp ( s, "WCY", 3) == 0) strncpy (lastwwv, s, 82); if (tln_loglines >= maxtln_loglines) { temp = loghead; loghead = loghead->next; loghead->prev = NULL; if (viewing == temp) { viewing = loghead; } free(temp->text); } else { temp = (struct tln_logline *) malloc(sizeof(struct tln_logline)); tln_loglines++; } temp->next = NULL; temp->text = strdup(s); temp->attr = curattr; if (loghead) { logtail->next = temp; temp->prev = logtail; } else { loghead = temp; temp->prev = NULL; } logtail = temp; } int logattr(void) { extern struct tln_logline *viewing; if (!viewing) return 0; else return viewing->attr; } char *firstlog(void) { extern struct tln_logline *loghead; extern struct tln_logline *viewing; viewing = loghead; view_state = STATE_VIEWING; return viewing->text; } char *lastlog(void) { extern struct tln_logline *logtail; extern struct tln_logline *viewing; viewing = logtail; view_state = STATE_VIEWING; return viewing->text; } char *nextlog(void) { extern struct tln_logline *loghead; extern struct tln_logline *logtail; extern struct tln_logline *viewing; if (view_state == STATE_EDITING) viewing = loghead; else if (viewing) viewing = viewing->next; if (viewing) { view_state = STATE_VIEWING; return viewing->text; } else { viewing = logtail; return NULL; } } char *prevlog(void) { extern struct tln_logline *loghead; extern struct tln_logline *logtail; extern struct tln_logline *viewing; if (view_state == STATE_EDITING) viewing = logtail; else if (viewing) viewing = viewing->prev; if (viewing) { view_state = STATE_VIEWING; return viewing->text; } else { viewing = loghead; return NULL; } } void start_editing(void) { extern struct tln_logline *viewing; extern WINDOW *entwin; werase(entwin); currow = curcol = 0; viewing = NULL; view_state = STATE_EDITING; } void delete_prev_char(void) { extern WINDOW *entwin; int i, j; int c, cc; if (currow != 0 || curcol != 0) { if (curcol-- == 0) { curcol = COLS - 1; currow--; } c = ' '; for (i = ENTRYROWS - 1, j = COLS - 1; i > currow || j >= curcol; j--) { if (j < 0) { j = COLS - 1; i--; } cc = mvwinch(entwin, i, j); waddch(entwin, c); c = cc; } wmove(entwin, currow, curcol); } } void right_arrow(void) { extern WINDOW *entwin; if (++curcol >= COLS) { curcol = 0; if (++currow >= ENTRYROWS) { currow = ENTRYROWS - 1; curcol = COLS - 1; } } wmove(entwin, currow, curcol); } void left_arrow(void) { extern WINDOW *entwin; if (--curcol < 0) { curcol = COLS - 1; if (--currow < 0) { currow = curcol = 0; } } wmove(entwin, currow, curcol); } void move_eol(void) { extern WINDOW *entwin; currow = ENTRYROWS - 1; curcol = COLS - 1; while ((A_CHARTEXT & mvwinch(entwin, currow, curcol)) == ' ') { curcol--; if (curcol < 0) { if (currow > 0) { currow--; curcol = COLS - 1; } else { break; } } } right_arrow(); } void gather_input(char *s) { extern WINDOW *entwin; int l = 0; int i, j; for (i = j = 0; i < ENTRYROWS && j < 81; j++) { if (j >= COLS) { j = 0; i++; } if (i < ENTRYROWS) s[l++] = A_CHARTEXT & mvwinch(entwin, i, j); } while (--l >= 0) { if (s[l] != ' ') break; else s[l] = '\0'; } /*s[++l] = '\n'; */ } int attop = 0; int walkup(void) { int i; if (attop) return 0; attop = TRUE; for (i = 0; i < LINES - ENTRYROWS - 1; i++) { if (prevlog() == NULL) { /* Not enough to view .. you already see it all */ beep(); return 1; } } return 0; } int walkdn(void) { int i; if (!attop) return 0; attop = FALSE; for (i = 0; i < LINES - ENTRYROWS - 1; i++) { if (nextlog() == NULL) { /* Not enough to view */ beep(); return 1; } } return 0; } int pageup(int lines) { extern WINDOW *sclwin; int i; char *s = NULL; walkup(); for (i = 0; i < lines; i++) { wmove(sclwin, 0, 0); s = prevlog(); if (s == NULL) { beep(); break; } winsertln(sclwin); wattrset(sclwin, logattr()); mvwaddstr(sclwin, 0, 0, s); } wrefresh(sclwin); return (s != NULL); } int pagedn(int lines) { extern WINDOW *sclwin; int i; char *s = NULL; walkdn(); for (i = 0; i < lines; i++) { s = nextlog(); if (s == NULL) { beep(); break; } scroll(sclwin); wattrset(sclwin, logattr()); mvwprintw(sclwin, LINES - ENTRYROWS - 1, 0, "%s", s); } wrefresh(sclwin); return (s != NULL); } char entry_text[BUFFERSIZE]; void viewbottom(void) { extern WINDOW *sclwin; int i; char *s; for (i = 0; i < LINES - ENTRYROWS; i++) { if (i == 0) s = lastlog(); else s = prevlog(); if (s == NULL) break; } werase(sclwin); while (1) { s = nextlog(); if (s == NULL) break; wattrset(sclwin, logattr()); wprintw(sclwin, "%s\n", s); } if (strlen(tln_input_buffer) > 0) { wprintw(sclwin, "%s", tln_input_buffer); } wrefresh(sclwin); attop = FALSE; } void viewtop(void) { extern WINDOW *sclwin; int i; char *s; werase(sclwin); for (i = 0; i < LINES - ENTRYROWS; i++) { if (i == 0) s = firstlog(); else s = nextlog(); if (s == NULL) break; wattrset(sclwin, logattr()); wprintw(sclwin, "%s\n", s); } wrefresh(sclwin); attop = FALSE; } void resume_editing(void) { extern WINDOW *entwin; extern WINDOW *sclwin; extern struct tln_logline *viewing; viewbottom(); wattrset(sclwin, curattr); werase(entwin); mvwprintw(entwin, 0, 0, entry_text); wmove(entwin, currow, curcol); viewing = NULL; view_state = STATE_EDITING; wrefresh(entwin); } void viewlog(void) { extern WINDOW *entwin; extern struct tln_logline *viewing; attop = FALSE; if (walkup()) { view_state = STATE_EDITING; viewing = NULL; return; } gather_input(entry_text); werase(entwin); mvwprintw(entwin, 0, 0, "Viewing data... hit ENTER to return\n"); pageup(SCROLLSIZE); } int litflag = FALSE; int edit_line(int c) { extern WINDOW *entwin; extern WINDOW *sclwin; if (view_state != STATE_EDITING) { if (c == '\n') resume_editing(); else if (c == KEY_PPAGE) pageup(SCROLLSIZE); else if (c == KEY_NPAGE) pagedn(SCROLLSIZE); else if (c == KEY_UP) pageup(1); else if (c == KEY_DOWN) pagedn(1); else if (c == KEY_HOME) viewtop(); else if (c == KEY_END) viewbottom(); } else { if (litflag) { wprintw(sclwin, "Keycode = %o octal\n", c); wrefresh(sclwin); litflag = FALSE; return 0; } if (c == erasechar() || c == KEY_BACKSPACE) delete_prev_char(); else if (c == killchar() || c == KEY_CLEAR) start_editing(); else if (c == '\n') return 1; else if (c == KEY_IC) insmode = TRUE; else if (c == KEY_EIC) insmode = FALSE; else if (c == KEY_F(10)) insmode = !insmode; else if (c == KEY_DOWN) { if (currow < ENTRYROWS) currow++; wmove(entwin, currow, curcol); } else if (c == KEY_UP) { if (currow > 0) currow--; wmove(entwin, currow, curcol); } else if (c == KEY_PPAGE) { viewlog(); } else if (c == KEY_LEFT) { left_arrow(); } else if (c == KEY_RIGHT) { right_arrow(); } else if (c == KEY_HOME || c == '\001') { currow = curcol = 0; wmove(entwin, currow, curcol); } else if (c == KEY_END || c == '\005') { move_eol(); } else if (c == KEY_DC) { right_arrow(); delete_prev_char(); } else if (c == KEY_EOS) { wclrtobot(entwin); } else if (c == KEY_EOL) { wclrtoeol(entwin); } else if (c == KEY_F(9)) { litflag = TRUE; } else if (c == (c & A_CHARTEXT)) { if (insmode) { if (currow < ENTRYROWS - 1) { int i; i = A_CHARTEXT & mvwinch(entwin, currow, COLS - 1); mvwinsch(entwin, currow + 1, 0, i); } mvwinsch(entwin, currow, curcol, c); } else { waddch(entwin, c); } curcol++; if (curcol == COLS && currow < ENTRYROWS - 1) { curcol = 0; currow++; } wmove(entwin, currow, curcol); } } return 0; } void sanitize(char *s) { char *t; for (t = s; *s != '\0'; s++) { if (*s == '\007') beep(); else if (*s == '\015'); else if (*s < 0) *t++ = *s - 128; else *t++ = *s; } *t = '\0'; } void addtext(char *s) { extern int use_rxvt; extern WINDOW *sclwin; extern int in_packetclient; extern int lan_active; extern char call[]; extern char hiscall[]; extern struct tm *time_ptr; extern char talkarray[5][62]; char lan_out[256]; static char convers_calls[50][6]; static int ci, cl = 0, cc; static char spotline[160]; static int m = 0, t = 0; static char dxtext[160]; static char spottime[40]; static float freq; static char *spotpointer; int i, l; l = strlen(tln_input_buffer); if (view_state == STATE_EDITING) { if (s[0] == '<' && s[1] != '<') { // must be convers for (ci = 0; ci <= cl; ci++) { if (strncmp(convers_calls[ci], s, 5) == 0) break; } if (ci <= cl) { // found cc = ci; while (cc > 5) cc -= 5; } else { if (cl < 48) cl++; strncpy(convers_calls[cl], s, 5); cc = cl; while (cc > 5) cc -= 5; } cc += 1; if (use_rxvt == 0) wattron(sclwin, COLOR_PAIR(cc) | A_BOLD); else wattron(sclwin, COLOR_PAIR(cc)); } if (strncmp(s, "***", 3) == 0) { cc = 1; wattron(sclwin, COLOR_PAIR(cc)); cc = 0; } // end convers wprintw(sclwin, "%s", s); wattroff(sclwin, A_BOLD); if (in_packetclient == 1) wrefresh(sclwin); } // Cluster private spotting interface if (strncmp(s, call, strlen(call) - 1) == 0 && strlen(s) < 81 && strchr(s, '>') == NULL) { mvprintw(24, 0, " "); if ((strlen(s) + strlen(call) + 3) < 80) { strcpy(dxtext, s + strlen(call) + 3); if (dxtext[strlen(dxtext) - 1] == '\n') dxtext[strlen(dxtext) - 1] = '\0'; // remove the newline mvprintw(24, 0, dxtext); mvprintw(12, 29, hiscall); } refreshp(); spotpointer = strchr(dxtext, ':'); if (spotpointer != NULL && strncmp(spotpointer, ": DX ", 5) == 0) { spotline[0] = '\0'; s[0] = '\0'; strcat(spotline, "DX de "); strncat(spotline, dxtext, spotpointer - dxtext); strcat(spotline, ": "); freq = atof(spotpointer + 5); if (freq > 1800.0 && freq < 30000.0) { if (freq >= 100000.0) { sprintf(spotline + 16, "%5.1f ", freq); sprintf(spotline + 26, "%s", spotpointer + 14); } else if (freq >= 10000.0) { sprintf(spotline + 17, "%5.1f ", freq); sprintf(spotline + 26, "%s", spotpointer + 13); } else if (freq >= 1000.0) { sprintf(spotline + 18, "%5.1f ", freq); sprintf(spotline + 26, "%s", spotpointer + 12); } else { sprintf(spotline + 19, "%5.1f ", freq); sprintf(spotline + 26, "%s", spotpointer + 11); } for (m = 25; m < 38; m++) { if (spotline[m] > 96) spotline[m] -= 32; } strcat(spotline, " "); get_time(); // strftime(spottime, 80, "%H%MZ", time_ptr); ### bug fix strftime(spottime, sizeof(spottime), "%H%MZ", time_ptr); strcpy(spotline + 70, spottime); spotline[75] = '\0'; strcat(spotline, " <<\n"); strcpy(s, spotline); } } else { for (t = 0; t < 4; t++) strcpy(talkarray[t], talkarray[t + 1]); if (s[strlen(s) - 1] == '\n') s[strlen(s) - 1] = '\0'; // remove the newline talkarray[4][0] = '\0'; strncat(talkarray[4], s + 8, 60); if (s[strlen(s) - 1] != '\n') strcat(s, "\n"); // we need to restore newline here... } } // end cluster private spotting interface for (i = 0; i < strlen(s); i++) { if (s[i] == '\n' || i + l + 1 >= COLS) { addlog(tln_input_buffer); if (lan_active == 1 && lanspotflg == 0) { if ((strlen(tln_input_buffer) > 0) && (tln_input_buffer[0] > 32) && (tln_input_buffer[0] < 126)) { strncpy(lan_out, tln_input_buffer, 78); strcat(lan_out, "\n"); if (strlen(s) == 0) tln_input_buffer[0] = '\0'; send_lan_message(CLUSTERMSG, lan_out); lan_out[0] = '\0'; } } l = strlen(tln_input_buffer); l = -i - 1; } else { if (s[i] != '\0') tln_input_buffer[i + l] = s[i]; } tln_input_buffer[i + l + 1] = '\0'; } } /* ========================================= = = . = This initializes the packet windows = ===========================================*/ int init_packet(void) { extern int prsock; extern int portnum; extern char pr_hostaddress[16]; extern SCREEN *packetscreen; extern WINDOW *sclwin; extern WINDOW *entwin; extern char spot_ptr[MAX_SPOTS][82]; extern int tncport; extern int fdSertnc; extern int fdFIFO; extern int packetinterface; extern int tnc_serial_rate; extern int verbose; extern int use_rxvt; extern char tncportname[]; struct termios termattribs; int addrarg; int iptr = 0; mode_t mode = 0666; static int initialized = 0; tln_input_buffer[0] = '\0'; attr[NORMAL_ATTR] = A_NORMAL; if (use_rxvt == 0) { attr[MINE_ATTR] = A_BOLD; attr[ENTRY_ATTR] = A_BOLD; } else { attr[MINE_ATTR] = A_NORMAL; attr[ENTRY_ATTR] = A_NORMAL; } addrarg = 0; if (initialized == 0) { initialized = 1; packetscreen = newterm(NULL, stdout, stdin); start_color(); init_pair(0, 0, 0); init_pair(1, 1, 0); init_pair(2, 2, 0); init_pair(3, 3, 0); init_pair(4, 4, 0); init_pair(5, 5, 0); init_pair(6, 6, 0); init_pair(7, 7, 0); sclwin = newwin(LINES - ENTRYROWS, COLS, 0, 0); entwin = newwin(ENTRYROWS, COLS, LINES - ENTRYROWS, 0); scrollok(sclwin, TRUE); scrollok(entwin, FALSE); keypad(entwin, TRUE); intrflush(entwin, FALSE); wattrset(sclwin, attr[NORMAL_ATTR]); wattrset(entwin, attr[ENTRY_ATTR]); noecho(); cbreak(); wtimeout(entwin, 30); wrefresh(sclwin); start_editing(); curattr = attr[NORMAL_ATTR]; } if (packetinterface == TELNET_INTERFACE) { wprintw(sclwin, "Trying %s:%d ... \n", pr_hostaddress, portnum); wrefresh(sclwin); if ((prsock = startcli()) < 0) { wprintw(sclwin, "\n\nconnect failed... please check network connectivity !!\n"); wrefresh(sclwin); sleep(2); return (-1); } else { wprintw(sclwin, "connected.\n"); } socktimeout(30); } else if (packetinterface == TNC_INTERFACE) { if (strlen(tncportname) > 2) { tncportname[strlen(tncportname) - 1] = '\0'; // remove '\n' if ((fdSertnc = open(tncportname, O_RDWR | O_NONBLOCK)) < 0) { wprintw(sclwin, "open of %s failed!!!\n", tncportname); wrefresh(sclwin); sleep(2); return (-1); } } else { if (tncport == 1) { if ((fdSertnc = open("/dev/ttyS0", O_RDWR | O_NONBLOCK)) < 0) { wprintw(sclwin, "open of /dev/ttyS0 failed!!!\n"); wrefresh(sclwin); sleep(2); return (-1); } } else if (tncport == 2) { if ((fdSertnc = open("/dev/ttyS1", O_RDWR | O_NONBLOCK)) < 0) { wprintw(sclwin, "open of /dev/ttyS1 failed!!!\n"); wrefresh(sclwin); sleep(2); return (-1); } } } termattribs.c_iflag = IGNBRK | IGNPAR | IMAXBEL | IXOFF; termattribs.c_oflag = 0; termattribs.c_cflag = CS8 | CSTOPB | CREAD | CLOCAL; termattribs.c_lflag = 0; /* Set some term flags */ /* The ensure there are no read timeouts (possibly writes?) */ termattribs.c_cc[VMIN] = 1; termattribs.c_cc[VTIME] = 0; switch (tnc_serial_rate) { case 1200:{ cfsetispeed(&termattribs, B1200); /* Set input speed */ cfsetospeed(&termattribs, B1200); /* Set output speed */ break; } case 2400:{ cfsetispeed(&termattribs, B2400); /* Set input speed */ cfsetospeed(&termattribs, B2400); /* Set output speed */ break; } case 4800:{ cfsetispeed(&termattribs, B4800); /* Set input speed */ cfsetospeed(&termattribs, B4800); /* Set output speed */ break; } case 9600:{ cfsetispeed(&termattribs, B9600); /* Set input speed */ cfsetospeed(&termattribs, B9600); /* Set output speed */ break; } default:{ cfsetispeed(&termattribs, B9600); /* Set input speed */ cfsetospeed(&termattribs, B9600); /* Set output speed */ } } tcsetattr(fdSertnc, TCSANOW, &termattribs); /* Set the serial port */ wprintw(sclwin, "ttyS%d opened...\n", (tncport - 1)); wrefresh(sclwin); } else if (packetinterface == FIFO_INTERFACE) { wprintw(sclwin, "Trying to open input FIFO \n"); wrefresh(sclwin); if ((mkfifo("clfile", mode)) < 0) { wprintw(sclwin, "FIFO clfile exists...\n"); wrefresh(sclwin); if (verbose == 1) sleep(1); } else { wprintw(sclwin, "FIFO clfile made\n"); wrefresh(sclwin); if (verbose == 1) sleep(1); } if ((fdFIFO = open("clfile", O_RDONLY | O_NONBLOCK)) < 0) { wprintw(sclwin, "Open FIFO failed\n"); wrefresh(sclwin); sleep(1); } else { wprintw(sclwin, "FIFO clfile open\n\n"); wrefresh(sclwin); if (verbose == 1) sleep(1); } } wprintw(sclwin, "\n Use \":\" to go to tlf !! \n"); wrefresh(sclwin); pthread_mutex_lock (&spot_ptr_mutex); for (iptr = 0; iptr < MAX_SPOTS; iptr++) spot_ptr[iptr][0] = '\0'; pthread_mutex_unlock (&spot_ptr_mutex); return (0); } /* ========================================= = = Throw away the sockets and windows ... = = ===========================================*/ int cleanup_telnet(void) { extern int prsock; extern WINDOW *entwin; extern SCREEN *mainscreen; extern int packetinterface; extern int fdSertnc; extern int fdFIFO; if (packetinterface == TELNET_INTERFACE) { wattrset(entwin, A_NORMAL); wclear(entwin); wmove(entwin, 1, 0); wrefresh(entwin); vidattr(A_NORMAL); endwin(); if (prsock > 0) close_s(prsock); } else if (packetinterface == TNC_INTERFACE) { if (fdSertnc > 0) close(fdSertnc); } else if (packetinterface == FIFO_INTERFACE) { if (fdFIFO > 0) close(fdFIFO); remove("./clfile"); } set_term(mainscreen); clear(); clear_display(); return (0); } /* ========================================= = = Basic packet loop = = ===========================================*/ int packet() { extern SCREEN *mainscreen; extern SCREEN *packetscreen; extern WINDOW *sclwin; extern WINDOW *entwin; extern int prsock; extern int fdSertnc; extern int fdFIFO; extern int packetinterface; extern int in_packetclient; extern char clusterlogin[]; char line[BUFFERSIZE]; int i = 0; int c, count; static int sent_login = 0; in_packetclient = 1; sleep(1); set_term(packetscreen); wclear(sclwin); wclear(entwin); count = 0; if ((tln_loglines == 0) && (packetinterface == TELNET_INTERFACE)) { addtext("Welcome to TLF telnet\n\n"); if ((sent_login == 0) && (strlen(clusterlogin) > 0) && (packetinterface == TELNET_INTERFACE) && (prsock > 0)) { usputs(prsock, clusterlogin); sent_login = 1; addtext("logged into cluster...\n\n"); sleep(1); endwin(); set_term(mainscreen); clear(); clear_display(); in_packetclient = 0; return (0); } } if ((tln_loglines == 0) && (packetinterface == TNC_INTERFACE)) addtext("Welcome to TLF tnc terminal\n\n"); while (1) { wrefresh(entwin); while ((c = wgetch(entwin)) == -1) { if (packetinterface == TELNET_INTERFACE) { if (prsock > 0) { line[0] = '\0'; i = 0; i = recvline(&prsock, line, BUFFERSIZE - 1); } else { wprintw(sclwin, "There is no connection.... going back to tlf !!\n"); wrefresh(sclwin); sleep(2); i = -1; } if (i == -1) { cleanup_telnet(); return (-1); } else if (i != -2) { line[i] = '\0'; sanitize(line); addtext(line); } } else if (packetinterface == TNC_INTERFACE) { if (fdSertnc > 0) { i = read(fdSertnc, line, BUFFERSIZE - 1); if (i > 0) { line[i] = '\0'; sanitize(line); addtext(line); } } } else if (packetinterface == FIFO_INTERFACE) { if (fdFIFO > 0) { i = read(fdFIFO, line, BUFFERSIZE - 1); if (i > 0) { line[i] = '\0'; sanitize(line); addtext(line); } } } } if (edit_line(c)) { gather_input(line); if (strcmp(line, ":exit") == 0) { endwin(); exit(1); } if (strcmp(line, " :exit") == 0) { endwin(); exit(1); } if (strcmp(line, ":") == 0) break; if (strcmp(line, " :") == 0) break; curattr = attr[MINE_ATTR]; wattrset(sclwin, curattr); strcat(line, "\n"); addtext(line); if ((packetinterface == TELNET_INTERFACE) && (prsock > 0)) { usputs(prsock, line); } if (packetinterface == TNC_INTERFACE) { int rc; line[strlen(line) - 1] = 13; line[strlen(line)] = '\0'; rc = write(fdSertnc, line, strlen(line)); } curattr = attr[NORMAL_ATTR]; wattrset(sclwin, curattr); wrefresh(sclwin); start_editing(); } } endwin(); set_term(mainscreen); clear(); clear_display(); in_packetclient = 0; return (0); } /* ====================================================== Receive info from cluster ======================================================== */ int receive_packet(void) { extern int prsock; extern int packetinterface; extern int fdSertnc; extern int fdFIFO; extern int in_packetclient; char line[BUFFERSIZE]; int i = 0; if (in_packetclient == 1) return (0); if (packetinterface == TELNET_INTERFACE) { if (prsock > 0) { i = recvline(&prsock, line, BUFFERSIZE - 1); view_state = STATE_EDITING; if (i == -1) { cleanup_telnet(); return (-1); } else if (i != -2) { line[i] = '\0'; sanitize(line); addtext(line); } } } else if (packetinterface == TNC_INTERFACE) { if (fdSertnc > 0) { i = read(fdSertnc, line, BUFFERSIZE - 1); if (i > 0) { line[i] = '\0'; sanitize(line); addtext(line); } } } else if (packetinterface == FIFO_INTERFACE) { if (fdFIFO > 0) { i = read(fdFIFO, line, BUFFERSIZE - 1); if (i > 0) { line[i] = '\0'; sanitize(line); addtext(line); } } } return (0); } /* ====================================================== send command to cluster ======================================================== */ #define MAX_CMD_LEN 60 int send_cluster(void) { extern int fdSertnc; extern int packetinterface; extern int prsock; extern int cluster; extern int showscore_flag; char line[MAX_CMD_LEN+2] = ""; cluster = CLUSTER; showscore_flag = 0; mvprintw(24, 0, " "); mvprintw(24, 0, ">"); refreshp(); echo(); getnstr(line, MAX_CMD_LEN); noecho(); if (strlen(line) > 0) { strcat(line, "\n"); if (packetinterface == TNC_INTERFACE) { int rc; line[strlen(line) - 1] = '\r'; line[strlen(line)] = '\0'; /* not needed */ rc = write(fdSertnc, line, strlen(line)); } else if ((packetinterface == TELNET_INTERFACE) && (prsock > 0)) usputs(prsock, line); } attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(24, 0, " "); refreshp(); line[0] = '\0'; /* not needed */ return (0); } tlf_1.1.5/src/changepars.c0000664000175000017500000005744712072353226013630 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * * parameterdialog *--------------------------------------------------------------*/ #include "changepars.h" #include "sendbuf.h" #include #include #define MULTS_POSSIBLE(n) ((char *)g_ptr_array_index(mults_possible, n)) int debug_tty(void); int changepars(void) { extern int use_rxvt; extern int cluster; extern int shortqsonr; extern int searchflg; extern int demode; extern int contest; extern int announcefilter; extern int showscore_flag; extern int zonedisplay; extern int trxmode; extern char hiscall[]; extern int rit; extern int trx_control; extern int editor; extern int packetinterface; extern int nopacket; extern int cqdelay; extern int ctcomp; extern SCREEN *mainscreen; extern char *config_file; extern int miniterm; extern char buffer[]; #ifdef HAVE_LIBHAMLIB extern freq_t outfreq; #else extern int outfreq; #endif extern int simulator; extern int keyerport; extern char synclogfile[]; extern char sc_volume[]; extern int cwstart; char parameterstring[20]; char parameters[51][19]; char cmdstring[80]; int i, k, x, nopar = 0; int maxpar = 50; int volumebuffer; int currentmode = 0; int rc; strcpy(parameters[0], "SPOT"); strcpy(parameters[1], "MAP"); strcpy(parameters[2], "CLOFF"); strcpy(parameters[3], "CLUSTER"); strcpy(parameters[4], "SHORT"); strcpy(parameters[5], "LONG"); strcpy(parameters[6], "MESSAGE"); strcpy(parameters[7], "LIST"); strcpy(parameters[8], "CHECK"); strcpy(parameters[9], "NOCHECK"); strcpy(parameters[10], "TONE"); strcpy(parameters[11], "EDIT"); strcpy(parameters[12], "VIEW"); strcpy(parameters[13], "HELP"); strcpy(parameters[14], "DEMODE"); strcpy(parameters[15], "CONTEST"); strcpy(parameters[16], "FILTER"); strcpy(parameters[17], "SCORE"); strcpy(parameters[18], "WRITE"); strcpy(parameters[19], "EXIT"); strcpy(parameters[20], "TXFILE"); strcpy(parameters[21], "ZONES"); strcpy(parameters[22], "CTY"); strcpy(parameters[23], "MODE"); strcpy(parameters[24], "SET"); strcpy(parameters[25], "MULTI"); strcpy(parameters[26], "PROP"); strcpy(parameters[27], "RITCLEAR"); strcpy(parameters[28], "TRXCONTROL"); strcpy(parameters[29], "CFG"); //strcpy(parameters[30], "CWMODE"); strcpy(parameters[30], "CW"); strcpy(parameters[31], "SSBMODE"); strcpy(parameters[32], "DIGIMODE"); strcpy(parameters[33], "PACKET"); strcpy(parameters[34], "SIMULATOR"); strcpy(parameters[35], "INFO"); strcpy(parameters[36], "FREQ"); strcpy(parameters[37], "RECONNECT"); strcpy(parameters[38], "QUIT"); strcpy(parameters[39], "CQDELAY"); strcpy(parameters[40], "ADIF"); strcpy(parameters[41], "SYNC"); strcpy(parameters[42], "RESCORE"); strcpy(parameters[43], "SCVOLUME"); strcpy(parameters[44], "SCAN"); strcpy(parameters[45], "DEBUG"); strcpy(parameters[46], "MINITERM"); strcpy(parameters[47], "RTTY"); strcpy(parameters[48], "SOUND"); strcpy(parameters[49], "CWMODE"); strcpy(parameters[50], "CHARS"); nopar = 0; attroff(A_STANDOUT); attron(COLOR_PAIR(COLOR_GREEN)); mvprintw(12, 29, "PARAMETER? "); refreshp(); mvprintw(12, 29, " "); mvprintw(12, 29, ""); refreshp(); echo(); getstr(parameterstring); noecho(); for (k = 0; parameterstring[k]; k++) parameterstring[k] = toupper(parameterstring[k]); for (i = 0; i <= maxpar; i++) { if (strncmp(parameterstring, parameters[i], 3) == 0) { break; } } switch (i) { case 0: /* SPOTS) */ { /* SPOTS not supported anymore * - default to MAP*/ cluster = MAP; break; } case 1: /* BANDMAP */ { cluster = MAP; break; } case 2: /* CLOFF */ { cluster = NOCLUSTER; break; } case 3: /* CLUSTER */ { cluster = CLUSTER; announcefilter = FILTER_ALL; break; } case 4: /* SHORTNR */ { shortqsonr = SHORTCW; break; } case 5: /* LONGNR */ { shortqsonr = LONGCW; break; } case 6: /* MESSAGE */ { message_change(i); break; } case 7: /* LIST */ { listmessages(); break; } case 8: /* CHECK */ { searchflg = SEARCHWINDOW; break; } case 9: /* NOCHECK */ { searchflg = 0; break; } case 10: /* TONE */ { set_tone(); break; } case 11: /* EDIT */ { logedit(); break; } case 12: /* VIEW */ { logview(); break; } case 13: /* HELP */ { // show_help(); endwin(); rc = system("clear"); rc = system("less help.txt"); rc = system("clear"); set_term(mainscreen); clear_display(); break; } case 14: /* DEMODE */ { if (demode == SEND_DE) demode = 0; else demode = SEND_DE; mvprintw(13, 29, "DE-mode is %d", demode); refreshp(); sleep(1); break; } case 15: /* CONTEST */ { if (contest == CONTEST) contest = 0; else { contest = CONTEST; searchflg = SEARCHWINDOW; } mvprintw(13, 29, "CONTEST-mode is %d", contest); refreshp(); sleep(1); break; } case 16: /* FILTER */ { announcefilter++; if (announcefilter > 3) announcefilter = 0; mvprintw(13, 29, "FILTER-mode is %d", announcefilter); refreshp(); sleep(1); break; } case 17: /* SCORE */ { if (showscore_flag == 0) showscore_flag = 1; else { showscore_flag = 0; } mvprintw(13, 29, "Show score-mode is %d", showscore_flag); refreshp(); sleep(1); break; } case 18: /* WRITE CABRILLO FILE */ { write_cabrillo(); mvprintw(13, 29, "writing cabrillo file"); refreshp(); sleep(1); break; } case 19: /* EXIT */ { writeparas(); clear(); endwin(); puts("\n\nThanks for using TLF.. 73\n"); exit(0); break; } case 20: /* TXFILE */ { break; } case 21: /* ZONES */ { if (zonedisplay == 0) zonedisplay = 1; else { zonedisplay = 0; } break; } case 22: /* COUNTRIES */ { show_mults(); refreshp(); sleep(1); break; } case 23: /* MODE */ { if (trxmode == CWMODE) trxmode = SSBMODE; else if (trxmode == SSBMODE) trxmode = DIGIMODE; else trxmode = CWMODE; if (trxmode == CWMODE) { mvprintw(13, 29, "TRXMODE = CW"); } else if (trxmode == SSBMODE) mvprintw(13, 29, "TRXMODE = SSB"); else mvprintw(13, 29, "TRXMODE = DIG"); refreshp(); sleep(1); break; } case 24: /* SET PARAMETERS */ case 29: /* CFG PARAMETERS */ { clear(); if (editor == EDITOR_JOE) { strcpy(cmdstring, "joe "); } else if (editor == EDITOR_VI) { strcpy(cmdstring, "vi "); } else if (editor == EDITOR_MC) { strcpy(cmdstring, "mcedit "); } else { strcpy(cmdstring, "e3 "); } strcat(cmdstring, config_file); rc = system(cmdstring); read_logcfg(); writeparas(); mvprintw(24, 0, "Logcfg.dat loaded, parameters written.."); refreshp(); clear_display(); break; } case 25: /* MULTI */ { multiplierinfo(); break; } case 26: /* PROPAGATION */ { muf(); clear_display(); break; } case 27: /* RITCLEAR */ { if (rit == RITCLEAR) rit = 0; else { rit = RITCLEAR; } if (rit == RITCLEAR) { mvprintw(13, 29, "RIT clear on"); } else { mvprintw(13, 29, "RIT clear off"); } refreshp(); sleep(1); break; } case 28: /* trx ctl */ { if (trx_control == 1) trx_control = 0; else { trx_control = 1; } if (trx_control == 1) { mvprintw(13, 29, "TRX control on"); } else { mvprintw(13, 29, "TRX control off"); } refreshp(); sleep(1); break; } case 30: /* CW */ case 49: { if (keyerport == MFJ1278_KEYER) { strcpy(buffer, "MODE CW,30"); buffer[7] = '\015'; buffer[8] = 'K'; buffer[9] = '\015'; buffer[10] = '\0'; sendbuf(); } trxmode = CWMODE; if (trx_control == 1) outfreq = SETCWMODE; break; } case 31: /* SSBMODE */ { trxmode = SSBMODE; outfreq = SETSSBMODE; break; } case 32: /* DIGIMODE */ { trxmode = DIGIMODE; break; } case 33: /* PACKET */ { if ((nopacket == 0) && (packetinterface > 0)) packet(); break; } case 34: /* SIMULATOR */ { if (simulator == 0) { simulator = 1; if (ctcomp == 1) { mvprintw(13, 19, "The simulator only works in TRmode. Switching to TRmode"); ctcomp = 0; } else mvprintw(13, 29, "Simulator on"); refreshp(); if (keyerport == NET_KEYER) { if (netkeyer(K_WORDMODE, NULL) < 0) { mvprintw(24, 0, "keyer not active; switching to SSB"); trxmode = SSBMODE; clear_display(); } } } else { simulator = 0; mvprintw(13, 29, "Simulator off"); refreshp(); if (keyerport == NET_KEYER) { if (netkeyer(K_RESET, NULL) < 0) { mvprintw(24, 0, "keyer not active; switching to SSB"); trxmode = SSBMODE; clear_display(); } } } break; } case 35: /* INFO */ { int currentterm = miniterm; miniterm = 0; networkinfo(); miniterm = currentterm; if (currentmode == DIGIMODE) trxmode = DIGIMODE; break; } case 36: /* CLOFF */ { cluster = FREQWINDOW; break; } case 37: /* RECONNECT */ { if ((nopacket == 0) && (packetinterface > 0)) { cleanup_telnet(); init_packet(); packet(); } break; } case 38: /* EXIT=QUIT */ { writeparas(); endwin(); puts("\n\nThanks for using TLF.. 73\n"); exit(0); break; } case 39: /* CQDELAY */ { mvprintw(12, 29, "CQD: pgup/dwn", cqdelay); refreshp(); x = 1; while (x) { x = onechar(); switch (x) { case 156:{ if (cqdelay <= 60) { cqdelay++; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(0, 19, " "); mvprintw(0, 19, "%i", cqdelay); break; } } case 157:{ if (cqdelay >= 1) { cqdelay--; attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(0, 19, " "); mvprintw(0, 19, "%i", cqdelay); break; } default: x = 0; } } } if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(12, 29 + strlen(hiscall), ""); break; } case 40: /* ADIF */ { write_adif(); mvprintw(13, 29, "writing adif file"); refreshp(); sleep(1); break; } case 41: /* SYNC */ { if (strlen(synclogfile) > 0) synclog(synclogfile); scroll_log(); /** \todo register return value */ readcalls(); clear_display(); break; } case 42: /* RESCORE */ { /** \todo register return value */ readcalls(); clear_display(); break; } case 43: /* SCVOLUME - set soundcard volume */ { volumebuffer = atoi(sc_volume); mvprintw(12, 29, "Vol: %d", volumebuffer); x = 1; while (x) { x = onechar(); switch (x) { case 156:{ if (volumebuffer < 95) volumebuffer += 5; break; } case 157:{ if (volumebuffer >= 5) volumebuffer -= 5; break; } default: x = 0; } attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(12, 34, " "); mvprintw(12, 34, "%d", volumebuffer); if (volumebuffer >= 0 && volumebuffer <= 99) sprintf(sc_volume, "%d", volumebuffer); netkeyer(K_STVOLUME, sc_volume); } clear_display(); break; } case 44: /* SCAN */ { int currentterm = miniterm; miniterm = 0; testaudio(); clear_display(); miniterm = currentterm; break; } case 45: /* DEBUG */ { debug_tty(); clear_display(); break; } case 46: /* MINITERM ON/OFF */ { if (miniterm == 1) miniterm = 0; else miniterm = 1; break; } case 47: /* RTTY Initialize mode (MFJ1278B controller) */ { strcpy(buffer, "MODE VB"); buffer[7] = '\015'; buffer[8] = 'K'; buffer[9] = '\015'; buffer[10] = '\0'; sendbuf(); trxmode = DIGIMODE; break; } case 48: /* SOUND */ { clear_display(); record(); clear_display(); break; } case 50: /* CHARS */ { mvprintw(13, 29, "? Characters: (0...4)"); refreshp(); x = onechar(); if ((x - 48) < 5 && (x - 48) >= 0) cwstart = x - 48; break; } default: { nopar = 1; } } if (nopar != 1) { mvprintw(12, 29, "OK ! "); writeparas(); } else { if ((nopacket ==0) && (packetinterface > 0)) packet(); } refreshp(); if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); mvprintw(12, 29, " "); mvprintw(12, 29, ""); refreshp(); hiscall[0] = '\0'; return (0); } /* -------------------------------------------------------------- */ int networkinfo(void) { extern int use_rxvt; extern int use_bandoutput; extern int recv_packets; extern int recv_error; extern int send_packets[]; extern int send_error[]; extern int lan_active; extern int nodes; extern char bc_hostaddress[MAXNODES][16]; extern char *config_file; extern char whichcontest[]; extern char pr_hostaddress[]; extern char tncportname[]; extern char rigportname[]; extern char logfile[]; int i, j, inode, key; clear(); if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_CYAN) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); for (j = 0; j <= 24; j++) mvprintw(j, 0, " "); if (lan_active == 1) mvprintw(1, 10, "Network status: on"); else mvprintw(1, 10, "Network status: off"); mvprintw(3, 28, "Packets rcvd: %d | %d", recv_packets, recv_error); for (inode = 0; inode < nodes; inode++) { mvprintw(4 + inode, 10, "%s", bc_hostaddress[inode]); mvprintw(4 + inode, 28, "Packets sent: %d | %d ", send_packets[inode], send_error[inode], nodes); } if (strlen(config_file) > 0) mvprintw(6 + inode, 10, "Config file: %s", config_file); else mvprintw(6 + inode, 10, "Config file: /usr/local/share/tlf/logcfg.dat"); mvprintw(7 + inode, 10, "Contest : %s", whichcontest); mvprintw(8 + inode, 10, "Logfile : %s", logfile); mvprintw(9 + inode, 10, "Cluster : %s", pr_hostaddress); mvprintw(10 + inode, 10, "TNCport : %s", tncportname); mvprintw(11 + inode, 10, "RIGport : %s", rigportname); if (use_bandoutput == 1) mvprintw(12 + inode, 10, "Band output: on"); else mvprintw(12 + inode, 10, "Band output: off"); refreshp(); mvprintw(23, 22, " --- Press a key to continue --- "); refreshp(); key = getch(); if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_WHITE) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT); for (i = 0; i <= 24; i++) mvprintw(i, 0, " "); clear_display(); return (0); } /* -------------------------------------------------------------- */ int multiplierinfo(void) { extern int use_rxvt; extern int arrlss; extern int serial_section_mult; extern int sectn_mult; extern char mults[MAX_MULTS][12]; extern int mult_bands[MAX_MULTS]; extern int multarray_nr; extern GPtrArray *mults_possible; int j, k, key, vert, hor, cnt, found; char mprint[50]; char chmult[4]; char ch2mult[4]; clear(); if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_CYAN) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); for (j = 0; j <= 24; j++) mvprintw(j, 0, " "); if (arrlss == 1) { mvprintw(2, 20, "ARRL SWEEPSTAKES -- REMAINING SECTIONS"); cnt = 0; for (vert = 9; vert < 18; vert++) { if (cnt >= mults_possible->len) break; for (hor = 5; hor < 15; hor++) { if (cnt >= mults_possible->len) break; mprint[0] = '\0'; strcat(mprint, MULTS_POSSIBLE(cnt)); strcat(mprint, " "); mprint[4] = '\0'; found = 0; for (j = 0; j < multarray_nr; j++) { strcpy(chmult, MULTS_POSSIBLE(cnt)); strcpy(ch2mult, mults[j]); if (ch2mult[2] == ' ') ch2mult[2] = '\0'; if (strcmp(ch2mult, chmult) == 0) found = 1; } if (found == 1) if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_GREEN) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); else if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_CYAN) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); if ((strlen(mprint) > 1) && (strcmp(mprint, "W ") != 0)) mvprintw(vert, hor * 4, "%s", mprint); cnt++; } } } if (serial_section_mult == 1 || (sectn_mult == 1 && arrlss != 1)) { mvprintw(0, 30, "REMAINING SECTIONS"); cnt = 0; for (vert = 2; vert < 22; vert++) { if (cnt >= mults_possible->len) break; for (hor = 0; hor < 7; hor++) { if (cnt >= mults_possible->len) break; mprint[0] = '\0'; strcat(mprint, MULTS_POSSIBLE(cnt)); if (strlen(mprint) == 0) break; if (strlen(mprint) == 1) strcat(mprint, " "); if (strlen(mprint) == 2) strcat(mprint, " "); if (strlen(mprint) == 3) strcat(mprint, " "); if (strlen(mprint) > 3) mprint[4] = '\0'; for (k = 1; k <= MAX_MULTS; k++) { if (strstr(mults[k], MULTS_POSSIBLE(cnt)) != NULL) break; } if ((mult_bands[k] & BAND160) != 0) strcat(mprint, "*"); else strcat(mprint, "-"); if ((mult_bands[k] & BAND80) != 0) strcat(mprint, "*"); else strcat(mprint, "-"); if ((mult_bands[k] & BAND40) != 0) strcat(mprint, "*"); else strcat(mprint, "-"); if ((mult_bands[k] & BAND20) != 0) strcat(mprint, "*"); else strcat(mprint, "-"); if ((mult_bands[k] & BAND15) != 0) strcat(mprint, "*"); else strcat(mprint, "-"); if ((mult_bands[k] & BAND10) != 0) strcat(mprint, "*"); else strcat(mprint, "-"); mprint[11] = '\0'; mvprintw(vert, 2 + hor * 11, "%s", mprint); cnt++; } } } if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_CYAN) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); mvprintw(23, 22, " --- Press a key to continue --- "); refreshp(); key = getch(); if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_WHITE) | A_BOLD | A_STANDOUT); else attron(COLOR_PAIR(COLOR_WHITE) | A_STANDOUT); for (j = 0; j <= 24; j++) mvprintw(j, 0, " "); clear_display(); return (0); } /* ------------------------- radio link debug ------------------------------ */ int debug_tty(void) { extern char rigportname[]; extern int serial_rate; int fdSertnc; int tncport = 0; int i, rc; struct termios termattribs; char line[20] = "?AF\015"; char inputline[80] = ""; const char eom[2] = { '\015', '\0' }; /* initialize ttyS0*/ for (i = 0; i < 24; i++) mvprintw(i, 0, " "); refreshp(); if (rigportname[strlen(rigportname) - 1] == '\n') rigportname[strlen(rigportname) - 1] = '\0'; // remove \n mvprintw(4, 0, "Trying to open %s ", rigportname); refreshp(); if (tncport == 1) { if ((fdSertnc = open("/dev/ttyS2", O_RDWR | O_NONBLOCK)) < 0) { mvprintw(5, 0, "open of /dev/ttyS2 failed!!!"); refreshp(); sleep(2); return (-1); } } else if (tncport == 2) { if ((fdSertnc = open("/dev/ttyS1", O_RDWR | O_NONBLOCK)) < 0) { mvprintw(5, 0, "open of /dev/ttyS1 failed!!!"); refreshp(); sleep(2); return (-1); } } else { if ((fdSertnc = open(rigportname, O_RDWR | O_NONBLOCK)) < 0) { mvprintw(5, 0, "open of %s failed!!!", rigportname); refreshp(); sleep(2); return (-1); } } termattribs.c_iflag = IGNBRK | IGNPAR | IMAXBEL | IXOFF; termattribs.c_oflag = 0; termattribs.c_cflag = CS8 | CSTOPB | CREAD | CLOCAL; termattribs.c_lflag = 0; /* Set some term flags */ /* The ensure there are no read timeouts (possibly writes?) */ termattribs.c_cc[VMIN] = 1; termattribs.c_cc[VTIME] = 0; switch (serial_rate) { case 1200:{ cfsetispeed(&termattribs, B1200); /* Set input speed */ cfsetospeed(&termattribs, B1200); /* Set output speed */ break; } case 2400:{ cfsetispeed(&termattribs, B2400); /* Set input speed */ cfsetospeed(&termattribs, B2400); /* Set output speed */ break; } case 4800:{ cfsetispeed(&termattribs, B4800); /* Set input speed */ cfsetospeed(&termattribs, B4800); /* Set output speed */ break; } case 9600:{ cfsetispeed(&termattribs, B9600); /* Set input speed */ cfsetospeed(&termattribs, B9600); /* Set output speed */ break; } case 57600:{ cfsetispeed(&termattribs, B57600); /* Set input speed */ cfsetospeed(&termattribs, B57600); /* Set output speed */ break; } default:{ cfsetispeed(&termattribs, B9600); /* Set input speed */ cfsetospeed(&termattribs, B9600); /* Set output speed */ } } tcsetattr(fdSertnc, TCSANOW, &termattribs); /* Set the serial port */ mvprintw(6, 0, "%s opened...", rigportname); refreshp(); mvprintw(13, 0, "Input command: "); refreshp(); echo(); getnstr(line, 12); noecho(); strcat(line, eom); /* send message */ mvprintw(7, 0, "sending message to trx: %s", line); mvprintw(7, 40, "Length = %d characters", strlen(line)); refreshp(); rc = write(fdSertnc, line, strlen(line)); mvprintw(8, 0, "receiving message from trx"); refreshp(); usleep(30000); if (fdSertnc > 0) { int j = 0; // i = read (fdSertnc, inputline, BUFFERSIZE-1); ### bug fix i = read(fdSertnc, inputline, sizeof(inputline)); if (i > 0) { for (j = 0; j < i; j++) { mvprintw(10, j * 10, "%#x", (char) inputline[j]); mvprintw(11, j, "%c", (char) inputline[j]); mvprintw(12, j * 10, "%d", (char) inputline[j] & 0xff); refreshp(); } } mvprintw(8, 40, "Length = %d characters", i); if (inputline[0] == '@' && inputline[1] == 'A' && inputline[2] != 'F') { mvprintw(20, 0, "Frequency = %d Hz", ((inputline[3] & 0xff) * 65536) + ((inputline[4] & 0xff) * 256) + (inputline[5] & 0xff)); } refreshp(); sleep(1); } mvprintw(23, 0, "done"); refreshp(); i = getch(); /* close the tty */ if (fdSertnc > 0) close(fdSertnc); return (0); } tlf_1.1.5/src/checklogfile.c0000664000175000017500000000534112072353226014116 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * make sure logfile is present * *--------------------------------------------------------------*/ #include "checklogfile.h" void checklogfile(void) { extern char logfile[26]; extern char backgrnd_str[]; int lfile; int qsobytes; int qsolines; int errbytes; int rc; struct stat statbuf; char inputbuffer[800]; char *rp; FILE *infile; FILE *outfile; FILE *fp; if ((fp = fopen(logfile, "a")) == NULL) { fprintf(stdout, "Opening logfile not possible.\n"); exit(1); } fclose(fp); if ((lfile = open(logfile, O_RDWR)) < 0) { mvprintw(24, 0, "I can not find the logfile..."); refreshp(); sleep(2); exit(0); } else { fstat(lfile, &statbuf); qsobytes = statbuf.st_size; qsolines = qsobytes / 81; errbytes = qsobytes - (qsolines * 81); if (errbytes != 0) { close(lfile); if ((infile = fopen(logfile, "r")) == NULL) { mvprintw(24, 0, "Unable to open logfile..."); refreshp(); sleep(2); } else { if ((outfile = fopen("./cpyfile", "w")) == NULL) { mvprintw(24, 0, "Unable to open cpyfile..."); refreshp(); sleep(2); } else { while (!(feof(infile))) { rp = fgets(inputbuffer, 160, infile); if (strlen(inputbuffer) != 81) { strcat(inputbuffer, backgrnd_str); inputbuffer[81] = '\0'; } fputs(inputbuffer, outfile); } fclose(infile); fclose(outfile); } if ((lfile = open("./cpyfile", O_RDWR)) < 0) { mvprintw(24, 0, "I can not find the copy file..."); refreshp(); sleep(2); } else { fstat(lfile, &statbuf); if (statbuf.st_size > 80) { rc = ftruncate(lfile, statbuf.st_size - 81); fsync(lfile); } close(lfile); } rename("./cpyfile", logfile); remove("./cpyfile"); } } else close(lfile); } } tlf_1.1.5/src/show_help.h0000664000175000017500000000200312072353226013464 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include "tlf.h" #include "nicebox.h" #include "onechar.h" #include "clear_display.h" int show_help(void); tlf_1.1.5/src/cleanup.h0000664000175000017500000000162412072353226013133 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" #include int cleanup(void); tlf_1.1.5/src/searchcallarray.h0000664000175000017500000000164712072353226014651 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include "tlf.h" int searchcallarray (char *hiscall); tlf_1.1.5/src/autocq.c0000664000175000017500000001325412072353226012775 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * AUTO_CQ * *--------------------------------------------------------------*/ #include "autocq.h" #include "stoptx.h" int cw_char_length(char *message); int getlength(int testchar, int message_length); int play_file(char *audiofile); int auto_cq(void) { extern int use_rxvt; extern char mode[]; extern char message[15][80]; extern char ph_message[14][80]; extern char buffer[]; extern int cqdelay; extern int cqmode; extern int trxmode; extern char hiscall[]; extern char speedstr[]; extern int speed; extern int trxmode; int inchar = -1, delayval = 0, cw_message_len = 0, realspeed = 0, j = 0; long message_time = 0; char cwmessage[80], buff[120]; int letter = 0; strcpy(mode, "AUTO_CQ "); clear_display(); nodelay(stdscr, TRUE); while (delayval == 0) { if (trxmode == CWMODE || trxmode == DIGIMODE) { strcat(buffer, message[11]); sendbuf(); } else play_file(ph_message[11]); mvprintw(12, 29 + strlen(hiscall), ""); if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); delayval = cqdelay; if (trxmode == CWMODE) { strncpy(buff, (speedstr + (speed * 2)), 2); buff[2] = '\0'; realspeed = atoi(buff); strncpy(cwmessage, message[11], 79); cw_message_len = cw_char_length(cwmessage); message_time = (long) (1200.0 / realspeed) * cw_message_len; for (j = 0; j < 10; j++) { usleep(message_time * 100); inchar = getch(); if (inchar > 0) letter = inchar; if (inchar > 0) { stoptx(); break; } } } for (delayval = cqdelay; delayval > 0; delayval--) { if (inchar < 0) { mvprintw(12, 29, "Auto cq %d ", delayval - 1); refreshp(); } else { break; } usleep(500000); if (inchar < 0) inchar = getch(); letter = inchar; if (inchar > 0) break; } mvprintw(12, 29, " "); mvprintw(12, 29, ""); refreshp(); } if (cqmode == CQ) strcpy(mode, "Log "); else strcpy(mode, "S&P "); clear_display(); if (use_rxvt == 0) attron(COLOR_PAIR(NORMCOLOR) | A_BOLD); else attron(COLOR_PAIR(NORMCOLOR)); if (letter > 96 && letter < 123) letter -= 32; mvprintw(12, 29, " "); printcall(); nodelay(stdscr, FALSE); if (inchar == 27) return (27); else return (letter); } int cw_char_length(char *message) // calculate point lenght of cw messages... { extern char call[]; int i; int message_length = 0; char cwmessage[80]; int testchar, j; strncpy(cwmessage, message, 79); cwmessage[79] = '\0'; for (i = 0; i < strlen(cwmessage); i++) { testchar = cwmessage[i]; if (testchar == '%') { for (j = 0; j < strlen(call); j++) { testchar = call[j]; message_length = getlength(testchar, message_length); } } else message_length = getlength(testchar, message_length); } return (message_length); } int getlength(int testchar, int message_length) { switch (testchar) { case 'A': message_length += 9; break; case 'B': message_length += 13; break; case 'C': message_length += 15; break; case 'D': message_length += 11; break; case 'E': message_length += 5; break; case 'F': message_length += 13; break; case 'G': message_length += 13; break; case 'H': message_length += 11; break; case 'I': message_length += 7; break; case 'J': message_length += 17; break; case 'K': message_length += 13; break; case 'L': message_length += 13; break; case 'M': message_length += 11; break; case 'N': message_length += 9; break; case 'O': message_length += 15; break; case 'P': message_length += 15; break; case 'Q': message_length += 17; break; case 'R': message_length += 11; break; case 'S': message_length += 9; break; case 'T': message_length += 7; break; case 'U': message_length += 11; break; case 'V': message_length += 13; break; case 'W': message_length += 13; break; case 'X': message_length += 15; break; case 'Y': message_length += 17; break; case 'Z': message_length += 15; break; case '0': message_length += 23; break; case '1': message_length += 21; break; case '2': message_length += 19; break; case '3': message_length += 17; break; case '4': message_length += 15; break; case '5': message_length += 13; break; case '6': message_length += 15; break; case '7': message_length += 17; break; case '8': message_length += 19; break; case '9': message_length += 21; break; case '/': message_length += 17; break; case '?': message_length += 19; break; case ' ': message_length += 3; break; default: ; } return (message_length); } tlf_1.1.5/src/score.h0000664000175000017500000000164712072353226012624 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" #include "getctydata.h" int score(void); int score2(void); tlf_1.1.5/src/addpfx.h0000664000175000017500000000163412072353226012753 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include "tlf.h" int add_pfx(char *pxstr); tlf_1.1.5/src/checkparameters.h0000664000175000017500000000206412072353226014644 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #if defined (TLF_H) /* do nothing, already defined */ #else #define TLF_H #include "tlf.h" #endif #include "writeparas.h" #include "checklogfile.h" int checkparameters(void); tlf_1.1.5/src/getpx.c0000664000175000017500000000507112072353226012626 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * get the prefix * *--------------------------------------------------------------*/ #include "globalvars.h" #include "getpx.h" /** \brief Get prefix from call * * Analyses callsign and extract prefix information like follows: * - Remember a portable prefix area if present .../8 * - Copy first character (letter or number) * - Copy all following letters * - Copy one more character (number or /) * - If next char is a digit, copy it too * - else if portable prefix remembered replace last character (number) * - If last copied character was '/' replace it by '0' * - else if last character was a letter append '0' * * \param checkcall Call to analyse */ /** \todo fix problem: k3a/2 wird nicht als K2 erkannt, * kl32a/4 wird zu kl34 ???, check andere Implementierungen */ void getpx(char *checkcall) { char pxbuffer[16] = ""; int i, len; char j = 0; len = strlen(checkcall); if (len >= 2) { if ((checkcall[len - 2] == '/') && isdigit(checkcall[len - 1])) /* portable /3 */ j = checkcall[len - 1]; } for (i = 0; i < len; i++) { if (((checkcall[i] <= 'Z') && (checkcall[i] >= 'A')) || (i == 0)) pxbuffer[i] = checkcall[i]; else break; } pxbuffer[i] = checkcall[i]; i++; if (isdigit(checkcall[i])) { pxbuffer[i] = checkcall[i]; pxbuffer[i + 1] = '\0'; } else { if (j != 0) { pxbuffer[i - 1] = j; } pxbuffer[i] = '\0'; } strcpy(pxstr, pxbuffer); if (pxstr[strlen(pxstr) - 1] == '/') { pxstr[strlen(pxstr) - 1] = '0'; } else if ((pxstr[strlen(pxstr) - 1] <= 'Z') && (pxstr[strlen(pxstr) - 1] >= 'A')) strcat(pxstr, "0"); } tlf_1.1.5/src/multiplierinfo.h0000664000175000017500000000156512072353226014552 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ int multiplierinfo(void); tlf_1.1.5/src/onechar.h0000664000175000017500000000174112072353226013123 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include "stoptx.h" int onechar(void); tlf_1.1.5/src/getexchange.h0000664000175000017500000000251412072353226013765 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" #include "clear_display.h" #include "onechar.h" #include "stoptx.h" #include "displayit.h" #include "speedup.h" #include "speeddown.h" #include "sendbuf.h" #include "scroll_log.h" #include "addcall.h" #include "makelogline.h" #include "store_qso.h" #include "qsonr_to_str.h" #include "writeparas.h" #include "lancode.h" #include "keyer.h" #include "rtty.h" int getexchange(void); int checkexchange (int x); int getlastpattern (char *checkstring); char * getgrid (char *comment); tlf_1.1.5/src/listmessages.h0000664000175000017500000000203012072353226014177 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include "tlf.h" #include "onechar.h" #include "nicebox.h" #include "clear_display.h" int listmessages(void); tlf_1.1.5/src/listmessages.c0000664000175000017500000000441312072353226014201 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * List CW messages * *--------------------------------------------------------------*/ #include "listmessages.h" int listmessages(void) { extern char message[15][80]; extern char backgrnd_str[]; int i, j; char printbuffer[160]; nicebox(10, 0, 12, 78, "Messages"); for ( i = 0 ; i <= 11 ; i++){ printbuffer[0] = '\0'; strncat (printbuffer, message[i], strlen(message[i]) -1); strcat (printbuffer, backgrnd_str); printbuffer[71] = '\0'; attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT ); mvprintw (i + 11, 1, " %i ", i+1); mvprintw (i + 11, 6, ": %s", printbuffer); refreshp(); } attroff(A_STANDOUT); mvprintw(23, 30, "Press any key"); i = onechar(); for ( i = 2 ; i <= 13 ; i++){ printbuffer[0] = '\0'; strncat (printbuffer, message[i], strlen(message[i]) -1); strcat (printbuffer, backgrnd_str); printbuffer[71] = '\0'; attron(COLOR_PAIR(COLOR_CYAN) | A_STANDOUT ); if (i == 12) mvprintw(i + 9, 1, " SPmg:" ); else if ( i== 13) mvprintw(i + 9, 1, " CQmg:" ); else mvprintw (i + 9, 1, " %i ", i+1); mvprintw (i + 9, 6, ": %s", printbuffer); refreshp(); } attroff(A_STANDOUT); mvprintw(23, 30, "Press any key"); i = onechar(); clear_display(); attron(COLOR_PAIR(7) | A_STANDOUT); for (j = 13 ; j <= 23 ; j++){ mvprintw(j, 0, backgrnd_str); } return(0); } tlf_1.1.5/src/edit_last.h0000664000175000017500000000211012072353226013443 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include "qsonr_to_str.h" #include "scroll_log.h" #include "onechar.h" #include "logview.h" #include "store_qso.h" int edit_last(void); tlf_1.1.5/src/addcall.h0000664000175000017500000000223312072353226013065 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include "searchcallarray.h" #include "getctydata.h" #include "zone_nr.h" #include "getpx.h" #include "tlf.h" #include "paccdx.h" #include "addmult.h" #include "lancode.h" #include "tlf.h" int addcall(void); int addcall2(void); int get_band (char *logline); tlf_1.1.5/src/set_tone.c0000664000175000017500000000445512072353226013324 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2012 Thomas Beierlein * * 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 Library 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. */ /* ------------------------------------------------------------ * Set Cw sidetone * *--------------------------------------------------------------*/ #include "set_tone.h" #include "tlf.h" #include "cwkeyer.h" #include "clear_display.h" #include "write_tone.h" #include "netkeyer.h" int set_tone(void) { extern char tonestr[]; extern int trxmode; if (trxmode != CWMODE) return (1); nicebox(4, 40, 1, 6, "Tone"); attron(COLOR_PAIR(7) | A_STANDOUT); mvprintw(5, 41, " "); mvprintw(5, 42, ""); echo(); getnstr(tonestr, 3); noecho(); tonestr[3] = '\0'; write_tone(); return (0); } void write_tone(void) { extern int trxmode; extern char tonestr[]; extern char sc_volume[]; if (netkeyer(K_TONE, tonestr) < 0) { mvprintw(24, 0, "keyer not active; switching to SSB"); trxmode = SSBMODE; } if (atoi(tonestr) != 0) { /* work around bugs in cwdaemon: * cwdaemon < 0.9.6 always set volume to 70% at change of tone freq * cwdaemon >=0.9.6 do not set volume at all after change of freq, * resulting in no tone output if you have a freq=0 in between * So... to be sure we set the volume back to our chosen value * or to 70% (like cwdaemon) if no volume got specified */ if (*sc_volume != '\0') // set soundcard volume netkeyer(K_STVOLUME, sc_volume); else netkeyer(K_STVOLUME, "70"); } } tlf_1.1.5/src/setcontest.c0000664000175000017500000001173612072353226013677 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Set contest parameters * *--------------------------------------------------------------*/ #include "setcontest.h" int setcontest(void) { extern int wpx; extern int pfxmult; extern int cqww; extern int dxped; extern int sprint; extern int arrldx_usa; extern int dx_arrlsections; extern int arrl_fd; extern int arrlss; extern int multlist; extern int pacc_pa_flg; extern int universal; extern int other_flg; extern int exchange_serial; extern int wysiwyg_multi; extern int w_cty; extern int ve_cty; extern int zl_cty; extern int ja_cty; extern int py_cty; extern int ce_cty; extern int lu_cty; extern int vk_cty; extern int zs_cty; extern int ua9_cty; extern int contest; extern int showscore_flag; extern int searchflg; extern char whichcontest[]; extern int one_point; extern int two_point; extern int three_point; extern int qso_once; extern int sectn_mult; extern int recall_mult; extern int noleadingzeros; extern int shortqsonr; char wcall[] = "W1AW"; char vecall[] = "VE1AA"; char zlcall[] = "ZL1AA"; char jacall[] = "JA1AA"; char pycall[] = "PY1AA"; char cecall[] = "CE1AA"; char lucall[] = "LU1AA"; char vkcall[] = "VK1AA"; char zscall[] = "ZS6AA"; char ua9call[] = "UA9AA"; if (pfxmult == 0 && wpx == 1) wpx = 0; cqww = 0; dxped = 0; sprint = 0; arrldx_usa = 0; pacc_pa_flg = 0; universal = 0; contest = 0; showscore_flag = 0; searchflg = 0; one_point = 0; two_point = 0; three_point = 0; recall_mult = 0; sectn_mult = 0; noleadingzeros = 0; if (strcmp(whichcontest, "wpx") == 0) { wpx = 1; contest = 1; showscore_flag = 1; searchflg = 1; } if (strcmp(whichcontest, "cqww") == 0) { cqww = 1; recall_mult = 1; contest = 1; showscore_flag = 1; searchflg = 1; w_cty = getctydata(wcall); ve_cty = getctydata(vecall); } if (strcmp(whichcontest, "dxped") == 0) { dxped = 1; recall_mult = 1; contest = 1; showscore_flag = 1; searchflg = 1; } if (strcmp(whichcontest, "sprint") == 0) { sprint = 1; contest = 1; showscore_flag = 1; searchflg = 1; one_point = 1; } if (strcmp(whichcontest, "arrldx_usa") == 0) { arrldx_usa = 1; recall_mult = 1; contest = 1; showscore_flag = 1; searchflg = 1; } if (strcmp(whichcontest, "arrldx_dx") == 0) { // other_flg = 1; three_point = 1; recall_mult = 1; sectn_mult = 1; contest = 1; showscore_flag = 1; searchflg = 1; } if (strcmp(whichcontest, "arrl_ss") == 0) { arrlss = 1; other_flg = 1; two_point = 1; qso_once = 1; exchange_serial = 1; multlist = 1; recall_mult = 0; // sectn_mult = 1; noleadingzeros = 1; shortqsonr = 1; contest = 1; showscore_flag = 1; searchflg = 1; } if (strcmp(whichcontest, "arrl_fd") == 0) { // other_flg = 1; recall_mult = 1; contest = 1; showscore_flag = 1; searchflg = 1; arrl_fd = 1; } if (strcmp(whichcontest, "pacc_pa") == 0) { pacc_pa_flg = 1; one_point = 1; contest = 1; showscore_flag = 1; searchflg = 1; ve_cty = getctydata(vecall); w_cty = getctydata(wcall); zl_cty = getctydata(zlcall); ja_cty = getctydata(jacall); py_cty = getctydata(pycall); ce_cty = getctydata(cecall); lu_cty = getctydata(lucall); vk_cty = getctydata(vkcall); zs_cty = getctydata(zscall); ua9_cty = getctydata(ua9call); } if (strcmp(whichcontest, "other") == 0) { other_flg = 1; one_point = 1; recall_mult = 1; wysiwyg_multi = 1; contest = 1; showscore_flag = 1; searchflg = 1; } if (strcmp(whichcontest, "universal") == 0) { contest = 1; showscore_flag = 1; searchflg = 1; } if (dx_arrlsections == 1) { contest = 1; // universal = 1; showscore_flag = 1; searchflg = 1; w_cty = getctydata(wcall); ve_cty = getctydata(vecall); } if (strcmp(whichcontest, "qso") == 0) { contest = 0; searchflg = 1; } else { searchflg = 1; //dxpedition contest = 1; showscore_flag = 1; universal = 1; } return (0); } tlf_1.1.5/src/qsonr_to_str.c0000664000175000017500000000314712072353226014235 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * i-to-a function for qso number (4 chars) * *--------------------------------------------------------------*/ #include "qsonr_to_str.h" int qsonr_to_str(void) { extern int qsonum; extern char qsonrstr[5]; static int x; static int thousands; static int hundreds; static int tens; static char buffer[5]; x = qsonum; thousands = (x / 1000); x = x - (thousands * 1000); hundreds = (x / 100); x = x - (hundreds * 100); tens = (x / 10); x = x - (tens * 10); buffer[0] = thousands + 48; buffer[1] = hundreds + 48; buffer[2] = tens + 48; buffer[3] = x + 48; buffer[4] = '\0'; strncpy(qsonrstr, buffer, 4); return (0); } tlf_1.1.5/src/rules.c0000664000175000017500000001005412072353226012626 0ustar jtnjtn/*************************************************************************** rules.c - description ------------------- begin : Tue Sep 10 2003 copyright : (C) 2003 by lz3ny email : lz3ny@bfra.org ***************************************************************************/ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #include "rules.h" #include "tlf.h" #include "startmsg.h" #include "parse_logcfg.h" extern char whichcontest[]; extern char logfile[]; /* This function overrides the parse_logcfg() details */ /* 10.09.2003 - LZ3NY */ int read_rules() { char mit_contest_rule[80]; char contest_conf[80] = ""; // contest_conf needs room for contest name... (PA0R) char basic_contest_conf[75] = PACKAGE_DATA_DIR; FILE *mit_contest_file; int status = PARSE_OK; /* If no contest is given, whichcontest is set to default "qso" (PA0R, Sep 24 2003)*/ if (strlen(whichcontest) == 0) { showmsg("contest name is empty! Assuming general qso mode!! "); // mvprintw(5,0,"\n contest name is empty!\n Assuming general qso mode!! "); strcpy(whichcontest, "qso"); return (PARSE_ERROR); } if (strlen(whichcontest) >= 40) { showmsg("contest name is too long!"); showmsg("exiting..."); // mvprintw(5,0,"\n contest name is too long!\n exiting...\n "); exit(1); } memset(mit_contest_rule, '\0', strlen(whichcontest) + 6); strcat(contest_conf, "rules/"); strcat(contest_conf, whichcontest); /* If rules are not found in local working directory, look in /usr/local/share... (PA0R, Sep 24 2003)*/ strcat(basic_contest_conf, "/rules/"); strcat(basic_contest_conf, whichcontest); if ((mit_contest_file = fopen(contest_conf, "r")) != NULL) { showstring("reading contest rules file:", contest_conf); // mvprintw(6,0,"reading contest rules file: %s ... \n",contest_conf); // refreshp(); while ( fgets(mit_contest_rule, sizeof(mit_contest_rule), mit_contest_file) != NULL ) { /* if not comment interpret line */ if ((mit_contest_rule[0] != '#') && (mit_contest_rule[0] != ';')) { status |= parse_logcfg(mit_contest_rule); } } fclose(mit_contest_file); showstring("Using contest rules file: ", contest_conf); // mvprintw(7,0,"\nUsing contest rules file: %s\n",contest_conf); // refreshp(); } else if ((mit_contest_file = fopen(basic_contest_conf, "r")) != NULL) { showstring("reading contest rules file:", basic_contest_conf); // mvprintw(6,0,"reading contest rules file: %s ... \n",basic_contest_conf); // refreshp(); while ( fgets(mit_contest_rule, sizeof(mit_contest_rule), mit_contest_file) != NULL ) { /* if not comment interpret line */ if ((mit_contest_rule[0] != '#') && (mit_contest_rule[0] != ';')) { status |= parse_logcfg(mit_contest_rule); } } fclose(mit_contest_file); showstring("Using contest rules file:", basic_contest_conf); // mvprintw(7,0,"\nUsing contest rules file: %s\n",basic_contest_conf); // refreshp(); } else { showstring("There is no contest rules file", contest_conf); showmsg("Assuming regular QSO operation. Logfile is qso.log"); // mvprintw(7,0,"\nThere is no contest rules file %s!\nAssuming regular QSO operation.\nLogfile is qso.log\n",contest_conf); strcpy(whichcontest, "qso"); // default use general qso mode... (PA0R, 24 Sept. 2003) setcontest(); strcpy(logfile, "qso.log"); refreshp(); } return( status ); } tlf_1.1.5/src/zone_nr.h0000664000175000017500000000161112072353226013152 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" int zone_nr(char *comment); tlf_1.1.5/src/scroll_log.c0000664000175000017500000000650012072353226013634 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------------------ * scroll the loglines of the keyer terminal 1 up * ---------------------------------------------------------------------------*/ #include "globalvars.h" #include "scroll_log.h" void scroll_log(void) { char *rp; char inputbuffer[800]; static int ii, kk; int mm; FILE *fp; if ((fp = fopen(logfile, "r")) == NULL) { mvprintw(24, 0, "Error opening logfile.\n"); } for (ii = 5; ii >= 1; ii--) { inputbuffer[0] = '\0'; if (fseek(fp, -1 * ii * 81, SEEK_END) == 0) rp = fgets(inputbuffer, 90, fp); else strcpy(inputbuffer, " "); kk = 5 - ii; if (strlen(inputbuffer) <= 10) /* log repair */ rp = fgets(inputbuffer, 90, fp); // if (strlen(inputbuffer) != 81) // strcat (inputbuffer, backgrnd_str); inputbuffer[80] = '\0'; switch (kk) { case 0:{ strncpy(logline0, inputbuffer, 80); logline0[80] = '\0'; break; } case 1:{ strncpy(logline1, inputbuffer, 80); logline1[80] = '\0'; break; } case 2:{ strncpy(logline2, inputbuffer, 80); logline2[80] = '\0'; break; } case 3:{ strncpy(logline3, inputbuffer, 80); logline3[80] = '\0'; break; } case 4:{ strncpy(logline4, inputbuffer, 80); logline4[80] = '\0'; break; } } } fclose(fp); mm = qsonum - 1; if (logline4[0] != ';') { strncpy(qsonrstr, logline4 + 23, 4); mm = atoi(qsonrstr); } if (logline3[0] != ';') { if (atoi(logline3 + 23) > mm) { mm = atoi(logline3 + 23); strncpy(qsonrstr, logline3 + 23, 4); } } if (logline2[0] != ';') { if (atoi(logline2 + 23) > mm) { mm = atoi(logline2 + 23); strncpy(qsonrstr, logline2 + 23, 4); } } if (logline1[0] != ';') { if (atoi(logline1 + 23) > mm) { mm = atoi(logline1 + 23); strncpy(qsonrstr, logline1 + 23, 4); } } if ((lan_active == 1) && (exchange_serial == 1)) { if (lan_mutex == 2) { /* last mesagge from lan */ if (atoi(qsonrstr) <= highqsonr) { qsonum = highqsonr; } } else { qsonum = atoi(qsonrstr); if (qsonum < highqsonr) qsonum = highqsonr; if (highqsonr < qsonum) highqsonr = qsonum; } } else qsonum = atoi(qsonrstr); if (logline4[0] != ';') qsonum++; else qsonum = mm + 1; // if((qsonum > highqsonr) && (lan_mutex == 2)) highqsonr++; qsonr_to_str(); } tlf_1.1.5/src/freq_display.c0000664000175000017500000002313512072353226014162 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "freq_display.h" int freq_display(void) { extern float freq; extern int trxmode; int x_position = 40; int y_position = 17; int location = 0; char fbuffer[8]; print_space(y_position, x_position); print_space(y_position + 1, x_position); print_space(y_position + 2, x_position); print_space(y_position + 3, x_position); print_space(y_position + 4, x_position); nicebox(16, 39, 5, 35, "TRX"); print_dot(y_position + 4, 28 + x_position + 1); sprintf(fbuffer, "%7.1f", freq); location = 32; if (fbuffer[0] != ' ') print_big_number(fbuffer[0] - 48, y_position, x_position, 4); if (fbuffer[1] != ' ') print_big_number(fbuffer[1] - 48, y_position, x_position, 9); if (fbuffer[2] != ' ') print_big_number(fbuffer[2] - 48, y_position, x_position, 14); if (fbuffer[3] != ' ') print_big_number(fbuffer[3] - 48, y_position, x_position, 19); if (fbuffer[4] != ' ') print_big_number(fbuffer[4] - 48, y_position, x_position, 24); if (fbuffer[6] != ' ') print_big_number(fbuffer[6] - 48, y_position, x_position, 31); attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); if (trxmode == CWMODE) mvprintw(18, 41, "CW"); else if (trxmode == SSBMODE) mvprintw(19, 41, "SSB"); else mvprintw(19, 41, "DIG"); refreshp(); return (0); } int print_big_number(int number, int y_position, int x_position, int location) { switch (number) { case 1:{ print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position + 3); break; } case 2:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 1); print_dot(y_position, location + x_position + 2); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 1); print_dot(y_position + 2, location + x_position + 2); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position); print_dot(y_position + 4, location + x_position); print_dot(y_position + 4, location + x_position + 1); print_dot(y_position + 4, location + x_position + 2); print_dot(y_position + 4, location + x_position + 3); break; } case 3:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 1); print_dot(y_position, location + x_position + 2); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 1); print_dot(y_position + 2, location + x_position + 2); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position); print_dot(y_position + 4, location + x_position + 1); print_dot(y_position + 4, location + x_position + 2); print_dot(y_position + 4, location + x_position + 3); break; } case 4:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 1); print_dot(y_position + 2, location + x_position + 2); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position + 3); break; } case 5:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 1); print_dot(y_position, location + x_position + 2); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 1); print_dot(y_position + 2, location + x_position + 2); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position); print_dot(y_position + 4, location + x_position + 1); print_dot(y_position + 4, location + x_position + 2); print_dot(y_position + 4, location + x_position + 3); break; } case 6:{ print_dot(y_position, location + x_position); print_dot(y_position + 1, location + x_position); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 1); print_dot(y_position + 2, location + x_position + 2); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position); print_dot(y_position + 4, location + x_position + 1); print_dot(y_position + 4, location + x_position + 2); print_dot(y_position + 4, location + x_position + 3); break; } case 7:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 1); print_dot(y_position, location + x_position + 2); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position + 3); break; } case 8:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 1); print_dot(y_position, location + x_position + 2); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 1); print_dot(y_position + 2, location + x_position + 2); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position); print_dot(y_position + 4, location + x_position + 1); print_dot(y_position + 4, location + x_position + 2); print_dot(y_position + 4, location + x_position + 3); break; } case 9:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 1); print_dot(y_position, location + x_position + 2); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 1); print_dot(y_position + 2, location + x_position + 2); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position + 3); break; } case 0:{ print_dot(y_position, location + x_position); print_dot(y_position, location + x_position + 1); print_dot(y_position, location + x_position + 2); print_dot(y_position, location + x_position + 3); print_dot(y_position + 1, location + x_position); print_dot(y_position + 1, location + x_position + 3); print_dot(y_position + 2, location + x_position); print_dot(y_position + 2, location + x_position + 3); print_dot(y_position + 3, location + x_position); print_dot(y_position + 3, location + x_position + 3); print_dot(y_position + 4, location + x_position); print_dot(y_position + 4, location + x_position + 1); print_dot(y_position + 4, location + x_position + 2); print_dot(y_position + 4, location + x_position + 3); break; } } refreshp(); return (0); } int print_dot(int y, int x) { attron(COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); mvprintw(y, x, " "); return (0); } int print_space(int y, int x) { extern int use_rxvt; attroff(A_STANDOUT); if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_WHITE) | A_BOLD); else attron(COLOR_PAIR(COLOR_WHITE)); mvprintw(y, x, " "); return (0); } tlf_1.1.5/src/splitscreen.h0000664000175000017500000000413412072353226014036 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ // splitscreen.h #include #include #include "sockserv.h" #include #include #include #include #include #include #include #include #include "tlf.h" #include #include #include "lancode.h" #include "clear_display.h" #define SERVICE "telnet" #define ALLOWCOLOR has_colors() #define ENTRYROWS 2 #define BUFFERSIZE 256 #define SCROLLSIZE (LINES/4*3+1) #define DEFAULTTLN_LOGLINES 300 #define NORMAL_ATTR 0 #define MINE_ATTR 1 #define ENTRY_ATTR 2 #define STATE_EDITING 0 #define STATE_VIEWING 1 void addlog (char *s); int logattr(void); char *firstlog(void); char *lastlog(void); char *nextlog(void); char *prevlog(void); void start_editing(void); void delete_prev_char(void); void right_arrow(void); void left_arrow(void); void move_eol(void); void gather_input(char *s); int walkup(void); int walkdn(void); int pageup(int lines); int pagedn(int lines); void viewbottom(void); void viewtop(void); void resume_editing(void); void viewlog(void); int edit_line(int c); void sanitize(char *s); void addtext(char *s); int init_packet(void) ; int cleanup_telnet (void); int packet(void); int receive_packet(void); int send_cluster(void); tlf_1.1.5/src/changepars.h0000664000175000017500000000270112072353226013614 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include "messagechange.h" #include "listmessages.h" #include "tlf.h" #include "set_tone.h" #include "editlog.h" #include "logview.h" #include "show_help.h" #include "writecabrillo.h" #include "writeparas.h" #include "showpxmap.h" #include "setparameters.h" #include "muf.h" #include "parse_logcfg.h" #ifdef HAVE_LIBHAMLIB #include #endif #include "gettxinfo.h" #include "netkeyer.h" #include "splitscreen.h" #include "audio.h" #define RITCLEAR 1 int changepars (void); int networkinfo(void); int multiplierinfo(void); tlf_1.1.5/src/addmult.c0000664000175000017500000002137112072353226013132 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2011 Thomas Beierlein * * 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 Library 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. */ /* ------------------------------------------------------------ * add call area to list for one band * *--------------------------------------------------------------*/ #include "globalvars.h" #include "addmult.h" #include #define MULTS_POSSIBLE(n) ((char *)g_ptr_array_index(mults_possible, n)) int inxes[NBANDS] = { BAND160, BAND80, BAND40, 0, BAND20, 0, BAND15, 0, BAND10 }; int addmult(void) { int found = 0; int i, j, ismult, multlen = 0; char *stripped_comment; shownewmult = -1; stripped_comment = strdup(comment); g_strchomp(stripped_comment); if (arrlss == 1) { // mult for all bands -------- arrlss -------------- ismult = 0; /* is it a possible mult? */ if (mults_possible->len > 0) { for (i = 0; i < mults_possible->len; i++) { if ((strstr(ssexchange, MULTS_POSSIBLE(i)) != NULL) && (strlen(MULTS_POSSIBLE(i)) > 1)) { ismult = 1; break; } } } if (ismult != 0) { found = 0; multlen = strlen(MULTS_POSSIBLE(i)); /* already worked? */ for (j = 0; j < multarray_nr; j++) { if (strncmp (mults[j], strstr(ssexchange, MULTS_POSSIBLE(i)), multlen) == 0) { found = 1; break; } } if (found == 0) { /* not -> add it */ strcpy(mults[multarray_nr], MULTS_POSSIBLE(i)); multarray_nr++; } } } // ---------------------------serial + section --------------------------- if ((serial_section_mult == 1) || (sectn_mult == 1)) { ismult = 0; /* is it a possible mult? */ if (mults_possible->len > 0) { for (i = 0; i < mults_possible->len; i++) { // check if valid mult.... if (strcmp(ssexchange, MULTS_POSSIBLE(i)) == 0) { ismult = 1; break; } } } if (ismult != 0) { shownewmult = remember_multi( MULTS_POSSIBLE(i), bandinx, 1); } } // ------------------------------- section ---------------------------- if ((dx_arrlsections == 1) && ((countrynr == w_cty) || (countrynr == ve_cty))) { char *ptr; // local pointer ismult = 0; /* is it a possible mult? */ if (mults_possible->len > 0) { for (i = 0; i < mults_possible->len; i++) { // check if valid mult. ptr = strstr(ssexchange, MULTS_POSSIBLE(i)); if (ptr != NULL) { ismult = 1; multlen = strlen(MULTS_POSSIBLE(i)); if (strlen(MULTS_POSSIBLE(i)) == strlen(ptr)) break; } } } if (ismult != 0) { shownewmult = remember_multi( MULTS_POSSIBLE(i), bandinx, 1); } } if (wysiwyg_once == 1) { // --------------------wysiwyg---------------- shownewmult = remember_multi( stripped_comment, bandinx, 0); } if (wysiwyg_multi == 1 && strlen(stripped_comment) > 0) { shownewmult = remember_multi( stripped_comment, bandinx, 1); } if (serial_grid4_mult == 1 && strlen(section) > 0) { section[4] = '\0'; shownewmult = remember_multi( section, bandinx, 1); } free(stripped_comment); return (found); } /* -------------------------------------------------------------------*/ int addmult2(void) { int n, addarea = 0, found = 0; int i, j, ismult, multlen = 0; char ssexchange[21]; shownewmult = -1; if (arrlss == 1) { // mult for all bands ismult = 0; strncpy(ssexchange, lan_logline + 54, 20); if (mults_possible->len > 0) { for (i = 0; i < mults_possible->len; i++) { if ((strstr(ssexchange, MULTS_POSSIBLE(i)) != NULL) && (strlen(MULTS_POSSIBLE(i)) > 1)) { ismult = 1; multlen = strlen(MULTS_POSSIBLE(i)); break; } } } if (ismult != 0) { for (j = 0; j < multarray_nr; j++) { if (strncmp (mults[j], strstr(ssexchange, MULTS_POSSIBLE(i)), multlen) == 0) { found = 1; break; } } if (found == 0) { multarray_nr++; strncpy(mults[multarray_nr], strstr(ssexchange, MULTS_POSSIBLE(i)), multlen); if (strlen(mults[multarray_nr]) == 2) strcat(mults[multarray_nr], " "); } } } if (wysiwyg_once == 1) { for (n = 0; n < multarray_nr; n++) { if (strcmp(mults[n], comment) == 0) { found = 1; break; } } if (found == 0) { strcpy(mults[multarray_nr], comment); multarray_nr++; addarea = 1; shownewmult = n; } } if ((wysiwyg_multi == 1) && (strlen(comment) > 0)) { for (n = 0; n < multarray_nr; n++) { if (strcmp(mults[n], comment) == 0) { found = 1; break; } } if (found == 0) { strcpy(mults[multarray_nr], comment); mult_bands[multarray_nr] = mult_bands[multarray_nr] | inxes[bandinx]; multarray_nr++; addarea = 1; shownewmult = multarray_nr - 1; } else if ((found == 1) && ((mult_bands[n] & inxes[bandinx]) == 0)) { mult_bands[n] = mult_bands[n] | inxes[bandinx]; addarea = 1; shownewmult = n; } } if (addarea == 1) { multscore[bandinx]++; } return (found); } /** loads possible multipliers from external file * * Read in the file named by 'multiplierlist' and interpret it as list * of possible multis. * * Lines starting with '#' will be interpreted as comment. * * Each line should contain at max one word. Leading and trailing whitespaces * will be stripped and the remaining string is remembered in 'mults_possible[]' * growing array. Empty lines will be dropped. * * \return number of loaded multipliers (nr of entries in mults_possible) * */ int load_multipliers(void) { extern GPtrArray *mults_possible; extern char multsfile[]; FILE *cfp; char s_inputbuffer[186] = ""; int count = 0; if (strlen(multsfile) == 0) { mvprintw(9, 0, "No multiplier file specified, exiting.. !!\n"); refreshp(); sleep(5); exit(1); } if ((cfp = fopen(multsfile, "r")) == NULL) { mvprintw(9, 0, "Error opening multiplier file %s.\n", multsfile); refreshp(); sleep(2); } else { count = 0; while ( fgets(s_inputbuffer, 85, cfp) != NULL ) { /* drop comments starting with '#' */ if (*s_inputbuffer == '#') continue; /* strip leading and trailing whitespace */ g_strstrip( s_inputbuffer ); s_inputbuffer[9] = '\0'; /* drop empty lines */ if (*s_inputbuffer == '\0') continue; g_ptr_array_add(mults_possible, g_strdup(s_inputbuffer)); count++; } fclose(cfp); } return (count); } /** initialize mults scoring * * empties mults[] and mult_bands[] arrays and set the number of * mults to 0. */ void init_mults() { int n; for (n = 0; n < MAX_MULTS; n++) { mults[n][0]='\0'; mult_bands[n] = 0; } multarray_nr = 0; } /** register wortked multiplier and check if its new * * Check if multiplier is already registered. If not make a new entry in * mults[] array and increment the total mults count 'multarray_nr'. * Mark the mult as worked on the actual band. If it is a new band * increase the bandspecific 'multscore[band]'. * * \param multiplier - the multiplier as a string * \param band - the bandindex we are on * \param show_new_band - 1 -> check also if new band * \return - index in mults[] array if new mult or new on band * (-1 if multiplier is an empty string or not new) */ int remember_multi(char *multiplier, int band, int show_new_band) { /* search multbuffer in mults arry */ int found = 0, i, index = -1; if (*multiplier == '\0') return -1; /* ignore empty string */ for (i = 0; i < multarray_nr; i++) { if (strcmp(mults[i], multiplier) == 0) { /* already in list? */ found = 1; if ((mult_bands[i] & inxes[band]) == 0) { /* new band? */ mult_bands[i] |= inxes[band]; multscore[band]++; if (show_new_band) /* if wanted */ index = i; /* show it as new band */ } break; } } if (found == 0) { /* add new multi */ index = multarray_nr; /* return index of new mult */ strcpy(mults[multarray_nr], multiplier); mult_bands[multarray_nr] |= inxes[band]; multscore[band]++; multarray_nr++; } return index; } tlf_1.1.5/src/readcalls.h0000664000175000017500000000220012072353226013425 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include #include "getctydata.h" #include "zone_nr.h" #include "getpx.h" #include "paccdx.h" #include "tlf.h" #include "startmsg.h" int readcalls(void); int synclog(char *synclogfile); tlf_1.1.5/src/rtty.h0000664000175000017500000000211712072353226012504 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * rtty.h rtty mini terminal * *--------------------------------------------------------------*/ int init_controller() ; int rx_rtty () ; int show_rtty(void); tlf_1.1.5/src/grabspot.h0000664000175000017500000000210012072353226013313 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include "getctydata.h" #include "showinfo.h" #include "searchlog.h" #ifdef HAVE_LIBHAMLIB #include #endif void grabspot (void); void grab_next (void); tlf_1.1.5/src/muf.c0000664000175000017500000002154012072353226012265 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2010-2011 Thomas Beierlein * * 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 Library 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. */ #include "muf.h" #include "tlf.h" #include "get_time.h" #include "dxcc.h" #include extern int use_rxvt; extern double yt; extern double xt; extern double yr; extern double xr; extern double r; extern int m; extern struct tm *time_ptr; int t = 21; double n = 0.0; double se, xn, xs, ff, rd, ls, h, ff, x, yn_, d, q, x, k, lm, u, a, ab, k, lm; static double power(man, ex) double man, ex; { return exp(ex * log(man)); } static void interlat() { extern double q; extern double rd; extern double x; extern double xn; extern double yn_; extern double xt; extern double k; extern double lm; extern double d; extern double u; double yi; /* Intermediate Latitude & Longitude calculations */ q = cos(u * rd) * cos(xt * rd) * sin(k * lm * rd); x = q + sin(xt * rd) * cos(k * lm * rd); xn = atan(x / sqrt(1 - x * x + 1e-12)) * d; q = cos(k * lm * rd) - sin(xt * rd) * sin(xn * rd); yi = (PI / 2 - atan(x / sqrt(1 - x * x + 1e-12))) * d; if (u < 180.0) yi = -yi; yn_ = yt + yi; if (yn_ > 180.0) yn_ -= 360.0; if (yn_ < -180.0) yn_ += 360.0; } static void mini_f2() { extern double yn_; extern double xn; extern double rd; extern double x; extern double ff; extern double a; extern int t; extern double h; double temp, tl, yf, ex, yz, yg, zo, z, mh, xh, wx, sx, ty, fo, sf; yz = yn_; if (yn_ < -160.0) yz = yn_ + 360.0; yg = (20.0 - yz) / 50; temp = 1 - (yg / 7.0); zo = 20.0 * yg / (1 + yg + yg * yg) + 5.0 * (temp * temp); z = xn - zo; tl = t - yn_ / 15.0; if (tl > 24.0) tl -= 24.0; if (tl < 0.0) tl += 24.0; mh = m; if (z <= 0.0) { z = -z; mh += 6; } xh = cos(30.0 * (mh - 6.5) * rd); /* 1 week delay on equinoxes */ sx = (fabs(xh) + xh) / 2.0; /* F-layer local summer variance */ wx = (fabs(xh) - xh) / 2.0; /* F-layer local winter variance */ if (z > 77.5) z = 77.5; ty = tl; if (ty < 5.0) ty = tl + 24.0; yf = (ty - 14.0 - sx * 2.0 + wx * 2.0 - r / 175.0) * (7.0 - sx * 3.0 + wx * 4.0 - r / (150.0 - wx * 75.0)); if (fabs(yf) > 60.0) yf = 60.0; x = 1 + r / (175.0 + sx * 175.0); fo = 6.5 * x * cos(yf * rd) * sqrt(cos((z - sx * 5.0 + wx * 5.0) * rd)); ex = -0.5; temp = cos(a * rd) * 6367.0 / (6367.0 + h); sf = power(1.0 - temp * temp, ex); ff = fo * sf; ff *= 1.15; } static void e_layer() { extern double q; extern double xn; extern double rd; extern double xs; extern double x; extern double yn_; extern int t; extern double d; extern double a; extern double ls; double temp, fe, se, ex, xz; q = sin(xn * rd) * sin(xs * rd); x = q + cos(xn * rd) * cos(xs * rd) * cos((yn_ - 15.0 * (t - 12.0)) * rd); xz = (PI / 2 - atan(x / sqrt(1 - x * x + 1e-12))) * d; if (xz <= 85.0) { ex = 1.0 / 3.0; fe = 3.4 * (1.0 + 0.0016 * r) * power(cos(xz * rd), ex); } else { ex = -0.5; fe = 3.4 * (1.0 + 0.0016 * r) * power(xz - 80.0, ex); } temp = cos(a * rd); se = power(1.0 - (0.965 * temp * temp), ex); //se /= 4; //se += 1; ls = 0.028 * fe * fe * se; // ls *= 15; } int muf(void) { extern double rd; extern double q; extern double u; extern double a; extern double ab; extern double k; extern double lm; extern double d; extern double ff; extern double n; extern int t; extern double h; extern double xs; extern double ls; extern int m; extern char C_QTH_Lat[]; extern char C_QTH_Long[]; extern char C_DEST_Lat[]; extern char C_DEST_Long[]; extern double sunrise; extern double sundown; extern int mycountrynr; extern int countrynr; extern char lastwwv[]; dxcc_data *dx; int row; static double x, la, l, mf, lh; static long ve, ho; static int correct; int key; char mycountry[40]; char country[40]; int i; char time_buf[25]; int su, sd, su_min, sd_min, iv; double td; PANEL *pan; WINDOW *win; win = newwin( 25, 80, 0, 0); pan = new_panel(win); rd = PI / 180; d = 180 / PI; correct = 0; n = 0; xt = atof(C_QTH_Lat); yt = atof(C_QTH_Long); xr = atof(C_DEST_Lat); yr = atof(C_DEST_Long); get_time(); //strftime(time_buf, 60, " %d-%b-%Y %H:%M ", time_ptr); ### bug fix strftime(time_buf, sizeof(time_buf), " %d-%b-%Y %H:%M ", time_ptr); q = sin(xt * rd) * sin(xr * rd); x = q + cos(xt * rd) * cos(xr * rd) * cos(yt * rd - yr * rd); la = (PI / 2 - atan(x / sqrt(1 - x * x + 1e-12))) * d; l = 111.1 * la; q = sin(xr * rd) - sin(xt * rd) * cos(la * rd); x = q / cos(xt * rd) / sin(la * rd); u = (PI / 2 - atan(x / sqrt(1 - x * x + 1e-12))) * d; if (yt - yr <= 0) u = 360 - u; h = 275 + r / 2; xs = 23.4 * cos(30 * (m - 6.25) * rd); n++; lh = l / n; while (lh > 4000.0) { n++; lh = l / n; } lm = la / n; a = atan((cos(0.5 * lm * rd) - 6367.0 / (h + 6367.0)) / sin(0.5 * lm * rd)) * d; while (a < 1.5) { n++; lh /= n; while (lh > 4000.0) { n++; lh = l / n; } lm = la / n; a = atan((cos(0.5 * lm * rd) - 6367.0 / (h + 6367.0)) / sin(0.5 * lm * rd)) * d; } dx = dxcc_by_index(mycountrynr); strncpy(mycountry, dx->countryname, 25); dx = dxcc_by_index(countrynr); strncpy(country, dx->countryname, 25); wclear(win); if (use_rxvt == 0) wattron(win, COLOR_PAIR(COLOR_CYAN) | A_BOLD | A_STANDOUT); else wattron(win, COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); for (i = 0; i < 25; i++) mvwprintw(win, i, 0, " "); mvwprintw(win, 1, 40, "%s", country); mvwprintw(win, 1, 0, " SSN: %3.0f ", r); mvwprintw(win, 3, 40, "Dist : %5ld KM", (long) floor(l + 0.5)); mvwprintw(win, 4, 40, "Azim : %3ld degrees.", (long) floor(u + 0.5)); mvwprintw(win, 5, 40, "F-hops: %2.0f", n); sunup(xr); /* calculate local sunup and down at destination lattitude */ /* transform to UTC based on longitude from country description */ td = (yr * 4) / 60 ; /* 4 degree/min */ sunrise += td; sundown += td; if (sunrise >= 24.0) sunrise -= 24.0; else if (sunrise <= 0.0) sunrise += 24.0; if (sundown >= 24.0) sundown -= 24.0; else if (sundown <= 0.0) sundown += 24.0; su = (int) (sunrise); sd = (int) (sundown); su_min = (int) ((sunrise - su) * 60); sd_min = (int) ((sundown - sd) * 60); mvwprintw(win, 3, 0, time_buf); mvwprintw(win, 7, 40, "sun : %02d:%02d-%02d:%02d UTC", su, su_min, sd, sd_min); lastwwv[75] = '\0'; /* cut the bell chars */ if ((strlen(lastwwv) >= 28) && (r != 0)) mvwprintw(win, 10, 40, "Condx: %s", lastwwv + 26); /* print WWV info */ q = 34.0; row = 4; while (q >= 2.0) { if ((row == 7) || (row == 10) || (row == 14) || (row == 17)) { mvwprintw(win, row, 0, "|_________________________|%2.0f", q); } else mvwprintw(win, row, 0, "| |%2.0f", q); /* 25 spaces */ q -= 2.0; row++; } mvwprintw(win, 20, 0, "---------------------------"); /* 27 dashes */ mvwprintw(win, 21, 0, " 0 2 4 6 8 10 14 18 22 H (UTC)"); mvwprintw(win, 4, 30, "MHz"); refreshp(); for (t = 1; t <= 24; t++) { ab = 0.0; k = 0.5; interlat(); mini_f2(); mf = ff; k = n - 0.5; interlat(); mini_f2(); if (ff < mf) mf = ff; iv = (int) floor(mf / 2.0 + 0.5); ve = 21 - (long) floor(mf / 2.0 + 0.5); ho = t + 1; if (ve < 4) ve = 4; mvwprintw(win, (int) ve, (int) ho, "+"); while (k <= n - 0.25) { interlat(); e_layer(); ab += ls; k += 0.5; } ve = 20 - (long) floor(ab + 0.5); if (ve < 4) ve = 4; if (ve > 20) ve = 20; mvwprintw(win, (int) ve, (int) ho, "-"); } mvwprintw(win, 23, 0, " --- Press a key to continue --- "); refreshp(); key = getch(); hide_panel(pan); del_panel(pan); delwin(win); return (0); } tlf_1.1.5/src/writeparas.c0000664000175000017500000000746312072353226013667 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Write parameter file to disk * *--------------------------------------------------------------*/ #include "writeparas.h" int writeparas(void) { extern char call[]; extern char message[15][80]; extern char headerline[]; extern char logfile[]; extern char whichcontest[]; extern int shortqsonr; extern char para_word[]; extern int cluster; extern int searchflg; extern int demode; extern int contest; extern int announcefilter; extern int showscore_flag; extern int cqdelay; extern int speed; extern int trxmode; extern int stop_backgrnd_process; FILE *fp; int i; stop_backgrnd_process = 1; sleep(1); if (strlen(call) <= 3) { mvprintw(24, 0, "Cannot write parameters file: data corrupt... "); refreshp(); sleep(1); return (-1); } if ((fp = fopen(".paras", "w")) == NULL) { mvprintw(24, 0, "writeparas.c: Error opening file.\n"); refreshp(); sleep(1); endwin(); exit(1); } fputs("# Call ----------------------------------\n", fp); fputs(call, fp); fputs("# Messages F1...F12 ---------------------\n", fp); for (i = 0; i <= 13; i++) { if (i == 12) fputs("# TU message S&P mode---------------------\n", fp); if (i == 13) fputs("# TU message CQ mode---------------------\n", fp); fputs(message[i], fp); } fputs("# Info for top status line----------------\n", fp); fputs(headerline, fp); fputs("# Logfile--------------------\n", fp); fputs(logfile, fp); fputs("\n", fp); fputs("# Contest--------------------\n", fp); fputs(whichcontest, fp); fputs("\n", fp); fputs("# Parameters--don't change----\n", fp); if (shortqsonr == 1) para_word[0] = 'S'; /* short */ else para_word[0] = 'L'; /* long */ if (cluster == 0) para_word[1] = 'O'; /* OFF */ else if (cluster == 1) para_word[1] = 'M'; /* MAP */ else if (cluster == 2) para_word[1] = 'S'; /* SPOTS */ else if (cluster == 3) para_word[1] = 'A'; /* All */ if (searchflg == 1) para_word[2] = 'D'; /* DISPLAY */ else para_word[2] = 'N'; /* NO DISPLAY */ if (demode == 1) para_word[3] = 'D'; /* DE mode on */ else para_word[3] = 'N'; /* DE mode off */ if (contest == 1) para_word[4] = 'C'; /* contest mode */ else para_word[4] = 'G'; /* general qso mode */ if (announcefilter == 1) para_word[5] = 'F'; /* filter on */ else para_word[5] = 'N'; /* off */ if (showscore_flag == 0) para_word[6] = 'N'; /* No score window */ else para_word[6] = 'S'; /* show score window */ para_word[7] = 48 + speed; if (cqdelay > 0 && cqdelay < 23) para_word[8] = 48 + cqdelay; if (trxmode == CWMODE) /* use fifo for cw output */ para_word[9] = 'C'; else para_word[9] = 'P'; para_word[10] = '\n'; para_word[11] = '\0'; fputs(para_word, fp); fclose(fp); stop_backgrnd_process = 0; return (0); } tlf_1.1.5/src/onechar.c0000664000175000017500000000726312072353226013123 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Onechar handles keyboard input and takes care of * escape sequences *--------------------------------------------------------------*/ #include "onechar.h" int onechar(void) { extern int use_xterm; int x = 0; int trash = 0; x = getch(); if (x == 8) x = 127; /* replace Ctrl-H bei Backspace */ if (x == 27) { nodelay(stdscr, TRUE); x = getch(); if (x != 91) { switch (x) { case 79: x = getch(); if (x >= 80 && x <= 84) x += 49; break; case 32 ... 57: // alt-space to alt-9, 160 - 186 case 97 ... 122: // alt-a to alt-z, 225 - 250 x += 128; break; case 65 ... 78: // alt-A to alt-Z, 225 - 250 case 80 ... 90: // alt-A to alt-Z, 225 - 250 x += 160; break; default:{ x = 27; stoptx(); } } nodelay(stdscr, FALSE); } else { nodelay(stdscr, FALSE); x = getch(); /* remove '91 */ switch (x) { case 49: { x = getch(); if (x == 126) { x = 158; /* home */ break; } else { x = x + 79; if (use_xterm == 1 && x <= 132) x++; trash = getch(); break; /* F6 F7 F8, 134 135 136 */ } } case 50: { x = getch(); if (x == 126) { x = 160; /* insert */ break; } else { x = x + 89; trash = getch(); break; /* F9 - SF4, 137, 138, 140, 141; 142, 143, 145, 146 */ } } case 51: { x = getch(); if (x == 126) { x = 161; /* delete */ break; } else { x = x + 98; trash = getch(); break; /* SF5 - SF8, 147, 148, 149, 150 */ } } case 52: /* end */ { x = 159; trash = getch(); break; } case 53: /* pgup */ { x = 156; trash = getch(); if (use_xterm == 0) { if (trash == 94) x = x + 256; // 412, ctrl-pgup } else { if (trash == 59) { x = x + 256; trash = getch(); trash = getch(); } } break; } case 54: /* pgdwn */ { x = 157; trash = getch(); if (use_xterm == 0) { if (trash == 94) x = x + 256; // 413, ctrl-pgup } else { if (trash == 59) { x = x + 256; trash = getch(); trash = getch(); } } break; } case 65: { x = 152; /* up */ break; } case 66: { x = 153; /* dwn */ break; } case 67: { x = 154; /* right */ break; } case 68: { x = 155; /* left */ break; } case 91: { if (use_xterm == 0) { x = getch(); if (x >= 65 && x <= 69) { /* F1 - F5, 129 - 134 */ x = x + 64; break; } } } default: { x = x; } } // end switch } // end else } // end if x=27 return (x); } tlf_1.1.5/src/lancode.c0000664000175000017500000002002712072353226013102 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" #include "lancode.h" int lan_socket_descriptor; struct sockaddr_in lan_sin; int lan_bind_rc, lan_close_rc; ssize_t lan_recv_rc; long lan_save_file_flags; char lan_recv_message[256]; char lan_message[256]; char lan_logline[256]; unsigned int lan_sin_len; //-------------------------------------- int bc_socket_descriptor[MAXNODES]; ssize_t bc_sendto_rc; int bc_close_rc; int cl_send_inhibit = 0; char lanbuffer[255]; struct sockaddr_in bc_address[MAXNODES]; struct hostent *bc_hostbyname[MAXNODES]; char bc_hostaddress[MAXNODES][16]; char sendbuffer[256]; int nodes = 0; int node; int send_error_limit[MAXNODES]; //-------------------------------------- int lan_port = 6788; int lan_active = 0; char thisnode; int send_error[MAXNODES]; int lan_mutex = 0; int send_packets[MAXNODES]; int recv_error; int recv_packets; int buflen; char talkarray[5][62]; float node_frequencies[MAXNODES]; int lanqsos; char lastqsonr[5]; int highqsonr; int landebug = 0; long lantime; long timecorr; int time_master; //---------------------end lan globals -------------- int lanrecv_init(void) { if (lan_active == 0) return (1); bzero(&lan_sin, sizeof(lan_sin)); lan_sin.sin_family = AF_INET; lan_sin.sin_addr.s_addr = htonl(INADDR_ANY); lan_sin.sin_port = htons(lan_port); lan_sin_len = sizeof(lan_sin); lan_socket_descriptor = socket(AF_INET, SOCK_DGRAM, 0); if (lan_socket_descriptor == -1) { syslog(LOG_ERR, "%s\n", "LAN: socket"); return (-1); } lan_bind_rc = bind(lan_socket_descriptor, (struct sockaddr *) &lan_sin, sizeof(lan_sin)); if (lan_bind_rc == -1) { syslog(LOG_ERR, "%s\n", "LAN: bind"); return (-2); } lan_save_file_flags = fcntl(lan_socket_descriptor, F_GETFL); lan_save_file_flags |= O_NONBLOCK; if (fcntl(lan_socket_descriptor, F_SETFL, lan_save_file_flags) == -1) { syslog(LOG_ERR, "%s\n", "trying non-blocking"); return (-3); } return (0); } int lan_recv_close(void) { if (lan_active == 0) return (-1); lan_close_rc = close(lan_socket_descriptor); if (lan_close_rc == -1) { syslog(LOG_ERR, "%s\n", "LAN: close call failed"); return (errno); } return (0); } int lan_recv(void) { if (lan_active == 0) return (-1); lan_recv_message[0] = '\0'; lan_recv_rc = recvfrom(lan_socket_descriptor, lan_recv_message, sizeof(lan_recv_message), 0, (struct sockaddr *) &lan_sin, &lan_sin_len); if (lan_recv_rc == -1 && errno != EAGAIN) { recv_error++; return (errno); } else if (lan_recv_rc == 0 || errno == EAGAIN) { /* no data */ errno = 0; /* clear the error */ } errno = 0; /* clear the error */ if (lan_recv_message[1] == CLUSTERMSG) cl_send_inhibit = 1; // this node does not send cluster info if (lan_recv_rc > 0) recv_packets++; strcpy(lan_message, lan_recv_message); if (lan_recv_rc > buflen) buflen = lan_recv_rc; return (0); } // ----------------send routines -------------------------- int lan_send_init(void) { if (lan_active == 0) return (1); for (node = 0; node < nodes; node++) { bc_hostbyname[node] = gethostbyname(bc_hostaddress[node]); if (bc_hostbyname[node] == NULL) { syslog(LOG_ERR, "%s\n", "LAN: gethostbyname failed"); return (-1); } bzero(&bc_address[node], sizeof(bc_address[node])); /* empty data structure */ bc_address[node].sin_family = AF_INET; memcpy(&bc_address[node].sin_addr.s_addr, bc_hostbyname[node]->h_addr, sizeof(bc_address[node].sin_addr.s_addr)); bc_address[node].sin_port = htons(lan_port); bc_socket_descriptor[node] = socket(AF_INET, SOCK_DGRAM, 0); if (bc_socket_descriptor[node] == -1) { syslog(LOG_ERR, "%s\n", "LAN: socket call failed"); return (-1); } } return (0); } int lan_send_close(void) { if (lan_active == 0) return (-1); for (node = 0; node < nodes; node++) { bc_close_rc = close(bc_socket_descriptor[node]); if (bc_close_rc == -1) { syslog(LOG_ERR, "%s\n", "LAN: close call failed"); return (-1); } } return (0); } int lan_send(char *lanbuffer) { if (lan_active == 0) return (-1); for (node = 0; node < nodes; node++) { if (lanbuffer[0] != '\0') { bc_sendto_rc = sendto(bc_socket_descriptor[node], lanbuffer, 256, 0, (struct sockaddr *) &bc_address[node], sizeof(bc_address[node])); } if (bc_sendto_rc == -1) { if (send_error[node] >= (send_error_limit[node] + 10)) { mvprintw(24, 0, "LAN: send problem...!"); refreshp(); send_error_limit[node] += 10; } else send_error[node]++; } else send_packets[node]++; } lanbuffer[0] = '\0'; return (0); } /* ----------------- send lan message ----------*/ int send_lan_message(int opcode, char *message) { char sendbuffer[84]; sendbuffer[0] = thisnode; sendbuffer[1] = opcode; sendbuffer[2] = '\0'; strncat(sendbuffer, message, 80); if (opcode == CLUSTERMSG) { if (cl_send_inhibit == 0) { strcat(sendbuffer, "\n"); lan_send(sendbuffer); } } if (opcode == LOGENTRY) { sendbuffer[82] = '\0'; lan_send(sendbuffer); } if (opcode == TLFSPOT) { sendbuffer[82] = '\0'; lan_send(sendbuffer); } if (opcode == TLFMSG) { sendbuffer[82] = '\0'; lan_send(sendbuffer); } if (opcode == FREQMSG) { sendbuffer[10] = '\0'; lan_send(sendbuffer); } if (opcode == INCQSONUM) { strcat(sendbuffer, "\n"); lan_send(sendbuffer); } if (opcode == TIMESYNC) { sendbuffer[14] = '\0'; lan_send(sendbuffer); } return (0); } /* ----------------- send talk message ----------*/ int talk(void) { char talkline[61] = ""; mvprintw(24, 0, " "); mvprintw(24, 0, "T>"); refreshp(); echo(); getnstr(talkline, 60); noecho(); strcat(talkline, "\n"); send_lan_message(TLFMSG, talkline); talkline[0] = '\0'; attron(COLOR_PAIR(COLOR_GREEN)); mvprintw(24, 0, " "); refreshp(); return (0); } /* ----------------- send freq. message ----------*/ int send_freq(float freq) { extern int bandinx; extern int trx_control; char fbuffer[8]; if (trx_control == 1) { sprintf(fbuffer, "%7.1f", freq); } else { switch (bandinx) { case 0: sprintf(fbuffer, " 160.0"); break; case 1: sprintf(fbuffer, " 80.0"); break; case 2: sprintf(fbuffer, " 40.0"); break; case 3: sprintf(fbuffer, " 30.0"); break; case 4: sprintf(fbuffer, " 20.0"); break; case 5: sprintf(fbuffer, " 17.0"); break; case 6: sprintf(fbuffer, " 15.0"); break; case 7: sprintf(fbuffer, " 12.0"); break; case 8: sprintf(fbuffer, " 10.0"); break; default: sprintf(fbuffer, " "); } } send_lan_message(FREQMSG, fbuffer); return (0); } /* ----------------- send time message ----------*/ int send_time(void) { extern int timeoffset; long now; char timebuffer[14]; now = (long) (time(0) + (timeoffset * 3600)); sprintf(timebuffer, "%ld", now); strcat(timebuffer, " "); send_lan_message(TIMESYNC, timebuffer); return (0); } tlf_1.1.5/src/speed_conversion.h0000664000175000017500000000157612072353226015057 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ int speed_conversion(int cwspeed); tlf_1.1.5/src/write_keyer.c0000664000175000017500000000570312072353226014032 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003-2004-2005 Rein Couperus * * 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 Library 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. */ #include "write_keyer.h" #include #include "clear_display.h" #include "cwkeyer.h" #include #include "netkeyer.h" int write_keyer(void) { extern char wkeyerbuffer[]; extern int trxmode; extern int keyerport; extern int data_ready; extern char controllerport[]; extern int native_rig_fd; extern char speedstr[]; extern int speed; extern char rttyoutput[]; FILE *bfp = NULL; int i, rc; char send_orion[3]; char buff[8]; int realspeed = 32; char outstring[120] = ""; if (trxmode != CWMODE && trxmode != DIGIMODE) return (1); if (data_ready == 1) { if (keyerport == NET_KEYER) { netkeyer(K_MESSAGE, wkeyerbuffer); wkeyerbuffer[0] = '\0'; data_ready = 0; } else if (keyerport == MFJ1278_KEYER) { if ((bfp = fopen(controllerport, "a")) == NULL) { mvprintw(24, 0, "1278 not active. Switching to SSB mode."); sleep(1); trxmode = SSBMODE; clear_display(); } else { fputs(wkeyerbuffer, bfp); wkeyerbuffer[0] = '\0'; data_ready = 0; fclose(bfp); } } else if (keyerport == GMFSK) { if (strlen(rttyoutput) < 2) { mvprintw(24, 0, "No modem file specified!"); } sprintf(outstring, "echo -n \"\n%s\" >> %s", wkeyerbuffer, rttyoutput); rc = system(outstring); wkeyerbuffer[0] = '\0'; data_ready = 0; } else if (keyerport == ORION_KEYER && strlen(wkeyerbuffer) > 0) { if (native_rig_fd == 0) { mvprintw(24, 0, "Orion keyer not open."); sleep(1); clear_display(); } else { strncpy(buff, (speedstr + (speed * 2)), 2); buff[2] = '\0'; realspeed = atoi(buff); for (i = 0; i < strlen(wkeyerbuffer); i++) { if (strlen(wkeyerbuffer) == 0) break; if (wkeyerbuffer[i] != ' ') { send_orion[0] = '/'; send_orion[1] = wkeyerbuffer[i]; send_orion[2] = '\015'; rc = write(native_rig_fd, send_orion, 3); usleep(cw_char_length(send_orion + 1) * (int) (1200000.0 / realspeed)); } else usleep(6 * (int) (1200000.0 / realspeed)); } wkeyerbuffer[0] = '\0'; data_ready = 0; } } } return (0); } tlf_1.1.5/src/lancode.h0000664000175000017500000000301512072353226013105 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #define MAXNODES 8 #define LOGENTRY 49 #define CLUSTERMSG 50 #define TLFSPOT 51 #define TLFMSG 52 #define FREQMSG 53 #define INCQSONUM 54 #define TIMESYNC 55 int lanrecv_init(void); int lan_recv_close(void); int lan_recv(void); int lan_send_init (void); int lan_send_close(void); int lan_send(char *buffer) ; int send_lan_message(int opcode , char *message); int talk(void); int send_freq(float freq); int send_time(void) ; tlf_1.1.5/src/main.c0000664000175000017500000005106712072353226012431 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2010-2011 Thomas Beierlein * * 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 Library 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. */ #define NDEBUG #define NEWCODE = 1 #include "tlf.h" #include "globalvars.h" #include "main.h" #include "searchlog.h" #include #include #include #ifdef HAVE_CONFIG_H #include #endif SCREEN *mainscreen; SCREEN *packetscreen; WINDOW *sclwin, *entwin; extern int lan_active; int prsock = 0; char pr_hostaddress[48] = "131.155.192.179"; char *config_file = NULL; int portnum = 0; struct tln_logline *loghead = NULL; struct tln_logline *logtail = NULL; struct tln_logline *viewing = NULL; int use_rxvt = 0; int use_xterm = 0; int tlfcolors[8][2] = { {COLOR_BLACK, COLOR_WHITE}, {COLOR_GREEN, COLOR_YELLOW}, {COLOR_WHITE, COLOR_RED}, {COLOR_CYAN, COLOR_WHITE}, {COLOR_WHITE, COLOR_BLACK}, {COLOR_MAGENTA, COLOR_WHITE}, {COLOR_BLUE, COLOR_YELLOW}, {COLOR_WHITE, COLOR_BLACK} }; int debugflag = 0; int editor = EDITOR_JOE; char rttyoutput[120]; int use_vk = 0; int tune_val = 0; int use_bandoutput = 0; int no_arrows = 0; int bandindexarray[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int cqww = 0; int cqwwm2 = 0; int wpx = 0; int dxped = 0; int sprint = 0; int arrldx_usa = 0; int arrl_fd = 0; int arrlss = 0; int pacc_pa_flg = 0; int universal = 0; int addcallarea; int pfxmult = 0; int exc_cont = 0; int manise80; int other_flg; int one_point = 0; int two_point = 0; int three_point = 0; int two_eu_three_dx_points = 0; int ssbpoints; int cwpoints; int lowband_point_mult = 0; int sc_sidetone; char sc_volume[4] = ""; /* LZ3NY mods */ char contest_name[50]; int countrylist_points = -1; int my_country_points = -1; int my_cont_points = -1; int dx_cont_points = -1; char mit_multiplier_list[255][6]; int countrylist_only = 0; int mult_side = 0; char *mit_mult_array; int in_country_list; /* end LZ3NY mods */ int portable_x2 = 0; int recall_mult = 0; int exchange_serial = 0; int wysiwyg_once = 0; int wysiwyg_multi = 0; int country_mult = 0; int fixedmult = 0; int sectn_mult = 0; int dx_arrlsections = 0; int serial_section_mult = 0; int serial_grid4_mult = 0; int qso_once = 0; int addcallarea_once = 0; int noleadingzeros; int ctcomp = 0; int isdupe = 0; // 0 if nodupe -- for auto qso b4 (LZ3NY) int nob4 = 0; // allow auto b4 int ignoredupe = 0; int noautocq = 0; int emptydir = 0; int verbose = 0; int pacc_qsos[10][10]; int ve_cty; int w_cty; int zl_cty; int ja_cty; int py_cty; int ce_cty; int lu_cty; int vk_cty; int zs_cty; int ua9_cty; char tlfversion[80] = ""; char testbuffer[120] = ""; char multsfile[80] = ""; /* name of file with a list of allowed multipliers */ char exchange_list[40] = ""; int timeoffset = 0; int multi = 0; /* 0 = SO , 1 = MOST, 2 = MM */ int trxmode = CWMODE; int mixedmode = 0; char his_rst[4] = "599"; char my_rst[4] = "599"; int mults_per_band = 1; /* mults count per band */ int shortqsonr = LONGCW; /* 1 = short cw char in exchange */ int cluster = NOCLUSTER; /* 0 = OFF, 1 = FOLLOW, 2 = spots 3 = all */ int clusterlog = 0; /* clusterlog on/off */ int searchflg = 0; /* 1 = display search window */ int show_time = 0; int cqmode = CQ; /* 1 = CQ 0 = S&P */ int demode = 0; /* 1 = send DE before s&p call */ int contest = 0; /* 0 = General, 1 = contest */ int announcefilter = FILTER_ANN; /* filter cluster announcements */ int showscore_flag = 0; /* show score window */ int change_rst = 0; char exchange[40]; char sp_return[80] = " \n"; char cq_return[80] = " \n"; char whichcontest[40] = "qso"; int defer_store = 0; char buffer[162]; char call[20]; char logfile[120] = "general.log"; char synclogfile[120]; char markerfile[120] = ""; int xplanet = 0; char message[25][80] = { "TEST %\n", "@ DE %\n", "@ [\n", "TU 73\n", " @\n", "%\n", "@ SRI QSO B4 GL\n", "AGN\n", " ?\n", " QRZ?\n", " PSE K\n", "TEST % %\n", "@ [\n", "TU %\n", "", "", "", "", "", "", "", "", "", "", "" }; char ph_message[14][80] = { "", "", "", "", "", "", "", "", "", "", "", "" }; // voice keyer file names char hiscall[20]; /**< call of other station */ char hiscall_sent[20] = ""; /**< part which was sent during early start */ int cwstart = 0; /**< number characters after which sending call started automatically, 0 - off */ int sending_call = 0; int early_started = 0; /**< 1 if sending call started early, strlen(hiscall)>cwstart or 'space' */ char lastcall[20]; char lastcomment[40]; char qsonrstr[5] = "0001"; char band[9][4] = { "160", " 80", " 40", " 30", " 20", " 17", " 15", " 12", " 10" }; char comment[80]; char mode[20] = "Log "; char cqzone[3] = ""; char mycqzone[3] = ""; char ituzone[3] = ""; char continent[3] = ""; char mycontinent[3] = ""; char pxstr[11] = ""; int bandindex = 0; int totalmults = 0; int totalcountries = 0; int totalzones = 0; int secs = 0; int countrynr; int mycountrynr = 215; int points = 0; int total = 0; int band_score[9]; int dupe = 0; int callfound = 0; int partials = 0; /**< show partial calls */ int use_part = 0; /**< if 1 use automatically found partial call */ int block_part = 0; /**< if 1 block the call autocompletion for these QSO */ char para_word[80] = "LODNCFS:3C\n"; /* longcw, cluster, search, DE, contest, filter, speed, delay */ char lastmsg[1000] = ""; int scale_values[20] = { 40, 38, 36, 34, 32, 30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2 }; char sc_device[40] = "/dev/dsp"; /*-------------------------------------keyer------------------------------*/ int keyerport = NO_KEYER; int speed = 10; int txdelay = 0; int weight = 0; char weightbuf[4]; char speedstr[50] = CW_SPEEDS; char tonestr[5] = "600"; int cqdelay = 8; char wkeyerbuffer[400]; int keyspeed = 5; int cfd; /* cwkeyer file descriptor */ int data_ready = 0; char keyer_device[10] = ""; // ttyS0, ttyS1, lp0-2 int k_tune; int k_pin14; int k_ptt; char controllerport[80] = "/dev/ttyS0"; int miniterm = 0; /* is miniterm for digimode active? */ char modem_mode[8]; int commentfield = 0; /* 1 if we are in comment/excahnge input */ /*-------------------------------------packet-------------------------------*/ char spot_ptr[MAX_SPOTS][82]; /* Array of cluster spot lines */ int spotarray[MAX_SPOTS]; /* Array of indices into spot_ptr */ int ptr; /* Anzahl Lines in ispot_ptr array */ long int *wwv_ptr; int packetinterface = 0; int fdSertnc = 0; int fdFIFO = 0; int tncport = 1; char tncportname[40]; char rigconf[80]; int in_packetclient; int tnc_serial_rate = 2400; char clusterlogin[80] = ""; /*-------------------------------------rigctl-------------------------------*/ #ifdef HAVE_LIBHAMLIB rig_model_t myrig_model = 351; RIG *my_rig; /* handle to rig (instance) */ freq_t rigfreq; /* input frequency */ freq_t outfreq; /* output to rig */ rmode_t rmode; /* radio mode of operation */ pbwidth_t width; vfo_t vfo; /* vfo selection */ port_t myport; #else float rigfreq; /* input frequency */ int outfreq; /* output to rig */ #endif int ssb_bandwidth = 3000; int cw_bandwidth = 0; int serial_rate = 2400; int rig_port = 0; char rigportname[40]; int native_rig_fd = 0; int rignumber = 0; int rig_comm_error = 0; int rig_comm_success = 0; /*---------------------------------simulator-------------------------------*/ int simulator = 0; int simulator_mode = 0; int simulator_seed = 8327; long system_secs; char tonecpy[5]; char simulator_tone[5]; /*-------------------------------the log lines-----------------------------*/ char qsos[MAX_QSOS][82]; int nr_qsos = 0; /*------------------------------dupe array---------------------------------*/ int callarray_nr = 0; /* number of calls in callarray */ char callarray[MAX_CALLS][20]; /* internal log representation for dupes */ char call_exchange[MAX_CALLS][12]; int call_band[MAX_CALLS]; int call_country[MAX_CALLS]; /*----------------------statisticof worked countries,zones ... -----------*/ int countries[MAX_DATALINES]; /* per country bit fieldwith worked bands set */ int zones[41]; /* same for cqzones; using 1 - 40 */ char mults[MAX_MULTS][12]; int mult_bands[MAX_MULTS]; int multarray_nr = 0; GPtrArray *mults_possible; int multlist = 0; char callmasterarray[MAX_CALLMASTER][14]; long int nr_callmastercalls; char callmaster_result[50][9]; int callareas[20]; int multscore[NBANDS]; struct ie_list *main_ie_list; /* head of initial exchange list */ int zonescore[6]; int countryscore[6]; int zonedisplay = 0; int addzone = 0; /* flag for new zone */ int addcty = 0; /* flag for new country */ int shownewmult = -1; int minute_timer = 0; int bandinx = BANDINDEX_40; /* start with 40m */ int qsonum = 1; int bufloc = 0; int ymax, xmax; /* screen size */ char lastwwv[120] = ""; int nroflines; pid_t pid; struct tm *time_ptr; char qrg_string[8]; float freq; float mem; int logfrequency = 0; int rit; int trx_control = 0; int showfreq = 0; float bandfrequency[9] = { 1830.0, 3525.0, 7010.0, 10105.0, 14025.0, 18070.0, 21025.0, 24900.0, 28025.0 }; char spot_target[8][40]; char headerline[81] = " 1=CQ 2=DE 3=RST 4=73 5=HIS 6=MY 7=B4 8=AGN 9=? \n"; char backgrnd_str[81] = " "; char terminal1[88] = ""; char terminal2[88] = ""; char terminal3[88] = ""; char terminal4[88] = ""; char termbuf[88] = ""; int termbufcount = 0; char C_QTH_Lat[7] = "51"; char C_QTH_Long[8] = "-5"; char C_DEST_Lat[7] = "51"; char C_DEST_Long[8] = "1"; double yt = -4.9; /* for muf calculation */ double xt = 52.4; double yr = 5.0; double xr = 50.0; double r = 50; int m = 1; char hiscountry[40]; double range, bearing; double sunrise; double sundown; int this_second; int stop_backgrnd_process = 1; /* dont start until we know what we are doing */ int wazmult = 0; /* to add the ability of WAZ zones to be multiplier */ int itumult = 0; /* to add the ability of ITU zones to be multiplier */ char itustr[3]; int nopacket = 0; /* set if tlf is called with '-n' */ pthread_mutex_t panel_mutex = PTHREAD_MUTEX_INITIALIZER; /** fake old refresh code to use update logic for panels */ void refreshp() { pthread_mutex_lock( &panel_mutex ); update_panels(); doupdate(); pthread_mutex_unlock( &panel_mutex ); } /* ------------------------------------------------------------------------*/ /* Main loop of the program */ /* ------------------------------------------------------------------------*/ int main(int argc, char *argv[]) { int j; pthread_t thrd1, thrd2; int ret; int retval; char keyerbuff[3]; int status; while ((argc > 1) && (argv[1][0] == '-')) { switch (argv[1][1]) { /* verbose option */ case 'f': if (strlen(argv[1] + 2) > 0) { if ((*(argv[1] + 2) == '~') && (*(argv[1] + 3) == '/')) { /* tilde expansion */ config_file = g_strconcat( g_get_home_dir(), argv[1] + 3, NULL); } else { config_file = g_strdup(argv[1] + 2); } } break; case 's': if (strlen(argv[1] + 2) > 0) strcpy(synclogfile, argv[1] + 2); break; case 'd': // debug rigctl debugflag = 1; break; case 'v': // verbose startup verbose = 1; break; case 'V': // output version printf("Version: tlf-%s\n", VERSION); exit(0); break; case 'n': // output version nopacket = 1; break; default: printf("Use: tlf [-v] Verbose\n"); printf(" [-V] Version\n"); printf(" [-f] Configuration file\n"); printf(" [-d] Debug mode\n"); printf(" [-h] This message\n"); printf(" [-n] Start without cluster hookup\n"); exit(0); break; } --argc; ++argv; } buffer[0] = '\0'; buffer[79] = '\0'; bufloc = 0; strcat(logline0, backgrnd_str); strcat(logline1, backgrnd_str); strcat(logline2, backgrnd_str); strcat(logline3, backgrnd_str); strcat(logline4, backgrnd_str); strcat(terminal1, backgrnd_str); strcat(terminal2, backgrnd_str); strcat(terminal3, backgrnd_str); strcat(terminal4, backgrnd_str); termbuf[0] = '\0'; hiscall[0] = '\0'; /* getting users terminal string and (if RXVT) setting rxvt colours on it */ /* LZ3NY hack :) */ if (strcasecmp(getenv("TERM"), "rxvt") == 0) { use_rxvt = 1; printf("terminal is:%s", getenv("TERM")); } else if (strcasecmp(getenv("TERM"), "xterm") == 0) { use_xterm = 1; use_rxvt = 1; } else putenv("TERM=rxvt"); /*or going to native console linux driver */ if ((mainscreen = newterm(NULL, stdout, stdin)) == NULL) { /* activate ncurses terminal control */ perror("initscr"); printf ("\n Sorry, wrong terminal type !!!!! \nTry a linux text terminal or set TERM=linux !!!"); sleep(5); exit(EXIT_FAILURE); } //keypad(stdscr,TRUE); InitSearchPanel(); /* at least one panel has to be defined for refreshp() to work */ getmaxyx(stdscr, ymax, xmax); noecho(); crmode(); strcpy(sp_return, message[12]); strcpy(cq_return, message[13]); refreshp(); if (has_colors()) { if (start_color() == ERR) { perror("start_color"); endwin(); printf ("\n Sorry, wrong terminal type !!!!! \n\nTry a linux text terminal or set TERM=linux !!!"); sleep(5); exit(EXIT_FAILURE); } // use linux console colours init_pair(COLOR_BLACK, tlfcolors[0][0], tlfcolors[0][1]); init_pair(COLOR_GREEN, tlfcolors[1][0], tlfcolors[1][1]); init_pair(COLOR_RED, tlfcolors[2][0], tlfcolors[2][1]); init_pair(COLOR_CYAN, tlfcolors[3][0], tlfcolors[3][1]); init_pair(COLOR_WHITE, tlfcolors[4][0], tlfcolors[4][1]); init_pair(COLOR_MAGENTA, tlfcolors[5][0], tlfcolors[5][1]); init_pair(COLOR_BLUE, tlfcolors[6][0], tlfcolors[6][1]); init_pair(COLOR_YELLOW, tlfcolors[7][0], tlfcolors[7][1]); sprintf(tlfversion, " Welcome to tlf-%s by PA0R!!" , VERSION); showmsg(tlfversion); showmsg(""); showmsg("reading country data"); readctydata(); /* read ctydb.dat */ showmsg("reading configuration data"); status = read_logcfg(); /* read the configuration file */ status |= read_rules(); /* read the additional contest rules in "rules/contestname" LZ3NY */ if (status != PARSE_OK) { showmsg( "Problems in logcfg.dat or rule file detected! Continue Y/(N)?"); if (toupper( getchar() ) != 'Y') { endwin(); exit(1); } } checklogfile(); /* make sure logfile is there */ // if (strlen(synclogfile) > 0) // synclog(synclogfile); if (*call == '\0') { showmsg ("WARNING: No callsign defined in logcfg.dat! exiting...\n\n\n"); exit(1); } if (use_rxvt == 1) { // use rxvt colours init_pair(COLOR_BLACK, COLOR_BLACK, COLOR_RED); if (use_xterm == 1) { init_pair(COLOR_GREEN, COLOR_GREEN, COLOR_BLUE); init_pair(COLOR_RED, COLOR_WHITE, 8); init_pair(COLOR_CYAN, COLOR_CYAN, COLOR_MAGENTA); } else { init_pair(COLOR_GREEN, COLOR_GREEN, COLOR_YELLOW); init_pair(COLOR_RED, COLOR_WHITE, COLOR_RED); init_pair(COLOR_CYAN, COLOR_CYAN, COLOR_RED); } init_pair(COLOR_WHITE, COLOR_WHITE, COLOR_BLACK); if (use_xterm == 1) { init_pair(COLOR_MAGENTA, COLOR_MAGENTA, COLOR_WHITE); init_pair(COLOR_BLUE, COLOR_BLUE, COLOR_WHITE); } else { init_pair(COLOR_MAGENTA, COLOR_MAGENTA, COLOR_RED); init_pair(COLOR_BLUE, COLOR_BLUE, COLOR_YELLOW); } init_pair(COLOR_YELLOW, COLOR_CYAN, COLOR_YELLOW); } else { // use linux console colours redefined.... init_pair(COLOR_BLACK, tlfcolors[0][0], tlfcolors[0][1]); init_pair(COLOR_GREEN, tlfcolors[1][0], tlfcolors[1][1]); init_pair(COLOR_RED, tlfcolors[2][0], tlfcolors[2][1]); init_pair(COLOR_CYAN, tlfcolors[3][0], tlfcolors[3][1]); init_pair(COLOR_WHITE, tlfcolors[4][0], tlfcolors[4][1]); init_pair(COLOR_MAGENTA, tlfcolors[5][0], tlfcolors[5][1]); init_pair(COLOR_BLUE, tlfcolors[6][0], tlfcolors[6][1]); init_pair(COLOR_YELLOW, tlfcolors[7][0], tlfcolors[7][1]); } mults_possible = g_ptr_array_new(); if (multlist == 1) { showmsg("reading multiplier data "); load_multipliers(); } attron(COLOR_PAIR(COLOR_BLACK)); showmsg("reading callmaster data"); nr_callmastercalls = load_callmaster(); if (*exchange_list != '\0') { // read initial exchange file main_ie_list = make_ie_list(exchange_list); if (main_ie_list == NULL) { showmsg( "Problems in initial exchange file detected! Continue Y/(N)?"); if (toupper( getchar() ) != 'Y') { endwin(); exit(1); } else { showmsg( "Initial exchange data not loaded! Continuing ..."); sleep(2); } } } #ifdef HAVE_LIBHAMLIB // Code for hamlib interface showmsg("HAMLIB defined"); if (trx_control != 0) { shownr("Rignumber is", (int) myrig_model); shownr("Rig speed is", serial_rate); showmsg("Trying to start rig ctrl"); /** \todo fix exclusion of newer hamlib models */ if ((int) myrig_model > 1999) init_native_rig(); else init_tlf_rig(); } #else if (trx_control != 0) { // trx_control = 0; showmsg("No Hamlib library, using native driver"); shownr("Rignumber is", rignumber); shownr("Rig speed is", serial_rate); init_native_rig(); sleep(1); } #endif // end code for hamlib interface if (keyerport == NET_KEYER) { showmsg("Keyer is cwdaemon"); } if (keyerport == MFJ1278_KEYER || keyerport == GMFSK) { init_controller(); } if (lan_active == 1) { retval = lanrecv_init(); if (retval < 0) /* set up the network */ shownr("LAN receive init failed", retval); else showmsg("LAN receive initialized"); if (lan_send_init() < 0) showmsg("LAN send init failed"); else showmsg("LAN send initialized"); } checkparameters(); /* check .paras file */ clear(); mvprintw(0, 0, " Welcome to tlf-%s by PA0R!!\n\n" , VERSION); refreshp(); getmessages(); /* read .paras file */ if (nopacket == 1) packetinterface = 0; set_term(mainscreen); refreshp(); if ((nopacket == 0) && (packetinterface != 0)) { if (init_packet() == 0) packet(); else cleanup_telnet(); } if (keyerport == NET_KEYER) { if (netkeyer_init() < 0) { mvprintw(24, 0, "Cannot open NET keyer daemon "); refreshp(); sleep(1); } else { netkeyer(K_RESET, "0"); sprintf(weightbuf, "%d", weight); strncpy(keyerbuff, speedstr + (speed * 2), 2); keyerbuff[2] = '\0'; write_tone(); netkeyer(K_SPEED, keyerbuff); // set speed netkeyer(K_WEIGHT, weightbuf); // set weight if (*keyer_device != '\0') netkeyer(K_DEVICE, keyer_device); // set device sprintf(keyerbuff, "%d", txdelay); netkeyer(K_TOD, keyerbuff); // set TOD if (sc_sidetone != 0) // set soundcard output netkeyer(K_SIDETONE, ""); if (*sc_volume != '\0') // set soundcard volume netkeyer(K_STVOLUME, sc_volume); } if (keyerport != NET_KEYER) write_tone(); } getwwv(); /* get the latest wwv info from packet */ scroll_log(); /* read the last 5 log lines and set the qso number */ nr_qsos = readcalls(); /* read the logfile for score and dupe */ clear_display(); /* tidy up the display */ qrb(); attron(COLOR_PAIR(7) | A_STANDOUT); for (j = 13; j <= 23; j++) { /* wipe lower window */ mvprintw(j, 0, backgrnd_str); } bm_init(); /* initialize bandmap */ /* Create the first thread */ ret = pthread_create(&thrd1, NULL, (void *) logit, NULL); if (ret) { perror("pthread_create: logit"); endwin(); exit(EXIT_FAILURE); } /* Create the second thread */ ret = pthread_create(&thrd2, NULL, (void *) background_process, NULL); if (ret) { perror("pthread_create: backgound_process"); endwin(); exit(EXIT_FAILURE); } pthread_join(thrd2, NULL); pthread_join(thrd1, NULL); endwin(); exit(EXIT_SUCCESS); } else { printf("Terminal does not support color\n"); printf("\nTry TERM=linux or use a text console !!\n"); refreshp(); sleep(2); } cleanup_telnet(); if (trxmode == CWMODE && keyerport == NET_KEYER) netkeyer_close(); else close(cfd); /* close keyer */ endwin(); return (0); } tlf_1.1.5/src/prevqso.c0000664000175000017500000000326712072353226013203 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * previous_qsonr * *--------------------------------------------------------------*/ #include "prevqso.h" int prev_qso(void){ extern int qsonum; extern char qsonrstr[]; extern char buffer[]; char nr_buffer[5]; qsonum--; qsonr_to_str(); if (qsonrstr[0] != '0'){ strncpy(nr_buffer, qsonrstr, 4); nr_buffer[4] = '\0'; }else if (qsonrstr[1] != '0'){ strncpy(nr_buffer, qsonrstr+1, 3); nr_buffer[3] = '\0'; }else if (qsonrstr[2] != '0'){ strncpy(nr_buffer, qsonrstr+2, 2); nr_buffer[2] = '\0'; } else { strncpy(nr_buffer, qsonrstr+3, 1); nr_buffer[1] = '\0'; } strcat(buffer, "NR "); strcat(buffer, nr_buffer); strcat(buffer, " "); qsonum++; qsonr_to_str(); sendbuf(); return(0); } tlf_1.1.5/src/addspot.c0000664000175000017500000000401712072353226013134 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2010-2011 Thomas Beierlein * * 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 Library 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. */ /* ------------------------------------------------------------ * * Add spot to bandmap * * *--------------------------------------------------------------*/ #include "addspot.h" int addspot(void) { extern float freq; extern char hiscall[]; extern int trx_control; extern int lanspotflg; extern struct tm *time_ptr; extern char thisnode; char spotline[160]; char frequency[8]; char spottime[6]; if (strlen(hiscall) < 3) return(0); if (trx_control == 0) { attron(COLOR_PAIR(7) | A_STANDOUT); mvprintw(13, 20, "freq.: "); echo(); getnstr(frequency, 7); noecho(); freq = atof(frequency); } sprintf(spotline, "DX de TLF-%c: %9.3f %s", thisnode, freq, hiscall); strcat(spotline, " "); get_time(); strftime(spottime, sizeof(spottime), "%H%MZ", time_ptr); strcpy(spotline + 70, spottime); strcat(spotline, "\n\n"); send_lan_message(TLFSPOT, spotline); lanspotflg = 1; addtext(spotline); lanspotflg = 0; spotline[0] = '\0'; hiscall[0] = '\0'; return (0); } tlf_1.1.5/src/logit.h0000664000175000017500000000223412072353226012620 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" #include "clear_display.h" #include "printcall.h" #include "callinput.h" #include "getexchange.h" #include "sendbuf.h" #include "sendspcall.h" #include "log_to_disk.h" #include "keyer.h" #include "recall_exchange.h" #include "sendqrg.h" #include "lancode.h" int logit(void); void refresh_comment(void); tlf_1.1.5/src/editlog.h0000664000175000017500000000200612072353226013126 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include "clear_display.h" #include "scroll_log.h" int logedit(void); tlf_1.1.5/src/calledit.c0000664000175000017500000001222212072353226013254 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * 2011 Thomas Beierlein 0) b--; } else if (i == 154) { // right if (b < strlen(hiscall) - 1) { b++; } else break; /* stop edit */ } else if (i == 161) { /* delete */ l = strlen(hiscall); for (j = b; j <= l; j++) { hiscall[j] = hiscall[j + 1]; /* move to left incl. \0 */ } strncpy(dupecall, hiscall, 16); /* update cty info */ x = getctydata(dupecall); showinfo(x); if (cnt > 1) searchlog(hiscall); } else if (i == 127) { /* backspace */ if (b > 0) { b--; l = strlen(hiscall); for (j = b; j <= l; j++) { hiscall[j] = hiscall[j + 1]; } strncpy(dupecall, hiscall, 16); /* update cty info */ x = getctydata(dupecall); showinfo(x); if (cnt > 1) searchlog(hiscall); } } else if (i == 160) { /* insert */ if (insertflg == 0) insertflg = 1; else insertflg = 0; } else if (i != 27) { if ((i >= 97) && (i <= 122)) i = i - 32; if (((i >= 65) && (i <= 90)) || ((i >= 47) && (i <= 57))) { if (b <= 12) { strncpy(call1, hiscall, b); } if (b <= 12) { strncpy(call2, hiscall + b, strlen(hiscall) - (b - 1)); } if (strlen(hiscall) + 1 == 12) break; // leave insert mode if (((i >= 65) && (i <= 90)) || ((i >= 47) && (i <= 57))) { call1[b] = i; call1[b + 1] = '\0'; if ((strlen(call1) + strlen(call2)) < 12) { strcat(call1, call2); // if (strlen(call1) + strlen(hiscall) >= 12) break; if (strlen(call1) >= 12) break; strcpy(hiscall, call1); } } if ((b < strlen(hiscall) - 1) && (b <= 12)) b++; else break; strncpy(dupecall, hiscall, 16); /* update cty info */ x = getctydata(dupecall); showinfo(x); searchlog(hiscall); } else if (x != 0) i = 27; } else i = 27; } attroff(A_STANDOUT); attron(COLOR_PAIR(COLOR_GREEN)); mvprintw(12, 29, hiscall); mvprintw(12, 29, " "); refreshp(); attron(A_STANDOUT); searchlog(hiscall); } int insert_char(int curposition) { extern char hiscall[]; char call1[30], call2[10]; int ichr = 0; attroff(A_STANDOUT); attron(COLOR_PAIR(COLOR_GREEN)); call1[0] = '\0'; call2[0] = '\0'; while (ichr != 27) { ichr = onechar(); if ((ichr == 9) || (ichr == '\n') || (ichr == 127)) break; // leave insert mode if ((ichr >= 97) && (ichr <= 122)) ichr = ichr - 32; if (curposition <= 10) { strncpy(call1, hiscall, curposition); } if (curposition <= 10) { strncpy(call2, hiscall + curposition, strlen(hiscall) - (curposition - 1)); } if (strlen(hiscall) + 1 == 13) break; // leave insert mode if (((ichr >= 65) && (ichr <= 90)) || ((ichr >= 47) && (ichr <= 57))) { call1[curposition] = ichr; call1[curposition + 1] = '\0'; if ((strlen(call1) + strlen(call2)) < 12) { strcat(call1, call2); if (strlen(call1) + strlen(hiscall) >= 12) break; strcpy(hiscall, call1); } } else break; attroff(A_STANDOUT); attron(COLOR_PAIR(COLOR_GREEN)); mvprintw(12, 29, hiscall); curposition++; mvprintw(12, 29 + curposition, ""); refreshp(); } ichr = 27; return (ichr); } tlf_1.1.5/src/searchlog.c0000664000175000017500000004506212072353226013452 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ /* ------------------------------------------------------------ * Search log for calls / bands / countries * *--------------------------------------------------------------*/ #include "searchlog.h" #include "dxcc.h" #include #include #ifdef HAVE_CONFIG_H # include #endif PANEL *search_panel; WINDOW *search_win; int initialized = 0; void show_needed_sections(void); void InitSearchPanel() { search_win = newwin( 8, 39, 1, 41 ); search_panel = new_panel( search_win ); hide_panel( search_panel ); } void ShowSearchPanel(void) { if (!initialized) { InitSearchPanel(); initialized = 1; } show_panel( search_panel ); top_panel( search_panel ); } void HideSearchPanel(void) { hide_panel(search_panel); } static char searchresult[MAX_CALLS][82]; static char result[MAX_CALLS][82]; /* DJ1YFK "worked window"-patch */ static char band_yfk[5] = ""; static char testcall_yfk[14] = ""; static char hiscall_yfk[14] = " "; /* */ void searchlog(char *searchstring) { extern int use_rxvt; extern int isdupe; // LZ3NY auto-b4 patch extern int searchflg; extern int dupe; extern char band[9][4]; extern int bandinx; extern int partials; extern int cqww; extern int pacc_pa_flg; extern int pacc_qsos[10][10]; extern int countrynr; extern int contest; extern int wpx; extern int arrlss; extern int zones[41]; extern char pxstr[]; extern int w_cty; extern int ve_cty; extern int ja_cty; extern int zl_cty; extern int vk_cty; extern int ua9_cty; extern int lu_cty; extern int py_cty; extern int ce_cty; extern int zs_cty; extern int countries[MAX_DATALINES]; extern int use_part; extern int block_part; extern int mixedmode; extern int ignoredupe; extern int qso_once; extern int trxmode; extern long int nr_callmastercalls; extern char callmasterarray[MAX_CALLMASTER][14]; extern char qsos[MAX_QSOS][82]; extern char hiscall[]; extern char zone_export[]; extern char zone_fix[]; extern int show_time; extern int wazmult; extern int itumult; int srch_index = 0; int r_index = 0; int xx; int yy; int bandnr; int bm[6]; char s_inputbuffer[82] = ""; char s_inputbuffercpy[82] = ""; char printres[14] = ""; char *loc; dxcc_data *dx; static char zonebuffer[3] = ""; static int z, z1; static int i, j, k, l; static long int m; static int pxnr; static int qso_index = 0; static int xwin = 1; static int ywin = 1; if (!initialized) { InitSearchPanel(); initialized = 1; } l = 0; z = 0; s_inputbuffer[0] = '\0'; zonebuffer[0] = '\0'; /* show checkwindow and partials */ if (strlen(hiscall) > 1 && searchflg == SEARCHWINDOW) { ShowSearchPanel(); if (strlen(hiscall) == 2) z1 = 0; qso_index = 0; srch_index = 0; r_index = 0; /* durchsuche komplettes Log nach 'hiscall' als substring und * kopiere gefundene QSO's nach 'searchresults' */ while (strlen(qsos[qso_index]) > 4) { if (((qsos[qso_index][3] == 'C' && trxmode == CWMODE) || (qsos[qso_index][3] == 'S' && trxmode == SSBMODE) || (qsos[qso_index][3] == 'D' && trxmode == DIGIMODE)) || mixedmode == 0) { // ist letzterTest korrekt? strncpy(s_inputbuffer, qsos[qso_index], 81); if (strstr(s_inputbuffer, hiscall) != 0) { strcpy(searchresult[srch_index], s_inputbuffer); searchresult[srch_index][80] = '\0'; if (srch_index++ > MAX_CALLS - 1) break; } } qso_index++; } // initialize array best matching callsigns for (xx = 0; xx < 6; xx++) { bm[xx] = 0; } for (r_index = 0; r_index < srch_index; r_index++) { strncpy(result[r_index], searchresult[r_index], 7); /* band + mode */ result[r_index][6] = '\0'; if (show_time == 1) // show qso time strncat(result[r_index], searchresult[r_index] + 17, 5); else // show qso number strncat(result[r_index], searchresult[r_index] + 22, 5); strncat(result[r_index], searchresult[r_index] + 28, 12); /* call */ strncat(result[r_index], searchresult[r_index] + 52, 16); /* exch */ } /* DJ1YFK worked-window patch */ strncpy(band_yfk, searchresult[r_index], 3); band_yfk[3] = '\0'; bandnr = atoi(band_yfk); strncpy(testcall_yfk, searchresult[r_index] + 29, 12); testcall_yfk[13] = '\0'; // Create string with his call + whitespaces strcpy(hiscall_yfk, " "); for (xx = 0; xx < strlen(hiscall); xx++) { hiscall_yfk[xx] = hiscall[xx]; } // find out how many characters match yy = 0; for (xx = 0; xx < 13; xx++) { if (hiscall_yfk[xx] == testcall_yfk[xx]) { yy++; } } // delete QSOs that match worse than anything before // of course still less-good matching QSOs can be in the array, // but *before* the better matching one, so they will be // overwritten later. switch (bandnr) { case 160:{ if (yy < bm[0]) { result[r_index][0] = '\0'; } else { bm[0] = yy; } break; } case 80:{ if (yy < bm[1]) { result[r_index][0] = '\0'; } else { bm[1] = yy; } break; } case 40:{ if (yy < bm[2]) { result[r_index][0] = '\0'; } else { bm[2] = yy; } break; } case 20:{ if (yy < bm[3]) { result[r_index][0] = '\0'; } else { bm[3] = yy; } break; } case 15:{ if (yy < bm[4]) { result[r_index][0] = '\0'; } else { bm[4] = yy; } break; } case 10:{ if (yy < bm[5]) { result[r_index][0] = '\0'; } else { bm[5] = yy; } } } /* end of patch */ dupe = NODUPE; wbkgd( search_win, (chtype)(' ' | COLOR_PAIR(7)) ); werase( search_win ); wnicebox(search_win, 0, 0, 6, 37, "Worked"); wattrset(search_win, COLOR_PAIR(7) | A_STANDOUT ); for (i = 0; i < 6; i++) mvwprintw(search_win, i + 1, 1, " "); mvwprintw(search_win, 1, 1, " 10"); mvwprintw(search_win, 2, 1, " 15"); mvwprintw(search_win, 3, 1, " 20"); mvwprintw(search_win, 4, 1, " 40"); mvwprintw(search_win, 5, 1, " 80"); mvwprintw(search_win, 6, 1, "160"); refreshp(); wattrset(search_win, COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); k = 0; /* print resulting call in line according to band in check window */ for (r_index = 0; r_index < srch_index; r_index++) { strcpy(s_inputbuffer, result[r_index]); s_inputbuffer[37] = '\0'; if ((hiscall[0] == s_inputbuffer[12]) && (strlen(hiscall) >= 3 && (s_inputbuffer[12 + strlen(hiscall)] == ' '))) { if ((strncmp(band[bandinx], s_inputbuffer, 3) == 0) || (qso_once == 1)) { if (ignoredupe == 0) { if (mixedmode == 0) { wattron(search_win, COLOR_PAIR(DUPECOLOR) | A_STANDOUT); dupe = ISDUPE; beep(); } else { if (((s_inputbuffer[3] == 'C') && (trxmode == CWMODE)) || ((s_inputbuffer[3] == 'S') && (trxmode == SSBMODE))) { wattron(search_win, COLOR_PAIR(DUPECOLOR) | A_STANDOUT); dupe = ISDUPE; beep(); } } // end mixed } // end ignore } } if (s_inputbuffer[1] == '1') j = 1; if (s_inputbuffer[1] == '1' && s_inputbuffer[2] == '5') j = 2; if (s_inputbuffer[1] == '2') j = 3; if (s_inputbuffer[1] == '4') j = 4; if (s_inputbuffer[1] == '8') j = 5; if (s_inputbuffer[1] == '6') j = 6; if (j != 8) { mvwprintw(search_win, j, 1, "%s", s_inputbuffer); } if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) { z = 0; if (strlen(s_inputbuffer) >= 24) { strncpy(zonebuffer, s_inputbuffer + 25, 2); zonebuffer[2] = '\0'; z1 = zone_nr(zonebuffer); } else z = zone_nr(zone_export); if (z1 != 0) z = z1; } wattron(search_win, COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); if ((partials == 1) && (strlen(hiscall) >= 2)) { if (strlen(s_inputbuffer) != 0) strncpy(s_inputbuffercpy, s_inputbuffer + 12, 6); if (s_inputbuffercpy[5] == ' ') s_inputbuffercpy[5] = '\0'; if (s_inputbuffercpy[4] == ' ') s_inputbuffercpy[4] = '\0'; } s_inputbuffer[0] = '\0'; } /* prepare and print lower line of checkwindow */ wattroff(search_win, A_STANDOUT); dx = dxcc_by_index(countrynr); if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) { if (z == 0) { if (strlen(zone_fix) > 1) { strncpy(zonebuffer, zone_fix, 2); } else strncpy(zonebuffer, zone_export, 2); zonebuffer[2] = '\0'; z = zone_nr(zonebuffer); } } wattron(search_win, COLOR_PAIR(COLOR_YELLOW)); mvwprintw(search_win, 7, 2, dx->countryname); mvwprintw(search_win, 7, 32, "%02d", dx->cq); i = strlen(dx->countryname); if (itumult != 1) mvwprintw(search_win, 7, 32, "%s", zonebuffer); else mvwprintw(search_win, 7, 28, "ITU:%s", zonebuffer); s_inputbuffer[0] = '\0'; if (wpx == 1) { mvwprintw(search_win, 7, 2 + i + 3, pxstr); } /* print worked zones and countrys for each band in checkwindow */ wattron(search_win, COLOR_PAIR(COLOR_GREEN) | A_STANDOUT); if (cqww == 1 || contest == 0 || pacc_pa_flg == 1) { if ((countries[countrynr] & BAND10) != 0) { mvwprintw(search_win, 1, 36, "C"); mvwprintw(search_win, 1, 1, " 10"); } if ((countries[countrynr] & BAND15) != 0) { mvwprintw(search_win, 2, 36, "C"); mvwprintw(search_win, 2, 1, " 15"); } if ((countries[countrynr] & BAND20) != 0) { mvwprintw(search_win, 3, 36, "C"); mvwprintw(search_win, 3, 1, " 20"); } if ((countries[countrynr] & BAND40) != 0) { mvwprintw(search_win, 4, 36, "C"); mvwprintw(search_win, 4, 1, " 40"); } if ((countries[countrynr] & BAND80) != 0) { mvwprintw(search_win, 5, 36, "C"); mvwprintw(search_win, 5, 1, " 80"); } if ((countries[countrynr] & BAND160) != 0) { mvwprintw(search_win, 6, 1, "160"); mvwprintw(search_win, 6, 36, "C"); } } if ((cqww == 1) || (wazmult == 1) || (itumult == 1)) { if ((zones[z] & BAND10) != 0) { mvwprintw( search_win, 1, 37, "Z"); } if ((zones[z] & BAND15) != 0) { mvwprintw( search_win, 2, 37, "Z"); } if ((zones[z] & BAND20) != 0) { mvwprintw( search_win, 3, 37, "Z"); } if ((zones[z] & BAND40) != 0) { mvwprintw( search_win, 4, 37, "Z"); } if ((zones[z] & BAND80) != 0) { mvwprintw( search_win, 5, 37, "Z"); } if ((zones[z] & BAND160) != 0) { mvwprintw( search_win, 6, 37, "Z"); } } if (pacc_pa_flg == 1) { getpx(hiscall); pxnr = pxstr[strlen(pxstr) - 1] - 48; if ((countrynr == w_cty) || (countrynr == ve_cty) || (countrynr == ja_cty ) || (countrynr == py_cty ) || (countrynr == lu_cty ) || (countrynr == ua9_cty ) || (countrynr == zl_cty ) || (countrynr == ce_cty ) || (countrynr == zs_cty ) || (countrynr == vk_cty )) { if ((pacc_qsos[0][pxnr] & BAND160) == BAND160) mvwprintw(search_win, 6, 37, "M"); if ((pacc_qsos[0][pxnr] & BAND80) == BAND80) mvwprintw(search_win, 5, 37, "M"); if ((pacc_qsos[0][pxnr] & BAND40) == BAND40) mvwprintw(search_win, 4, 37, "M"); if ((pacc_qsos[0][pxnr] & BAND20) == BAND20) mvwprintw(search_win, 3, 37, "M"); if ((pacc_qsos[0][pxnr] & BAND15) == BAND15) mvwprintw(search_win, 2, 37, "M"); if ((pacc_qsos[0][pxnr] & BAND10) == BAND10) mvwprintw(search_win, 1, 37, "M"); } } refreshp(); /* print list of partials in upper left region */ if (partials == 1) { l = 0; j = 0; if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_WHITE | A_BOLD | A_STANDOUT)); else attron(COLOR_PAIR(COLOR_WHITE | A_STANDOUT)); for (k = 1; k <= 5; k++) { mvprintw(k, 0, "%s", " "); } attron(COLOR_PAIR(COLOR_MAGENTA) | A_STANDOUT); mvprintw(1, 1, "??"); attron(COLOR_PAIR(COLOR_WHITE | A_STANDOUT)); refreshp(); j = 0; m = 0; /* check what we have worked first */ /** \todo the method below parses through the array of already * looked up search results from the search window. That is quick * but has the drawback, that we have no band information and * therefore print some entries more than once. * Better would be to lookup the partial call in the array of * worked stations 'callarray' - it is there only once and we can * also see from 'call_band' if it is a dupe here. * be aware of the problem of marking it dupe only for a complete * match. */ for (m = 0; m < srch_index; m++) { if (strlen(hiscall) > 2 && strlen(searchresult[m]) > 2) { if ( strstr(searchresult[m], hiscall) != NULL ) { printres[0] = '\0'; strncat(printres, searchresult[m] + 29, 12); /* cut string just at first space after call */ loc = strchr(printres, ' '); if (loc) *loc = '\0'; if (dupe == ISDUPE) { attron(COLOR_PAIR(COLOR_MAGENTA) | A_STANDOUT); } else { attron(COLOR_PAIR (COLOR_YELLOW | A_BOLD | A_STANDOUT)); } mvprintw(xwin + l, ywin + j, "%s ", printres); attron(COLOR_PAIR(COLOR_WHITE | A_STANDOUT)); refreshp(); j += (strlen(printres) + 1); if (j >= 30) { l++; j = 0; } if (l > 4) break; } } } if (strcmp(hiscall, printres) != 0) { /* and now check callmaster database */ for (m = 0; m < nr_callmastercalls; m++) { if ( strstr(callmasterarray[m], hiscall) != NULL ) { if (use_rxvt == 0) attron(COLOR_PAIR (COLOR_WHITE | A_BOLD | A_STANDOUT)); else attron(COLOR_PAIR (COLOR_WHITE | A_STANDOUT)); mvprintw(xwin + l, ywin + j, "%s ", callmasterarray[m]); if (strlen(s_inputbuffercpy) == 0) strcpy(s_inputbuffercpy, callmasterarray[m]); j += (strlen(callmasterarray[m])) + 1; if (j >= 30) { l++; j = 0; } if (l > 4) break; } } } if ((j <= 13) && (l == 0) && (use_part == 1) && (block_part == 0)) { if (use_rxvt == 0) attron(COLOR_PAIR(COLOR_GREEN | A_BOLD | A_STANDOUT)); else attron(COLOR_PAIR(COLOR_GREEN | A_STANDOUT)); mvprintw(13, 0, s_inputbuffercpy); if (strlen(s_inputbuffercpy) > strlen(hiscall)) { strcpy(hiscall, s_inputbuffercpy); beep(); } } refreshp(); } /* show needed sections for ARRL_Sweep Stake*/ if (dupe == NODUPE && arrlss == 1) show_needed_sections(); if (dupe == ISDUPE) { isdupe = 1; // LZ3NY auto-b4 patch attron(COLOR_PAIR(DUPECOLOR) | A_STANDOUT); mvprintw(12, 29, hiscall); refreshp(); usleep(100000); } else isdupe = 0; // LZ3NY auto-b4 patch printcall(); } else { HideSearchPanel(); } } /** loads callmaster database from file */ int load_callmaster(void) { extern char callmasterarray[MAX_CALLMASTER][14]; extern int arrlss; FILE *cfp = NULL; char callmaster_location[80]; char s_inputbuffer[186] = ""; long int count = 0; int file_ok = 0; strcpy(callmaster_location, "callmaster"); if ((cfp = fopen(callmaster_location, "r")) == NULL) { callmaster_location[0] = '\0'; strcpy(callmaster_location, PACKAGE_DATA_DIR); strcat(callmaster_location, "/callmaster"); if ((cfp = fopen(callmaster_location, "r")) == NULL) { mvprintw(24, 0, "Error opening callmaster file.\n"); refreshp(); sleep(2); } else file_ok = 1; } else file_ok = 1; if (file_ok == 1) { count = 0; while ( fgets(s_inputbuffer, 85, cfp) != NULL ) { if ( strlen(s_inputbuffer) < 3 ) /* calls are at least 3 char long */ continue; if (arrlss == 1) { if ((s_inputbuffer[0] == 'A') || (s_inputbuffer[0] == 'K') || (s_inputbuffer[0] == 'W') || (s_inputbuffer[0] == 'V') || (s_inputbuffer[0] == 'C') || (s_inputbuffer[0] == 'N')) { s_inputbuffer[strlen(s_inputbuffer) - 1] = '\0'; s_inputbuffer[12] = '\0'; strcpy(callmasterarray[count], s_inputbuffer); count++; } } else { if (strlen(s_inputbuffer) > 0) s_inputbuffer[strlen(s_inputbuffer) - 1] = '\0'; s_inputbuffer[12] = '\0'; strcpy(callmasterarray[count], s_inputbuffer); count++; } } fclose(cfp); } else { if (cfp) fclose(cfp); } return (count); } /* -------------------------------------------------------------- */ void show_needed_sections(void) { extern int use_rxvt; extern int arrlss; extern int multarray_nr; extern char mults[MAX_MULTS][12]; extern GPtrArray *mults_possible; int j, vert, hor, cnt, found; char mprint[50]; if (arrlss == 1) { cnt = 0; if (use_rxvt == 0) wattron(search_win, COLOR_PAIR(COLOR_CYAN) | A_BOLD | A_STANDOUT); else wattron(search_win, COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); for (j = 1; j < 7; j++) mvwprintw(search_win, j, 1, " "); for (vert = 1; vert < 7; vert++) { if (cnt >= mults_possible->len) break; for (hor = 0; hor < 9; hor++) { if (cnt >= mults_possible->len) break; strcpy(mprint, g_ptr_array_index(mults_possible, cnt)); found = 0; for (j = 0; j < multarray_nr; j++) { if (strncmp(mults[j], mprint, strlen(mprint)) == 0) { found = 1; break; } } if (found != 1) { mprint[3] = '\0'; if (use_rxvt == 0) wattron(search_win, COLOR_PAIR(COLOR_CYAN) | A_BOLD | A_STANDOUT); else wattron(search_win, COLOR_PAIR(COLOR_CYAN) | A_STANDOUT); if (strlen(mprint) > 1) mvwprintw(search_win, vert, (hor * 4) + 2, "%s ", mprint); } else hor--; cnt++; } } } wnicebox(search_win, 0, 0, 6, 37, "Needed Sections"); refreshp(); } void OnLowerSearchPanel(int x, char *str) { extern int use_rxvt; if (use_rxvt == 0) wattrset(search_win, COLOR_PAIR(COLOR_YELLOW) | A_BOLD); else wattrset(search_win, COLOR_PAIR(COLOR_YELLOW)); mvwprintw(search_win, 7, x, str); } tlf_1.1.5/src/speedup.h0000664000175000017500000000170412072353226013150 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "tlf.h" #include "sendbuf.h" #include "sendqrg.h" int speedup(void); int setweight(int weight); tlf_1.1.5/src/startmsg.h0000664000175000017500000000201212072353226013340 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ void showmsg(char *message); // output text void shownr(char *message, int nr); // output text + number void showstring(char *message1, char *message2); // output 2 strings tlf_1.1.5/src/readctydata.h0000664000175000017500000000170112072353226013765 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include "tlf.h" int readctydata(void); tlf_1.1.5/src/makelogline.h0000664000175000017500000000205112072353226013766 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include "tlf.h" #include "qsonr_to_str.h" #include "get_time.h" #include "addpfx.h" #include "score.h" void makelogline(void); tlf_1.1.5/src/sendspcall.c0000664000175000017500000000334212072353226013626 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2005 Rein Couperus * 2012 Thomas Beierlein * * 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 Library 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. */ /* ------------------------------------------------------------ * Sendspcall sends (de) call if callarea empty * *--------------------------------------------------------------*/ #include "sendspcall.h" int play_file(char *audiofile); void sendspcall(void){ extern int demode; extern char buffer[]; extern char call[]; extern int trxmode; extern int keyerport; extern char ph_message[14][80]; if (trxmode == CWMODE) { if (demode == SEND_DE ) strcat(buffer, "DE "); strcat(buffer, call); sendbuf(); } else if (trxmode == DIGIMODE) { if (keyerport == MFJ1278_KEYER) { strcat (buffer, "{ "); /* => ctrl-t */ strcat (buffer, call); strcat (buffer, "}"); /* => ctrl-r */ } else { strcat(buffer, call); } sendbuf(); } else play_file(ph_message[5]); } tlf_1.1.5/src/sendbuf.h0000664000175000017500000000202112072353226013122 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include #include #include #include "lancode.h" #include "tlf.h" #include "displayit.h" void sendbuf(void); tlf_1.1.5/src/qsonr_to_str.h0000664000175000017500000000165312072353226014242 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include #include #include "tlf.h" int qsonr_to_str(void); tlf_1.1.5/src/qrb.c0000664000175000017500000000372212072353226012264 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2001-2002-2003 Rein Couperus * * 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 Library 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. */ #include "qrb.h" /* Compute the Bearing and Range */ int qrb(void) { extern char C_QTH_Lat[]; extern char C_QTH_Long[]; extern char C_DEST_Lat[]; extern char C_DEST_Long[]; extern char hiscall[]; extern double range; extern double bearing; double tmp; double dist; double Delta_Long; double QTH_Lat; double QTH_Long; double DEST_Lat; double DEST_Long; if (strlen(hiscall) < 1) return (0); QTH_Lat = atof(C_QTH_Lat); QTH_Long = atof(C_QTH_Long); DEST_Lat = atof(C_DEST_Lat); DEST_Long = atof(C_DEST_Long); Delta_Long = DEST_Long - QTH_Long; QTH_Lat /= RADIAN; /* Convert variables to Radians */ QTH_Long /= RADIAN; DEST_Lat /= RADIAN; DEST_Long /= RADIAN; Delta_Long /= RADIAN; tmp = (sin(QTH_Lat) * sin(DEST_Lat)) + (cos(QTH_Lat) * cos(DEST_Lat) * cos(Delta_Long)); dist = acos(tmp); range = 60.0 * (dist * RADIAN) * 1.8; tmp = (sin(DEST_Lat) - (sin(QTH_Lat) * cos(dist))) / (sin(dist) * cos(QTH_Lat)); bearing = acos(tmp) * RADIAN; if (Delta_Long > 0.0) bearing = 360.0 - bearing; return (0); } tlf_1.1.5/src/dxcc.h0000664000175000017500000000252412072353226012425 0ustar jtnjtn/* * Tlf - contest logging program for amateur radio operators * Copyright (C) 2011 Thomas Beierlein * * 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 Library 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. */ #ifndef _DXCC_H #define _DXCC_H typedef struct { char *pfx; short cq; short itu; short dxcc_index; } prefix_data; typedef struct { char *countryname; short cq; short itu; char *continent; float lat; float lon; float timezone; char *pfx; } dxcc_data; void prefix_init(void); int prefix_count(void); prefix_data *prefix_by_index(int index); void prefix_add (char *pfxstr); void dxcc_init(void); int dxcc_count(void); dxcc_data *dxcc_by_index(int index); void dxcc_add (char * dxcc_line); #endif tlf_1.1.5/AUTHORS0000664000175000017500000000026712072353226011616 0ustar jtnjtnRein Couperus Thomas Beierlein contributions by: Joop Stakenborg (PG4I), Dimiter Kroumov (LZ3NY), Martin OK1RR Andy G4KNO Fred DH5FS and others tlf_1.1.5/doc/0000775000175000017500000000000012105506435011305 5ustar jtnjtntlf_1.1.5/doc/README0000664000175000017500000000415612072353226012174 0ustar jtnjtnMake sure you have user r/w permissions on /tmp/tlf. The rest is read-only. To start a new contest (or a general- of dexpedition log) copy the constest specific file from /share/tlf/examples//, being: logcfg.dat into a working directory. At this moment examples for the wpx, cqww, eu-sprint, qso, dxpedition mode, arrl-fd, arrl-dx, and pacc exist. Meanwhile, as soon as you have understood the logcfg.dat file (which should not be too difficult) you will be able to make your own for the contests covered. Be sure to change the callsign in the logcfg.dat file. You can use any editor, or ":set" or ":cfg" from within the tlf program. INSTALLATION ============ See INSTALL STARTING TLF ============ TLF is started from the working directory with: tlf (or ./tlf or e.g. /usr/local/bin/tlf) Under X, you may have to set the terminal type. Under Suse and RH 7.2 the KDE Konsole works fine, under Slackware 8.0 I have to use TERM=rxvt. Best bet is the linux text console (separate consoles for tlf and packet, see below). PACKET SUPPORT ============== TLF can also run packet in a separate terminal. To link this to the tlf program start a telnet session from the working directory with: telnet | tee -a clfile In case your packet program is on your own machine, use telnet localhost | tee -a clfile Now you have a separate packet terminal where you can e.g. start "call", telnet or or "minicom" and connect to your favorite dx cluster, or telnet to a cluster on the internet. Activate "FIFOINTERFACE". Activate the cluster display in tlf with :cluster, :spot, or :map You can toggle the announcements filter with :filter CW == See the manual... I prefer to use the cwdaemon for the parallel port. MANUAL ======= The manual is tlfdoc.html, available on the website: ftp://sharon.esrac.ele.tue.nl/pub/linux/ham/tlf CONTRIBUTIONS ============= Thanks to Joop, PA4TU for the help with the make files and the cwdaemon.. Thanks to Ivo, 9A3TY for the serial port /dev/cwkeyer device. Thanks to Eric, PA3FKN for the parallel port /dev/cwkeyer device. BUGS & PROBLEMS =============== pa0rct@amsat.org tlf_1.1.5/doc/README.ssb0000664000175000017500000001407012072353226012756 0ustar jtnjtnREADME.ssb TLF provides a voice keyer facility using the PC's sound card. This readme provides additional information to help the user configure SSB operation. ----------------- Radio Interfacing ----------------- For the purposes of CW and PTT control, TLF interfaces to the radio via cwdaemon, not hamlib. Therefore if you want voice keyer facilities cwdaemon must be running before starting TLF. cwdaemon can be invoked for a serial port or a parallel port. The most likely modern scenario is to use a USB<->serial adaptor, in which case an example of starting cwdaemon (as root) might be: cwdaemon -d ttyUSB0 You can figure out which tty the adaptor is on by running 'dmesg' before and after plugging-in the USB. Check 'man cwdaemon' for circuit suggestions on interfacing DTR/RTS to CW/PTT ports on your radio. One option for mic interfacing is to use PTT to control a relay that connects the radio's mic input either to the mic or to the soundcard. An alternative solution, that is recommended by many other contest loggers, is instead to connect the mic to the soundcard's mic input and the soundcard's output to the radio's mic input. Most soundcards will loop-back the mic audio to the output, which is easily checked. The only issue here is that the mic is also live when playing voice keyer messages, but this can be avoided (see next section). Note that some radios (e.g. TenTec Orion) have only one port that becomes PTT in SSB mode and Key in CW mode. Wire-OR-ing the CW and PTT outputs from cwdaemon is not an ideal solution because in CW mode PTT is still asserted and results in key-down for the duration of the message. At present there is no satisfactory solution to this problem. ------------------- Configuration Files ------------------- Normal practice is to create a new directory for each contest. Then a logcfg.dat file in that directory overrides the default. If you are using SSB only in a contest you can force TLF to start in SSB mode by uncommenting the SSBMODE keyword in logcfg.dat. If you have adopted the method that loops back the mic audio and you want to automatically mute the mic when voice keyer messages are played, copy the 'play_vk' shell script found in the 'scripts' directory of your TLF release to the same directory. This will then be used in preference to the default. Uncomment the lines begining with 'amixer'. Since tlf-1.1.0, (un)muting and playing voice messages has been devolved to this external script file, because not all soundcards offer the same interface. 'Mic' could be called something else. One way of finding this out is to run 'amixer' from a terminal whch returns its capabilities. An alternative method is to install your distro's version of the 'alsamixergui' package and simply see what's available on the faders. This is probably a good idea anyway because it's likely sound won't work without some manual intervention. If you have something other than a 'Mic' source you could try replacing 'Mic' with what you think it should be in the local 'play_vk' file. The process of muting and unmuting the mic is displayed in alsamixergui, which is useful for debug purposes. Please share any information you discover with the TLF community. Similarly, a 'rules' sub-directory can contain a contest specific rule file. This rule file must contain the paths to the audio files corresponding to each F-key to be used. An example might be: VKM1=/home/aham/tlf/audio/f1.wav VKM2=/home/aham/tlf/audio/f2.wav VKM3=/home/aham/tlf/audio/f3.wav VKM4=/home/aham/tlf/audio/f4.wav VKM5=/home/aham/tlf/audio/f5.wav VKM6=/home/aham/tlf/audio/f6.wav VKM7=/home/aham/tlf/audio/f7.wav VKM8=/home/aham/tlf/audio/f8.wav VKM9=/home/aham/tlf/audio/f9.wav VKM10=/home/aham/tlf/audio/f10.wav VKM11=/home/aham/tlf/audio/f11.wav VKM12=/home/aham/tlf/audio/f12.wav VKSPM=/home/aham/tlf/audio/vkspm.wav VKCQM=/home/aham/tlf/audio/vkcqm.wav Thus a common set of voice messages can be pointed to from different rule files. The VKCQM message is the auto-repeated CQ message for when the rate is low! The VKSPM and VKCQM messages are sent after a contact is logged, in S+P and CQ modes respectively. Paths that are not defined cannot be recorded to from within TLF. ------------ Distro Notes ------------ TLF uses 'sox' to record and play audio, so you must have it installed. You can use the sox commands 'rec' and 'play' on the command line in case you need to debug any TLF issues. Modern distros often use the 'pulseaudio' sound server, but this can cause unacceptably long delays at the beginning and end of recordings, and at the beginning and end of voice message playback. If you experience these problems try uninstalling just the pulseaudio alsa plugin. You lose the ability for alsa applications to play and record across a network, but for most TLF users this isn't a problem. --------- Recording --------- To record messages from within TLF, enter ':sou' at the call entry field to take you to the TLF Sound Recorder Utility page. Recording starts by hitting the relevant F-key for that message ('s' or 'c' for the VKSPM and VKCQM messages). Recording is terminated by hitting the key. Currently, recording messages does not key PTT. If you want to hear yourself via the radio's monitor function whilst recording, you will need to manually assert PTT, e.g. press your footswitch throughout. Obviously, this means your recording also goes out on-air, so you might want to minimise your transmitted power whilst setting up recordings. It takes a bit of practice to time your speech within the starting and ending key presses. It's also quite easy to set the alsa Mic gain too high and end up with clipped audio. This will show up during playback as some black and white writing appearing over the top of the display colours. It's actually sox reporting warnings. You can fix this by adjusting the mic level using the alsa mixer. If you have the time, you can trim the audio clip and normalise the levels in an audio editor, like audacity. That way you can avoid worrying too much about getting the recording perfect from TLF. Of course, you could initially record the messages using such an editor if preferred. Andy, G4KNO tlf_1.1.5/doc/Makefile.in0000664000175000017500000002650112105506435013356 0ustar jtnjtn# Makefile.in generated by automake 1.11.3 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(docdir)" DATA = $(doc_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GLIB_CFLAGS = @GLIB_CFLAGS@ GLIB_LIBS = @GLIB_LIBS@ GREP = @GREP@ HAMLIB_CFLAGS = @HAMLIB_CFLAGS@ HAMLIB_LIBS = @HAMLIB_LIBS@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ DOC_FILES = New_Bandmap.txt README README.ssb doc_DATA = $(DOC_FILES) EXTRA_DIST = $(DOC_FILES) CLEANFILES = *~ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-docDATA: $(doc_DATA) @$(NORMAL_INSTALL) test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)" @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-docDATA: @$(NORMAL_UNINSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-docDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-docDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic distclean \ distclean-generic distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-docDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am uninstall uninstall-am uninstall-docDATA # 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: tlf_1.1.5/doc/Makefile.am0000664000175000017500000000016412072353226013343 0ustar jtnjtnDOC_FILES = New_Bandmap.txt README README.ssb doc_DATA = $(DOC_FILES) EXTRA_DIST = $(DOC_FILES) CLEANFILES = *~ tlf_1.1.5/doc/New_Bandmap.txt0000664000175000017500000000670012072353226014225 0ustar jtnjtnNew Bandmap in TLF-1.1 ====================== One main poblem in old TLF versions is the very narrow space for cluster messages (only 8 entries plus some room in scrolling). Furthermore the code for looking up the messages was very inefficient and does not allow good filtering of the informations we need. The new bandmap tries to fix some of the problems. The following principles were applied: - Use the space below the QSO entry line for displaying the spots in the background. - For each spot display the frequency (with one decimal) and the call of the spotted station. That allows 3 columns with 10 spots each. - There are 3 sources of spots: * dx cluster messages * spots in local LAN (maybe from other stations scanning the band) * finished QSOs while in S&P - The frequency is remembered with a resolution of 1 Hz if available - You can filter the displayed spots by * band (all bands or only own (momentarily active) band) * mode (all or own) * dupe (show dupes or not) - Each spot may have a letter or star between frequency and call denoting the source of the spot * blank - from cluster * '*' - self spotted or worked in S&P * 'a'..'z' -spotted from station 'a' to 'z' in local network - Color of spots signal the age of the spot * bright blue - new spot * blue - older than 45s (at the moment) * brown - older than 5 min - Dupes (already work stations) are show in lower case and grey USAGE ===== Turn on rig support and connect to a cluster (experiment what happens if one or both conditions are not met). Wait some moments until some spots shows up. - Press '.' to show the filter menu. Next letter switches filtering: * b - toggle band filter * m - toggle mode filter * d - toggle display of dupes - Tune in to any interesting station, insert its call into the input field and press 'Ctrl-A'. The heard station gets added to the bandmap and broadcasted to other stations in the local net. See that it gets marked with a '*' as self spotted. - Tune in to any contest station in S&P and work it as normal. After the QSO is finished the station is added to the bandmap and shown as dupe. - Press 'Ctrl-G' to grab the next displayed spot (starting at your frequency upwards). Each further press of 'Ctrl-G' jumps to the next spot. So you can scan the spotted stations, see if you can work them or jump to the next one. If you reach the last station (highest frequency) the scan switches direction and following key presses goes downward (on lower boundary it switches to upwards again...). !!! At the moment Ctrl-G requires a connected tranceiver to work correctly as it reads the actual starting frequency from the rig !!! - If you type some letters of a call in the map you are interested in and then 'Alt-G' afterwards the first call with that letters gets grabbed. - You can narrow the spots to grab by the above mentioned filters. - If you grab a spot while in 'Run' mode, TLF switches to S&P and remembers your 'run' frequency in the memory. You can switch back to your old running frequency by '+' (back to Run mode) and '#' (back to old frequency) You can also configure bandmap filtering and spot livetime from logcfg.dat - BANDMAP -> use default values (no filtering, livetime = 900 s) - BANDMAP=, string parsed for 'B' - only own band 'M' - only own mode 'D' - do not show dupes 'S' - skip dupes during grab_next (ctrl-g) livetime for new spots in second (number >=300) tlf_1.1.5/depcomp0000755000175000017500000004755612105506436012135 0ustar jtnjtn#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2011-12-04.11; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, # 2011 Free Software Foundation, Inc. # 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, see . # 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. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test "$stat" = 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/ \1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/ / G p }' >> "$depfile" rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: tlf_1.1.5/INSTALL0000664000175000017500000000137112072353226011574 0ustar jtnjtnTlf now comes with automake and autoconf. Starting with TLF-1.0.0 you need pkg-config too. Easiest way to install tlf is by typing: ./configure make make install If you want to compile tlf from the repo, please do a autoreconf --install before the above commands. If support for Hamlib (>=1.2.8) is wanted, use ./configure --enable-hamlib By default, tlf will install into /usr/local/bin, together with the shell-scripts from the scripts directory. Data files will install into /usr/local/share/tlf. If you want to change any of these paths, you can do this with the configure script too, e.g. './configure --prefix=/usr --datadir=/usr/share' will install tlf and scripts into /usr/bin, datafiles into /usr/share/tlf. See doc/README for more details. tlf_1.1.5/Doxyfile0000664000175000017500000017365212072353226012265 0ustar jtnjtn# Doxyfile 1.5.8 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = TLF # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, # Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), # Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, # Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, # Spanish, Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 8 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for # Java. For instance, namespaces will be presented as packages, qualified # scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources only. Doxygen will then generate output that is more tailored for # Fortran. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for # VHDL. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it parses. # With this tag you can assign which parser to use for a given extension. # Doxygen has a built-in mapping, but you can override or extend it using this tag. # The format is ext=language, where ext is a file extension, and language is one of # the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, # Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat # .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), # use: inc=Fortran f=C EXTENSION_MAPPING = # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. # Doxygen will parse them like normal C++ but will assume all classes use public # instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate getter # and setter methods for a property. Setting this option to YES (the default) # will make doxygen to replace the get and set methods by a property in the # documentation. This will only work if the methods are indeed getting or # setting a simple type. If this is not the case, or you want to show the # methods anyway, you should set this option to NO. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically # be useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to # determine which symbols to keep in memory and which to flush to disk. # When the cache is full, less often used symbols will be written to disk. # For small to medium size projects (<1000 input files) the default value is # probably good enough. For larger projects a too small cache size can cause # doxygen to be busy swapping symbols to and from disk most of the time # causing a significant performance penality. # If the system has enough physical memory increasing the cache will improve the # performance by keeping more symbols in memory. Note that the value works on # a logarithmic scale so increasing the size by one will rougly double the # memory usage. The cache size is given by this formula: # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols SYMBOL_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default # anonymous namespace are hidden. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = YES # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # hierarchy of group names into alphabetical order. If set to NO (the default) # the group names will appear in their defined order. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. The default is NO. SHOW_DIRECTORIES = NO # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the # Namespaces page. This will remove the Namespaces entry from the Quick Index # and from the Folder Tree View (if specified). The default is YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by # doxygen. The layout file controls the global structure of the generated output files # in an output format independent way. The create the layout file that represents # doxygen's defaults, run doxygen with the -l option. You can optionally specify a # file name after the option, if omitted DoxygenLayout.xml will be used as the name # of the layout file. LAYOUT_FILE = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = src # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for # the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. Otherwise they will link to the documentation. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). HTML_DYNAMIC_SECTIONS = NO # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 # integrated development environment, introduced with OSX 10.5 (Leopard). # To create a documentation set, doxygen will generate a Makefile in the # HTML output directory. Running make will produce the docset in that # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. GENERATE_DOCSET = NO # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the # feed. A documentation feed provides an umbrella under which multiple # documentation sets from a single provider (such as a company or product suite) # can be grouped. DOCSET_FEEDNAME = "Doxygen generated docs" # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that # should uniquely identify the documentation set bundle. This should be a # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. DOCSET_BUNDLE_ID = org.doxygen.Project # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING # is used to encode HtmlHelp index (hhk), content (hhc) and project file # content. CHM_INDEX_ENCODING = # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER # are set, an additional index file will be generated that can be used as input for # Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated # HTML documentation. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can # be used to specify the file name of the resulting .qch file. # The path specified is relative to the HTML output folder. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#namespace QHP_NAMESPACE = # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#virtual-folders QHP_VIRTUAL_FOLDER = doc # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. # For more information please see # http://doc.trolltech.com/qthelpproject.html#custom-filters QHP_CUST_FILTER_NAME = # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see # Qt Help Project / Custom Filters. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's # filter section matches. # Qt Help Project / Filter Attributes. QHP_SECT_FILTER_ATTRS = # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can # be used to specify the location of Qt's qhelpgenerator. # If non-empty doxygen will try to run qhelpgenerator on the generated # .qhp file. QHG_LOCATION = # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. # If the tag value is set to FRAME, a side panel will be generated # containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. Other possible values # for this tag are: HIERARCHIES, which will generate the Groups, Directories, # and Class Hierarchy pages using a tree view instead of an ordered list; # ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which # disables this behavior completely. For backwards compatibility with previous # releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE # respectively. GENERATE_TREEVIEW = NONE # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need # to manually remove any form_*.png images from the HTML output directory # to force them to be regenerated. FORMULA_FONTSIZE = 10 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = YES # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option is superseded by the HAVE_DOT option below. This is only a # fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = NO # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the # documentation. The MSCGEN_PATH tag allows you to specify the directory where # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = YES # By default doxygen will write a font called FreeSans.ttf to the output # directory and reference it in all dot files that doxygen generates. This # font does not include all possible unicode characters however, so when you need # these (or just want a differently looking font) you can specify the font name # using DOT_FONTNAME. You need need to make sure dot is able to find the font, # which can be done by putting it in a standard location or by setting the # DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory # containing the font. DOT_FONTNAME = FreeSans # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. # The default size is 10pt. DOT_FONTSIZE = 10 # By default doxygen will tell dot to use the output directory to look for the # FreeSans.ttf font (which doxygen will put there itself). If you specify a # different font using DOT_FONTNAME you can set the path where dot # can find it using this tag. DOT_FONTPATH = # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT options are set to YES then # doxygen will generate a call dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable call graphs # for selected functions only using the \callgraph command. CALL_GRAPH = YES # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then # doxygen will generate a caller dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable caller # graphs for selected functions only using the \callergraph command. CALLER_GRAPH = YES # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the # number of direct children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 52 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, because dot on Windows does not # seem to support this out of the box. Warning: Depending on the platform used, # enabling this option may lead to badly anti-aliased labels on the edges of # a graph (i.e. they become hard to read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Options related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO tlf_1.1.5/acinclude.m40000664000175000017500000001753312072353226012743 0ustar jtnjtn#serial 3 dnl From Jim Meyering dnl Define HAVE_STRUCT_UTIMBUF if `struct utimbuf' is declared -- dnl usually in . dnl Some systems have utime.h but don't declare the struct anywhere. AC_DEFUN(jm_CHECK_TYPE_STRUCT_UTIMBUF, [ AC_CHECK_HEADERS(utime.h) AC_REQUIRE([AC_HEADER_TIME]) AC_CACHE_CHECK([for struct utimbuf], fu_cv_sys_struct_utimbuf, [AC_TRY_COMPILE( [ #ifdef TIME_WITH_SYS_TIME # include # include #else # ifdef HAVE_SYS_TIME_H # include # else # include # endif #endif #ifdef HAVE_UTIME_H # include #endif ], [static struct utimbuf x; x.actime = x.modtime;], fu_cv_sys_struct_utimbuf=yes, fu_cv_sys_struct_utimbuf=no) ]) if test $fu_cv_sys_struct_utimbuf = yes; then AC_DEFINE_UNQUOTED(HAVE_STRUCT_UTIMBUF, 1, [Define if struct utimbuf is declared -- usually in . Some systems have utime.h but don't declare the struct anywhere. ]) fi ]) AC_DEFUN([ACX_PTHREAD], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_SAVE AC_LANG_C acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) AC_MSG_RESULT($acx_pthread_ok) if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all. acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # pthread: Linux, etcetera # --thread-safe: KAI C++ case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthread or # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) AC_MSG_CHECKING([whether pthreads work without any flags]) ;; -*) AC_MSG_CHECKING([whether pthreads work with $flag]) PTHREAD_CFLAGS="$flag" ;; *) AC_MSG_CHECKING([for the pthreads library -l$flag]) PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. AC_TRY_LINK([#include ], [pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], [acx_pthread_ok=yes]) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" AC_MSG_RESULT($acx_pthread_ok) if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: threads are created detached by default # and the JOINABLE attribute has a nonstandard name (UNDETACHED). AC_MSG_CHECKING([for joinable pthread attribute]) AC_TRY_LINK([#include ], [int attr=PTHREAD_CREATE_JOINABLE;], ok=PTHREAD_CREATE_JOINABLE, ok=unknown) if test x"$ok" = xunknown; then AC_TRY_LINK([#include ], [int attr=PTHREAD_CREATE_UNDETACHED;], ok=PTHREAD_CREATE_UNDETACHED, ok=unknown) fi if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then AC_DEFINE(PTHREAD_CREATE_JOINABLE, $ok, [Define to the necessary symbol if this constant uses a non-standard name on your system.]) fi AC_MSG_RESULT(${ok}) if test x"$ok" = xunknown; then AC_MSG_WARN([we do not know how to create joinable pthreads]) fi AC_MSG_CHECKING([if more special flags are required for pthreads]) flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac AC_MSG_RESULT(${flag}) if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with cc_r AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC}) else PTHREAD_CC="$CC" fi AC_SUBST(PTHREAD_LIBS) AC_SUBST(PTHREAD_CFLAGS) AC_SUBST(PTHREAD_CC) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) : else acx_pthread_ok=no $2 fi AC_LANG_RESTORE ])dnl ACX_PTHREAD