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.

187 lines
5.8 KiB

/*
* $Id: pi-userland.h,v 1.8 2006/10/17 13:24:07 desrod Exp $
*
* userland.h: General definitions for userland conduits.
*
* Copyright (C) 2004 by Adriaan de Groot <groot@kde.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.
*
* 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 PALM_USERLAND_H
#define PALM_USERLAND_H
#include <popt.h>
#include "pi-appinfo.h"
/*
* This file defines general stuff for conduits -- common option processing,
* perhaps some utility functions, etc. It prescribes how some of the code
* of a conduit should look like, so as to preserve uniformity of options
* and handling.
*
* - Each conduit should start its options table with
* USERLAND_RESERVED_OPTIONS. This sets up the standard options --port,
* --version, --quiet as well as popt autohelp.
* - If an error is found while processing options, call plu_badoption.
* This produces a standard error message.
* - If no error is found, call plu_connect() instead of pilot_connect().
* This does the same as pilot_connect, but obeys --quiet and produces
* output on stderr only if there _is_ an error.
*/
/***********************************************************************
*
* Option-handling functions.
*
***********************************************************************/
/*
* These are definitions for popt support in userland. Every conduit's popt
* table should start with USERLAND_RESERVED_OPTIONS to insert the standard
* options into it. Also enables autohelp.
*/
#define USERLAND_RESERVED_OPTIONS \
{NULL,0,POPT_ARG_INCLUDE_TABLE,plu_common_options,0,"Options common to all conduits.",NULL}, \
POPT_AUTOHELP
/*
* Complain about a bad (ie. nonexistent) option and exit();
*/
extern void plu_badoption(poptContext pc, int optc);
/*
* Add an alias to a popt context; remember to use --bad-option in the alias
* to add a complaint about deprecated options. Do not pass in both a long
* and a short option in one go, use two calls for that.
*/
void plu_popt_alias(poptContext pc,
const char *alias_long,
char alias_short,
const char *expansion);
/*
* Set explanation of what options to use in response to an alias that
* contains --bad-option.
*/
void plu_set_badoption_help(const char *help);
/***********************************************************************
*
* Connection functions.
*
***********************************************************************/
/*
* Connect to the Pilot specified by any --port option, respecting the quiet
* flag as well. This is basically pilot_connect(), but marginally cleaner.
*/
extern int plu_connect(void);
/***********************************************************************
*
* Things to do once you're connected to the handheld.
*
***********************************************************************/
/*
* Look up a category name. Argument @p info is the category part of the
* AppInfo block for the database, while @p name is the category to look up.
* Returns the index of the category if found (0..15) or -1 if not.
*
* The flags passed to findcategory are a bitwise or of enums; the meanings
* are:
*
* NOFLAGS : Match case-sensitive, return -1 if not found, do not
* match numbers as category numbers, do not complain.
* CASE_INSENSITIVE : Match in a case-insensitive fashion.
* DEFAULT_UNFILED : Return 0 (unfiled) instead of -1 on no-match.
* MATCH_NUMBERS : Match number strings 0 .. 15 as categories 0 .. 15.
* WARN_UNKNOWN : Complain on stderr if category not found.
*/
typedef enum {
PLU_CAT_NOFLAGS = 0,
PLU_CAT_CASE_INSENSITIVE = 0x0001,
PLU_CAT_DEFAULT_UNFILED = 0x0002,
PLU_CAT_MATCH_NUMBERS = 0x0004,
PLU_CAT_WARN_UNKNOWN = 0x0008
} plu_findcategory_flags_t;
extern int plu_findcategory(const struct CategoryAppInfo *info, const char *name, int flags);
typedef struct {
/* Numeric parts of the ROM version */
int major,
minor,
bugfix,
build,
state;
/* Textual representation of same: xxx.xx.xx-xxxxx */
char name[16];
} plu_romversion_t;
/*
* Retrieve the ROM version from the Palm; returns -1 on failure, 0
* otherwise and fills the fields of the @p d structure.
*/
extern int plu_getromversion(int sd, plu_romversion_t *d);
/***********************************************************************
*
* File-handling functions on the PC.
*
***********************************************************************/
/*
* Function: protect_files
*
* Summary: Adjust output file name so as to not overwrite an exsisting
* file.
*
* Parameters: name <-> buffer for filename
* extension --> file extension to add to name
* namelength --> size of buffer
*
* Returns: 1 file name protected (and stored in buffer name)
* 0 no alernate name found
* -1 other failure
*
*/
int plu_protect_files(char *name, const char *extension, const size_t namelength);
/*
* We need to be able to refer to the table of common options.
*/
extern struct poptOption plu_common_options[];
extern int plu_quiet;
extern char *plu_port;
extern int plu_timeout;
#endif
/* vi: set ts=8 sw=4 sts=4 noexpandtab: cin */
/* Local Variables: */
/* indent-tabs-mode: t */
/* c-basic-offset: 8 */
/* End: */