diff --git a/openldap2-client.spec b/openldap2-client.spec
index aa8b893..faf49d8 100644
--- a/openldap2-client.spec
+++ b/openldap2-client.spec
@@ -50,7 +50,7 @@ Source2: addonschema.tar.gz
Source3: DB_CONFIG
Source4: sasl-slapd.conf
Source5: README.update
-Source6: schema2ldif.pl
+Source6: schema2ldif
Source100: openldap-2.3.37.tar.bz2
Patch: openldap2.dif
Patch2: slapd_conf.dif
diff --git a/openldap2.spec b/openldap2.spec
index 67396a5..41fb40a 100644
--- a/openldap2.spec
+++ b/openldap2.spec
@@ -50,7 +50,7 @@ Source2: addonschema.tar.gz
Source3: DB_CONFIG
Source4: sasl-slapd.conf
Source5: README.update
-Source6: schema2ldif.pl
+Source6: schema2ldif
Source100: openldap-2.3.37.tar.bz2
Patch: openldap2.dif
Patch2: slapd_conf.dif
diff --git a/schema2ldif b/schema2ldif
new file mode 100644
index 0000000..4ba0afd
--- /dev/null
+++ b/schema2ldif
@@ -0,0 +1,52 @@
+#!/bin/bash
+#
+# This is a simple tool to convert OpenLDAP Schema files to
+# LDIF suitable for usage with OpenLDAP's dynamic configuration
+# backend (cn=config)
+#
+# usage:
+# schema2ldif
+#
+# The generated LDIF is printed to stdout.
+#
+
+if [ -z "$1" ]; then
+ echo 'usage: schema2ldif '
+ exit;
+fi
+
+cn=`basename $1 .schema`
+
+echo "dn: cn=$cn,cn=schema,cn=config";
+echo "objectclass: olcSchemaConfig";
+echo "cn: $cn";
+
+/usr/bin/awk '
+BEGIN {
+ buffer = "";
+ width=78 ;
+}
+function wrap(data)
+{
+ if (length(data) > 0) {
+ do {
+ print substr(data,0,width);
+ data = " " substr(data, width+1);
+ }
+ while (length(data) > 1 )
+ };
+}
+/^[\t ]*$/ {wrap(buffer); buffer=""; print "#"; next; }
+/^#.*$/ { wrap(buffer); buffer=""; print $0; next }
+/^[\t ]+/ { gsub("^[\t ]+",""); buffer = buffer " " $0; next; }
+{
+ wrap(buffer);
+ $1 = tolower($1) ;
+ gsub("^objectclass$","olcObjectclasses:",$1)
+ gsub("^attributetype$","olcAttributeTypes:",$1)
+ gsub("^objectidentifier$","olcObjectIdentifier:",$1)
+ buffer = $0;
+}
+END { wrap(buffer); print "" }
+' "$@"
+
diff --git a/schema2ldif.pl b/schema2ldif.pl
deleted file mode 100644
index c1c2126..0000000
--- a/schema2ldif.pl
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/usr/bin/perl -w
-#
-# This is a simple tool to convert OpenLDAP Schema files to
-# LDIF suitable for usage with OpenLDAP's dynamic configuration
-# backend (cn=config)
-#
-# usage:
-# schema2ldif.pl
-#
-# The generated LDIF is printed to stdout.
-#
-
-use strict;
-use File::Basename;
-use Text::Wrap;
-
-my $infile = $ARGV[0] || print_usage();
-
-sub print_usage
-{
- print STDERR "usage: schema2ldif.pl \n";
- exit(1);
-}
-
-open( SCHEMA, "< $infile");
-
-my $schemaline = "";
-$Text::Wrap::columns=78;
-$Text::Wrap::separator="\n ";
-
-my $cn = basename($infile, ".schema");
-print STDOUT "dn: cn=$cn,cn=schema,cn=config\n";
-print STDOUT "objectClass: olcSchemaConfig\n";
-print STDOUT "cn: $cn\n";
-while ( )
-{
- my $line = $_;
- if ( $line =~ /^\s+(.+)$/ )
- {
- $schemaline .= " $1";
- next;
- }
- elsif ( $schemaline ne "" )
- {
- print STDOUT wrap(""," ", $schemaline);
- print STDOUT "\n";
- $schemaline = "";
- }
- if ( $line =~ /^#/ )
- {
- print STDOUT $line;
- }
- elsif ( $line =~ /^\s*$/ )
- {
- print STDOUT "#\n";
- }
- elsif ( $line =~ /^(objectclass|attributetype|objectidentifier)\s+(.+)$/i )
- {
- if ( lc($1) eq "objectidentifier" )
- {
- $schemaline .= "olcObjectIdentifier: ";
- }
- elsif ( lc($1) eq "objectclass" )
- {
- $schemaline .= "olcObjectClasses: ";
- }
- elsif ( lc($1) eq "attributetype" )
- {
- $schemaline .= "olcAttributeTypes: ";
- }
- $schemaline .= $2;
- }
-}
-