mirror of
https://bitbucket.org/smil3y/kde-extraapps.git
synced 2025-02-25 11:22:55 +00:00
175 lines
5.1 KiB
C
175 lines
5.1 KiB
C
/* -*- mode: c; indent-tabs-mode: nil; -*-
|
|
* $Id: unpluckint.h,v 1.5 2003/12/28 20:59:21 chrish Exp $
|
|
*
|
|
* unpluck -- a library to read Plucker data files
|
|
* Copyright (c) 2002, Bill Janssen
|
|
*
|
|
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
*/
|
|
#ifndef UNPLUGINT_H
|
|
#define UNPLUGINT_H
|
|
/*
|
|
* This header file should be included after an #include of glib.h
|
|
*/
|
|
|
|
#define PLKR_TIMEADJUST 2082848400 /* difference in seconds between
|
|
Palm timebase of 12 AM Jan 1, 1904,
|
|
and UNIX timebase of 12 AM Jan 1, 1970 */
|
|
|
|
#define MAX_RESERVED 8
|
|
|
|
#define OWNER_ID_HASH_LEN 40
|
|
|
|
#ifndef MAX
|
|
#define MAX(a,b) (((a)>(b))?(a):(b))
|
|
#endif
|
|
|
|
#ifndef MIN
|
|
#define MIN(a,b) (((a)<(b))?(a):(b))
|
|
#endif
|
|
|
|
#ifndef FALSE
|
|
#define FALSE 0
|
|
#endif
|
|
|
|
#ifndef TRUE
|
|
#define TRUE 1
|
|
#endif
|
|
|
|
#define READ_BIGENDIAN_SHORT(p) (((p)[0] << 8)|((p)[1]))
|
|
#define READ_BIGENDIAN_LONG(p) (((p)[0] << 24)|((p)[1] << 16)|((p)[2] << 8)|((p)[3]))
|
|
|
|
typedef enum {
|
|
PLKR_HOME_NAME = 0,
|
|
PLKR_URLS_INDEX_NAME = 2,
|
|
PLKR_DEFAULT_CATEGORY_NAME = 3,
|
|
PLKR_METADATA_NAME = 4
|
|
} ReservedRecordName;
|
|
|
|
typedef struct {
|
|
int uid;
|
|
ReservedRecordName name;
|
|
} ReservedRecordEntry;
|
|
|
|
typedef enum {
|
|
PLKR_MDTYPE_DEFAULTCHARSET = 1,
|
|
PLKR_MDTYPE_EXCEPTCHARSETS = 2,
|
|
PLKR_MDTYPE_OWNERIDCRC = 3,
|
|
PLKR_MDTYPE_AUTHOR = 4,
|
|
PLKR_MDTYPE_TITLE = 5,
|
|
PLKR_MDTYPE_PUBLICATIONTIME = 6
|
|
} MetadataTypecodes;
|
|
|
|
typedef enum {
|
|
PLKR_COMPRESSION_DOC = 1,
|
|
PLKR_COMPRESSION_ZLIB = 2
|
|
} plkr_CompressionType;
|
|
|
|
typedef struct plkr_DataRecord_s plkr_DataRecord;
|
|
|
|
/* A structure to hold information about each record */
|
|
struct plkr_DataRecord_s {
|
|
long offset;
|
|
int size; /* size in DB */
|
|
int uncompressed_size; /* size of compressed portion, when uncompressed */
|
|
int cached_size; /* size of cached buffer, if cache is non-NULL */
|
|
int uid;
|
|
int nparagraphs;
|
|
plkr_DataRecordType type;
|
|
unsigned char *cache; /* cache of uncompressed full record */
|
|
int charset_mibenum;
|
|
};
|
|
|
|
/* The main data structure for the document */
|
|
struct plkr_Document_s {
|
|
plkr_DBHandle handle;
|
|
char *name; /* short name in header */
|
|
char *title; /* title in metadata, if any */
|
|
char *author; /* author in metadata, if any */
|
|
time_t publication_time; /* from metadata, if at all */
|
|
time_t creation_time; /* from header */
|
|
time_t modification_time;
|
|
plkr_CompressionType compression;
|
|
int nrecords;
|
|
plkr_DataRecord *records;
|
|
int max_record_size;
|
|
int home_record_uid;
|
|
int default_category_record_uid;
|
|
int metadata_record_uid;
|
|
int urls_index_record_uid;
|
|
char **urls;
|
|
int nurls;
|
|
plkr_CategoryList default_categories;
|
|
int default_charset_mibenum;
|
|
int owner_id_required; /* 1 for yes, 0 for no */
|
|
unsigned char owner_id_key[40];
|
|
};
|
|
|
|
/***********************************************************************/
|
|
/***********************************************************************/
|
|
/***** *****/
|
|
/***** Some simple utility routines so we don't need GLib *****/
|
|
/***** *****/
|
|
/***********************************************************************/
|
|
/***********************************************************************/
|
|
|
|
typedef struct HashTable HashTable;
|
|
|
|
void _plkr_message (
|
|
const char *formatSpec,
|
|
...
|
|
)
|
|
#ifdef __GNUC__
|
|
__attribute__ ((format (printf, 1, 2)))
|
|
#endif
|
|
;
|
|
/* Display the message to stderr */
|
|
|
|
char *_plkr_strndup (
|
|
char *str,
|
|
int len
|
|
);
|
|
/* return a freshly-malloced copy of str */
|
|
|
|
HashTable *_plkr_NewHashTable (
|
|
int size
|
|
);
|
|
/* create an instance of a string-keyed hash table and return it.
|
|
"size" is the number of buckets to start with -- should be prime. */
|
|
|
|
void *_plkr_FindInTable (
|
|
HashTable * ht,
|
|
char *key
|
|
);
|
|
/* lookup the specified "key" in the specified "ht". */
|
|
|
|
void *_plkr_RemoveFromTable (
|
|
HashTable * ht,
|
|
char *key
|
|
);
|
|
/* remove the entry with "key" from the table, if present, and return
|
|
the value as the result. */
|
|
|
|
int _plkr_AddToTable (
|
|
HashTable * ht,
|
|
char *key,
|
|
void *obj
|
|
);
|
|
/* Add the specified "obj" to the table with key "key". Returns
|
|
0 if key is already in table (and doesn't add "obj"), and returns
|
|
1 if key was added to table. */
|
|
|
|
#endif
|