📄 uuint.h
字号:
/* * This file is part of uudeview, the simple and friendly multi-part multi- * file uudecoder program (c) 1994-2001 by Frank Pilhofer. The author may * be contacted at fp@fpx.de * * 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. */#ifndef __UUINT_H__#define __UUINT_H__/* * This file describes the internal structures, variables and definitions * of UUDeview. It should not be included from other packages. Subject to * change without notice. Do not depend on anything here. * * $Id: uuint.h,v 1.19 2003/04/12 23:18:31 fp Exp $ */#ifndef _ANSI_ARGS_#ifdef PROTOTYPES#define _ANSI_ARGS_(c) c#else#define _ANSI_ARGS_(c) ()#endif#endif/* * Busy Polls will be made after processing ... lines */#define BUSY_LINE_TICKS 50/* * States of MIME scanner */#define MS_HEADERS 1 /* still inside of headers */#define MS_BODY 2 /* body of `simple' messages */#define MS_PREAMBLE 3 /* preamble of Multipart/Mixed */#define MS_SUBPART 4 /* within one of the Multiparts */#define MS_EPILOGUE 5 /* epilogue of Multipart/Mixed *//* * Number of subsequent encoded lines we require to believe this * is valid data. */#define ELC_COUNT 4/* * Flags a part may have. FL_PROPER means that we are sure about the file's * encoding, beginning and end, and don't have to use special care when de- * coding. */#define FL_NONE 0 /* no flag, just plain normal */#define FL_SINGLE 1 /* standalone MSG, do not mix */#define FL_PARTIAL 2 /* from Message/Partial */#define FL_PROPER 4 /* proper MIME part */#define FL_TOEND 8 /* part continues to EOF *//* * Auxiliary macro: compute the percentage of a against b. * The obvious answer is (100*a)/b, but this overflows for large a. * a/(b/100) is better; we use a/((b/100)+1) so that we don't divide * by zero for b<100 and the result doesn't become larger than 100% */#define UUPERCENT(a,b) ((int) ((unsigned long)(a) / \ (((unsigned long)(b)/100)+1))) /* * Make the Busy Callback easier. The macro returns true if the BusyCallback * wants us to terminate. */extern unsigned long uuyctr;#define UUBUSYPOLL(a,b) (((++uuyctr%BUSY_LINE_TICKS)==0) ? (progress.percent=UUPERCENT((a),(b)),UUBusyPoll()):0)/* * How many lines of headers do we need to believe another mail * header is approaching? Use more restrictive values for MIME * mails, less restrictive for Freestyle */typedef struct { int restart; /* restarting after a MIME body (not subpart) */ int afterdata; /* after we had useful data in freestyle mode */ int afternl; /* after an empty line in freestyle mode */} headercount;extern headercount hlcount;/* * Information from the headers of a message. Each instance must * have its very own copy of the strings. If `mimevers' is NULL, * then this message does not comply to the MIME standard. */typedef struct _headers { char *from; /* From: */ char *subject; /* Subject: */ char *rcpt; /* To: */ char *date; /* Date: */ char *mimevers; /* MIME-Version: */ char *ctype; /* Content-Type: */ char *ctenc; /* Content-Transfer-Encoding: */ char *fname; /* Potential Filename from Content-Type Parameter */ char *boundary; /* MIME-Boundary from Content-Type Parameter */ char *mimeid; /* MIME-Id for Message/Partial */ int partno; /* part number for Message/Partial */ int numparts; /* number of parts for Message/Partial */} headers;/* * Scanner state */typedef struct _scanstate { int isfolder; /* if we think this is a valid email folder */ int ismime; /* if we are within a valid MIME message */ int mimestate; /* state of MIME scanner */ int mimeenc; /* encoding of this MIME file */ char *source; /* source filename */ headers envelope; /* mail envelope headers */} scanstate;/* * Structure that holds the information for a single file / part of * a file. If a subject line is encountered, it is copied to subject; * if a begin is found, the mode and name of the file is extracted. * flags are set if 'begin' or 'end' is detected and 'uudet' if valid * uuencoded data is found. If the file contains a 'From:' line with * a '@' in it (indicating an origin email address), it is preserved * in 'origin'. **/typedef struct _fileread { char *subject; /* Whole subject line */ char *filename; /* Only filled in if begin detected */ char *origin; /* Whole 'From:' line */ char *mimeid; /* the ID for Mime-encoded files */ char *mimetype; /* Content-Type */ short mode; /* Mode of File (from 'begin') */ int begin; /* begin detected */ int end; /* end detected */ int flags; /* associated flags */ short uudet; /* valid encoded data. value indicates encoding */ short partno; /* Mime-files have a part number within */ short maxpno; /* ... plus the total number of parts */ char *sfname; /* Associated source file */ long startpos; /* ftell() position where data starts */ long length; /* length of data */} fileread;/* * Structure for holding one part of a file, with some more information * about it. The UUPreProcessPart() function takes one a fileread structure * and produces this uufile structure. * Linked List, ordered by partno. **/typedef struct _uufile { char *filename; char *subfname; char *mimeid; char *mimetype; short partno; fileread *data; struct _uufile *NEXT;} uufile;extern void *uu_MsgCBArg;extern void *uu_BusyCBArg;extern void *uu_FileCBArg;extern void *uu_FFCBArg;/* * variables */extern int uu_fast_scanning;extern int uu_bracket_policy;extern int uu_verbose;extern int uu_desperate;extern int uu_ignreply;extern int uu_debug;extern int uu_errno;extern int uu_dumbness;extern int uu_overwrite;extern int uu_ignmode;extern int uu_headercount;extern int uu_usepreamble;extern int uu_handletext;extern int uu_tinyb64;extern int uu_remove_input;extern int uu_more_mime;extern char *uusavepath;extern char *uuencodeext;/* * Encoding/Decoding tables */extern unsigned char UUEncodeTable[];extern unsigned char XXEncodeTable[];extern unsigned char B64EncodeTable[];extern unsigned char BHEncodeTable[];/* * String tables from uustring.c */extern char *msgnames[];extern char *codenames[];extern char *uuretcodes[];extern uulist *UUGlobalFileList;/* * State of MIME variables and current progress */extern int nofnum, mssdepth;extern int mimseqno, lastvalid;extern int lastenc;extern scanstate multistack[];extern headers localenv;extern scanstate sstate;extern uuprogress progress;/* * mallocable areas */extern char *uugen_fnbuffer, *uugen_inbuffer;extern char *uucheck_lastname, *uucheck_tempname;extern char *uuestr_itemp, *uuestr_otemp;extern char *uulib_msgstring, *uuncdl_fulline;extern char *uuncdp_oline, *uuscan_shlline, *uuscan_shlline2;extern char *uuscan_pvvalue, *uuscan_phtext;extern char *uuscan_sdline, *uuscan_sdbhds1;extern char *uuscan_sdbhds2, *uuscan_spline;extern char *uuutil_bhwtmp;extern char *uunconc_UUxlat, *uunconc_UUxlen;extern char *uunconc_B64xlat, *uunconc_XXxlat;extern char *uunconc_BHxlat, *uunconc_save;#ifdef __cplusplusextern "C" {#endifextern void (*uu_MsgCallback) _ANSI_ARGS_((void *, char *, int));extern int (*uu_BusyCallback) _ANSI_ARGS_((void *, uuprogress *));extern int (*uu_FileCallback) _ANSI_ARGS_((void *, char *, char *, int));extern char * (*uu_FNameFilter) _ANSI_ARGS_((void *, char *));/* * Functions from uulib.c that aren't defined in <uudeview.h> * Be careful about the definition with variable arguments. */#if defined(STDC_HEADERS) || defined(HAVE_STDARG_H)int UUMessage _ANSI_ARGS_((char *, int, int, char *, ...));#elseint UUMessage ();#endifint UUBusyPoll _ANSI_ARGS_((void));/* * Functions from uucheck.c */uufile * UUPreProcessPart _ANSI_ARGS_((fileread *, int *));int UUInsertPartToList _ANSI_ARGS_((uufile *));uulist * UUCheckGlobalList _ANSI_ARGS_((void));/* * Functions from uuutil.c */void UUkillfread _ANSI_ARGS_((fileread *));void UUkillfile _ANSI_ARGS_((uufile *));void UUkilllist _ANSI_ARGS_((uulist *));void UUkillheaders _ANSI_ARGS_((headers *));fileread * ScanPart _ANSI_ARGS_((FILE *, char *, int *));int UUbhdecomp _ANSI_ARGS_((char *, char *, char *, int *, size_t, size_t, size_t *));size_t UUbhwrite _ANSI_ARGS_((char *, size_t, size_t, FILE *));/* * Functions from uunconc.c */int UURepairData _ANSI_ARGS_((FILE *, char *, int, int *));void UUInitConc _ANSI_ARGS_((void));int UUValidData _ANSI_ARGS_((char *, int, int *));size_t UUDecodeLine _ANSI_ARGS_((char *, char *, int));int UUDecodeField _ANSI_ARGS_((char *, char *, int));int UUDecodePart _ANSI_ARGS_((FILE *, FILE *, int *, long, int, int, char *));int UUDecode _ANSI_ARGS_((uulist *));/* * Message retrieval from uustring.c */char * uustring _ANSI_ARGS_((int));/* * From uuscan.c */int UUScanHeader _ANSI_ARGS_((FILE *, headers *));#ifdef __cplusplus}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -