Package init

This commit is contained in:
overweight 2019-09-30 11:16:18 -04:00
commit 77bb72edaf
9 changed files with 290 additions and 0 deletions

11
recode-3.6-getcwd.patch Normal file
View File

@ -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));

BIN
recode-3.6.tar.gz Normal file

Binary file not shown.

22
recode-automake.patch Normal file
View File

@ -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

View File

@ -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

16
recode-flex-m4.patch Normal file
View File

@ -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])
+])])

View File

@ -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);

51
recode-longfilename.patch Normal file
View File

@ -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 <limits.h>
-# endif
-# ifndef CHAR_BIT
-# define CHAR_BIT 8
-# endif
+#ifdef HAVE_LIMITS_H
+# include <limits.h>
+#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 <schwartz@bio.cse.psu.edu> 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);

68
recode.patch Normal file
View File

@ -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 <pinard@iro.umontreal.ca>, 1999,
and Bruno Haible <haible@clisp.cons.org>, 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

99
recode.spec Normal file
View File

@ -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 <buildteam@openeuler.org> - 3.6-49
- Package init