Keep your time right
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

301 lines
7.7 KiB

/*-
* Copyright (c) 2017-2021 Carsten Sonne Larsen <cs@innolan.net>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef CONFIG_H_INCLUDED
#define CONFIG_H_INCLUDED
#include <exec/io.h>
#include <exec/types.h>
#include <exec/memory.h>
#include <exec/devices.h>
#include <exec/libraries.h>
#include <resources/battclock.h>
#include <libraries/asl.h>
#include <libraries/commodities.h>
#include <graphics/text.h>
#include <graphics/rastport.h>
#include <dos/dos.h>
#include <dos/dostags.h>
#include <proto/dos.h>
#include <proto/asl.h>
#include <proto/exec.h>
#include <proto/icon.h>
#include <proto/timer.h>
#include <proto/locale.h>
#include <proto/utility.h>
#include <proto/gadtools.h>
#include <proto/intuition.h>
#include <proto/battclock.h>
#include <proto/commodities.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "compiler.h"
#if defined(AROS) || defined(__CLIB2__)
#include <stdint.h>
#endif
#if defined(AOS3)
#define SCREENNOTIFY
#endif
#if defined(__libnix__)
typedef u_int8_t uint8_t;
typedef u_int16_t uint16_t;
typedef u_int32_t uint32_t;
typedef u_int64_t uint64_t;
typedef uint32_t uintptr_t;
#endif
#if defined(__CLIB2__)
#define __NO_NET_API
//define NO_INLINE_STDARG
//#define MISSING_ADDRINFO
#include <proto/graphics.h>
#include <proto/socket.h>
#endif
#if defined(AROS)
#include <proto/graphics.h>
#include <proto/socket.h>
#include <bsdsocket/socketbasetags.h>
#endif
#if defined(__libnix__)
#include <clib/graphics_protos.h>
#include <amitcp/socketbasetags.h>
#include "clib/amitcp_protos.h"
#endif
#if defined(__libnix__) || defined(__CLIB2__)
#include "netdb.h"
#include "sys/errno.h"
#include "sys/socket.h"
#include "netinet/in.h"
#else
#include <netdb.h>
#include <sys/errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#endif
#if defined(SCREENNOTIFY)
#include "clib/screennotify.h"
#include "proto/screennotify.h"
#endif
#ifdef MAXPATHLEN
#undef MAXPATHLEN
#endif
#ifdef MAXFILELEN
#undef MAXFILELEN
#endif
#ifdef MAXFILEPATHLEN
#undef MAXFILEPATHLEN
#endif
#define MAXPATHLEN 1792
#define MAXFILELEN 256
#define MAXFILEPATHLEN MAXPATHLEN + MAXFILELEN
#define MAXDOSERRORLEN 256
#define LOGMESSAGELEN 128
#ifndef HAVE_POLL
#define POLLIN 0x0001
struct pollfd
{
int fd;
short events;
short revents;
};
typedef unsigned int nfds_t;
int poll(struct pollfd *, nfds_t, int);
#endif
#if AOS3
#define IPTR ULONG
#endif
#ifdef AROS
#define VSNPrintf(str, n, format, args) vsnprintf(str, n, format, args)
#define SNPrintf(str, n, format, ...) snprintf(str, n, format, __VA_ARGS__)
#endif
#define LIB_OK 0
#define COM_OK 0
#define LIB_ERROR -1
#define COM_ERROR -1
#ifdef AROS
#define APP_SHORT_NAME "TimeKeeper"
#define APP_LONG_NAME "AROS Time Keeper"
#else
#define APP_SHORT_NAME "TimeKeeper"
#define APP_LONG_NAME "Amiga Time Keeper"
#endif
#define APP_VERSION "1.12"
#define APP_DATE_VERSION "1.12 (31.01.2021)"
#define APP_ID APP_SHORT_NAME " " APP_DATE_VERSION
#define APP_TITLE APP_LONG_NAME " " APP_DATE_VERSION
#define APP_TITLE_VERSION APP_LONG_NAME " " APP_VERSION
#include "log.h"
#include "string.h"
#define KEYWORD_COUNT 18
#define KEYWORD_SERVER "SERVER"
#define KEYWORD_PORT "PORT"
#define KEYWORD_THRESHOLD "THRESHOLD"
#define KEYWORD_INTERVAL "INTERVAL"
#define KEYWORD_PRIORITY "CX_PRIORITY"
#define KEYWORD_POPKEY "CX_POPKEY"
#define KEYWORD_POPUP "CX_POPUP"
#define KEYWORD_READONLY "READONLY"
#define KEYWORD_EXPERT "EXPERT"
#define KEYWORD_TIMEOUT "TIMEOUT"
#define KEYWORD_ACTIVE "ACTIVE"
#define KEYWORD_NOLOG "NOLOG"
#define KEYWORD_TZ "TZ"
#define KEYWORD_TZD "TZD"
#define KEYWORD_TZNAME "TZNAME"
#define KEYWORD_TZVALUE "TZVALUE"
#define KEYWORD_TZDST "TZDST"
#define KEYWORD_POPUP2 "POPUP"
#define KEYWORD_FROM "FROM"
#define KEYWORD_TZ_ALIAS "TIMEZONE"
#define KEYWORD_TZD_ALIAS "TIMEZONEDISPLAY"
#define KEYWORD_TZNAME_ALIAS "TIMEZONEABBREVIATION"
#define KEYWORD_TZVALUE_ALIAS "TIMEZONEVALUE"
#define KEYWORD_TZDST_ALIAS "DST"
#define KEYWORD_NUMBER "NUMBER"
#define KEYWORD_DATE "DATE"
#define KEYWORD_TIME "TIME"
#define KEYWORD_DOS "DOS"
#define KEYWORD_ASCII "ASCII"
#define KEYWORD_RFC850 "RFC850"
#define KEYWORD_RFC1123 "RFC1123"
#define KEYWORD_RFC2822 "RFC2822"
#define KEYWORD_RFC3339 "RFC3339"
#define KEYWORD_ISO8601 "ISO8601"
#define KEYWORD_LOCAL "LOCAL"
#define KEYWORD_UTC "UTC"
#define SERVER_DEF "pool.ntp.org"
#define PORT_DEF "123"
#define THRESHOLD_MIN 1000LL
#define THRESHOLD_DEF 1000000LL
#define INTERVAL_MIN 500
#define INTERVAL_DEF 17500
#define INTERVAL_MAX 2 * 24 * 60 * 60 * 1000
#define PRIORITY_MIN -128
#define PRIORITY_DEF 25
#define PRIORITY_MAX 127
#define READONLY_DEF 0
#define EXPERT_DEF 0
#define ACTIVE_DEF 0
#define NOLOG_DEF 0
#define TIMEOUT_MIN 100
#define TIMEOUT_DEF 5000
#define TIMEOUT_MAX 30000
#define POPKEY_DEF "lshift control t"
#define POPUP_DEF 0
#define TZ_DEF ""
#define TZD_MIN 1
#define TZD_DEF 9
#define TZD_MAX 10
#define TZNAME_DEF ""
#define TZVALUE_MIN -2400
#define TZVALUE_DEF 16800
#define TZVALUE_MAX 2400
#define TZDST_DEF -1
#define KWD_TMPL_01 KEYWORD_READONLY "/S,"
#define KWD_TMPL_02 KEYWORD_EXPERT "/S,"
#define KWD_TMPL_03 KEYWORD_ACTIVE "/S,"
#define KWD_TMPL_04 KEYWORD_NOLOG "/S,"
#define KWD_TMPL_05 KEYWORD_SERVER "/K,"
#define KWD_TMPL_06 KEYWORD_PORT "/K,"
#define KWD_TMPL_07 KEYWORD_TIMEOUT "/N/K,"
#define KWD_TMPL_08 KEYWORD_THRESHOLD "/K,"
#define KWD_TMPL_09 KEYWORD_INTERVAL "/N/K,"
#define KWD_TMPL_10 KEYWORD_PRIORITY "/N/K,"
#define KWD_TMPL_11 KEYWORD_POPKEY "/K,"
#define KWD_TMPL_12 KEYWORD_POPUP "/K,"
#define KWD_TMPL_13 KEYWORD_TZ_ALIAS "=" KEYWORD_TZ "/K,"
#define KWD_TMPL_14 KEYWORD_TZD_ALIAS "=" KEYWORD_TZD "/N/K,"
#define KWD_TMPL_15 KEYWORD_TZNAME_ALIAS "=" KEYWORD_TZNAME "/K,"
#define KWD_TMPL_16 KEYWORD_TZVALUE_ALIAS "=" KEYWORD_TZVALUE "/N/K,"
#define KWD_TMPL_17 KEYWORD_TZDST_ALIAS "=" KEYWORD_TZDST "/N/K,"
#define KWD_TMPL_18 KEYWORD_POPUP2 "/S"
#define KWD_TMPL \
KWD_TMPL_01 \
KWD_TMPL_02 \
KWD_TMPL_03 \
KWD_TMPL_04 \
KWD_TMPL_05 \
KWD_TMPL_06 \
KWD_TMPL_07 \
KWD_TMPL_08 \
KWD_TMPL_09 \
KWD_TMPL_10 \
KWD_TMPL_11 \
KWD_TMPL_12 \
KWD_TMPL_13 \
KWD_TMPL_14 \
KWD_TMPL_15 \
KWD_TMPL_16 \
KWD_TMPL_17 \
KWD_TMPL_18
struct ControlMesage;
/* arexx.c */
bool HandleARexxMessages(void);
void CleanupARexx(void);
/* broker.c */
void StartBroker(void);
void Activate(void);
void Deactivate(void);
bool IsBrokerRunning(void);
void SetBrokerPriority(int);
/* ctrlmsg.c */
bool HandleControlMessages(void);
/* libraries.c */
int OpenLibraries(void);
void CloseLibraries(void);
#endif