| 1 |
root |
1.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 |
root |
1.6 |
* $Id$ |
| 25 |
root |
1.1 |
*/ |
| 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 |
root |
1.2 |
#define YENC_ENCODED (7) /* yEnc encoded */ |
| 86 |
root |
1.1 |
|
| 87 |
|
|
/* |
| 88 |
|
|
* Option indices for GetOption / SetOption |
| 89 |
|
|
*/ |
| 90 |
|
|
|
| 91 |
|
|
#define UUOPT_VERSION (0) /* version number MAJOR.MINORplPATCH (ro) */ |
| 92 |
|
|
#define UUOPT_FAST (1) /* assumes only one part per file */ |
| 93 |
|
|
#define UUOPT_DUMBNESS (2) /* switch off the program's intelligence */ |
| 94 |
|
|
#define UUOPT_BRACKPOL (3) /* give numbers in [] higher precendence */ |
| 95 |
|
|
#define UUOPT_VERBOSE (4) /* generate informative messages */ |
| 96 |
|
|
#define UUOPT_DESPERATE (5) /* try to decode incomplete files */ |
| 97 |
|
|
#define UUOPT_IGNREPLY (6) /* ignore RE:plies (off by default) */ |
| 98 |
|
|
#define UUOPT_OVERWRITE (7) /* whether it's OK to overwrite ex. files */ |
| 99 |
|
|
#define UUOPT_SAVEPATH (8) /* prefix to save-files on disk */ |
| 100 |
|
|
#define UUOPT_IGNMODE (9) /* ignore the original file mode */ |
| 101 |
|
|
#define UUOPT_DEBUG (10) /* print messages with FILE/LINE info */ |
| 102 |
|
|
#define UUOPT_ERRNO (14) /* get last error code for UURET_IOERR (ro) */ |
| 103 |
|
|
#define UUOPT_PROGRESS (15) /* retrieve progress information */ |
| 104 |
|
|
#define UUOPT_USETEXT (16) /* handle text messages */ |
| 105 |
|
|
#define UUOPT_PREAMB (17) /* handle Mime preambles/epilogues */ |
| 106 |
|
|
#define UUOPT_TINYB64 (18) /* detect short B64 outside of Mime */ |
| 107 |
|
|
#define UUOPT_ENCEXT (19) /* extension for single-part encoded files */ |
| 108 |
|
|
#define UUOPT_REMOVE (20) /* remove input files after decoding */ |
| 109 |
|
|
#define UUOPT_MOREMIME (21) /* strict MIME adherence */ |
| 110 |
root |
1.4 |
#define UUOPT_DOTDOT (22) /* .. unescaping has not yet been done on input files */ |
| 111 |
root |
1.1 |
|
| 112 |
|
|
/* |
| 113 |
|
|
* Code for the "action" in the progress structure |
| 114 |
|
|
*/ |
| 115 |
|
|
|
| 116 |
|
|
#define UUACT_IDLE (0) /* we don't do anything */ |
| 117 |
|
|
#define UUACT_SCANNING (1) /* scanning an input file */ |
| 118 |
|
|
#define UUACT_DECODING (2) /* decoding into a temp file */ |
| 119 |
|
|
#define UUACT_COPYING (3) /* copying temp to target */ |
| 120 |
|
|
#define UUACT_ENCODING (4) /* encoding a file */ |
| 121 |
|
|
|
| 122 |
|
|
/* |
| 123 |
|
|
* forward definition |
| 124 |
|
|
*/ |
| 125 |
|
|
|
| 126 |
|
|
struct _uufile; |
| 127 |
|
|
|
| 128 |
|
|
/* |
| 129 |
|
|
* Structure for holding the list of files that have been found |
| 130 |
|
|
* uufile items are inserted into this list with UUInsertPartToList |
| 131 |
|
|
* After inserting a bunch of files, UUCheckGlobalList must be called |
| 132 |
|
|
* to update the states. |
| 133 |
|
|
*/ |
| 134 |
|
|
|
| 135 |
|
|
typedef struct _uulist { |
| 136 |
|
|
short state; /* Status as described by the macros above */ |
| 137 |
|
|
short mode; /* file mode as found on begin line */ |
| 138 |
|
|
|
| 139 |
|
|
int begin; /* part number where begin was detected */ |
| 140 |
|
|
int end; /* part number where end was detected */ |
| 141 |
|
|
|
| 142 |
|
|
short uudet; /* Encoding type (see macros above) */ |
| 143 |
|
|
int flags; /* flags, especially for single-part files */ |
| 144 |
|
|
|
| 145 |
|
|
long size; /* approximate size of resulting file */ |
| 146 |
|
|
char *filename; /* malloc'ed file name */ |
| 147 |
|
|
char *subfname; /* malloc'ed ID from subject line */ |
| 148 |
|
|
char *mimeid; /* malloc'ed MIME-ID, if available */ |
| 149 |
|
|
char *mimetype; /* malloc'ed Content-Type, if available */ |
| 150 |
|
|
|
| 151 |
|
|
char *binfile; /* name of temp file, if already decoded */ |
| 152 |
|
|
|
| 153 |
|
|
struct _uufile *thisfile; /* linked list of this file's parts */ |
| 154 |
|
|
|
| 155 |
|
|
int *haveparts; /* the parts we have (max. 256 are listed) */ |
| 156 |
|
|
int *misparts; /* list of missing parts (max. 256) */ |
| 157 |
|
|
|
| 158 |
|
|
struct _uulist *NEXT; /* next item of the list */ |
| 159 |
|
|
struct _uulist *PREV; /* previous item of the list */ |
| 160 |
|
|
} uulist; |
| 161 |
|
|
|
| 162 |
|
|
/* |
| 163 |
|
|
* The "progress" structure which is passed to the Busy Callback |
| 164 |
|
|
*/ |
| 165 |
|
|
|
| 166 |
|
|
typedef struct { |
| 167 |
|
|
int action; /* see UUACT_* definitions above */ |
| 168 |
|
|
char curfile[256]; /* the file we are working on, incl. path */ |
| 169 |
|
|
int partno; /* part we're currently decoding */ |
| 170 |
|
|
int numparts; /* total number of parts of this file */ |
| 171 |
|
|
long fsize; /* size of the current file */ |
| 172 |
|
|
int percent; /* % of _current part_ */ |
| 173 |
|
|
long foffset; /* file offset -- internal use only */ |
| 174 |
|
|
long totsize; /* file total size -- internal use only */ |
| 175 |
|
|
} uuprogress; |
| 176 |
|
|
|
| 177 |
|
|
|
| 178 |
|
|
/* |
| 179 |
|
|
* Externally visible Functions |
| 180 |
|
|
*/ |
| 181 |
|
|
|
| 182 |
|
|
#ifndef UUEXPORT |
| 183 |
|
|
#define UUEXPORT |
| 184 |
|
|
#endif |
| 185 |
|
|
|
| 186 |
|
|
#ifdef __cplusplus |
| 187 |
|
|
extern "C" { |
| 188 |
|
|
#endif |
| 189 |
|
|
|
| 190 |
|
|
int UUEXPORT UUInitialize _ANSI_ARGS_((void)); |
| 191 |
|
|
int UUEXPORT UUGetOption _ANSI_ARGS_((int, int *, char *, int)); |
| 192 |
|
|
int UUEXPORT UUSetOption _ANSI_ARGS_((int, int, char *)); |
| 193 |
|
|
char * UUEXPORT UUstrerror _ANSI_ARGS_((int)); |
| 194 |
|
|
int UUEXPORT UUSetMsgCallback _ANSI_ARGS_((void *, |
| 195 |
|
|
void (*) (void *, |
| 196 |
|
|
char *, |
| 197 |
|
|
int))); |
| 198 |
|
|
int UUEXPORT UUSetBusyCallback _ANSI_ARGS_((void *, |
| 199 |
|
|
int (*) (void *, |
| 200 |
|
|
uuprogress *), |
| 201 |
|
|
long)); |
| 202 |
|
|
int UUEXPORT UUSetFileCallback _ANSI_ARGS_((void *, |
| 203 |
|
|
int (*) (void *, char *, |
| 204 |
|
|
char *, int))); |
| 205 |
|
|
int UUEXPORT UUSetFNameFilter _ANSI_ARGS_((void *, |
| 206 |
|
|
char * (*) (void *, |
| 207 |
|
|
char *))); |
| 208 |
root |
1.3 |
int UUEXPORT UUSetFileNameCallback _ANSI_ARGS_((void *, |
| 209 |
|
|
char * (*) (void *, |
| 210 |
|
|
char *, char *))); |
| 211 |
root |
1.1 |
char * UUEXPORT UUFNameFilter _ANSI_ARGS_((char *)); |
| 212 |
root |
1.2 |
int UUEXPORT UULoadFile _ANSI_ARGS_((char *, char *, int, int *)); |
| 213 |
root |
1.6 |
int UUEXPORT UULoadFileWithPartNo _ANSI_ARGS_((char *, char *, int, int, int *)); |
| 214 |
root |
1.1 |
uulist *UUEXPORT UUGetFileListItem _ANSI_ARGS_((int)); |
| 215 |
|
|
int UUEXPORT UURenameFile _ANSI_ARGS_((uulist *, char *)); |
| 216 |
|
|
int UUEXPORT UUDecodeToTemp _ANSI_ARGS_((uulist *)); |
| 217 |
|
|
int UUEXPORT UURemoveTemp _ANSI_ARGS_((uulist *)); |
| 218 |
|
|
int UUEXPORT UUDecodeFile _ANSI_ARGS_((uulist *, char *)); |
| 219 |
|
|
int UUEXPORT UUInfoFile _ANSI_ARGS_((uulist *, void *, |
| 220 |
|
|
int (*) (void *, |
| 221 |
|
|
char *))); |
| 222 |
|
|
int UUEXPORT UUSmerge _ANSI_ARGS_((int)); |
| 223 |
|
|
int UUEXPORT UUCleanUp _ANSI_ARGS_((void)); |
| 224 |
|
|
|
| 225 |
|
|
int UUEXPORT UUQuickDecode _ANSI_ARGS_((FILE *, FILE *, |
| 226 |
|
|
char *, long)); |
| 227 |
|
|
|
| 228 |
|
|
int UUEXPORT UUEncodeMulti _ANSI_ARGS_((FILE *, FILE *, |
| 229 |
|
|
char *, int, |
| 230 |
|
|
char *, char *, int)); |
| 231 |
|
|
int UUEXPORT UUEncodePartial _ANSI_ARGS_((FILE *, FILE *, |
| 232 |
|
|
char *, int, |
| 233 |
|
|
char *, char *, |
| 234 |
root |
1.5 |
int, int, long, |
| 235 |
|
|
unsigned long*)); |
| 236 |
root |
1.1 |
int UUEXPORT UUEncodeToStream _ANSI_ARGS_((FILE *, FILE *, |
| 237 |
|
|
char *, int, |
| 238 |
|
|
char *, int)); |
| 239 |
|
|
int UUEXPORT UUEncodeToFile _ANSI_ARGS_((FILE *, char *, int, |
| 240 |
|
|
char *, char *, long)); |
| 241 |
|
|
int UUEXPORT UUE_PrepSingle _ANSI_ARGS_((FILE *, FILE *, |
| 242 |
|
|
char *, int, |
| 243 |
|
|
char *, int, |
| 244 |
|
|
char *, char *, |
| 245 |
|
|
char *, int)); |
| 246 |
|
|
int UUEXPORT UUE_PrepPartial _ANSI_ARGS_((FILE *, FILE *, |
| 247 |
|
|
char *, int, |
| 248 |
|
|
char *, int, |
| 249 |
|
|
int, long, long, char *, |
| 250 |
|
|
char *, char *, int)); |
| 251 |
|
|
|
| 252 |
|
|
int UUEXPORT UUE_PrepSingleExt _ANSI_ARGS_((FILE *, FILE *, |
| 253 |
|
|
char *, int, |
| 254 |
|
|
char *, int, |
| 255 |
|
|
char *, char *, |
| 256 |
|
|
char *, char *, |
| 257 |
|
|
int)); |
| 258 |
|
|
int UUEXPORT UUE_PrepPartialExt _ANSI_ARGS_((FILE *, FILE *, |
| 259 |
|
|
char *, int, |
| 260 |
|
|
char *, int, |
| 261 |
|
|
int, long, long, char *, |
| 262 |
|
|
char *, char *, char *, |
| 263 |
|
|
int)); |
| 264 |
|
|
#ifdef __cplusplus |
| 265 |
|
|
} |
| 266 |
|
|
#endif |
| 267 |
|
|
#endif |