aboutsummaryrefslogtreecommitdiff
path: root/archivers
diff options
context:
space:
mode:
authorMikhail Teterin <mi@FreeBSD.org>2015-03-23 15:28:14 +0000
committerMikhail Teterin <mi@FreeBSD.org>2015-03-23 15:28:14 +0000
commitfe7a7297495dc945bea1958721fe5a2c65f69e96 (patch)
tree445a1a8b6b3851c096aae98300c0ecd3bb88d56e /archivers
parentde8b4e19152a39ee8d6a6e5eb9b164bf809cc429 (diff)
downloadports-fe7a7297495dc945bea1958721fe5a2c65f69e96.tar.gz
ports-fe7a7297495dc945bea1958721fe5a2c65f69e96.zip
Ubreak (see the new patch-math-remainder), resolve most of the warnings,
enable tests (regression-test).
Notes
Notes: svn path=/head/; revision=382010
Diffstat (limited to 'archivers')
-rw-r--r--archivers/ruby-lha/Makefile15
-rw-r--r--archivers/ruby-lha/files/patch-math-remainder55
-rw-r--r--archivers/ruby-lha/files/patch-tests9
-rw-r--r--archivers/ruby-lha/files/patch-warnings326
4 files changed, 397 insertions, 8 deletions
diff --git a/archivers/ruby-lha/Makefile b/archivers/ruby-lha/Makefile
index e741221511ad..ee743971974a 100644
--- a/archivers/ruby-lha/Makefile
+++ b/archivers/ruby-lha/Makefile
@@ -25,16 +25,15 @@ RUBY_SHEBANG_FILES= ${EXAMPLES}
OPTIONS_DEFINE= DOCS
+# We don't have executables in this package, but rake uses
+# INSTALL_PROG for shared libraries:
+MAKE_ARGS= INSTALL_PROG="${INSTALL_LIB}"
+
post-install:
@${MKDIR} ${STAGEDIR}${RUBY_MODEXAMPLESDIR}
${INSTALL_SCRIPT} ${EXAMPLES:S,^,${WRKSRC}/,} ${STAGEDIR}${RUBY_MODEXAMPLESDIR}
-.include <bsd.port.pre.mk>
-
-.if ${RUBY_VER} >= 2.0
-BROKEN= Does not build with Ruby 2.0 or Ruby 2.1
-.endif
-DEPRECATED= Does not work with Ruby 2.x
-EXPIRATION_DATE= 2015-03-28
+test check regression-test: build
+ cd ${WRKSRC}/test && ${RUBY} -I${WRKSRC} test.rb
-.include <bsd.port.post.mk>
+.include <bsd.port.mk>
diff --git a/archivers/ruby-lha/files/patch-math-remainder b/archivers/ruby-lha/files/patch-math-remainder
new file mode 100644
index 000000000000..2e440d04917b
--- /dev/null
+++ b/archivers/ruby-lha/files/patch-math-remainder
@@ -0,0 +1,55 @@
+Ruby 2.x #includes <math.h>, which declares a function named
+remainder(). We must rename our variable to avoid name-conflict
+and allow this code to compile with Ruby-2.x
+
+ -mi
+
+--- ext/slide.c 2006-09-17 13:45:51.000000000 -0400
++++ ext/slide.c 2015-03-23 10:27:10.000000000 -0400
+@@ -88,5 +88,5 @@
+ static unsigned int txtsiz;
+ static unsigned long dicsiz;
+-static unsigned int remainder;
++static unsigned int iremainder;
+
+ struct matchdata {
+@@ -163,5 +163,5 @@
+ n = fread_crc(crc, &text[txtsiz - dicsiz], dicsiz, infile);
+
+- remainder += n;
++ iremainder += n;
+
+ *pos -= dicsiz;
+@@ -271,5 +271,5 @@
+ search_dict_1(token, pos, 0, off+2, m);
+
+- if (m->len > remainder) m->len = remainder;
++ if (m->len > iremainder) m->len = iremainder;
+ }
+
+@@ -281,5 +281,5 @@
+ unsigned int *crc;
+ {
+- remainder--;
++ iremainder--;
+ if (++*pos >= txtsiz - maxmatch) {
+ update_dict(pos, crc);
+@@ -317,9 +317,9 @@
+ memset(text, ' ', TXTSIZ);
+
+- remainder = fread_crc(&crc, &text[dicsiz], txtsiz-dicsiz, infile);
++ iremainder = fread_crc(&crc, &text[dicsiz], txtsiz-dicsiz, infile);
+
+ match.len = THRESHOLD - 1;
+ match.off = 0;
+- if (match.len > remainder) match.len = remainder;
++ if (match.len > iremainder) match.len = iremainder;
+
+ pos = dicsiz;
+@@ -327,5 +327,5 @@
+ insert_hash(token, pos); /* associate token and pos */
+
+- while (remainder > 0 && ! unpackable) {
++ while (iremainder > 0 && ! unpackable) {
+ last = match;
+
diff --git a/archivers/ruby-lha/files/patch-tests b/archivers/ruby-lha/files/patch-tests
new file mode 100644
index 000000000000..bc81d47baad9
--- /dev/null
+++ b/archivers/ruby-lha/files/patch-tests
@@ -0,0 +1,9 @@
+--- test/test.rb 2006-09-17 14:32:52.000000000 -0400
++++ test/test.rb 2015-03-23 11:18:00.000000000 -0400
+@@ -21,5 +21,5 @@
+ obuff = ' ' * 256
+ (0..255).each do |x|
+- obuff[x] = x
++ obuff[x] = x.chr
+ end
+ nbuff = nil
diff --git a/archivers/ruby-lha/files/patch-warnings b/archivers/ruby-lha/files/patch-warnings
new file mode 100644
index 000000000000..458060927389
--- /dev/null
+++ b/archivers/ruby-lha/files/patch-warnings
@@ -0,0 +1,326 @@
+--- ext/crcio.c 2006-09-17 12:38:22.000000000 -0400
++++ ext/crcio.c 2015-03-23 10:29:59.000000000 -0400
+@@ -34,9 +34,11 @@
+ /* ------------------------------------------------------------------------ */
+ unsigned int
+-calccrc(crc, p, n)
++calccrc(crc, _p, n)
+ unsigned int crc;
+- unsigned char *p;
++ const void *_p;
+ unsigned int n;
+ {
++ const unsigned char *p = _p;
++
+ while (n-- > 0)
+ crc = UPDATE_CRC(crc, *p++);
+@@ -68,5 +70,5 @@
+ fwrite_crc(crcp, p, n, fp)
+ unsigned int *crcp;
+- unsigned char *p;
++ const unsigned char *p;
+ int n;
+ FILE *fp;
+@@ -139,9 +141,11 @@
+ /* ------------------------------------------------------------------------ */
+ int
+-fwrite_txt(p, n, fp)
+- unsigned char *p;
++fwrite_txt(_p, n, fp)
++ const void *_p;
+ int n;
+ FILE *fp;
+ {
++ const unsigned char *p = _p;
++
+ while (--n >= 0) {
+ if (*p != '\015' && *p != '\032') {
+@@ -161,6 +165,6 @@
+ /* ------------------------------------------------------------------------ */
+ int
+-fread_txt(p, n, fp)
+- unsigned char *p;
++fread_txt(_p, n, fp)
++ void *_p;
+ int n;
+ FILE *fp;
+@@ -168,4 +172,5 @@
+ int c;
+ int cnt = 0;
++ unsigned char *p = _p;
+
+ while (cnt < n) {
+--- ext/extract.c 2006-09-17 13:45:51.000000000 -0400
++++ ext/extract.c 2015-03-23 10:42:48.000000000 -0400
+@@ -15,5 +15,5 @@
+ size_t original_size;
+ size_t packed_size;
+- char *name;
++ const char *name;
+ int method;
+ size_t *read_sizep;
+--- ext/header.c 2006-09-17 12:38:22.000000000 -0400
++++ ext/header.c 2015-03-23 10:54:36.000000000 -0400
+@@ -49,10 +49,11 @@
+ #endif
+
+-int
+-calc_sum(p, len)
+- char *p;
++static int
++calc_sum(_p, len)
++ const void *_p;
+ int len;
+ {
+ int sum = 0;
++ const char *p = _p;
+
+ while (len--) sum += *p++;
+@@ -68,5 +69,5 @@
+
+ if (verbose_listing && verbose > 1)
+- printf("%02d %2d: ", get_ptr - start_ptr, 1);
++ printf("%02td %2d: ", get_ptr - start_ptr, 1);
+ c = GET_BYTE();
+ if (verbose_listing && verbose > 1) {
+@@ -85,5 +86,5 @@
+ if (len == 0) return;
+ if (verbose_listing && verbose > 1) {
+- printf("%02d %2d: ", get_ptr - start_ptr, len);
++ printf("%02td %2d: ", get_ptr - start_ptr, len);
+ while (len--)
+ printf("0x%02x ", GET_BYTE());
+@@ -103,5 +104,5 @@
+ #if DUMP_HEADER
+ if (verbose_listing && verbose > 1)
+- printf("%02d %2d: ", get_ptr - start_ptr, 2);
++ printf("%02td %2d: ", get_ptr - start_ptr, 2);
+ #endif
+ b0 = GET_BYTE();
+@@ -131,5 +132,5 @@
+ #if DUMP_HEADER
+ if (verbose_listing && verbose > 1)
+- printf("%02d %2d: ", get_ptr - start_ptr, 4);
++ printf("%02td %2d: ", get_ptr - start_ptr, 4);
+ #endif
+ b0 = GET_BYTE();
+@@ -164,5 +165,5 @@
+ #if DUMP_HEADER
+ if (verbose_listing && verbose > 1)
+- printf("%02d %2d: \"", get_ptr - start_ptr, len);
++ printf("%02td %2d: \"", get_ptr - start_ptr, len);
+
+ for (i = 0; i < len; i++) {
+@@ -1172,9 +1173,9 @@
+
+ /* remove leading `xxxx/..' */
+-static char *
+-remove_leading_dots(char *path)
++static const char *
++remove_leading_dots(const char *path)
+ {
+- char *first = path;
+- char *ptr = 0;
++ const char *first = path;
++ const char *ptr = NULL;
+
+ if (strcmp(first, "..") == 0) {
+@@ -1201,5 +1202,5 @@
+
+ if (ptr) {
+- warning("Removing leading `%.*s' from member name.", ptr-first, first);
++ warning("Removing leading `%.*s' from member name.", (int)(ptr - first), first);
+ return ptr;
+ }
+--- ext/huf.c 2006-09-17 12:38:22.000000000 -0400
++++ ext/huf.c 2015-03-23 10:37:51.000000000 -0400
+@@ -235,7 +235,5 @@
+ /* lh4, 5, 6, 7 */
+ void
+-output_st1(c, p)
+- unsigned short c;
+- unsigned short p;
++output_st1(unsigned short c, unsigned short p)
+ {
+ static unsigned short cpos;
+--- ext/lha.h 2006-09-18 04:53:29.000000000 -0400
++++ ext/lha.h 2015-03-23 11:03:01.000000000 -0400
+@@ -212,4 +212,6 @@
+ #include "lha_macro.h"
+
++unsigned char *alloc_buf(void);
++
+ #define exit(n) lha_exit(n)
+
+@@ -301,32 +303,34 @@
+ LHALIB_EXTERN boolean need_file(const char*);
+ LHALIB_EXTERN boolean archive_is_msdos_sfx1(const char*);
+-LHALIB_EXTERN void output_dyn();
+-LHALIB_EXTERN void encode_start_fix();
+-LHALIB_EXTERN void encode_end_dyn();
+-LHALIB_EXTERN void output_st1();
+-LHALIB_EXTERN void encode_start_st0();
+-LHALIB_EXTERN void encode_end_st0();
+-LHALIB_EXTERN void encode_start_st1();
+-LHALIB_EXTERN void encode_end_st1();
+-LHALIB_EXTERN unsigned short decode_c_dyn();
+-LHALIB_EXTERN unsigned short decode_p_dyn();
+-LHALIB_EXTERN void decode_start_fix();
+-LHALIB_EXTERN void decode_start_dyn();
+-LHALIB_EXTERN void decode_start_st0();
+-LHALIB_EXTERN void decode_start_st1();
+-LHALIB_EXTERN unsigned short decode_c_st0();
+-LHALIB_EXTERN unsigned short decode_c_st1();
+-LHALIB_EXTERN unsigned short decode_p_st0();
+-LHALIB_EXTERN unsigned short decode_p_st1();
+-LHALIB_EXTERN unsigned short decode_c_lzs();
+-LHALIB_EXTERN unsigned short decode_p_lzs();
+-LHALIB_EXTERN void decode_start_lzs();
+-LHALIB_EXTERN unsigned short decode_c_lz5();
+-LHALIB_EXTERN unsigned short decode_p_lz5();
+-LHALIB_EXTERN void decode_start_lz5();
+-LHALIB_EXTERN void make_crctable();
++LHALIB_EXTERN void output_dyn(unsigned int code, unsigned int pos);
++LHALIB_EXTERN void encode_start_fix(void);
++LHALIB_EXTERN void encode_end_dyn(void);
++LHALIB_EXTERN void output_st1(unsigned short c, unsigned short p);
++LHALIB_EXTERN void encode_start_st0(void);
++LHALIB_EXTERN void encode_end_st0(void);
++LHALIB_EXTERN void encode_start_st1(void);
++LHALIB_EXTERN void encode_end_st1(void);
++LHALIB_EXTERN void start_c_dyn(void);
++LHALIB_EXTERN unsigned short decode_c_dyn(void);
++LHALIB_EXTERN unsigned short decode_p_dyn(void);
++LHALIB_EXTERN void decode_start_fix(void);
++LHALIB_EXTERN void decode_start_dyn(void);
++LHALIB_EXTERN void decode_start_st0(void);
++LHALIB_EXTERN void decode_start_st1(void);
++LHALIB_EXTERN unsigned short decode_c_st0(void);
++LHALIB_EXTERN unsigned short decode_c_st1(void);
++LHALIB_EXTERN unsigned short decode_p_st0(void);
++LHALIB_EXTERN unsigned short decode_p_st1(void);
++LHALIB_EXTERN unsigned short decode_c_lzs(void);
++LHALIB_EXTERN unsigned short decode_p_lzs(void);
++LHALIB_EXTERN void decode_start_lzs(void);
++LHALIB_EXTERN unsigned short decode_c_lz5(void);
++LHALIB_EXTERN unsigned short decode_p_lz5(void);
++LHALIB_EXTERN void decode_start_lz5(void);
++LHALIB_EXTERN void make_crctable(void);
+ LHALIB_EXTERN size_t copyfile(FILE* f1, FILE* f2, size_t size, int text_flg, unsigned int* crcp);
+-LHALIB_EXTERN void init_getbits();
+-LHALIB_EXTERN void init_code_cache();
++LHALIB_EXTERN void init_getbits(void);
++LHALIB_EXTERN void init_putbits(void);
++LHALIB_EXTERN void init_code_cache(void);
+ LHALIB_EXTERN void putcode(unsigned char n, unsigned short x);
+ LHALIB_EXTERN void putbits(unsigned char n, unsigned short x);
+@@ -335,5 +339,18 @@
+ LHALIB_EXTERN void encode_p_st0(unsigned short j);
+
+-
++NORETURN(void lha_exit(int n));
++unsigned int calccrc(unsigned int crc, const void *p, unsigned int length);
++int fread_txt(void *p, int n, FILE *fp);
++int fwrite_txt(const void *p, int n, FILE *fp);
++int fread_crc(unsigned int *crcp, unsigned char *p, int n, FILE *fp);
++void fwrite_crc(unsigned int *crcp, const unsigned char *p, int n, FILE *fp);
++void make_table(short nchar, const unsigned char bitlenp[], short tablebits, unsigned short table[]);
++unsigned int decode(struct interfacing *intf);
++short make_tree(int nchar, unsigned short *freqp, unsigned char *bitlenp, unsigned short *codep);
++int str_safe_copy(char *dst, const char *src, int dstsz);
++int decode_lzhuf(FILE *in, FILE *out, size_t original, size_t packed, const char *name, int method, size_t *readp);
++int seek_lha_header(FILE *fp);
++boolean get_header(FILE *fp, LzHeader *hdr);
++PRINTF_ARGS(int xsnprintf(char *dst, size_t size, const char *fmt, ...), 3, 4);
+
+ #define start_indicator(name, size, ing, len) 0
+--- ext/lhalib.c 2006-09-18 05:11:35.000000000 -0400
++++ ext/lhalib.c 2015-03-23 11:00:35.000000000 -0400
+@@ -19,5 +19,5 @@
+
+ #include "lha.h"
+-#include "st.h"
++#include <ruby/st.h>
+
+ static VALUE lhalib;
+@@ -76,5 +76,5 @@
+ proc = Qnil;
+ rb_scan_args(argc, argv, "1&", &file, &proc);
+- rb_check_safe_str(file);
++ SafeStringValue(file);
+ rb_secure(4);
+
+--- ext/lharc.c 2006-09-17 12:38:22.000000000 -0400
++++ ext/lharc.c 2015-03-23 10:58:33.000000000 -0400
+@@ -53,5 +53,5 @@
+ static boolean
+ open_old_archive_1(name, v_fp)
+- char *name;
++ const char *name;
+ FILE **v_fp;
+ {
+--- ext/lhext.c 2006-09-17 12:38:22.000000000 -0400
++++ ext/lhext.c 2015-03-23 10:41:48.000000000 -0400
+@@ -27,6 +27,7 @@
+ };
+
+-static void add_dirinfo(char* name, LzHeader* hdr);
+-static void adjust_dirinfo();
++static void add_dirinfo(const char* name, LzHeader* hdr);
++static void adjust_dirinfo(void);
++static int is_directory_traversal(const char *path);
+
+ /* ------------------------------------------------------------------------ */
+@@ -396,6 +397,6 @@
+ }
+
+-int
+-is_directory_traversal(char *path)
++static int
++is_directory_traversal(const char *path)
+ {
+ int state = 0;
+@@ -437,5 +438,5 @@
+ static LzHeaderList *dirinfo;
+
+-static void add_dirinfo(char *name, LzHeader *hdr)
++static void add_dirinfo(const char *name, LzHeader *hdr)
+ {
+ LzHeaderList *p;
+--- ext/maketbl.c 2006-09-17 12:38:22.000000000 -0400
++++ ext/maketbl.c 2015-03-23 10:32:06.000000000 -0400
+@@ -10,9 +10,6 @@
+
+ void
+-make_table(nchar, bitlen, tablebits, table)
+- short nchar;
+- unsigned char bitlen[];
+- short tablebits;
+- unsigned short table[];
++make_table(short nchar, const unsigned char bitlen[], short tablebits,
++ unsigned short table[])
+ {
+ unsigned short count[17]; /* count of bitlen */
+--- ext/maketree.c 2006-09-17 13:36:33.000000000 -0400
++++ ext/maketree.c 2015-03-23 11:02:50.000000000 -0400
+@@ -96,5 +96,5 @@
+ short *heap;
+ size_t heapsize;
+- unsigned short *freq;
++ const unsigned short *freq;
+ {
+ short j, k;
+--- ext/util.c 2006-09-18 04:53:29.000000000 -0400
++++ ext/util.c 2015-03-23 10:57:53.000000000 -0400
+@@ -115,8 +115,9 @@
+ int
+ #if STDC_HEADERS
+-xsnprintf(char *dest, size_t size, char *fmt, ...)
++xsnprintf(char *dest, size_t size, const char *fmt, ...)
+ #else
+ xsnprintf(dest, size, fmt, va_alist)
+- char *dest, *fmt;
++ char *dest;
++ const char *fmt;
+ size_t size;
+ va_dcl