1) In gui.c, #ifdef VMS to avoid including unistd.h
    2) In main.c, #ifdef VMS then do not signal SIGUSR1 (ugly fix)
    3) In Xresources.h I had to change all 17 point fonts to 18 point,
       as the DECwindows MOTIF seems to lack them. I also changed
       the anchor colour to Red instead of hex 9f, since some people's
       X defaults specified a blue background, so making the anchors
       invisible!
    4) STRDUP was missing from VMS, and from the Ultrix system I used.
       So I included a version as a separate file.
Finally, I wrote a little VMS command file that does the compile and
link for VMS systems running Multinet. This is included below, as is
STRDUP.
VMS_MAKE.COM
-------------------------------------------------------------------------
$!========================================================================
$!
$! Name      : VMS_MAKE
$!
$! Purpose   : Make the VMS version of XMosaic
$!
$! Arguments : None
$!
$! Created  10-FEB-1993   Julian J. Bunn
$!
$!========================================================================
$   ON ERROR     THEN $ GOTO EXIT
$   ON CONTROL_Y THEN $ GOTO EXIT
$ copy sys$input sys$output
  Procedure for making XMosaic. This procedure expects to find the
  /src files in the current directory, the /libhtmlw sources in a
  subdirectory [.libhtmlw] and the /libwww sources in a subdirectory
  [.libwww]. This version produces an executable for Multinet TCP/IP.
  UCX and Wollongong versions can be created by changing the CC compile
  flag appropriately (UCX or WIN_TCP respectively).
$ if f$search("libhtmlw.dir") .eqs. ""
$ then
$    write sys$output "You need directory [.libhtmlw]"
$    exit
$ endif
$ if f$search("libwww.dir") .eqs. ""
$ then
$    write sys$output "You need directory [.libwww]"
$    exit
$ endif
$ library/create libhtmlw.olb
$ write sys$output "Compiling source in LIBHTMLW"
$ set def [.libhtmlw]
$ delete *.obj.*
$loop1:
$ file = f$search("*.c")
$ if file .eqs. "" then goto end_loop1
$ write sys$output "File : ''file'"
$ cc /nowarn 'file
$ if $severity 
$ then 
$    library/ins [-]libhtmlw *.obj
$    delete *.obj.*
$ endif
$ goto loop1
$end_loop1:
$ library/create [-]libwww.olb
$ set def [-.libwww]
$ write sys$output "Compiling source in LIBWWW"
$ delete *.obj.*
$loop2:
$ file = f$search("*.c")
$ if file .eqs. "" then goto end_loop2
$ write sys$output "File : ''file'"
$ cc /nowarn/define=(multinet=1) 'file
$ if $severity 
$ then 
$    library/ins [-]libwww *.obj
$    delete *.obj.*
$ endif
$ goto loop2
$end_loop2:
$ write sys$output "Compiling source in []"
$ set def [-]
$ delete *.obj.*
$loop3:
$ file = f$search("*.c")
$ if file .eqs. "" then goto end_loop3
$ write sys$output "File : ''file'"
$ cc /nowarn 'file
$ goto loop3
$end_loop3:
$ write sys$output "Linking all files. Expect warnings."
$! Note that this is without DTM
$ ass/user sys$input sys$command
$ link/exe=xmosaic main,gui,mo-www,mo-dtm,xmx,xmx2,strdup,-
  libwww/lib,libhtmlw/lib,sys$input/opt
multinet_socket_library/share
sys$share:decw$xmlibshr/share
sys$share:decw$xmulibshr/share
$
$ write sys$output "Finished."
$ directory/size=all/prot xmosaic.exe
$EXIT:
$   EXIT
-----------------------------------------------------------------------
STRDUP.C
-----------------------------------------------------------------------
/* strdup.c -- return a newly allocated copy of a string
   Copyright (C) 1990 Free Software Foundation, Inc.
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2, or (at your option)
   any later version.
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
#ifdef STDC_HEADERS
#include <string.h>
#include <stdlib.h>
#else
char *malloc ();
char *strcpy ();
#endif
/* Return a newly allocated copy of STR,
   or 0 if out of memory. */
char *
strdup (str)
     char *str;
{
  char *newstr;
  newstr = (char *) malloc (strlen (str) + 1);
  if (newstr)
    strcpy (newstr, str);
  return newstr;
}
-------------------------------------------------------------------------
Hope this information is of use.
                                   Julian