filters.h revision 7c478bd95313f5f23a4c958a745db2134aa03244
d62bc4badc1c1f1549c961cfb8b420e650e1272byz/*
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * CDDL HEADER START
d62bc4badc1c1f1549c961cfb8b420e650e1272byz *
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * The contents of this file are subject to the terms of the
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * Common Development and Distribution License, Version 1.0 only
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * (the "License"). You may not use this file except in compliance
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * with the License.
d62bc4badc1c1f1549c961cfb8b420e650e1272byz *
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * or http://www.opensolaris.org/os/licensing.
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * See the License for the specific language governing permissions
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * and limitations under the License.
d62bc4badc1c1f1549c961cfb8b420e650e1272byz *
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * When distributing Covered Code, include this CDDL HEADER in each
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * If applicable, add the following below this CDDL HEADER, with the
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * fields enclosed by brackets "[]" replaced with your own identifying
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * information: Portions Copyright [yyyy] [name of copyright owner]
d62bc4badc1c1f1549c961cfb8b420e650e1272byz *
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * CDDL HEADER END
d62bc4badc1c1f1549c961cfb8b420e650e1272byz */
d62bc4badc1c1f1549c961cfb8b420e650e1272byz/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
634e26ec75c89095090605284938356a3145f2b8Casper H.S. Dik/* All Rights Reserved */
d62bc4badc1c1f1549c961cfb8b420e650e1272byz
d62bc4badc1c1f1549c961cfb8b420e650e1272byz
d62bc4badc1c1f1549c961cfb8b420e650e1272byz/*
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * Use is subject to license terms.
d62bc4badc1c1f1549c961cfb8b420e650e1272byz */
d62bc4badc1c1f1549c961cfb8b420e650e1272byz
d62bc4badc1c1f1549c961cfb8b420e650e1272byz#pragma ident "%Z%%M% %I% %E% SMI"
d62bc4badc1c1f1549c961cfb8b420e650e1272byz
d62bc4badc1c1f1549c961cfb8b420e650e1272byz/* EMACS_MODES: !fill, lnumb, !overwrite, !nodelete, !picture */
d62bc4badc1c1f1549c961cfb8b420e650e1272byz
d62bc4badc1c1f1549c961cfb8b420e650e1272byz/**
b9e076dcc05b713d74073c0d692dfbb0f6f2c594yz ** The disk copy of the filter table:
b9e076dcc05b713d74073c0d692dfbb0f6f2c594yz **/
b9e076dcc05b713d74073c0d692dfbb0f6f2c594yz
d62bc4badc1c1f1549c961cfb8b420e650e1272byz/*
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * There are 9 fields in the filter table (the first one is ignored).
d62bc4badc1c1f1549c961cfb8b420e650e1272byz */
d62bc4badc1c1f1549c961cfb8b420e650e1272byz#define FL_MAX 9
d62bc4badc1c1f1549c961cfb8b420e650e1272byz# define FL_IGN 0
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy# define FL_PTYPS 1
d62bc4badc1c1f1549c961cfb8b420e650e1272byz# define FL_PRTRS 2
d62bc4badc1c1f1549c961cfb8b420e650e1272byz# define FL_ITYPS 3
d62bc4badc1c1f1549c961cfb8b420e650e1272byz# define FL_NAME 4
d62bc4badc1c1f1549c961cfb8b420e650e1272byz# define FL_OTYPS 5
d62bc4badc1c1f1549c961cfb8b420e650e1272byz# define FL_TYPE 6
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy# define FL_CMD 7
d62bc4badc1c1f1549c961cfb8b420e650e1272byz# define FL_TMPS 8
82a2fc4751cef28c0bdc327d02012bf8796083b9James Carlson
b9e076dcc05b713d74073c0d692dfbb0f6f2c594yz/*
b9e076dcc05b713d74073c0d692dfbb0f6f2c594yz * Various strings.
d62bc4badc1c1f1549c961cfb8b420e650e1272byz */
4ac67f0276a8313b5cefec38af347b94b7bfb526Anurag S. Maskey#define FL_SEP ":"
d62bc4badc1c1f1549c961cfb8b420e650e1272byz#define FL_END "\n"
d62bc4badc1c1f1549c961cfb8b420e650e1272byz#define FL_FAST "fast"
d62bc4badc1c1f1549c961cfb8b420e650e1272byz#define FL_SLOW "slow"
d62bc4badc1c1f1549c961cfb8b420e650e1272byz
d62bc4badc1c1f1549c961cfb8b420e650e1272byz/**
d62bc4badc1c1f1549c961cfb8b420e650e1272byz ** The internal copy of a filter as seen by the rest of the world:
4ac67f0276a8313b5cefec38af347b94b7bfb526Anurag S. Maskey **/
4ac67f0276a8313b5cefec38af347b94b7bfb526Anurag S. Maskey
4ac67f0276a8313b5cefec38af347b94b7bfb526Anurag S. Maskeytypedef enum FILTERTYPE {
4ac67f0276a8313b5cefec38af347b94b7bfb526Anurag S. Maskey fl_none,
d62bc4badc1c1f1549c961cfb8b420e650e1272byz fl_fast,
4ac67f0276a8313b5cefec38af347b94b7bfb526Anurag S. Maskey fl_slow,
4ac67f0276a8313b5cefec38af347b94b7bfb526Anurag S. Maskey fl_both
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy} FILTERTYPE;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy/*
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy * A (char **) list is an array of string pointers (char *) with
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy * a null pointer after the last item.
4ac67f0276a8313b5cefec38af347b94b7bfb526Anurag S. Maskey */
4ac67f0276a8313b5cefec38af347b94b7bfb526Anurag S. Maskeytypedef struct FILTER {
b9e076dcc05b713d74073c0d692dfbb0f6f2c594yz char * name; /* name of filter (redundant) */
b9e076dcc05b713d74073c0d692dfbb0f6f2c594yz char * command; /* shell command (full path) */
b9e076dcc05b713d74073c0d692dfbb0f6f2c594yz FILTERTYPE type; /* type of filter (fast/slow) */
b9e076dcc05b713d74073c0d692dfbb0f6f2c594yz char ** printer_types; /* list of valid printer types */
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy char ** printers; /* list of valid printers */
d62bc4badc1c1f1549c961cfb8b420e650e1272byz char ** input_types; /* list of valid input types */
d62bc4badc1c1f1549c961cfb8b420e650e1272byz char ** output_types; /* list of valid output types */
d62bc4badc1c1f1549c961cfb8b420e650e1272byz char ** templates; /* list of option templates */
d62bc4badc1c1f1549c961cfb8b420e650e1272byz} FILTER;
d62bc4badc1c1f1549c961cfb8b420e650e1272byz
d62bc4badc1c1f1549c961cfb8b420e650e1272byz/**
d62bc4badc1c1f1549c961cfb8b420e650e1272byz ** The internal copy of a filter as seen by the filter routines:
4ac67f0276a8313b5cefec38af347b94b7bfb526Anurag S. Maskey **/
d62bc4badc1c1f1549c961cfb8b420e650e1272byz
d62bc4badc1c1f1549c961cfb8b420e650e1272byz/*
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * To speed up processing the filter table, FL_MAX_GUESS slots
4ac67f0276a8313b5cefec38af347b94b7bfb526Anurag S. Maskey * will be preallocated for the internal copy. If filter tables
d62bc4badc1c1f1549c961cfb8b420e650e1272byz * are expected to be substantially larger than this, bump it up.
d62bc4badc1c1f1549c961cfb8b420e650e1272byz */
d62bc4badc1c1f1549c961cfb8b420e650e1272byz#define FL_MAX_GUESS 10
d62bc4badc1c1f1549c961cfb8b420e650e1272byz
d62bc4badc1c1f1549c961cfb8b420e650e1272byztypedef struct TYPE {
d62bc4badc1c1f1549c961cfb8b420e650e1272byz char * name;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy unsigned short info; /* 1 iff "name" is in Terminfo */
d62bc4badc1c1f1549c961cfb8b420e650e1272byz} TYPE;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
d62bc4badc1c1f1549c961cfb8b420e650e1272byz#define PATT_STAR "*"
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roytypedef struct TEMPLATE {
b9e076dcc05b713d74073c0d692dfbb0f6f2c594yz char * keyword;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy char * pattern;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy char * re;
b9e076dcc05b713d74073c0d692dfbb0f6f2c594yz char * result;
b9e076dcc05b713d74073c0d692dfbb0f6f2c594yz int nbra;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy} TEMPLATE;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
b9e076dcc05b713d74073c0d692dfbb0f6f2c594yz/*
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy * A (TYPE *) list is an array of content-types (TYPE) with a null
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy * "name" element. A (TEMPLATE *) list is an array of templates (TEMPLATE)
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy * with a null "keyword" element.
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy */
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roytypedef struct _FILTER {
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy struct _FILTER * next; /* for linking several */
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy char * name;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy char * command;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy char ** printers;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy TYPE * printer_types;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy TYPE * input_types; /* all possible choices */
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy TYPE * output_types; /* all possible choices */
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy TYPE * inputp; /* the one to be used */
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy TYPE * outputp; /* the one to be used */
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy TEMPLATE * templates;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy FILTERTYPE type;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy unsigned char mark,
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy level;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy} _FILTER;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define FL_CLEAR 0x00
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define FL_SKIP 0x01
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define FL_LEFT 0x02
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define FL_RIGHT 0x04
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define PARM_INPUT "INPUT"
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define PARM_OUTPUT "OUTPUT"
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define PARM_TERM "TERM"
d62bc4badc1c1f1549c961cfb8b420e650e1272byz#define PARM_PRINTER "PRINTER"
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
d62bc4badc1c1f1549c961cfb8b420e650e1272byz#define NPARM_SPEC 8
d62bc4badc1c1f1549c961cfb8b420e650e1272byz# define PARM_CPI "CPI"
d62bc4badc1c1f1549c961cfb8b420e650e1272byz# define PARM_LPI "LPI"
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy# define PARM_LENGTH "LENGTH"
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskey# define PARM_WIDTH "WIDTH"
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy# define PARM_PAGES "PAGES"
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy# define PARM_CHARSET "CHARSET"
fd4e42c38ba5cb6fa799652cefce71cc10314862Sebastien Roy# define PARM_FORM "FORM"
fd4e42c38ba5cb6fa799652cefce71cc10314862Sebastien Roy# define PARM_COPIES "COPIES"
fd4e42c38ba5cb6fa799652cefce71cc10314862Sebastien Roy
fd4e42c38ba5cb6fa799652cefce71cc10314862Sebastien Roy#define PARM_MODES "MODES"
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define FPARM_CPI 0x0001
d62bc4badc1c1f1549c961cfb8b420e650e1272byz#define FPARM_LPI 0x0002
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define FPARM_LENGTH 0x0004
d62bc4badc1c1f1549c961cfb8b420e650e1272byz#define FPARM_WIDTH 0x0008
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define FPARM_PAGES 0x0010
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define FPARM_CHARSET 0x0020
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define FPARM_FORM 0x0040
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define FPARM_COPIES 0x0080
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define FPARM_MODES 0x0100
d62bc4badc1c1f1549c961cfb8b420e650e1272byz
d62bc4badc1c1f1549c961cfb8b420e650e1272byz/**
d62bc4badc1c1f1549c961cfb8b420e650e1272byz ** Various routines.
d62bc4badc1c1f1549c961cfb8b420e650e1272byz **/
d62bc4badc1c1f1549c961cfb8b420e650e1272byz
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy/*
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy * Null terminated list (filters[i].name == NULL).
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy */
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royextern _FILTER *filters;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royextern size_t nfilters;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
d62bc4badc1c1f1549c961cfb8b420e650e1272byz#if defined(__STDC__)
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien RoyFILTER * getfilter ( char * );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy_FILTER * search_filter ( char * );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien RoyFILTERTYPE insfilter ( char ** , char * , char * , char * , char * , char ** , unsigned short * );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien RoyFILTERTYPE s_to_filtertype ( char * );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien RoyTEMPLATE s_to_template ( char * );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
b9e076dcc05b713d74073c0d692dfbb0f6f2c594yzTEMPLATE * sl_to_templatel ( char ** );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien RoyTYPE s_to_type ( char * );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien RoyTYPE * sl_to_typel ( char ** );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roychar * template_to_s ( TEMPLATE );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roychar * type_to_s ( TYPE );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roychar ** templatel_to_sl ( TEMPLATE * );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roychar ** typel_to_sl ( TYPE * );
d62bc4badc1c1f1549c961cfb8b420e650e1272byz
b9e076dcc05b713d74073c0d692dfbb0f6f2c594yzint open_filtertable ( char * , char * );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
6ba597c56d749c61b4f783157f63196d7b2445f0Anurag S. Maskeyint get_and_load ( void );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royint putfilter ( char * , FILTER * );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royint delfilter ( char * );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royint loadfilters ( char * );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royint dumpfilters( char * );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royvoid freetempl ( TEMPLATE * );
d62bc4badc1c1f1549c961cfb8b420e650e1272byzvoid freefilter ( FILTER * );
d62bc4badc1c1f1549c961cfb8b420e650e1272byzvoid free_filter ( _FILTER * );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royvoid trash_filters ( void );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royvoid close_filtertable ( FILE * );
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
d62bc4badc1c1f1549c961cfb8b420e650e1272byz#else
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
d62bc4badc1c1f1549c961cfb8b420e650e1272byzextern FILTER *getfilter();
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royextern _FILTER *search_filter();
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royextern FILTERTYPE insfilter(),
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy s_to_filtertype();
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royextern TYPE s_to_type(),
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy *sl_to_typel();
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royextern TEMPLATE s_to_template(),
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy *sl_to_templatel();
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#if defined(BUFSIZ)
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royextern FILE *open_filtertable();
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#endif
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royextern char **typel_to_sl(),
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy **templatel_to_sl(),
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy *getfilterfile();
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royextern int putfilter(),
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy delfilter(),
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy loadfilters(),
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy get_and_load();
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Royextern void freefilter(),
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy free_filter(),
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy freetempl(),
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy trash_filters(),
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy close_filtertable();
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#endif
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy