139 lines
5.1 KiB
C
139 lines
5.1 KiB
C
/************************************************************************
|
|
* Copyright (C) 2000 Thomas Schulz *
|
|
* *
|
|
* $Id: ic35frec.h,v 1.5 2000/12/23 01:09:26 tsch Rel $ *
|
|
* *
|
|
* header for IC35 record access *
|
|
* *
|
|
************************************************************************/
|
|
#ifndef _IC35REC_H
|
|
#define _IC35REC_H 1
|
|
|
|
#include "util.h" /* uchar, .. */
|
|
|
|
|
|
/* IC35 database files */
|
|
#define FILEADDR 0x05
|
|
#define FILEMEMO 0x06
|
|
#define FILETODO 0x07
|
|
#define FILESCHED 0x08
|
|
#define FILE_ANY 0
|
|
|
|
#define MAXFLDS 21 /* max.number of fields in IC35 record */
|
|
#define MAXRLEN (MAXFLDS * (1+255)) /* #fields [Addresses] * (len + fieldlen) */
|
|
|
|
/* record-ids consist of file-id and record-id */
|
|
#define FileId(frid) ( ((ulong)(frid) & 0xFF000000) >> 24 )
|
|
#define RecId(frid) ( ((ulong)(frid) & 0x00FFFFFF) )
|
|
#define FileRecId(fid,rid) ( (((ulong)(fid) << 24) & 0xFF000000) \
|
|
| ( (ulong)(rid) & 0x00FFFFFF) )
|
|
/* field-ids consist of file-id and field-index */
|
|
#define FldFile(fldid) ( ((fldid) & 0xFF00) >> 8 )
|
|
#define FldIdx(fldid) ( (fldid) & 0x00FF )
|
|
|
|
/* IC35 record fields */
|
|
#define FILEfld(fileid,index) ( (fileid)<<8 | (index) )
|
|
/* record fields "Addresses" */
|
|
#define ADDRfld(index) FILEfld( FILEADDR, index )
|
|
#define A_LastName ADDRfld( 0 ) /* max. 50 chars */
|
|
#define A_FirstName ADDRfld( 1 ) /* max. 50 chars */
|
|
#define A_Company ADDRfld( 2 ) /* max. 128 chars */
|
|
#define A_TelHome ADDRfld( 3 ) /* max. 48 chars */
|
|
#define A_TelWork ADDRfld( 4 ) /* max. 48 chars */
|
|
#define A_TelMobile ADDRfld( 5 ) /* max. 48 chars */
|
|
#define A_TelFax ADDRfld( 6 ) /* max. 48 chars */
|
|
#define A_Street ADDRfld( 7 ) /* max. 128 chars */
|
|
#define A_City ADDRfld( 8 ) /* max. 60 chars */
|
|
#define A_ZIP ADDRfld( 9 ) /* max. 10 chars */
|
|
#define A_Region ADDRfld( 10 ) /* max. 40 chars */
|
|
#define A_Country ADDRfld( 11 ) /* max. 15 chars */
|
|
#define A_Email1 ADDRfld( 12 ) /* max. 80 chars */
|
|
#define A_Email2 ADDRfld( 13 ) /* max. 80 chars */
|
|
#define A_URL ADDRfld( 14 ) /* max. 128 chars */
|
|
#define A_BirthDate ADDRfld( 15 ) /* max. 10 chars */
|
|
#define A_Notes ADDRfld( 16 ) /* max. 255 chars */
|
|
#define A_CategoryID ADDRfld( 17 ) /* 1 Byte */
|
|
#define A_Def1 ADDRfld( 18 ) /* max. 128 chars */
|
|
#define A_Def2 ADDRfld( 19 ) /* max. 128 chars */
|
|
#define A_Category ADDRfld( 20 ) /* max. 8 chars */
|
|
/* record fields "Schedule" */
|
|
#define SCHEDfld(index) FILEfld( FILESCHED, index )
|
|
#define S_Subject SCHEDfld( 0 ) /* max. 60 chars */
|
|
#define S_StartDate SCHEDfld( 1 ) /* 8 yyyymmdd */
|
|
#define S_StartTime SCHEDfld( 2 ) /* 6 hhmmss */
|
|
#define S_EndTime SCHEDfld( 3 ) /* 6 hhmmss */
|
|
#define S_AlarmBefore SCHEDfld( 4 ) /* 1 Byte */
|
|
#define AlarmBefNone 0x00
|
|
#define AlarmBefNow 0x01
|
|
#define AlarmBef1min 0x02
|
|
#define AlarmBef5min 0x03
|
|
#define AlarmBef10min 0x04
|
|
#define AlarmBef30min 0x05
|
|
#define AlarmBef1hour 0x06
|
|
#define AlarmBef2hour 0x07
|
|
#define AlarmBef10hour 0x08
|
|
#define AlarmBef1day 0x09
|
|
#define AlarmBef2day 0x0A
|
|
#define S_Notes SCHEDfld( 5 ) /* max. 255 chars */
|
|
#define S_Alarm_Repeat SCHEDfld( 6 ) /* 1 Byte */
|
|
#define AlarmNoLED 0x80
|
|
#define AlarmNoBeep 0x40
|
|
#define RepeatMASK 0x0F
|
|
#define RepeatNone 0x00
|
|
#define RepeatDay 0x01
|
|
#define RepeatWeek 0x02
|
|
#define RepeatMonWday 0x03
|
|
#define RepeatYear 0x04
|
|
#define RepeatMonMday 0x05
|
|
#define S_EndDate SCHEDfld( 7 ) /* 8 yyyymmdd */
|
|
#define S_RepEndDate SCHEDfld( 8 ) /* 6 hhmmss */
|
|
#define S_RepCount SCHEDfld( 9 ) /* 1 Byte */
|
|
/* record fields "To Do List" */
|
|
#define TODOfld(index) FILEfld( FILETODO, index )
|
|
#define T_StartDate TODOfld( 0 ) /* 8 yyyymmdd */
|
|
#define T_EndDate TODOfld( 1 ) /* 8 yyyymmdd */
|
|
#define T_Completed TODOfld( 2 ) /* 1 Byte */
|
|
#define T_Priority TODOfld( 3 ) /* 1 Byte */
|
|
#define T_Subject TODOfld( 4 ) /* max. 60 chars */
|
|
#define T_Notes TODOfld( 5 ) /* max. 255 chars */
|
|
#define T_CategoryID TODOfld( 6 ) /* 1 Byte */
|
|
#define T_Category TODOfld( 7 ) /* max. 8 chars */
|
|
/* record fields "Memo" */
|
|
#define MEMOfld(index) FILEfld( FILEMEMO, index )
|
|
#define M_Subject MEMOfld( 0 ) /* max. 60 chars */
|
|
#define M_Notes MEMOfld( 1 ) /* max. 255 chars */
|
|
#define M_CategoryID MEMOfld( 2 ) /* 1 Byte */
|
|
#define M_Category MEMOfld( 3 ) /* max. 8 chars */
|
|
|
|
/* IC35 record change flags */
|
|
#define IC35_NEW 0x80 /* new record */
|
|
#define IC35_MOD 0x40 /* modified */
|
|
#define IC35_DEL 0x20 /* deleted (no record data) */
|
|
#define IC35_CLEAN 0x00 /* unchanged */
|
|
|
|
|
|
typedef struct ic35rec IC35REC;
|
|
|
|
|
|
char * ic35fname( int fileid );
|
|
int ic35fnflds( int fileid );
|
|
|
|
IC35REC * new_ic35rec( void );
|
|
void del_ic35rec( IC35REC * rec );
|
|
|
|
void set_ic35recid( IC35REC * rec, ulong recid );
|
|
ulong ic35recid( IC35REC * rec );
|
|
void set_ic35recchg( IC35REC * rec, uchar chgflag );
|
|
uchar ic35recchg( IC35REC * rec );
|
|
|
|
void set_ic35recdata( IC35REC * rec, uchar * data, size_t dlen );
|
|
void get_ic35recdata( IC35REC * rec, uchar ** pdata, size_t * pdlen );
|
|
|
|
void set_ic35recfld( IC35REC * rec, int fldid, char * data );
|
|
void get_ic35recfld( IC35REC * rec, int fldid, uchar** pfld, size_t * plen );
|
|
char * ic35recfld( IC35REC * rec, int fldid );
|
|
|
|
int cmp_ic35rec( IC35REC * rec1, IC35REC * rec2 );
|
|
|
|
#endif /*_IC35REC_H*/
|