From 4dc34e6ff3921122e09d36b30a4117a995e7dced Mon Sep 17 00:00:00 2001
From: Christian Wiese <chris@opensde.org>
Date: Thu, 13 Mar 2014 13:48:56 +0100
Subject: [PATCH] heimdal: added bugfix patch for the roken-h-process.pl script

---
 security/heimdal/roken-h-process.pl.patch | 57 +++++++++++++++++++++++
 1 file changed, 57 insertions(+)
 create mode 100644 security/heimdal/roken-h-process.pl.patch

diff --git a/security/heimdal/roken-h-process.pl.patch b/security/heimdal/roken-h-process.pl.patch
new file mode 100644
index 000000000..1ff76a703
--- /dev/null
+++ b/security/heimdal/roken-h-process.pl.patch
@@ -0,0 +1,57 @@
+# --- SDE-COPYRIGHT-NOTE-BEGIN ---
+# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
+#
+# Filename: package/.../heimdal/roken-h-process.pl.patch
+# Copyright (C) 2014 The OpenSDE Project
+#
+# More information can be found in the files COPYING and README.
+#
+# This patch file is dual-licensed. It is available under the license the
+# patched project is licensed under, as long as it is an OpenSource license
+# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
+# of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+# --- SDE-COPYRIGHT-NOTE-END ---
+
+Update roken-h-process.pl to the latest available version including upstream
+bugfixes.
+
+That is the diff between the shipped version within the version 1.5.3 tarball
+and currently latest version available:
+https://github.com/heimdal/heimdal/blob/97f1e2efb5754b953905ea1a41a5c469765f6267/cf/roken-h-process.pl
+
+diff --git a/cf/roken-h-process.pl b/cf/roken-h-process.pl
+index a54c921..e797dd2 100644
+--- a/cf/roken-h-process.pl
++++ b/cf/roken-h-process.pl
+@@ -1,10 +1,10 @@
+ #!/usr/bin/perl
+ 
+-require 'getopts.pl';
++use Getopt::Std;
+ 
+ my $debug = 0;
+ 
+-Getopts('dc:p:o:') || die "foo";
++getopts('dc:p:o:') || die "foo";
+ 
+ if ($opt_d) {
+     $debug = 1;
+@@ -145,12 +145,15 @@ sub parse_if
+     if (m/^\s*$/) {
+ 	print "end $_\n" if ($debug);
+ 	return 1;
++    } elsif (m/^\(([^&]+)\&\&(.*)\)\s*\|\|\s*\(([^&]+)\&\&(.*)\)$/) {
++	print "($1 and $2) or ($3 and $4)\n" if ($debug);
++	return ((parse_if($1) and parse_if($2)) or (parse_if($3) and parse_if($4)));
+     } elsif (m/^([^&]+)\&\&(.*)$/) {
+ 	print "$1 and $2\n" if ($debug);
+ 	return parse_if($1) and parse_if($2);
+     } elsif (m/^([^\|]+)\|\|(.*)$/) {
+ 	print "$1 or $2\n" if ($debug);
+-	return parse_if($1) or parse_if($2);
++	return (parse_if($1) or parse_if($2));
+     } elsif (m/^\s*(\!)?\s*defined\((\w+)\)/) {
+ 	($neg, $var) = ($1, $2);
+ 	print "def: ${neg}-defined(${var})\n" if ($debug);