commit 77bb72edafebb687ced2fd651791b34aab66fda3 Author: overweight <5324761+overweight@user.noreply.gitee.com> Date: Mon Sep 30 11:16:18 2019 -0400 Package init diff --git a/recode-3.6-getcwd.patch b/recode-3.6-getcwd.patch new file mode 100644 index 0000000..5a7b870 --- /dev/null +++ b/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/recode-3.6.tar.gz b/recode-3.6.tar.gz new file mode 100644 index 0000000..1ccae6f Binary files /dev/null and b/recode-3.6.tar.gz differ diff --git a/recode-automake.patch b/recode-automake.patch new file mode 100644 index 0000000..d0916c8 --- /dev/null +++ b/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/recode-bool-bitfield.patch b/recode-bool-bitfield.patch new file mode 100644 index 0000000..899edc5 --- /dev/null +++ b/recode-bool-bitfield.patch @@ -0,0 +1,11 @@ +--- a/src/recodext.h.orig 2008-01-16 13:15:39.000000000 +0100 ++++ b/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/recode-flex-m4.patch b/recode-flex-m4.patch new file mode 100644 index 0000000..e63bdbf --- /dev/null +++ b/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/recode-format-security.patch b/recode-format-security.patch new file mode 100644 index 0000000..756ba3f --- /dev/null +++ b/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/recode-longfilename.patch b/recode-longfilename.patch new file mode 100644 index 0000000..fb9f99e --- /dev/null +++ b/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/recode.patch b/recode.patch new file mode 100644 index 0000000..4a9f2dd --- /dev/null +++ b/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/recode.spec b/recode.spec new file mode 100644 index 0000000..b3d0507 --- /dev/null +++ b/recode.spec @@ -0,0 +1,99 @@ +Name: recode +Version: 3.6 +Release: 49 +Summary: Converter between charsets and surfaces + + +License: GPLv2 and LGPLv2.1 +URL: https://www.gnu.org/software/recode/ +Source0: https://github.com/rrthomas/recode/archive/v%{version}.tar.gz#/%{name}-%{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 + +BuildRequires: libtool texinfo +Requires: info + +%description +The recode library converts files between character sets and usages. +It recognises or produces more than 300 different character sets +and transliterates files between almost any pair. When exact +transliteration are not possible, it gets rid of offending characters +or fall back on approximations. The recode program is a handy +front-end to the library. + +%package devel +Summary: Development header files for using the recode library +Requires: %{name} = %{version}-%{release} +Provides: %{name}-static +Obsoletes: %{name}-static + +%description devel +The recode library converts files between character sets and usages. +The recode-devel package provides the necessary development libraries +and include files to allow you to develop applications using the recode +libraries. + +%package help +Summary: Documents for %{name} +Buildarch: noarch +Requires: man info + +%description help +Man pages and other related documents for %{name}. + +%prep +%autosetup -n %{name}-%{version} -p1 + +%build +rm m4/libtool.m4 +rm acinclude.m4 +autoreconf -vif +%configure +make %{?_smp_mflags} + +%check +make check %{?_smp_mflags} + +%install +%make_install +%find_lang %{name} + +%post +/sbin/ldconfig +if [ -f %{_infodir}/%{name}.info.gz ]; then + /sbin/install-info %{_infodir}/%{name}.info.gz %{_infodir}/dir || : +fi +%preun +if [ $1 = 0 ]; then + if [ -f %{_infodir}/%{name}.info.gz ]; then + /sbin/install-info --delete %{_infodir}/%{name}.info.gz %{_infodir}/dir || : + fi +fi + +%postun -p /sbin/ldconfig + +%files -f %{name}.lang +%license COPYING* +%{_bindir}/recode +%{_libdir}/librecode.so.* + +%files devel +%{_includedir}/*.h +%{_libdir}/librecode.so +%{_libdir}/librecode.*a + +%files help +%doc ABOUT-NLS AUTHORS BACKLOG ChangeLog INSTALL NEWS README THANKS TODO +%{_infodir}/*.info.gz +%exclude %{_infodir}/dir* +%{_mandir}/man1/*.1.gz + +%changelog +* Fri Aug 23 2019 openEuler Buildteam - 3.6-49 +- Package init