From 0934ed9e8c961e6f501be00af27f36842055ce5f Mon Sep 17 00:00:00 2001
From: chase <nicetrynsa@protonmail.ch>
Date: Mon, 27 Dec 2021 16:42:36 +0000
Subject: [PATCH] Use built in onsgml parser versus our old one

---
 cde/.gitignore                                |  2 +
 cde/configure.ac                              |  9 ++-
 cde/debian/cde-desktop-docs.docs              | 17 -----
 cde/debian/control                            |  4 +-
 cde/doc/common/help/sdl-docs.am               |  4 +-
 cde/doc/util/dbtoman/Makefile.am              |  5 ++
 cde/doc/util/dbtoman/{dbtoman => dbtoman.in}  |  3 +-
 cde/programs/Makefile.am                      |  2 +-
 cde/programs/dtdocbook/doc2sdl/Makefile.am    |  5 ++
 .../doc2sdl/{dtdocbook => dtdocbook.in}       |  2 +-
 .../dtinfogen/infolib/etc/dtinfogen_worker.c  | 67 +++----------------
 11 files changed, 37 insertions(+), 83 deletions(-)
 rename cde/doc/util/dbtoman/{dbtoman => dbtoman.in} (98%)
 mode change 100755 => 100644
 rename cde/programs/dtdocbook/doc2sdl/{dtdocbook => dtdocbook.in} (99%)
 mode change 100755 => 100644

diff --git a/cde/.gitignore b/cde/.gitignore
index 2f0820f14..ec9a95a0a 100644
--- a/cde/.gitignore
+++ b/cde/.gitignore
@@ -422,6 +422,7 @@ doc/it_IT.ISO8859-1/help/*.sdl
 doc/ja_JP.dt-eucJP/m-guides/
 doc/tmp/
 doc/util/dbtoman/instant/instant
+doc/util/dbtoman/dbtoman
 
 # lib/DtHelp
 lib/DtHelp/LocaleXlate.h
@@ -510,6 +511,7 @@ programs/dtfile/dtfile.config
 programs/dtfile/dtfile_error
 
 # programs/dtdocbook
+programs/dtdocbook/doc2sdl/dtdocbook
 programs/dtdocbook/doc2sdl/SGML/docbook.dtd
 programs/dtdocbook/doc2sdl/SGML/dtinfo.af
 programs/dtdocbook/instant/instant
diff --git a/cde/configure.ac b/cde/configure.ac
index e6c5b581b..fd1c31d81 100644
--- a/cde/configure.ac
+++ b/cde/configure.ac
@@ -356,6 +356,10 @@ if test -z "$ac_cv_path_PERL"; then
    MISSING_PROGS="perl ${MISSING_PROGS}"
 fi
 
+AC_PATH_PROG(ONSGMLS, onsgmls)
+if test -x "ac_cv_path_ONSGMLS"; then
+	MISSING_PROGS="onsgmls ${MISSING_PROGS}"
+fi
 
 dnl we need to use cpp for some things, like tooltalk and other
 dnl runtime uses.  So look for the system's cpp.  NOTE: this is NOT
@@ -611,8 +615,6 @@ programs/dthelp/parser/pass2/htag2/Makefile
 programs/dthelp/parser/pass2/parser/Makefile
 programs/dthelp/parser/helptag/Makefile
 
-programs/nsgmls/Makefile
-
 programs/dtmail/Makefile
 programs/dtmail/dtmail/Makefile
 programs/dtmail/MotifApp/Makefile
@@ -884,6 +886,9 @@ copyright
 doc/common/help/HELPEnt.sgm
 include/Dt/Dt.h
 lib/tt/bin/ttauth/ttauth.man
+
+programs/dtdocbook/doc2sdl/dtdocbook
+doc/util/dbtoman/dbtoman
 ])
 
 AC_OUTPUT
diff --git a/cde/debian/cde-desktop-docs.docs b/cde/debian/cde-desktop-docs.docs
index ee4add8c1..b453d82e8 100644
--- a/cde/debian/cde-desktop-docs.docs
+++ b/cde/debian/cde-desktop-docs.docs
@@ -11,20 +11,3 @@ doc/C/pdf/I18nGuide.pdf
 doc/C/pdf/ToolTalk.pdf
 doc/C/pdf/SysAdminGuide.pdf
 doc/C/pdf/ProgrammersGuide.pdf
-programs/nsgmls/doc/sgmldecl.htm
-programs/nsgmls/doc/archform.htm
-programs/nsgmls/doc/sgmlnorm.htm
-programs/nsgmls/doc/catalog.htm
-programs/nsgmls/doc/sysid.htm
-programs/nsgmls/doc/winntu.htm
-programs/nsgmls/doc/index.htm
-programs/nsgmls/doc/ideas.htm
-programs/nsgmls/doc/generic.htm
-programs/nsgmls/doc/build.htm
-programs/nsgmls/doc/spam.htm
-programs/nsgmls/doc/features.htm
-programs/nsgmls/doc/sysdecl.htm
-programs/nsgmls/doc/new.htm
-programs/nsgmls/doc/nsgmls.htm
-programs/nsgmls/doc/sgmlsout.htm
-programs/nsgmls/doc/spent.htm
\ No newline at end of file
diff --git a/cde/debian/control b/cde/debian/control
index 5f27c61fa..2afc83904 100644
--- a/cde/debian/control
+++ b/cde/debian/control
@@ -28,7 +28,8 @@ Build-Depends: debhelper (>= 10),
                rpcbind,
                bison,
                libbison-dev,
-               xbitmaps
+               xbitmaps,
+	       opensp
 Standards-Version: 4.1.2
 Homepage: https://sourceforge.net/projects/cdesktopenv/
 #Vcs-Git: https://anonscm.debian.org/git/collab-maint/cde-desktop.git
@@ -57,6 +58,7 @@ Depends: libxt6,
          rpcbind,
          bison,
          xbitmaps,
+	 opensp,
          ${shlibs:Depends},
          ${misc:Depends}
 Recommends: xfonts-100dpi,
diff --git a/cde/doc/common/help/sdl-docs.am b/cde/doc/common/help/sdl-docs.am
index f820f5ee6..d9fa2429a 100644
--- a/cde/doc/common/help/sdl-docs.am
+++ b/cde/doc/common/help/sdl-docs.am
@@ -17,8 +17,6 @@ DOC2SDL_LOC = $(top_srcdir)/programs/dtdocbook/doc2sdl
 DTHELP_HTAG2 = $(top_builddir)/programs/dthelp/parser/pass2/parser/dthelp_htag2
 INSTANT = $(top_builddir)/programs/dtdocbook/instant/instant
 XLATE_LOCALE = $(top_builddir)/programs/dtdocbook/xlate_locale/xlate_locale
-# replace this with a native version detected by autoconf someday
-NSGMLS = $(top_builddir)/programs/nsgmls/nsgmls
 
 # let's try a rule here.  I don't like the backticks for running basename
 # but the $(basename...) seems to add a space for some reason
@@ -27,7 +25,7 @@ NSGMLS = $(top_builddir)/programs/nsgmls/nsgmls
 	LANG=$(HELP_LANG) SGML_SEARCH_PATH=".:.." \
 		DTLCXSEARCHPATH=$(top_srcdir)/lib/DtHelp \
 		$(KSH) $(DTDOCBOOK) -t $(DOC2SDL_LOC) -H $(DTHELP_HTAG2) \
-			-I $(INSTANT) -L $(XLATE_LOCALE) -S $(NSGMLS) \
+			-I $(INSTANT) -L $(XLATE_LOCALE) -S $(ONSGMLS) \
 			-o $@ `basename $@ .sdl`/book.sgm
 
 APPMANAGER_SRCS = Appmanager/GEntity.sgm Appmanager/TOC.sgm		\
diff --git a/cde/doc/util/dbtoman/Makefile.am b/cde/doc/util/dbtoman/Makefile.am
index c79bc582c..6ff5a15c5 100644
--- a/cde/doc/util/dbtoman/Makefile.am
+++ b/cde/doc/util/dbtoman/Makefile.am
@@ -1,3 +1,8 @@
 MAINTAINERCLEANFILES = Makefile.in
 
 SUBDIRS = instant
+
+noinst_SCRIPTS = dbtoman
+
+dbtoman:
+	chmod +x $@
diff --git a/cde/doc/util/dbtoman/dbtoman b/cde/doc/util/dbtoman/dbtoman.in
old mode 100755
new mode 100644
similarity index 98%
rename from cde/doc/util/dbtoman/dbtoman
rename to cde/doc/util/dbtoman/dbtoman.in
index af4cdb1f6..87e9a5b71
--- a/cde/doc/util/dbtoman/dbtoman
+++ b/cde/doc/util/dbtoman/dbtoman.in
@@ -40,7 +40,6 @@ SGML=$CDETOP/programs/dtdocbook/doc2sdl/SGML
 TPT_LIB=$CDETOP/doc/util/dbtoman/transpec
 export TPT_LIB
 
-PARSER=$CDETOP/programs/nsgmls/nsgmls
 PARSER_OPTS="-g -oline -wno-idref"
 SGML_CATALOG_FILES="$SGML/catalog"
 export SGML_CATALOG_FILES
@@ -122,7 +121,7 @@ cat >> /tmp/dtm.$$.psinc <<\!
 
 cat $DECL $DCLFILE $REFFILE | \
 sed -e 's/<\!\[[ ]*\%CDE\.C\.CDE;[ ]*\[<[rR]ef[eE]ntry [iI]d="[^"]*">\]\]>/<refentry>/g' | \
-$PARSER $PARSER_OPTS | \
+@ONSGMLS@ $PARSER_OPTS | \
 $INSTANT $INSTANT_OPT -croff.cmap -sroff.sdata -tdocbook-to-man.ts > \
 /tmp/dtm.$$.out1 && eval cat /tmp/dtm.$$.psinc /tmp/dtm.$$.out1 $NROFF > \
 /tmp/dtm.$$.out2 && cp /tmp/dtm.$$.out2 $MANFILE
diff --git a/cde/programs/Makefile.am b/cde/programs/Makefile.am
index 03e4dc725..a74618481 100644
--- a/cde/programs/Makefile.am
+++ b/cde/programs/Makefile.am
@@ -6,4 +6,4 @@ SUBDIRS = backdrops icons dsdm dtmail dtpad dtfile dtwm dtlogin		\
         dtappbuilder palettes dtappintegrate dtprintegrate dtconfig	\
         dtcreate dtprintinfo fontaliases dtdspmsg ttsnoop dtimsstart	\
         dtpdm dtsr dtpdmd dtinfo types tttypes util dtopen localized	\
-        dthelp nsgmls dtdocbook dtinfo
+        dthelp dtdocbook dtinfo
diff --git a/cde/programs/dtdocbook/doc2sdl/Makefile.am b/cde/programs/dtdocbook/doc2sdl/Makefile.am
index 8d662750b..9458deef4 100644
--- a/cde/programs/dtdocbook/doc2sdl/Makefile.am
+++ b/cde/programs/dtdocbook/doc2sdl/Makefile.am
@@ -1,3 +1,8 @@
 MAINTAINERCLEANFILES = Makefile.in
 
 SUBDIRS = SGML
+
+bin_SCRIPTS = dtdocbook
+
+dtdocbook:
+	chmod +x $@
diff --git a/cde/programs/dtdocbook/doc2sdl/dtdocbook b/cde/programs/dtdocbook/doc2sdl/dtdocbook.in
old mode 100755
new mode 100644
similarity index 99%
rename from cde/programs/dtdocbook/doc2sdl/dtdocbook
rename to cde/programs/dtdocbook/doc2sdl/dtdocbook.in
index 22c78b1b3..ee4defd24
--- a/cde/programs/dtdocbook/doc2sdl/dtdocbook
+++ b/cde/programs/dtdocbook/doc2sdl/dtdocbook.in
@@ -94,7 +94,7 @@ if [[ ${#sgmls} -eq 0 ]] then                  # if no -S, use installed one
     if [[ -x ${info_dir}/etc/nsgmls ]] then
         sgmls="${info_dir}/etc/nsgmls"
     else
-        sgmls="${info_dir}/etc/sgmls"
+        sgmls=@ONSGMLS@
     fi
 fi
 sgmls="${sgmls:-${info_dir}/etc/sgmls}"         # if no -S, use installed one
diff --git a/cde/programs/dtinfo/dtinfogen/infolib/etc/dtinfogen_worker.c b/cde/programs/dtinfo/dtinfogen/infolib/etc/dtinfogen_worker.c
index 4c0741013..679d175e9 100644
--- a/cde/programs/dtinfo/dtinfogen/infolib/etc/dtinfogen_worker.c
+++ b/cde/programs/dtinfo/dtinfogen/infolib/etc/dtinfogen_worker.c
@@ -1094,10 +1094,7 @@ defaultGlobals(void)
 
     gStruct->dirMode = 0775;
     gStruct->searchEngine = "dtsearch";
-    gStruct->parser = "nsgmls";
-    if (!testExec(gStruct->parser, False))
-	gStruct->parser = "sgmls";
-
+    gStruct->parser = "onsgmls";
     gStruct->keepWorkDir = False;
     gStruct->workDir = (char *)NULL;
 
@@ -1172,7 +1169,6 @@ checkGlobals(void)
 static void
 addCatFile(char *catalog, Bool needed)
 {
-    Boolean parserIsNSGMLS;
     char pathBuf[(2 * MAXPATHLEN) + 10];
     char *ptr1, *ptr2;
     int catlen;
@@ -1183,31 +1179,11 @@ addCatFile(char *catalog, Bool needed)
 	dieRWD(-1, "%s: %s: %s\n",
 	       EXEC_NAME, catalog, strerror(errno));
     }
-    parserIsNSGMLS = (strcmp(gStruct->parser, "nsgmls") == 0);
-    if (parserIsNSGMLS)
-    {
-	ptr1 = makeAbsPathStr(catalog);
-	snprintf(pathBuf, sizeof(pathBuf), "-c%s ", ptr1);
-	appendStr(&gStruct->sgmlCatFiles, &gStruct->sgmlCatFilesLen,
-		  &gStruct->sgmlCatFilesMaxLen, pathBuf);
-	XtFree(ptr1);
-    }
-    else
-    {
-	ptr1 = strrchr(catalog, '/');
-	catlen = strlen(catalog);
-	if (ptr1)
-	    catlen -= strlen(ptr1);
-	snprintf(pathBuf, sizeof(pathBuf), "%.*s/%%P:%.*s/%%S",
-				catlen, catalog, catlen, catalog);
-	ptr1 = makeAbsPathStr(pathBuf);
-	ptr2 = addToEnv("SGML_PATH", ptr1, False);
-	if (gStruct->sgmlPathEnv)
-	    XtFree(gStruct->sgmlPathEnv);
-	if (ptr1)
-	    XtFree(ptr1);
-	gStruct->sgmlPathEnv = ptr2;
-    }
+    ptr1 = makeAbsPathStr(catalog);
+    snprintf(pathBuf, sizeof(pathBuf), "-c%s ", ptr1);
+    appendStr(&gStruct->sgmlCatFiles, &gStruct->sgmlCatFilesLen,
+	&gStruct->sgmlCatFilesMaxLen, pathBuf);
+    XtFree(ptr1);
 }
 
 static int
@@ -1362,9 +1338,6 @@ parseDocument(int runCmd, ...)
     char *cmd = (char *)NULL;
     int cmdLen = 0;
     int maxLen = 0;
-    Boolean parserIsNSGMLS;
-
-    parserIsNSGMLS = (strcmp(gStruct->parser, "nsgmls") == 0);
 
     if (!checkStat(gStruct->sgml, FSTAT_IS_DIR | FSTAT_IS_READABLE))
 	dieRWD(-1, "%s: faulty installation: %s\n",
@@ -1375,33 +1348,18 @@ parseDocument(int runCmd, ...)
     addCatFile(buildPath("%s/infolib/%s/SGML/catalog",
 			 STR(gStruct->install), LANG_COMMON), True);
 
-    if (parserIsNSGMLS)
-    {
-	if (!gStruct->sgmlSearchPathEnv)
-	    gStruct->sgmlSearchPathEnv = addToEnv("SGML_SEARCH_PATH", ".", False);
-    }
-    else
-    {
-	ptr = addToEnv("SGML_PATH", "%S", False);
-	if (gStruct->sgmlPathEnv)
-	    XtFree(gStruct->sgmlPathEnv);
-	gStruct->sgmlPathEnv = ptr;
-    }
+    if (!gStruct->sgmlSearchPathEnv)
+	gStruct->sgmlSearchPathEnv = addToEnv("SGML_SEARCH_PATH", ".", False);
 
     appendStr(&cmd, &cmdLen, &maxLen, gStruct->parser);
 
-    if (parserIsNSGMLS) {
-	appendStr(&cmd, &cmdLen, &maxLen, " -bidentity ");
-	appendStr(&cmd, &cmdLen, &maxLen, gStruct->sgmlCatFiles);
-    }
+    appendStr(&cmd, &cmdLen, &maxLen, " -bidentity ");
+    appendStr(&cmd, &cmdLen, &maxLen, gStruct->sgmlCatFiles);
 
     if (runCmd)
     {
 	appendStr(&cmd, &cmdLen, &maxLen, " -sg ");
 
-	if (! parserIsNSGMLS)
-	    appendStr(&cmd, &cmdLen, &maxLen, gStruct->decl);
-
 	va_start(ap, runCmd);
 	while ((ptr = va_arg(ap, char *)) != 0)
 	{
@@ -1415,10 +1373,7 @@ parseDocument(int runCmd, ...)
 	return (char *)NULL;
     }
 
-    if (parserIsNSGMLS)
-	appendStr(&cmd, &cmdLen, &maxLen, "-oline -wno-idref ");
-    else
-	appendStr(&cmd, &cmdLen, &maxLen, " -l ");
+    appendStr(&cmd, &cmdLen, &maxLen, "-oline -wno-idref ");
 
     appendStr(&cmd, &cmdLen, &maxLen, gStruct->decl);
     va_start(ap, runCmd);
-- 
2.32.0

