ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Convert-UUlib/uulib/uudeview.h
Revision: 1.9
Committed: Mon Aug 24 06:15:00 2009 UTC (14 years, 9 months ago) by root
Content type: text/plain
Branch: MAIN
CVS Tags: rel-1_34, rel-1_33, rel-1_32, rel-1_31, rel-1_71, rel-1_3, rel-1_5, rel-1_4, rel-1_7, rel-1_6, rel-1_62
Changes since 1.8: +1 -1 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 /*
2 * This file is part of uudeview, the simple and friendly multi-part multi-
3 * file uudecoder program (c) 1994-2001 by Frank Pilhofer. The author may
4 * be contacted at fp@fpx.de
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 */
16
17 #ifndef __UUDEVIEW_H__
18 #define __UUDEVIEW_H__
19
20 /*
21 * This include file features all the definitions that should
22 * be externally visible. This isn't much.
23 *
24 * $Id$
25 */
26
27 #ifndef _ANSI_ARGS_
28 #ifdef PROTOTYPES
29 #define _ANSI_ARGS_(c) c
30 #else
31 #define _ANSI_ARGS_(c) ()
32 #endif
33 #endif
34
35 /*
36 * Message Types
37 */
38
39 #define UUMSG_MESSAGE (0) /* just a message, nothing important */
40 #define UUMSG_NOTE (1) /* something that should be noticed */
41 #define UUMSG_WARNING (2) /* important msg, processing continues */
42 #define UUMSG_ERROR (3) /* processing has been terminated */
43 #define UUMSG_FATAL (4) /* decoder cannot process further requests */
44 #define UUMSG_PANIC (5) /* recovery impossible, app must terminate */
45
46 /*
47 * Return Values
48 */
49
50 #define UURET_OK (0) /* everything went fine */
51 #define UURET_IOERR (1) /* I/O Error - examine errno */
52 #define UURET_NOMEM (2) /* not enough memory */
53 #define UURET_ILLVAL (3) /* illegal value for operation */
54 #define UURET_NODATA (4) /* decoder didn't find any data */
55 #define UURET_NOEND (5) /* encoded data wasn't ended properly */
56 #define UURET_UNSUP (6) /* unsupported function (encoding) */
57 #define UURET_EXISTS (7) /* file exists (decoding) */
58 #define UURET_CONT (8) /* continue -- special from ScanPart */
59 #define UURET_CANCEL (9) /* operation canceled */
60
61 /*
62 * File states, may be OR'ed
63 */
64
65 #define UUFILE_READ (0) /* Read in, but not further processed */
66 #define UUFILE_MISPART (1) /* Missing Part(s) detected */
67 #define UUFILE_NOBEGIN (2) /* No 'begin' found */
68 #define UUFILE_NOEND (4) /* No 'end' found */
69 #define UUFILE_NODATA (8) /* File does not contain valid uudata */
70 #define UUFILE_OK (16) /* All Parts found, ready to decode */
71 #define UUFILE_ERROR (32) /* Error while decoding */
72 #define UUFILE_DECODED (64) /* Successfully decoded */
73 #define UUFILE_TMPFILE (128) /* Temporary decoded file exists */
74
75 /*
76 * Encoding Types
77 */
78
79 #define UU_ENCODED (1) /* UUencoded data */
80 #define B64ENCODED (2) /* Mime-Base64 data */
81 #define XX_ENCODED (3) /* XXencoded data */
82 #define BH_ENCODED (4) /* Binhex encoded */
83 #define PT_ENCODED (5) /* Plain-Text encoded (MIME) */
84 #define QP_ENCODED (6) /* Quoted-Printable (MIME) */
85 #define YENC_ENCODED (7) /* yEnc encoded */
86
87 /*
88 * Option indices for GetOption / SetOption
89 */
90
91 #define UUOPT_RBUF (90) /* file read I/O buffer size */
92 #define UUOPT_WBUF (91) /* file write I/O buffer size */
93 #define UUOPT_VERSION (0) /* version number MAJOR.MINORplPATCH (ro) */
94 #define UUOPT_FAST (1) /* assumes only one part per file */
95 #define UUOPT_DUMBNESS (2) /* switch off the program's intelligence */
96 #define UUOPT_BRACKPOL (3) /* give numbers in [] higher precendence */
97 #define UUOPT_VERBOSE (4) /* generate informative messages */
98 #define UUOPT_DESPERATE (5) /* try to decode incomplete files */
99 #define UUOPT_IGNREPLY (6) /* ignore RE:plies (off by default) */
100 #define UUOPT_OVERWRITE (7) /* whether it's OK to overwrite ex. files */
101 #define UUOPT_SAVEPATH (8) /* prefix to save-files on disk */
102 #define UUOPT_IGNMODE (9) /* ignore the original file mode */
103 #define UUOPT_DEBUG (10) /* print messages with FILE/LINE info */
104 #define UUOPT_ERRNO (14) /* get last error code for UURET_IOERR (ro) */
105 #define UUOPT_PROGRESS (15) /* retrieve progress information */
106 #define UUOPT_USETEXT (16) /* handle text messages */
107 #define UUOPT_PREAMB (17) /* handle Mime preambles/epilogues */
108 #define UUOPT_TINYB64 (18) /* detect short B64 outside of Mime */
109 #define UUOPT_ENCEXT (19) /* extension for single-part encoded files */
110 #define UUOPT_REMOVE (20) /* remove input files after decoding */
111 #define UUOPT_MOREMIME (21) /* strict MIME adherence */
112 #define UUOPT_DOTDOT (22) /* .. unescaping has not yet been done on input files */
113 #define UUOPT_AUTOCHECK (23) /* call checkgloballist after every part */
114
115 /*
116 * Code for the "action" in the progress structure
117 */
118
119 #define UUACT_IDLE (0) /* we don't do anything */
120 #define UUACT_SCANNING (1) /* scanning an input file */
121 #define UUACT_DECODING (2) /* decoding into a temp file */
122 #define UUACT_COPYING (3) /* copying temp to target */
123 #define UUACT_ENCODING (4) /* encoding a file */
124
125 /*
126 * forward definition
127 */
128
129 struct _uufile;
130
131 /*
132 * Structure for holding the list of files that have been found
133 * uufile items are inserted into this list with UUInsertPartToList
134 * After inserting a bunch of files, UUCheckGlobalList must be called
135 * to update the states.
136 */
137
138 typedef struct _uulist {
139 short state; /* Status as described by the macros above */
140 short mode; /* file mode as found on begin line */
141
142 int begin; /* part number where begin was detected */
143 int end; /* part number where end was detected */
144
145 short uudet; /* Encoding type (see macros above) */
146 int flags; /* flags, especially for single-part files */
147
148 long size; /* approximate size of resulting file */
149 char *filename; /* malloc'ed file name */
150 char *subfname; /* malloc'ed ID from subject line */
151 char *mimeid; /* malloc'ed MIME-ID, if available */
152 char *mimetype; /* malloc'ed Content-Type, if available */
153
154 char *binfile; /* name of temp file, if already decoded */
155
156 struct _uufile *thisfile; /* linked list of this file's parts */
157
158 int *haveparts; /* the parts we have (max. 256 are listed) */
159 int *misparts; /* list of missing parts (max. 256) */
160
161 struct _uulist *NEXT; /* next item of the list */
162 struct _uulist *PREV; /* previous item of the list */
163 } uulist;
164
165 /*
166 * The "progress" structure which is passed to the Busy Callback
167 */
168
169 typedef struct {
170 int action; /* see UUACT_* definitions above */
171 char curfile[256]; /* the file we are working on, incl. path */
172 int partno; /* part we're currently decoding */
173 int numparts; /* total number of parts of this file */
174 long fsize; /* size of the current file */
175 int percent; /* % of _current part_ */
176 long foffset; /* file offset -- internal use only */
177 long totsize; /* file total size -- internal use only */
178 } uuprogress;
179
180
181 /*
182 * Externally visible Functions
183 */
184
185 #ifndef UUEXPORT
186 #define UUEXPORT
187 #endif
188
189 #ifdef __cplusplus
190 extern "C" {
191 #endif
192
193 int UUEXPORT UUInitialize _ANSI_ARGS_((void));
194 int UUEXPORT UUGetOption _ANSI_ARGS_((int, int *, char *, int));
195 int UUEXPORT UUSetOption _ANSI_ARGS_((int, int, char *));
196 char * UUEXPORT UUstrerror _ANSI_ARGS_((int));
197 int UUEXPORT UUSetMsgCallback _ANSI_ARGS_((void *,
198 void (*) (void *,
199 char *,
200 int)));
201 int UUEXPORT UUSetBusyCallback _ANSI_ARGS_((void *,
202 int (*) (void *,
203 uuprogress *),
204 long));
205 int UUEXPORT UUSetFileCallback _ANSI_ARGS_((void *,
206 int (*) (void *, char *,
207 char *, int)));
208 int UUEXPORT UUSetFNameFilter _ANSI_ARGS_((void *,
209 char * (*) (void *,
210 char *)));
211 int UUEXPORT UUSetFileNameCallback _ANSI_ARGS_((void *,
212 char * (*) (void *,
213 char *, char *)));
214 char * UUEXPORT UUFNameFilter _ANSI_ARGS_((char *));
215 int UUEXPORT UULoadFile _ANSI_ARGS_((char *, char *, int, int *));
216 int UUEXPORT UULoadFileWithPartNo _ANSI_ARGS_((char *, char *, int, int, int *));
217 uulist *UUEXPORT UUGetFileListItem _ANSI_ARGS_((int));
218 int UUEXPORT UURenameFile _ANSI_ARGS_((uulist *, char *));
219 int UUEXPORT UUDecodeToTemp _ANSI_ARGS_((uulist *));
220 int UUEXPORT UURemoveTemp _ANSI_ARGS_((uulist *));
221 int UUEXPORT UUDecodeFile _ANSI_ARGS_((uulist *, char *));
222 int UUEXPORT UUInfoFile _ANSI_ARGS_((uulist *, void *,
223 int (*) (void *,
224 char *)));
225 int UUEXPORT UUSmerge _ANSI_ARGS_((int));
226 int UUEXPORT UUCleanUp _ANSI_ARGS_((void));
227
228 int UUEXPORT UUQuickDecode _ANSI_ARGS_((FILE *, FILE *,
229 char *, long));
230
231 int UUEXPORT UUEncodeMulti _ANSI_ARGS_((FILE *, FILE *,
232 char *, int,
233 char *, char *, int));
234 int UUEXPORT UUEncodePartial _ANSI_ARGS_((FILE *, FILE *,
235 char *, int,
236 char *, char *,
237 int, int, long,
238 unsigned int *));
239 int UUEXPORT UUEncodeToStream _ANSI_ARGS_((FILE *, FILE *,
240 char *, int,
241 char *, int));
242 int UUEXPORT UUEncodeToFile _ANSI_ARGS_((FILE *, char *, int,
243 char *, char *, long));
244 int UUEXPORT UUE_PrepSingle _ANSI_ARGS_((FILE *, FILE *,
245 char *, int,
246 char *, int,
247 char *, char *,
248 char *, int));
249 int UUEXPORT UUE_PrepPartial _ANSI_ARGS_((FILE *, FILE *,
250 char *, int,
251 char *, int,
252 int, long, long, char *,
253 char *, char *, int));
254
255 int UUEXPORT UUE_PrepSingleExt _ANSI_ARGS_((FILE *, FILE *,
256 char *, int,
257 char *, int,
258 char *, char *,
259 char *, char *,
260 int));
261 int UUEXPORT UUE_PrepPartialExt _ANSI_ARGS_((FILE *, FILE *,
262 char *, int,
263 char *, int,
264 int, long, long, char *,
265 char *, char *, char *,
266 int));
267 void UUEXPORT UUCheckGlobalList (void);
268 #ifdef __cplusplus
269 }
270 #endif
271 #endif