Base version of ncurses-5.7 library
diff --git a/misc/cmpdef.cmd b/misc/cmpdef.cmd
new file mode 100644
index 0000000..5bb8f6c
--- /dev/null
+++ b/misc/cmpdef.cmd
@@ -0,0 +1,134 @@
+/****************************************************************************

+ * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *

+ *                                                                          *

+ * Permission is hereby granted, free of charge, to any person obtaining a  *

+ * copy of this software and associated documentation files (the            *

+ * "Software"), to deal in the Software without restriction, including      *

+ * without limitation the rights to use, copy, modify, merge, publish,      *

+ * distribute, distribute with modifications, sublicense, and/or sell       *

+ * copies of the Software, and to permit persons to whom the Software is    *

+ * furnished to do so, subject to the following conditions:                 *

+ *                                                                          *

+ * The above copyright notice and this permission notice shall be included  *

+ * in all copies or substantial portions of the Software.                   *

+ *                                                                          *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *

+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *

+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *

+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *

+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *

+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *

+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *

+ *                                                                          *

+ * Except as contained in this notice, the name(s) of the above copyright   *

+ * holders shall not be used in advertising or otherwise to promote the     *

+ * sale, use or other dealings in this Software without prior written       *

+ * authorization.                                                           *

+ ****************************************************************************/

+

+/*

+ * $Id: cmpdef.cmd,v 1.3 2006/04/22 23:14:50 tom Exp $

+ *

+ * Author:  Juan Jose Garcia Ripoll <worm@arrakis.es>.

+ * Webpage: http://www.arrakis.es/~worm/

+ *

+ * cmpdef.cmd - compares two .def files, checking whether they have

+ *		the same entries with the same export codes.

+ *

+ * returns 0 if there are no conflicts between the files -- that is,

+ * the newer one can replace the older one.

+ *

+ * returns 1 when either of the files is not properly formatted and

+ * when there are conflicts: two symbols having the same export code.

+ *

+ * the standard output shows a list with newly added symbols, plus

+ * replaced symbols and conflicts.

+ */

+parse arg def_file1 def_file2

+

+def_file1 = translate(def_file1,'\','/')

+def_file2 = translate(def_file2,'\','/')

+

+call CleanQueue

+

+/*

+ * `cmp' is zero when the last file is valid and upward compatible

+ * `numbers' is the stem where symbols are stored

+ */

+cmp      = 0

+names.   = ''

+numbers. = 0

+

+/*

+ * This sed expression cleans empty lines, comments and special .DEF

+ * commands, such as LIBRARY..., EXPORTS..., etc

+ */

+tidy_up  = '"s/[ 	][ 	]*/ /g;s/;.*//g;/^[ ]*$/d;/^[a-zA-Z]/d;"'

+

+/*

+ * First we find all public symbols from the original DLL. All this

+ * information is pushed into a REXX private list with the RXQUEUE

+ * utility program.

+ */

+'@echo off'

+'type' def_file1 '| sed' tidy_up '| sort | rxqueue'

+

+do while queued() > 0

+   /*

+    * We retrieve the symbol name (NAME) and its number (NUMBER)

+    */

+   parse pull '"' name '"' '@'number rest

+   if number = '' || name = '' then

+      do

+      say 'Corrupted file' def_file1

+      say 'Symbol' name 'has no number'

+      exit 1

+      end

+   else

+      do

+      numbers.name = number

+      names.number = name

+      end

+end

+

+/*

+ * Now we find all public symbols from the new DLL, and compare.

+ */

+'type' def_file2 '| sed' tidy_up '| sort | rxqueue'

+

+do while queued() > 0

+   parse pull '"' name '"' '@'number rest

+   if name = '' | number = '' then

+      do

+      say 'Corrupted file' def_file2

+      say 'Symbol' name 'has no number'

+      exit 1

+      end

+   if numbers.name = 0 then

+      do

+      cmp = 1

+      if names.number = '' then

+         say 'New symbol' name 'with code @'number

+      else

+         say 'Conflict old =' names.number ', new =' name 'at @'number

+      end

+   else if numbers.name \= number then

+      do

+      cmp = 1

+      say name 'Symbol' name 'changed from @'numbers.name 'to @'number

+      end

+end /* do */

+

+exit cmp

+

+/*

+ * Cleans the REXX queue by pulling and forgetting every line.

+ * This is needed, at least, when `cmpdef.cmd' starts, because an aborted

+ * REXX program might have left some rubbish in.

+ */

+CleanQueue: procedure

+   do while queued() > 0

+      parse pull foo

+   end

+return

+