From fd6bb20116127f6ac903d4b03abac72a49baa1ae Mon Sep 17 00:00:00 2001 From: fishsoupisgood Date: Sat, 27 Apr 2019 22:20:21 +0100 Subject: fish --- dl_item_ok.c | 306 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 306 insertions(+) create mode 100644 dl_item_ok.c (limited to 'dl_item_ok.c') diff --git a/dl_item_ok.c b/dl_item_ok.c new file mode 100644 index 0000000..ef919f6 --- /dev/null +++ b/dl_item_ok.c @@ -0,0 +1,306 @@ +/* + * Copyright 1996-2002 - Karl R. Hakimian and David Fries + * + * This file is part of datalink. + * + * Datalink 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. + * + * Datalink 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 datalink (see COPYING); if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include "datalink.h" +#include "datalink_private.h" + + +int dl_item_ok(WatchInfoPtr wi, ItemPtr ip) +{ + char buf[1024]; + + switch (ip->type) + { + case DL_TIME_TYPE: + + if (ip->data.time.tz_num < 1 + || ip->data.time.tz_num > wi->max_tz) + { + sprintf(buf, "Bad time zone number #%d", + ip->data.time.tz_num); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.time.hours > 23) + { + sprintf(buf, "Bad hour in time #%d", + ip->data.time.tz_num); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.time.minutes > 59) + { + sprintf(buf, "Bad minute in time #%d", + ip->data.time.tz_num); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.time.month < 1 || ip->data.time.month > 12) + { + sprintf(buf, "Bad month in time #%d", + ip->data.time.tz_num); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.time.day < 1 || ip->data.time.day > 31) + { + sprintf(buf, "Bad day in time #%d", + ip->data.time.tz_num); + (*dl_error_proc) (buf); + return (0); + } + + if (!dl_string_ok(ip->data.time.label, wi->max_str)) + { + sprintf(buf, "Bad characters in label in time #%d", + ip->data.time.tz_num); + (*dl_warn_proc) (buf); + } + + break; + case DL_ALARM_TYPE: + + if (ip->data.alarm.alarm_num < 1 || + ip->data.alarm.alarm_num > wi->max_alarms) + { + sprintf(buf, "Bad alarm number #%d", + ip->data.alarm.alarm_num); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.alarm.hours > 23) + { + sprintf(buf, "Bad hour in alarm #%d", + ip->data.alarm.alarm_num); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.alarm.minutes > 59) + { + sprintf(buf, "Bad minute in alarm #%d", + ip->data.alarm.alarm_num); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.alarm.month > 12) + { + sprintf(buf, "Bad month in alarm #%d", + ip->data.alarm.alarm_num); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.alarm.day > 31) + { + sprintf(buf, "Bad day in alarm #%d", + ip->data.alarm.alarm_num); + (*dl_error_proc) (buf); + return (0); + } + + if (!dl_string_ok(ip->data.alarm.label, wi->max_alarm_str)) + { + sprintf(buf, "Bad string in alarm #%d", + ip->data.alarm.alarm_num); + (*dl_warn_proc) (buf); + } + + break; + case DL_TIMER_TYPE: + + if (ip->data.timer.timer_num < 1 || + ip->data.timer.timer_num > wi->max_timers) + { + sprintf(buf, "Bad timer number #%d", + ip->data.timer.timer_num); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.timer.hours > 99) + { + sprintf(buf, "Bad hour in timer #%d", + ip->data.timer.timer_num); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.timer.minutes > 59) + { + sprintf(buf, "Bad minute in timer #%d", + ip->data.timer.timer_num); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.timer.second > 59) + { + sprintf(buf, "Bad second in timer #%d", + ip->data.timer.timer_num); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.timer.repeat != 0 + && ip->data.timer.repeat != 1) + { + sprintf(buf, "Bad repeat in timer #%d", + ip->data.timer.timer_num); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.timer.chron != 0 && ip->data.timer.chron != 1) + { + sprintf(buf, "Bad chron in timer #%d", + ip->data.timer.timer_num); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.timer.chron && ip->data.timer.repeat) + { + sprintf(buf, + "Can't do repeat and chron at the end of a timer, in timer #%d", + ip->data.timer.timer_num); + (*dl_error_proc) (buf); + return (0); + } + + if (!dl_string_ok(ip->data.timer.label, wi->max_timer_str)) + { + sprintf(buf, "Bad string in timer #%d", + ip->data.timer.timer_num); + (*dl_warn_proc) (buf); + } + + break; + case DL_APP_TYPE: + + if (ip->data.app.month < 1 || ip->data.app.month > 12) + { + sprintf(buf, "Bad month in appointment."); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.app.day < 1 || ip->data.app.day > 31) + { + sprintf(buf, "Bad day in appointment."); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.app.time > 0x7f) + { + sprintf(buf, "Bad time in appointment."); + (*dl_error_proc) (buf); + return (0); + } + + if (!dl_string_ok(ip->data.app.label, wi->max_str)) + { + sprintf(buf, + "Bad characters in label in appointment."); + (*dl_warn_proc) (buf); + } + + break; + case DL_CHRON_TYPE: + + if (!dl_string_ok(ip->data.chron.label, wi->max_chron_str)) + { + sprintf(buf, "Bad characters in label in chron."); + (*dl_warn_proc) (buf); + } + + break; + case DL_PHONE_TYPE: + + if (!dl_string_ok + (ip->data.phone.number, wi->max_phone_str)) + { + sprintf(buf, "Bad characters in phone number."); + (*dl_warn_proc) (buf); + } + + if (!dl_string_ok(ip->data.phone.label, wi->max_str)) + { + sprintf(buf, "Bad characters in label in phone."); + (*dl_warn_proc) (buf); + } + + break; + case DL_TODO_TYPE: + + if (!dl_string_ok(ip->data.todo.label, wi->max_str)) + { + sprintf(buf, "Bad characters in label in todo."); + (*dl_warn_proc) (buf); + } + + break; + case DL_ANNIV_TYPE: + + if (ip->data.anniv.month < 1 || ip->data.anniv.month > 12) + { + sprintf(buf, "Bad month in anniversary."); + (*dl_error_proc) (buf); + return (0); + } + + if (ip->data.anniv.day < 1 || ip->data.anniv.day > 31) + { + sprintf(buf, "Bad day in anniversary."); + (*dl_error_proc) (buf); + return (0); + } + + if (!dl_string_ok(ip->data.anniv.label, wi->max_str)) + { + sprintf(buf, + "Bad characters in label in anniversary."); + (*dl_warn_proc) (buf); + } + + break; + case DL_SYSTEM_TYPE: + break; + case DL_WRISTAPP_TYPE: + break; + case DL_MELODY_TYPE: + break; + default: + (*dl_error_proc) ("Unknown type"); + return (0); + } + + return (1); +} -- cgit v1.2.3