diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..17123b0 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/recode-3.6.tar.gz diff --git a/.recode.metadata b/.recode.metadata new file mode 100644 index 0000000..d9e3e84 --- /dev/null +++ b/.recode.metadata @@ -0,0 +1 @@ +2de90cd2ba553bc07d75a29913ea4424dd9e616b SOURCES/recode-3.6.tar.gz diff --git a/SOURCES/recode-3.6-getcwd.patch b/SOURCES/recode-3.6-getcwd.patch new file mode 100644 index 0000000..5a7b870 --- /dev/null +++ b/SOURCES/recode-3.6-getcwd.patch @@ -0,0 +1,11 @@ +--- recode-3.6/lib/gettext.c.orig 2005-03-07 12:18:30.000000000 +0100 ++++ recode-3.6/lib/gettext.c 2005-03-07 12:23:14.000000000 +0100 +@@ -1668,8 +1668,6 @@ + # if !defined HAVE_GETCWD + char *getwd (); + # define getcwd(buf, max) getwd (buf) +-# else +-char *getcwd (); + # endif + # ifndef HAVE_STPCPY + static char *stpcpy PARAMS ((char *dest, const char *src)); diff --git a/SOURCES/recode-automake.patch b/SOURCES/recode-automake.patch new file mode 100644 index 0000000..d0916c8 --- /dev/null +++ b/SOURCES/recode-automake.patch @@ -0,0 +1,22 @@ +--- recode-3.6.orig/configure.in 2001-01-03 16:50:54.000000000 +0100 ++++ recode-3.6/configure.in 2012-07-23 14:15:28.000000000 +0200 +@@ -15,7 +15,7 @@ + AM_PROG_LIBTOOL + + AC_ISC_POSIX +-AM_C_PROTOTYPES ++dnl AM_C_PROTOTYPES + AC_C_CONST + AC_C_INLINE + ad_AC_PROG_FLEX +--- recode-3.6.orig/src/Makefile.am 2000-12-06 17:36:12.000000000 +0100 ++++ recode-3.6/src/Makefile.am 2012-07-23 14:47:07.000000000 +0200 +@@ -17,7 +17,7 @@ + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + # 02111-1307, USA. + +-AUTOMAKE_OPTIONS = gnits ansi2knr ++AUTOMAKE_OPTIONS = gnits + bin_PROGRAMS = recode + lib_LTLIBRARIES = librecode.la + man_MANS = recode.1 diff --git a/SOURCES/recode-bool-bitfield.patch b/SOURCES/recode-bool-bitfield.patch new file mode 100644 index 0000000..0d48fbd --- /dev/null +++ b/SOURCES/recode-bool-bitfield.patch @@ -0,0 +1,11 @@ +--- src/recodext.h.orig 2008-01-16 13:15:39.000000000 +0100 ++++ src/recodext.h 2008-01-16 13:16:47.000000000 +0100 +@@ -218,7 +218,7 @@ + enum recode_symbol_type type : 3; + + /* Non zero if this one should be ignored. */ +- bool ignore : 2; ++ bool ignore : 1; + }; + + struct recode_surface_list diff --git a/SOURCES/recode-flex-m4.patch b/SOURCES/recode-flex-m4.patch new file mode 100644 index 0000000..e63bdbf --- /dev/null +++ b/SOURCES/recode-flex-m4.patch @@ -0,0 +1,16 @@ +--- recode-3.6-orig/m4/flex.m4 2000-06-28 16:39:06.000000000 +0200 ++++ recode-3.6/m4/flex.m4 2010-07-07 12:23:49.000000000 +0200 +@@ -8,11 +8,8 @@ + dnl Look for flex or missing, then run AC_PROG_LEX and AC_DECL_YYTEXT + AC_DEFUN(ad_AC_PROG_FLEX, + [AC_CHECK_PROGS(LEX, flex, missing) +-if test "$LEX" = missing; then ++AS_IF([test "$LEX" = missing], [ + LEX="\$(top_srcdir)/$ac_aux_dir/missing flex" + LEX_OUTPUT_ROOT=lex.yy + AC_SUBST(LEX_OUTPUT_ROOT)dnl +-else +- AC_PROG_LEX +- AC_DECL_YYTEXT +-fi]) ++])]) diff --git a/SOURCES/recode-format-security.patch b/SOURCES/recode-format-security.patch new file mode 100644 index 0000000..756ba3f --- /dev/null +++ b/SOURCES/recode-format-security.patch @@ -0,0 +1,12 @@ +diff -up recode-3.6/src/names.c.printf recode-3.6/src/names.c +--- recode-3.6/src/names.c.printf 2000-12-06 20:41:29.000000000 +0100 ++++ recode-3.6/src/names.c 2013-12-18 12:48:42.578052395 +0100 +@@ -892,7 +892,7 @@ list_concise_charset (RECODE_OUTER outer + if (ucs2 >= 0) + printf (format, code); + else if (mnemonic || counter2 != 112) +- printf (blanks); ++ printf ("%s", blanks); + + if (mnemonic) + printf (counter2 == 112 ? " %s\n" : " %-3s", mnemonic); diff --git a/SOURCES/recode-longfilename.patch b/SOURCES/recode-longfilename.patch new file mode 100644 index 0000000..fb9f99e --- /dev/null +++ b/SOURCES/recode-longfilename.patch @@ -0,0 +1,51 @@ +diff -u -r recode-3.6.orig/src/common.h recode-3.6/src/common.h +--- recode-3.6.orig/src/common.h 2000-06-28 20:40:15.000000000 +0200 ++++ recode-3.6/src/common.h 2017-10-03 13:52:09.904644383 +0200 +@@ -56,13 +56,14 @@ + # define RETSIGTYPE void + #endif + +-#if DIFF_HASH +-# ifdef HAVE_LIMITS_H +-# include +-# endif +-# ifndef CHAR_BIT +-# define CHAR_BIT 8 +-# endif ++#ifdef HAVE_LIMITS_H ++# include ++#endif ++#ifndef CHAR_BIT ++# define CHAR_BIT 8 ++#endif ++#ifndef PATH_MAX ++# define PATH_MAX 4096 + #endif + + /* Some systems do not define EXIT_*, even with STDC_HEADERS. */ +diff -u -r recode-3.6.orig/src/main.c recode-3.6/src/main.c +--- recode-3.6.orig/src/main.c 2000-12-06 20:44:59.000000000 +0100 ++++ recode-3.6/src/main.c 2017-10-03 14:32:51.274017940 +0200 +@@ -847,7 +847,7 @@ + for (; optind < argc; optind++) + { + const char *input_name; +- char output_name[200]; /* FIXME: dangerous limit */ ++ char output_name[PATH_MAX]; + FILE *file; + struct stat file_stat; + struct utimbuf file_utime; +@@ -871,7 +871,12 @@ + + /* FIXME: Scott Schwartz writes: + "There's no reason to think that that name is unique." */ +- ++ // To avoid overflows, the size of the array pointed by destination (output_name) ++ // shall be long enough to contain the same C string as source ++ // (including the terminating null character). ++ if (strlen(input_name) >= PATH_MAX) { ++ error (EXIT_FAILURE, 0, "input_name reach the PATH_MAX limit"); ++ } + strcpy (output_name, input_name); + #if DOSWIN_OR_OS2 + for (cursor = output_name + strlen (output_name); diff --git a/SOURCES/recode.patch b/SOURCES/recode.patch new file mode 100644 index 0000000..4a9f2dd --- /dev/null +++ b/SOURCES/recode.patch @@ -0,0 +1,68 @@ +--- recode-3.6.orig/src/libiconv.c ++++ recode-3.6/src/libiconv.c +@@ -1,5 +1,5 @@ + /* Conversion of files between different charsets and surfaces. +- Copyright � 1999, 2000 Free Software Foundation, Inc. ++ Copyright � 1999, 2000, 2001 Free Software Foundation, Inc. + Contributed by Fran�ois Pinard , 1999, + and Bruno Haible , 2000. + +@@ -195,12 +195,17 @@ + memcpy() doesn't do here, because the regions might overlap. + memmove() isn't worth it, because we rarely have to move more + than 12 bytes. */ +- if (input > input_buffer && input_left > 0) ++ cursor = input_buffer; ++ if (input_left > 0) + { +- cursor = input_buffer; +- do +- *cursor++ = *input++; +- while (--input_left > 0); ++ if (input > input_buffer) ++ { ++ do ++ *cursor++ = *input++; ++ while (--input_left > 0); ++ } ++ else ++ cursor += input_left; + } + } + +--- recode-3.6.orig/src/request.c ++++ recode-3.6/src/request.c +@@ -1073,7 +1073,7 @@ + if (task->output.cursor + 4 >= task->output.limit) + { + RECODE_OUTER outer = task->request->outer; +- size_t old_size = task->output.limit - task->output.buffer; ++ size_t old_size = task->output.cursor - task->output.buffer; + size_t new_size = task->output.cursor + 4 - task->output.buffer; + + /* FIXME: Rethink about how the error should be reported. */ +--- recode-3.6.orig/src/task.c ++++ recode-3.6/src/task.c +@@ -1198,6 +1198,8 @@ + else + success = transform_mere_copy (subtask); + ++ task->output = subtask->output; ++ + if (subtask->input.name && *subtask->input.name) + fclose (subtask->input.file); + if (subtask->output.name && *subtask->output.name) +--- recode-3.6.orig/src/hash.h ++++ recode-3.6/src/hash.h +@@ -21,6 +21,11 @@ + /* Make sure USE_OBSTACK is defined to 1 if you want the allocator to use + obstacks instead of malloc, and recompile `hash.c' with same setting. */ + ++#define hash_lookup recode_hash_lookup ++#define hash_delete recode_hash_delete ++#define hash_free recode_hash_free ++#define hash_insert recode_hash_insert ++ + #ifndef PARAMS + # if PROTOTYPES || __STDC__ + # define PARAMS(Args) Args diff --git a/SPECS/recode.spec b/SPECS/recode.spec new file mode 100644 index 0000000..6505794 --- /dev/null +++ b/SPECS/recode.spec @@ -0,0 +1,251 @@ +Summary: Conversion between character sets and surfaces +Name: recode +Version: 3.6 +Release: 47%{?dist} +License: GPLv2+ +Group: Applications/File +Url: http://recode.progiciels-bpi.ca/ +Source: http://recode.progiciels-bpi.ca/archives/recode-%{version}.tar.gz +Patch0: recode.patch +Patch1: recode-3.6-getcwd.patch +Patch2: recode-bool-bitfield.patch +Patch3: recode-flex-m4.patch +Patch4: recode-automake.patch +Patch5: recode-format-security.patch +Patch6: recode-longfilename.patch + +Requires(post): /sbin/install-info +Requires(post): /sbin/ldconfig +Requires(preun): /sbin/install-info +Requires(postun): /sbin/ldconfig + +BuildRequires: libtool +BuildRequires: texinfo + + +%description +The `recode' converts files between character sets and usages. +It recognizes or produces nearly 150 different character sets +and is able to transliterate files between almost any pair. When exact +transliteration are not possible, it may get rid of the offending +characters or fall back on approximations. Most RFC 1345 character sets +are supported. + +%package devel +Summary: Header files for development using recode +Group: Development/Libraries +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description devel +The `recode' library converts files between character sets and usages. +The library recognizes or produces nearly 150 different character sets +and is able to transliterate files between almost any pair. When exact +transliteration are not possible, it may get rid of the offending +characters or fall back on approximations. Most RFC 1345 character sets +are supported. + +%prep +%setup -q +%patch0 -p1 +%patch1 -p1 -b .getcwd +%patch2 -p0 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +rm m4/libtool.m4 +rm acinclude.m4 + +%build +autoreconf -fiv +%configure --disable-static +make %{?_smp_mflags} + +%check +make check + +%install +%makeinstall +%find_lang %{name} + +# remove unpackaged file from the buildroot +rm -f $RPM_BUILD_ROOT%{_infodir}/dir + +# remove libtool archives +rm -f $RPM_BUILD_ROOT%{_libdir}/*.la + + +%post +/sbin/ldconfig +/sbin/install-info %{_infodir}/recode.info.gz %{_infodir}/dir --entry="* recode: (recode). Conversion between character sets and surfaces." || : + +%preun +if [ $1 = 0 ]; then + /sbin/install-info --delete %{_infodir}/recode.info.gz %{_infodir}/dir --entry="* recode: (recode). Conversion between character sets and surfaces." || : +fi + +%postun -p /sbin/ldconfig + +%files -f %{name}.lang +%doc AUTHORS COPYING* ChangeLog NEWS README THANKS TODO +%{_mandir}/*/* +%{_infodir}/recode.info* +%{_bindir}/* +%{_libdir}/*.so.0* + +%files devel +%{_libdir}/*.so +%{_includedir}/* + +%changelog +* Fri Feb 09 2018 Igor Gnatenko - 3.6-47 +- Escape macros in %%changelog + +* Tue Oct 03 2017 Zoltan Kota - 3.6-46 +- Apply patch to fix bug #1422550 + +* Thu Aug 03 2017 Fedora Release Engineering - 3.6-45 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 3.6-44 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 3.6-43 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Feb 04 2016 Fedora Release Engineering - 3.6-42 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Thu Jun 18 2015 Fedora Release Engineering - 3.6-41 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sun Aug 17 2014 Fedora Release Engineering - 3.6-40 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sun Jun 08 2014 Fedora Release Engineering - 3.6-39 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Dec 18 2013 Jiri Popelka - 3.6-38 +- Fix FTBFS if "-Werror=format-security" flag is used (#1037305). + +* Sun Aug 04 2013 Fedora Release Engineering - 3.6-37 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Mon Feb 25 2013 Zoltan Kota 3.6-36 +- Fix failed Fedora_19_Mass_Rebuild [bug #914431]. + +* Thu Feb 14 2013 Fedora Release Engineering - 3.6-35 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Mon Jul 23 2012 Zoltan Kota 3.6-34 +- Add patch for fixing build with new automake. + (Fixes failed Fedora_18_Mass_Rebuild.) + +* Sat Jul 21 2012 Fedora Release Engineering - 3.6-33 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon May 21 2012 Zoltan Kota 3.6-32 +- Corrected summary of the devel subpackage. Fixing bug #817947. + +* Sat Jan 14 2012 Fedora Release Engineering - 3.6-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Wed Feb 09 2011 Fedora Release Engineering - 3.6-30 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Jul 7 2010 Zoltan Kota 3.6-29 +- Fix build on x86_64. Run autoreconf to update config files. + autoconf >= 2.64 needs to patch the flex.m4 file. + Fixing FTBFS bug #564601. + +* Sun Jul 26 2009 Fedora Release Engineering - 3.6-28 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Feb 25 2009 Fedora Release Engineering - 3.6-27 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Wed Feb 20 2008 Fedora Release Engineering - 3.6-26 +- Autorebuild for GCC 4.3 + +* Wed Jan 16 2008 Zoltan Kota 3.6-25 +- add patch for gcc43 + +* Wed Aug 22 2007 Zoltan Kota 3.6-24 +- update license tag +- rebuild + +* Tue Apr 03 2007 Zoltan Kota 3.6-23 +- rebuild + +* Fri Sep 01 2006 Zoltan Kota 3.6-22 +- rebuild + +* Mon Feb 13 2006 Zoltan Kota 3.6-21 +- rebuild + +* Thu Dec 22 2005 Zoltan Kota 3.6-20 +- rebuild + +* Fri Aug 26 2005 Zoltan Kota 3.6-19 +- fix requires +- disable static libs and remove libtool archives +- add %%doc + +* Fri Aug 26 2005 Zoltan Kota 3.6-18 +- add dist tag +- specfile cleanup + +* Thu May 26 2005 Bill Nottingham 3.6-17 +- rebuild for Extras + +* Mon Mar 07 2005 Than Ngo 3.6-16 +- cleanup + +* Sat Mar 05 2005 Than Ngo 3.6-15 +- rebuilt + +* Wed Feb 09 2005 Than Ngo 3.6-14 +- rebuilt + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Tue Mar 02 2004 Elliot Lee +- rebuilt + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Fri Feb 13 2004 Than Ngo 3.6-11 +- add a patch file from kota@szbk.u-szeged.hu (bug #115524) + +* Thu Nov 20 2003 Thomas Woerner 3.6-10 +- Fixed RPATH (missing make in %%build) + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Wed Dec 11 2002 Tim Powers 3.6-7 +- rebuild on all arches +- remove unpackaged file from the buildroot + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Mon Apr 15 2002 Bill Nottingham 3.6-4 +- add ldconfig %%post/%%postun + +* Tue Feb 26 2002 Than Ngo 3.6-3 +- rebuild + +* Wed Jan 09 2002 Tim Powers +- automated rebuild + +* Tue Nov 13 2001 Than Ngo 3.6-1 +- initial RPM for 8.0