1 /*
2  * conv.h --- header file for conv, the encoding module of websh3
3  * nca-073-9
4  *
5  * Copyright (c) 1996-2000 by Netcetera AG.
6  * Copyright (c) 2001 by Apache Software Foundation.
7  * All rights reserved.
8  *
9  * See the file "license.terms" for information on usage and
10  * redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
11  *
12  * @(#) $Id: conv.h 322102 2001-10-25 17:50:15Z davidw $
13  *
14  */
15 
16 #include <tcl.h>
17 #include "webutl.h"
18 #include "hashutl.h"
19 
20 #ifndef CONV_H
21 #define CONV_H
22 /* --------------------------------------------------------------------------
23  * Commands
24  * ------------------------------------------------------------------------*/
25 
26 /* ----------------------------------------------------------------------------
27  * SubCommands
28  * ------------------------------------------------------------------------- */
29 
30 /* ----------------------------------------------------------------------------
31  * Switches
32  * Params
33  * ------------------------------------------------------------------------- */
34 #define WEB_CONV_HTMLIFY_SWITCH_NUMERIC "-numeric"
35 
36 /* --------------------------------------------------------------------------
37  * Registered Data (SetAssocData)
38  * ------------------------------------------------------------------------*/
39 #define WEB_CONV_ASSOC_DATA "web::conv"
40 
41 /* --------------------------------------------------------------------------
42  * Internas
43  * ------------------------------------------------------------------------*/
44 
45 
46 #define WEBENC_LATIN_TABLE_LENGTH 256
47 
48 /* ----------------------------------------------------------------------------
49  * internal data
50  * ------------------------------------------------------------------------- */
51 typedef struct ConvData
52 {
53     int need[WEBENC_LATIN_TABLE_LENGTH];
54     Tcl_Obj *ute[WEBENC_LATIN_TABLE_LENGTH];	/* ">" --> "gt" */
55     Tcl_HashTable *etu;		/* "gt" --> ">" */
56 }
57 ConvData;
58 ConvData *createConvData();
59 void destroyConvData(ClientData clientData, Tcl_Interp * interp);
60 
61 /* ----------------------------------------------------------------------------
62  * Tcl interface
63  * ------------------------------------------------------------------------- */
64 int conv_Init(Tcl_Interp * interp);
65 
66 int Web_Htmlify(ClientData clientData,
67 		Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[]);
68 
69 int Web_UriEncode(ClientData clientData,
70 		  Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[]);
71 int Web_UriDecode(ClientData clientData,
72 		  Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[]);
73 
74 int Web_DeHtmlify(ClientData clientData,
75 		  Tcl_Interp * interp, int objc, Tcl_Obj * CONST objv[]);
76 
77 void htmlifyAppendNum(Tcl_Obj * tclo, int num);
78 
79 Tcl_Obj *webHtmlify(ConvData * convData, Tcl_Obj * in, int useNumeric);
80 int webDeHtmlify(ConvData * convData, Tcl_Obj * in, Tcl_Obj * out);
81 
82 Tcl_Obj *uriEncode(Tcl_Obj * inString);
83 Tcl_Obj *uriDecode(Tcl_Obj * inString);
84 
85 
86 /* ----------------------------------------------------------------------------
87  * prototypes
88  * ------------------------------------------------------------------------- */
89 int removeHtmlComments(Tcl_Interp * interp, Tcl_Obj * in, Tcl_Obj * res);
90 int removeShortHtmlComments(Tcl_Obj * in, Tcl_Obj * res);
91 int removeHtmlTags(Tcl_Obj * in, Tcl_Obj * res);
92 int convertHtmlEntities(ConvData * convData, Tcl_Obj * in, Tcl_Obj * res);
93 Tcl_UniChar getNumericEntity(Tcl_UniChar ** str, int len);
94 int Web_Html_RemoveComments(ClientData clientData,
95 			    Tcl_Interp * interp,
96 			    int objc, Tcl_Obj * CONST objv[]);
97 
98 #endif
99