Hi,
This looks good to me. I did make test on what is currently in the ports
tree (below diff) and tested Carlin's changes agains what is on GitHub
and patches apply cleanly (as there ware no a lot of changes between
0.6.14 release and current master).
Will you be driving this to get merged upstream Carlin?
On Sun, Jun 12, 2016 at 02:52:45AM +1200, Carlin Bingham wrote:
> On Sat, Jun 11, 2016 at 09:27:58AM +0200, Sebastien Marie wrote:
> >
> > the promises seems correct to me, but patches needs some comments (based
> > on your previous description for example).
> >
> > it is OK semarie@ (with additionnal comments), but I would be glad to
> > have maintener point of vue too.
> >
> > thanks.
>
> Updated patch with comments.
>
>
> --
> Carlin
>
>
>
> Index: archivers/par2cmdline/Makefile
> ===================================================================
> RCS file: /cvs/ports/archivers/par2cmdline/Makefile,v
> retrieving revision 1.11
> diff -u -p -u -r1.11 Makefile
> --- archivers/par2cmdline/Makefile 5 Oct 2015 16:50:14 -0000 1.11
> +++ archivers/par2cmdline/Makefile 11 Jun 2016 14:44:22 -0000
> @@ -5,6 +5,7 @@ COMMENT = command line implementation of
> V = 0.6.14
> DISTNAME = par2cmdline-$V
> DISTFILES = ${DISTNAME}{v$V}.tar.gz
> +REVISION = 0
>
> CATEGORIES = archivers
>
> @@ -13,6 +14,7 @@ HOMEPAGE = https://github.com/BlackIkeEa
> # GPLv2+
> PERMIT_PACKAGE_CDROM = Yes
>
> +# uses pledge()
> WANTLIB = c m stdc++
>
> MAINTAINER = Mikolaj Kucharski <[email protected]>
> Index: archivers/par2cmdline/patches/patch-configure_ac
> ===================================================================
> RCS file: archivers/par2cmdline/patches/patch-configure_ac
> diff -N archivers/par2cmdline/patches/patch-configure_ac
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ archivers/par2cmdline/patches/patch-configure_ac 11 Jun 2016 14:44:22
> -0000
> @@ -0,0 +1,11 @@
> +$OpenBSD$
> +--- configure.ac.orig Wed Jun 8 23:30:46 2016
> ++++ configure.ac Wed Jun 8 23:31:20 2016
> +@@ -56,6 +56,7 @@ dnl Checks for library functions.
> + AC_FUNC_MEMCMP
> + AC_CHECK_FUNCS([stricmp] [strcasecmp])
> + AC_CHECK_FUNCS([strchr] [memcpy])
> ++AC_CHECK_FUNCS([pledge])
> +
> + AC_CHECK_FUNCS([getopt] [getopt_long])
> +
> Index: archivers/par2cmdline/patches/patch-par1repairer_cpp
> ===================================================================
> RCS file: archivers/par2cmdline/patches/patch-par1repairer_cpp
> diff -N archivers/par2cmdline/patches/patch-par1repairer_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ archivers/par2cmdline/patches/patch-par1repairer_cpp 11 Jun 2016
> 14:44:22 -0000
> @@ -0,0 +1,25 @@
> +$OpenBSD$
> +
> +pledge:
> + 'par2 repair' with par1 files - stdio rpath cpath
> + once the target files have been opened for writing, wpath is no
> + longer required, cpath must be kept to delete partial files in
> + case of an error
> +
> +--- par1repairer.cpp.orig Wed Jun 8 23:41:11 2016
> ++++ par1repairer.cpp Wed Jun 8 23:42:01 2016
> +@@ -157,6 +157,14 @@ Result Par1Repairer::Process(const CommandLine &comman
> + if (!CreateTargetFiles())
> + return eFileIOError;
> +
> ++#ifdef HAVE_PLEDGE
> ++ if (pledge("stdio rpath cpath", NULL) == -1)
> ++ {
> ++ cerr << "pledge failed" << endl;
> ++ return eLogicError;
> ++ }
> ++#endif
> ++
> + // Work out which data blocks are available, which need to be
> recreated,
> + // and compute the appropriate Reed Solomon matrix.
> + if (!ComputeRSmatrix())
> Index: archivers/par2cmdline/patches/patch-par2cmdline_cpp
> ===================================================================
> RCS file: archivers/par2cmdline/patches/patch-par2cmdline_cpp
> diff -N archivers/par2cmdline/patches/patch-par2cmdline_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ archivers/par2cmdline/patches/patch-par2cmdline_cpp 11 Jun 2016
> 14:44:22 -0000
> @@ -0,0 +1,57 @@
> +$OpenBSD$
> +
> +pledge:
> + 'par2 create' - stdio rpath wpath cpath
> + creates and writes par files
> +
> + 'par2 repair' - stdio rpath wpath cpath
> + renames and deletes partial/damaged files, writes repaired files
> +
> + 'par2 verify' - stdio rpath cpath
> + may delete par files, only if -p option was given, otherwise
> + cpath is not required
> +
> +--- par2cmdline.cpp.orig Wed Jun 8 23:31:42 2016
> ++++ par2cmdline.cpp Wed Jun 8 23:38:36 2016
> +@@ -34,6 +34,14 @@ int main(int argc, char *argv[])
> + _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_ALLOC_MEM_DF
> | /*_CRTDBG_CHECK_CRT_DF | */_CRTDBG_DELAY_FREE_MEM_DF |
> _CRTDBG_LEAK_CHECK_DF);
> + #endif
> +
> ++#ifdef HAVE_PLEDGE
> ++ if (pledge("stdio rpath wpath cpath", NULL) == -1)
> ++ {
> ++ cerr << "pledge failed" << endl;
> ++ return eLogicError;
> ++ }
> ++#endif
> ++
> + // Parse the command line
> + CommandLine *commandline = new CommandLine;
> +
> +@@ -55,6 +63,26 @@ int main(int argc, char *argv[])
> + break;
> + case CommandLine::opVerify:
> + {
> ++#ifdef HAVE_PLEDGE
> ++ if (!commandline->GetPurgeFiles())
> ++ {
> ++ if (pledge("stdio rpath", NULL) == -1)
> ++ {
> ++ cerr << "pledge failed" << endl;
> ++ result = eLogicError;
> ++ break;
> ++ }
> ++ }
> ++ else
> ++ {
> ++ if (pledge("stdio rpath cpath", NULL) == -1)
> ++ {
> ++ cerr << "pledge failed" << endl;
> ++ result = eLogicError;
> ++ break;
> ++ }
> ++ }
> ++#endif
> + // Verify damaged files
> + switch (commandline->GetVersion())
> + {
> Index: archivers/par2cmdline/patches/patch-par2repairer_cpp
> ===================================================================
> RCS file: archivers/par2cmdline/patches/patch-par2repairer_cpp
> diff -N archivers/par2cmdline/patches/patch-par2repairer_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ archivers/par2cmdline/patches/patch-par2repairer_cpp 11 Jun 2016
> 14:44:22 -0000
> @@ -0,0 +1,25 @@
> +$OpenBSD$
> +
> +pledge:
> + 'par2 repair' with par2 files - stdio rpath cpath
> + once the target files have been opened for writing, wpath is no
> + longer required, cpath must be kept to delete partial files in
> + case of an error
> +
> +--- par2repairer.cpp.orig Wed Jun 8 23:38:53 2016
> ++++ par2repairer.cpp Wed Jun 8 23:41:00 2016
> +@@ -193,6 +193,14 @@ Result Par2Repairer::Process(const CommandLine &comman
> + if (!CreateTargetFiles())
> + return eFileIOError;
> +
> ++#ifdef HAVE_PLEDGE
> ++ if (pledge("stdio rpath cpath", NULL) == -1)
> ++ {
> ++ cerr << "pledge failed" << endl;
> ++ return eLogicError;
> ++ }
> ++#endif
> ++
> + // Work out which data blocks are available, which need to be copied
> + // directly to the output, and which need to be recreated, and
> compute
> + // the appropriate Reed Solomon matrix.
--
best regards
q#