#endif
/* append.c */
-int encode_lzhuf P_((FILE *infp, FILE *outfp, size_t size, size_t *original_size_var, size_t *packed_size_var, char *name, char *hdr_method));
-void start_indicator P_((char *name, size_t size, char *msg, long def_indicator_threshold));
-void put_indicator P_((long int count));
-void finish_indicator2 P_((char *name, char *msg, int pcnt));
-void finish_indicator P_((char *name, char *msg));
+int encode_lzhuf P_((FILE *infp, FILE *outfp, off_t size, off_t *original_size_var, off_t *packed_size_var, char *name, char *hdr_method));
/* bitio.c */
void fillbuf P_((int n));
unsigned short getbits P_((int n));
void init_putbits P_((void));
/* crcio.c */
void make_crctable P_((void));
-unsigned int calccrc P_((unsigned int crc, unsigned char *p, unsigned int n));
-int fread_crc P_((unsigned int *crcp, unsigned char *p, int n, FILE *fp));
-void fwrite_crc P_((unsigned int *crcp, unsigned char *p, int n, FILE *fp));
+unsigned int calccrc P_((unsigned int crc, char *p, unsigned int n));
+int fread_crc P_((unsigned int *crcp, void *p, int n, FILE *fp));
+void fwrite_crc P_((unsigned int *crcp, void *p, int n, FILE *fp));
void init_code_cache P_((void));
-int fwrite_txt P_((unsigned char *p, int n, FILE *fp));
-int fread_txt P_((unsigned char *p, int n, FILE *fp));
+int fwrite_txt P_((void *vp, int n, FILE *fp));
+int fread_txt P_((void *vp, int n, FILE *fp));
/* dhuf.c */
void start_c_dyn P_((void));
void decode_start_dyn P_((void));
void output_dyn P_((unsigned int code, unsigned int pos));
void encode_end_dyn P_((void));
/* extract.c */
-int decode_lzhuf P_((FILE *infp, FILE *outfp, size_t original_size, size_t packed_size, char *name, int method, size_t *read_sizep));
+int decode_lzhuf P_((FILE *infp, FILE *outfp, off_t original_size, off_t packed_size, char *name, int method, off_t *read_sizep));
/* header.c */
-int calc_sum P_((char *p, int len));
+int calc_sum P_((void *p, int len));
void convert_filename P_((char *name, int len, int size, int from_code, int to_code, char *from_delim, char *to_delim, int case_to));
boolean get_header P_((FILE *fp, LzHeader *hdr));
int seek_lha_header P_((FILE *fp));
unsigned short decode_c_st1 P_((void));
unsigned short decode_p_st1 P_((void));
void decode_start_st1 P_((void));
+/* indicator.c */
+void start_indicator P_((char *name, off_t size, char *msg, long def_indicator_threshold));
+void put_indicator P_((long int count));
+void finish_indicator2 P_((char *name, char *msg, int pcnt));
+void finish_indicator P_((char *name, char *msg));
/* larc.c */
unsigned short decode_c_lzs P_((void));
unsigned short decode_p_lzs P_((void));
void decode_start_lz5 P_((void));
/* lhadd.c */
FILE *append_it P_((char *name, FILE *oafp, FILE *nafp));
-void temporary_to_new_archive_file P_((long new_archive_size));
+FILE *build_temporary_file P_((void));
+void temporary_to_new_archive_file P_((off_t new_archive_size));
void cmd_add P_((void));
void cmd_delete P_((void));
/* lharc.c */
void warning P_((char *fmt, ...));
void error P_((char *fmt, ...));
void fatal_error P_((char *fmt, ...));
+void cleanup P_((void));
RETSIGTYPE interrupt P_((int signo));
void *xmalloc P_((size_t size));
void *xrealloc P_((void *old, size_t size));
boolean find_files P_((char *name, int *v_filec, char ***v_filev));
void free_files P_((int filec, char **filev));
int build_temporary_name P_((void));
-void build_backup_name P_((char *buffer, char *original));
-void build_standard_archive_name P_((char *buffer, char *orginal));
+void build_backup_name P_((char *buffer, char *original, size_t size));
+void build_standard_archive_name P_((char *buffer, char *original, size_t size));
boolean need_file P_((char *name));
FILE *xfopen P_((char *name, char *mode));
FILE *open_old_archive P_((void));
int inquire P_((char *msg, char *name, char *selective));
void write_archive_tail P_((FILE *nafp));
void copy_old_one P_((FILE *oafp, FILE *nafp, LzHeader *hdr));
+void lha_exit P_((int status));
/* lhext.c */
void cmd_extract P_((void));
+int is_directory_traversal P_((char *path));
/* lhlist.c */
void cmd_list P_((void));
/* maketbl.c */
unsigned int encode P_((struct interfacing *interface));
unsigned int decode P_((struct interfacing *interface));
/* util.c */
-size_t copyfile P_((FILE *f1, FILE *f2, long size, int text_flg, unsigned int *crcp));
-int encode_stored_crc P_((FILE *ifp, FILE *ofp, long size, long *original_size_var, long *write_size_var));
+off_t copyfile P_((FILE *f1, FILE *f2, off_t size, int text_flg, unsigned int *crcp));
+int encode_stored_crc P_((FILE *ifp, FILE *ofp, off_t size, off_t *original_size_var, off_t *write_size_var));
boolean archive_is_msdos_sfx1 P_((char *name));
int xsnprintf P_((char *dest, size_t size, char *fmt, ...));
char *xstrchr P_((const char *s, int c));
char *xstrrchr P_((const char *s, int c));
char *xmemchr P_((const char *s, int c, size_t n));
char *xmemrchr P_((const char *s, int c, size_t n));
+int str_safe_copy P_((char *dst, const char *src, int dstsz));
+/* pm2.c */
+void decode_start_pm2 P_((void));
+unsigned short decode_c_pm2 P_((void));
+unsigned short decode_p_pm2 P_((void));
/* util.c */
#if !HAVE_MEMMOVE
#if !HAVE_STRCASECMP
int strcasecmp P_((const char *p1, const char *p2));
#endif
-#if !HAVE_BASENAME
+#if defined HAVE_DECL_BASENAME && !HAVE_DECL_BASENAME
char *basename P_((char *s));
#endif