1. Obtained source for 3.0 from http://www.willows.com/
   9-JUL-1997. DRM.

2. Ugh, the build scripts are a mess of nested Unix makefiles.  See
   what we can do with POSIX...

   A.  [.makeinclude] run setup script.  It created two files:
       makeinclude.posix_for_openvms_axp
       makefile.posix_for_openvms_axp

       Contents are pretty screwed up, but pressing on regardless...

   B.  Top level
       % make -n rc >make_vms.com

       This was supposed to put a file "rc" into /bin.  It didn't,
       but go ahead anyway.

   C.  Top level
       % cat >>make_vms.com
       END OF MAKE FOR RC
       ^D
       % make -n >>make_vms.com

       This IS going to be fun, make_vms.com now includes a bunch of 
       make commands.

   D.  % cd win
       % make -n >make_vms.com
        make: makefile: line 20:  Error -- Include file
          /makeinclude/Makefile., not found 
       
       Not surprising, it doesn't know what type we are now. Copy
       the Linux ones in in the makeinclude file.  Use -i on make too
              
       % make -i -n xwin >make_vms.com

3.   This isn't going well.  Try a build on DU.  Download, unpack, go to 
   ./makeinclude and do ./setup.  Ok, now up to top and do ./configure
   Ok.  Oops, not OK.  twin.config says LINUX, change it to OSF1.

   % tcsh
   % source twin.config
  
   That didn't work, there is no export in tcsh.  Try csh, no joy.  Set to
   tcsh and manually setenv all of the TWIN* environmental variables.
 
   % make rc | tee  make_vms.com
   That went into an infinite loop and used up all the swap space.

   EMAIL to willows folks, ask for the output of a build.

Meanwhile, just see if everything will compile.  Put together a very crude 
MAKE_VMS.COM that just compiles everything.

[.bin.rc]BUFFER.C

  s = str_alloc(strlen(s1) + 1);
................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "strlen" is 
implicitly declared as a function.
at line number 54 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.BIN.RC]BUFFER.C;1

    memcpy(p, b->buffer, b->alloc);
....^
%CC-I-IMPLICITFUNC, In this statement, the identifier "memcpy" is 
implicitly declared as a function.
at line number 120 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.BIN.RC]BUFFER.C;1

So, they are sloppy with includes.  Both need <string.h>, add as ifdef 
__VMS to rc.h to cover this.

(FIXED)

[.bin.rc]CMDLINE.C

   uses "unlink", should be "delete"
   uses strdup(), not available to VMS > 7.0

   Put the unlink define, and strdup prototype into rc.h
   Put strdup.c into vms_pieces.c (in top directory, for now).  

   Several warnings about functions that have no prototypes and
   are implicitly declared: define_used_module,rcyacc_debug_level
   Found the first one, put in a prototype.  Hey, the second one
   isn't in the source code anywhere.  Must be an ifdef? No,
   it's a $&#($&#$ yacc output.  Bet $$$ that the standard lex
   and yacc commands don't work right :-(.  Look in makefile:

   flex -i rclex.l

   don't have flex, try

   lex -i rclex.l
       nope, -i not an option

   psx> lex rclex.l
   rclex.l 134: Syntax error near `['

   big surprise NOT!.  See if CCO has these tools.  They do, but
   flex -i rclex.l doesn't work there either.  Oh, I see why,
   it needs the output from yacc first. 

   Into POSIX:

   psx> yacc -d rcyacc.y     (bunch of warnings about missing ; at
                             end of the rule)
   psx> mv ytab.h rc_y_tab.h
   psx> mv ytab.c rc_y_tab.c

   psx> yacc -d ifyacc.y
   psx> sed -e "s/yy/zz/g" -e "s/YY/ZZ/g" ytab.c >rc_z_tab.c
        sed -e "s/yy/zz/g" -e "s/YY/ZZ/g" ytab.h >rc_z_tab.h
        rm ytab.?

   Compare to results on CCO, very different.  Ok, do everything on CCO
   and pull back the final .c, .h files.  Moved over all the includes it
   needs (odd that it doesn't throw a warning when they are missing)

   % flex -i rclex.l
"rclex.l", line 153: bad start condition name
"rclex.l", line 153: bad start condition list
"rclex.l", line 160: bad start condition name
"rclex.l", line 160: bad start condition list
"rclex.l", line 163: bad start condition name
"rclex.l", line 163: bad start condition list

Sigh.  Move stuff back to VMS, try it in POSIX on a file modified
to include rc_y_tab.h/rc_z_tab.h instead of rc.y.tab.h/rc.z.tab.h

   psx> lex rclex.l_vms_posix
rclex.l_vms_posix 134: Syntax error near `['
No lex rules

   Ok, at least that makes sense, it says:
   HORZWHITESPACE[ \t]

   should be

   HORZWHITESPACE [ \t]

psx> lex rclex.l_vms_posix
rclex.l_vms_posix 153: Syntax error near `*'
No lex rules

That's consistent, anyway.  This is the code starting at line 153:

<*>\/\* { push_state(COMMENT); }

supposedly means <any state> "/*" to trigger action, but it isn't working.
Posted to comp.os.vms, come back to it later.  Hey, wait, <*> means
match any, so just leave it off altogether?  That seems to work, but now

psx> lex rclex.l_vms_posix
rclex.l_vms_posix 325: Syntax error near `<'
Out of dfa move space: increase %p from 2500

It doesn't like this:

<<EOF>> {

There is no EOF defined above it.  Flex supposedly accepts <<EOF>> though.
Ok, modify the rclex.l file to remove <*> only, move it to CCO, run it 
through flex. Hey, it worked, a lex.yy.c was produced.
   
Lots of modifications needed to lex_yy_vms.c.  Hmm, some pieces seem to 
simply not exist.

  yy_set_bol()
  yy_scan_string()

  fileno() is a POSIX function, and not part of ANSI C

Hopeless at this point, mail to willows.com as a bug.

(Next day).  Got a more recent version of flex (2.5.4), that handled the 
rclex.l file "out of the box".  It needed slight modification to pick up 
the VMS .h files, and to handle the lack of an include for "fileno".
Can get it to compile cleanly by using /standard=relaxed or /nostandard.
The final files are called

  lexyy_vms.c
  rc_y_tab.c .h
  rc_z_tab.c .h

[.bin.rc]MDC.C
#include <malloc.h>
.^
%CC-F-NOINCLFILE, Cannot find file <malloc.h> specified in #include directive.
at line number 38 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.BIN.RC]MDC.C;1

This is in <stdlib.h>, ifdef it out in MDC.C


int atoi(char *);
....^
%CC-E-NOTCOMPAT, In this declaration, the type of "atoi" is not compatible 
with the type of a previous declaration of "atoi" at line number 275 in file 
SYS$COMMON:[SYSLIB]DECC$RTLDEF.TLB;5.

ifdef it out in MDC.C

  open_modulefiles();
..^
%CC-I-IMPLICITFUNC, In this statement, the identifier "open_modulefiles" is 
implicitly declared as a function.

added a prototype in MDC.C, ifdef'd

      if(strcasecmp(ModDefTable[n].command,sp) == 0)
.........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "strcasecmp" is 
implicitly declared as a function.
at line number 396 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.BIN.RC]MDC.C;2

added a conditional VMS <7 prototype in MDC.C, put an instance of it into
vms_pieces.c.

(FIXED)

[.bin.rc]PRINTRES.C

  parse_module();      /* Load the Module Definition file */
..^
%CC-I-IMPLICITFUNC, In this statement, the identifier "parse_module" is 
implicitly declared as a function.
at line number 623 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.BIN.RC]PRINTRES.C;1

  print_module();
..^
%CC-I-IMPLICITFUNC, In this statement, the identifier "print_module" is 
implicitly declared as a function.
at line number 652 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.BIN.RC]PRINTRES.C;1

both of these are in mdc.c, with no prototypes. #ifdef in the prototypes 
into rc.h

(FIXED)

[.bin.rc]RC.C

    int chdir (const char *__dir_spec);
........^
%CC-E-NOTCOMPAT, In this declaration, the type of "chdir" is not compatible 
with the type of a previous declaration of "chdir" at line number 687 in file 
SYS$COMMON:[SYSLIB]DECC$RTLDEF.TLB;5.
at line number 214 in module UNIXIO of text library SYS$COMMON:[SYSLIB]DECC$RTLDEF.TLB;5

How very odd!  chdir is defined one way in unistd.h, and another in unixio.h.
Can get the same definition by adding _POSIX_C_SOURCE to the compile line
for this module.

(FIXED)

The link failed of course, lots of missing pieces.

[.BIN.TWINVIEW.TVLIB]EXTRBYTE.

odd errors.  Oh, I see, it has <CR> on the end of each line, fix that.  
Every file in this directory is like that.  One warning:

BOOL __far __pascal FindFile( char __far * szDir, char __far * szWildName, struct _find_t __far * FileInfo );
...........................................................................^
%CC-I-PROTOSCOPE, The type "struct _find_t" has been declared with 
prototype scope.  This may not be what you intended.
at line number 166 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.BIN.TWINVIEW.TVLIB]TVLIBPRV.H;3

[.BIN.TWINVIEW.TVLIB]TVLIBPRV.H
has 3 lines commented out with //, change to /*

[.BIN.TWINVIEW.TVLIB]FILES.C
One instance of // as a comment.  Hmm, this whole section looks like intel
code, it is full of __far and other similar pieces.  

IMPORTANT:  tvlib does not appear in ANY of the makefiles, so skip the whole of it
MAIL from robf - it is used only on 386 systems.

[.COMMCTRL]WCOMMCTL.C
#endif WINCOMMCTRLAPI
.......^
%CC-W-IGNOREEXTRA, Spurious token(s) ignored on preprocessor directive line.
at line number 47 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.INCLUDE]COMMCTRL.H;1

This is just bad coding practice! Fixed it

int WINAPI EXPORT WEP ( )
^
%CC-W-MISSINGRETURN, Non-void function "WEP" does not contain a return 
statement. 
at line number 130 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMMCTRL]WCOMMCTL.C;1

as is this. #ifdef in a return 0

(FIXED)

[.COMMCTRL]WDRAGLBX.C

                        g_hDragCursor = LoadCursor ( ( HINSTANCE )GetWindowLong ( GetParent ( hWnd ),GWL_HINSTANCE ),
.....................................................................................................^
%CC-E-UNDECLARED, In this statement, "GWL_HINSTANCE" is not declared.
at line number 353 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMMCTRL]
WDRAGLBX.C;1

this is #ifdef'd in by _windows, so where is that being set?  use /list/show=all
Hmm, no it isn't, it appears twice, and the value needs to be set by
defining TWIN32, so put this in the /DEFINE.

(FIXED)

[.COMMCTRL]COMMCTRL.H
bunch of // used as C comment delimiters. 

(FIXED)

[.COMMCTRL]WLVHELPR.C

        union /*_tagTemplateA*/ {
........^
%CC-W-UNSTRUCTMEM, The declaration of a member which is an unnamed struct 
or union type is an extension and may not be portable.
at line number 96 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.INCLUDE]
PRSHT.H;1

suppress warnings.  It isn't an error, after all.

(FIXED)

[.COMMCTRL]WLVIEW.C

        ImageList_Draw ( pLayout->hImgL, iImage, pLayout->hDC,
........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "ImageList_Draw" is 
implicitly declared as a function.
at line number 210 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMMCTRL]WLVIEW.C;1

Same warning for: ImageList_GetIconSize, LVCols_LocateSubItem, 
LVEdit_Subclass,LVCols_Init, LVRows_Init, ,LVCols_Destroy, LView_OnScroll

The LV functions are all in WLVHELPR.C, copy it to wlvhelpr.h and make 
prototypes of everything.  Add an ifdef'd include in WLVIEW.C

UGH. Now a zillion of these:

} TVLBOXDATA, *PTVLBOXDATA;
..^
%CC-E-NOLINKAGE, In this declaration, "TVLBOXDATA" has no linkage and has a prior declaration in this scope at line number 86 in
file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMMCTRL]WLVIEW.H;1.
at line number 86 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMMCTRL]WLVIEW.H;1

Hmm, why should defining prototypes cause all of these messages?  There is nothing wrong with
the typedef's themselves, something like this

typedef struct
{
    WLIST       Columns;
    long        lCount;
} LVIEWCOLS, *PLVIEWCOLS;

compiles just fine.  But the prototypes have bits like: 
void 
LVCols_Init
(
    PLVIEWCOLS      lpLVCols
);

See if this one alone is enough to mess it up.  Nope, add some more. Still OK. it must have been the
includes in the include.  Odd.  Some more of the prototypes are in WLVBOX.C, add those to the .h
too, change the name to WLVPROTOS.H.  Better.  LView_OnScroll is used BEFORE it is declared, put in
a prototype. Nope, others use it, add all prototypes from  WLVIEW.C to the header file.
ImageList_Draw,ImageList_GetIconSize, these come from WIMGLIST.C, add them to the prototype file.
Also need to add one struct, not in any of the includes.

(FIXED)

[.COMMCTRL]WLVLBOX.C

Add an ifdef'd include of WLVPROTOS.H to pick up a bunch of implicit functions.

(FIXED)

[.COMMCTRL]WPROGBAR.C

                                return ( LRESULT )ProgBar_ISetRange ( hWnd, pthis, LOWORD (lParam ), HIWORD (lParam ) );
..................................................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "ProgBar_ISetRange" is implicitly declared as a function.
at line number 267 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMMCTRL]WPROGBAR.C;1

Used before it is declared, add a prototype (no ifdef)  
(FIXED)

$ mycc [.COMMCTRL]WSTATUSB.C

                (GetPrivateProfileInt("boot", "SizeGrip", TRUE, (LPSTR) GetTwinFilename())))/*here*/
........................................................................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "GetTwinFilename" is implicitly declared as a function.
at line number 430 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMMCTRL]WSTATUSB.C;1

                (GetPrivateProfileInt("boot", "SizeGrip", TRUE, (LPSTR) GetTwinFilename())))
........................................................................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "GetTwinFilename" is implicitly declared as a function.
at line number 1077 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMMCTRL]WSTATUSB.C;1


This comes from [.win]WINCONFIG.C, add a prototype. 

(FIXED)

[.COMMCTRL]WTVLBOX.C

        ImageList_Draw ( pthis->hStImgList, lptvdi->nStImage, hDC,
........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "ImageList_Draw" is implicitly declared as a function.
at line number 370 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMMCTRL]WTVLBOX.C;1

        ImageList_Draw ( pthis->hImgList, lptvdi->nImage, hDC,
........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "ImageList_Draw" is implicitly declared as a function.
at line number 378 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMMCTRL]WTVLBOX.C;1

Add an include for WImgList.h and added the one missing prototype.

(FIXED)

[.COMMCTRL]WALVCOLUMNS.CPP
Blows up in a header, but it doesn't seem to be in any of the makefiles.

Ok, see if all changes are compatible, build all of [.commctrl] again.  Good, clean.

(FIXED)

[.COMMDLG]CHOOSECOLOR.C

WCFGetEditControlValueAndSetState
^
%CC-W-LONGEXTERN, The external identifier name exceeds 31 characters; truncated to "WCFGETEDITCONTROLVALUEANDSETSTA".
at line number 1649 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMMDLG]CHOOSECOLOR.C;1

That should be ok, so long as there are no other symbols that are similar. 
Disable warning

(FIXED)

[.COMMDLG]COMMDLG.C

bunch of implicit function declarations

  WGetOpenFileName,WGetSaveFileName,WGOFNInitDialog,WGOFNTerminateDialog,InternalDlgIndirectParam

  Four are from GETOPENFILENAME.C, can't find InternalDlgIndirectParam, aha, it is in
  [.win]DIALOG.C

int WINAPI
InternalDlgIndirectParam(HINSTANCE hInst, HGLOBAL hTemplate,
                       HWND hWnd, DLGPROC lpFunc, LPARAM lParam)

(FIXED)

[.COMMDLG]COMMDLGIT.C

varius problems with MODTABLE.H, such as

static ENTRYTAB entry_tab_COMM[] =
................^
%CC-E-DECLARATION, Invalid declaration.
at line number 461 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMM]MODTABLE.H;1

static MODULEDSCR hsmt_mod_dscr_COMM = {
..................^
%CC-E-DECLARATION, Invalid declaration.
at line number 468 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMM]MODTABLE.H;1

Looks like it might not have ENTRYTAB defined, or MODULEDSCR.  Aha!  There are 5 different
modtable.h files, one in [.comm],[.include],[.version],[.win],[winsock]
Yes, if I force it to use the [.include] one preferentially, it compiles ok, ie
 /include=([.include],[...]), so it picks up same directory (for ""), then
  [.include], then anywhere else.  Wonder if this is going to affect anything else :-(.

(FIXED)

[.COMMDLG]GETOPENFILENAME.C

                return ( Status.st_mode & S_IFDIR );
..........................................^
%CC-E-UNDECLARED, In this statement, "S_IFDIR" is not declared.
at line number 201 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMMDLG]GETOPENFILENAME.C;1

This is XPG4 extension, have to include <stat.h> and define _XOPEN_SOURCE

        LPSTR                   lpFile = ( LPSTR )strpbrkr ( PathAndFile,
..................................................^
%CC-I-IMPLICITFUNC, In the initializer for lpFile, the identifier "strpbrkr" is implicitly declared as a function.
at line number 264 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMMDLG]GETOPENFILENAME.C;1

used before declared, put in a prototype.  No, worse than that, the function is #ifdef'd for WINOS,
and uses strpbrk(), which is apparently a function for that OS.

        if ( hResBitmap = LoadBitmap ( GetInstance (), MAKEINTRESOURCE ( BitmapID ) ) )
.......................................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "GetInstance" is implicitly declared as a function.
at line number 780 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMMDLG]GETOPENFILENAME.C;1

comes from choosefont.c

        if ( ! stricmp ( TwinString, "no" ) )
...............^
%CC-I-IMPLICITFUNC, In this statement, the identifier "strcasecmp" is implicitly declared as a function.
at line number 911 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.COMMDLG]GETOPENFILENAME.C;1

This is a nonANSI function equivalent to strcasecmp, which is also nonANSI, but is at least
in the XPG4 extensions, but is only available for VMS >= 7.0.  Need to ifdef this.

(NOT FIXED) Come back to this one later)

$ mycc [.DLL]LINKDLL.C

        usage(argv[0]);
........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "usage" is implicitly declared as a function.
at line number 63 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.DLL]LINKDLL.C;1

used before declared (how ironic!)

    if (strcmp(argv[1], "-o") == 0)
........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "strcmp" is implicitly declared as a function.
at line number 67 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.DLL]LINKDLL.C;1

must be missing include for <string.h>

(FIXED)

[.INTP32]FP87.C

extern Interp_ENV *envp_global;
..................^
%CC-E-DECLARATION, Invalid declaration.
at line number 122 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.INTP32]FP87.C;1

must not have Interp_ENV defined yet, why? It comes from HSW_INTERP.h.  Ah, needs
"alpha" (lowercase) defined to pick up the right definiton in the .h.  Odd, this
seems to be the ONLY place where that ifdef is used!  Search everything...
Nope, it is also in make_thunk.c.  Define it everywhere.  Hope that alpha
doesn't assume 64 bits...  Anyway, that (FIXED) it.

(FIXED)

[.INTP32]GEN_MODRM.C

#include "modrm_00.incl"
.^
%CC-F-NOINCLFILE, Cannot find file "modrm_00.incl" specified in #include directive.
at line number 74 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.INTP32]GEN_MODRM.C;1

That's novel, there is no incl file anywhere though.  There is a MOD_RM.H though.
Aha, gen_modrm isn't in any of the makefiles.  Skip it.

(NOT FIXED)

[.INTP32]INTERP_16_32.C

            PC += hsw_modrm_32_byte(env,PC,interp_var);
..................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "hsw_modrm_32_byte" is implicitly declared as a function.
at line number 80 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.INTP32]INTERP_16_32.C;1

These come from INTERP_MODRM.C, add prototypes with no VMS ifdef, as there are already some prototypes
in this one.

                        trans_interp_flags(env,interp_var);
........................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "trans_interp_flags" is implicitly declared as a function.
at line number 2522 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.INTP32]INTERP_16_32.C;2

from interp_main.c

(FIXED)

[.INTP32]INTERP_32_16.C
same problems.  Modified all INTERP_*_*.C to have prototypes.  Also interp_main
                                                               
(FIXED)

[.MULTIMEDIA.MMSYSTEM]MIDI.C

Two functions "midiOutCacheDrumPatches","midiOutCachePatches" are declared
UINT WINAPI, but don't have return statements.  Just a warning, forget 
about it since hardly any OpenVMS systems will have midi, eh?

(NOT FIXED) (need to ifdef in the returns)


[.MULTIMEDIA.MMSYSTEM_DRV.NULL]IOPROC.C

$ mycc [.MULTIMEDIA.MMSYSTEM_DRV.NULL]IOPROC.C

                return XXXX_((LPMMIOINFO) lpMmIOInfo,
.......................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "XXXX_" is implicitly 
declared as a function.
at line number 99 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.MULTIMEDIA.
MMSYSTEM_DRV.NULL]IOPROC.C;1

That's an odd looking beast.  It sure LOOKs like a bug, in context, it 
would pretty much have to be XXXX_Close.  Change it, clean compile. (FIXED)

(FIXED)

One duplicated global symbols when all [.multimedia] stuffed into one 
library "DRIVERPROC", probably they are supposed to go in different places,
as in, link to the null library if no MIDI device.  Something like that.

[.PAL.X11]DRVCOLORS.C
static TWINDRVSUBPROC DrvColorsEntryTab[] = {
......................^
%CC-E-DECLARATION, Invalid declaration.
at line number 1141 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVCOLORS.C;1

Must not be picking up TWINDRVSUBPROC, go look for it.  It only appears in
[.WIN]DRIVER.H.  Are there multiple driver.h files? No. Is it included? Yes.
Look in driver.h.  It is #ifdef'd off by DRVTAB.  What the heck does that mean?
Search all .h.  Nothing useful, how about all makefiles.  AHA, there it is,
DRVTAB needed for Linux, ok, define it for everything.

static DWORD SystemPalettePixel(COLORREF cr)
^
%CC-W-MISSINGRETURN, Non-void function "SystemPalettePixel" does not contain a return statement.
at line number 775 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVCOLORS.C;1

This is an empty function.  #ifdef in a return(0) (probably what would happen anyway).

                        WinCalloc(uNumSystemPaletteEntries + 1, sizeof(UINT))))
........................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "WinCalloc" is implicitly declared as a function.
at line number 1280 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVCOLORS.C;1

This comes from kernel.c, put in a prototype.

(FIXED)

[.PAL.X11]DRVCONFIG.C

                if(pw = getpwuid(getpid())) {
........................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "getpwuid" is implicitly declared as a function.
at line number 211 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVCONFIG.C;1

                        p = pw->pw_dir;
............................^
%CC-W-INCOMPDEREF, In this statement, "pw" is a pointer to an incomplete struct 
or union and should not be used as the left operand of a member dereference.
at line number 212 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVCONFIG.C;1

Ok, they are trying to find the users login directory.  This method won't work though for
VMS <7.  Look... this is a section of Unix specific code, the VMS replacements are about
 1/10th as many lines of code! 

(FIXED)

[.PAL.X11]DRVEVENTS.C

    struct tms t_buffer;
...............^
%CC-E-INCOMPNOLINK, In this declaration, "t_buffer" has no linkage and is of an incomplete type.
at line number 165 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVEVENTS.C;1

it doesn't know what tms is.  Hmm, not declared in any of the .h files.  Ok, tms is something
that comes in after VMS 7.0.  Before that it used tbuffer_t

    clk_tick = sysconf(_SC_CLK_TCK);
...............^
%CC-I-IMPLICITFUNC, In this statement, the identifier "sysconf" is implicitly declared as a function.
at line number 177 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVEVENTS.C;1

sysconf() is also > VMS 7.0.  It returns a long int.  Here they are finding out how many clock
ticks per second (from SGI man pages).  That value is presumably 100, since the clock resolution
is 10 milliseconds.

Both of these are in the function DrvGetSystemTime(), so if we just knew what it wanted
it would be easy enough to figure out what to return.  It seems to be returning:

    dwTime = t_buffer.tms_utime + t_buffer.tms_stime;  time in clock ticks
                                                       utime is time used by process
                                                       stime is time used by system for process
                                                       so this is run time for the process
    dwTime *= 1000;                     Multiply by 1000??? Why?
    clk_tick = sysconf(_SC_CLK_TCK);    100 clicks/second
    dwTime /= (DWORD)clk_tick;          gives seconds * 1000.  I guess that makes sense if
                                        you want to have millisecond accuracy and keep time in
                                        an int.  Just don't run a program for more than 100 days. 

This isn't that much different than the tbuffer_t structure, so use that for VMS < 7.0, via #ifdef's.

                XChangeProperty(dp->display,
................^
%CC-W-PTRMISMATCH, In this statement, the referenced type of the pointer value """" is "char", 
which is not compatible with "const unsigned char".
at line number 194 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVEVENTS.C;1

have to force the type explicitly, as "" is char by default.

(FIXED)


[.PAL.X11]DRVFILES.C

      ret = lstat(lpFileName, &st);   /* Make sure we follow symlinks */
............^
%CC-I-IMPLICITFUNC, In this statement, the identifier "lstat" is implicitly 
declared as a function.
at line number 68 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVFILES.C;1

lstat not in any .c or .h files in distribution.  Dig around in SGI man 
pages:

     lstat obtains file attributes similar to stat, except when the named file
     is a symbolic link; in that case lstat returns information about the
     link, while stat returns information about the file the link references.

We don't have any symbolic links on OpenVMS, so use stat() instead.

    lpFileInfo->nFileIndexLow = st.st_ino;
....^
%CC-W-CVTDIFTYPES, In this statement, "st.st_ino" of type "pointer to 
unsigned short", is being converted to "unsigned long".
at line number 82 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVFILES.C;1


    lpFileInfo->dwVolumeSerialNumber = st.st_dev;
....^
%CC-W-CVTDIFTYPES, In this statement, "st.st_dev" of type "pointer to char"
, is being converted to "unsigned long".
at line number 83 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVFILES.C;1

these two may be bugs, especially the latter one.  In the first case they 
are taking the lowest word ONLY of the file ID and storing it.  In the
second case they are taking a POINTER to a string, and storing it as an 
unsigned long int.  Have to assume the code is right for now, but
#ifdef in explicit casts to get rid of the warnings.

(FIXED)  [but code is iffy]

[.PAL.X11]DRVFLOODFILL.C

        StackNode *p = StackAlloc(1);
.......................^
%CC-I-IMPLICITFUNC, In the initializer for p, the identifier "WinCalloc" is 
implicitly declared as a function.
at line number 78 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]
DRVFLOODFILL.C;1

This comes from kernel.c, put in a prototype.

    pixStart = DrvMakePixel(lpff->cr, lpddc);
...............^
%CC-I-IMPLICITFUNC, In this statement, the identifier "DrvMakePixel" is 
implicitly declared as a function.
at line number 248 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVFLOODFILL.C;1

comes from drvcolors.c, make prototype

(FIXED)

[.PAL.X11]DRVGRAPHICS.C

Can't find <values.h>, comment it out and see what comes up missing. Ah, M_PI,
that is in _XOPEN_SOURCE region of math.h, change compilation flags.  That 
did it.
(FIXED)

[.PAL.X11]DRVIMAGES.C

            values.foreground = DrvMakePixel(RGB(255,255,255), NULL);
................................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "DrvMakePixel" is 
implicitly declared as a function.
at line number 199 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVIMAGES.C;1

comes from drvcolors.c, make prototype
(FIXED)

[.PAL.X11]DRVINIT.C

        DrvIPCInit(dwParam1, 1, 0);
........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "DrvIPCInit" is implicitly declared as a function.
at line number 137 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVINIT.C;1

Etc.  The full list is: DrvIPCInit,DrvImagesInit,DrvCursorSetClipCursor,DrvColorsInit,DrvKeyboardInit,\
DrvTextInit,DrvSystemTab,DrvRegionsTab,DrvImagesTab,DrvGraphicsTab,DrvDCTab,DrvTextTab,DrvWindowsTab,
DrvIPCTab,DrvCursorTab...

These come from a bunch of different places :-(. Make a LOT of prototypes.

Interesting, then hit this:

        DrvEntryTab1[DSUB_IMAGES] = (TWINDRVSUBPROC *)DrvImagesTab();
......................................................^
%CC-E-TOOFEWARGS, In this statement, "DrvImagesTab" expects 3 arguments, but 0 are supplied.
at line number 383 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVINIT.C;2

        DrvEntryTab1[DSUB_TEXT] = (TWINDRVSUBPROC *)DrvTextTab();
....................................................^
%CC-E-TOOFEWARGS, In this statement, "DrvTextTab" expects 3 arguments, but 0 are supplied.
at line number 386 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVINIT.C;2

Do either of these use their arguments???  drvtexttab doesn't, drvimagetab doesn't either.
These seem only to be used here, so modify them to be void args, but use #ifdef VMS.  (The
use of (void) args is consistent with all *other* Drv*Tab() functions.

(FIXED)

[.PAL.X11]DRVKEYBOARD.C

        if (isalpha(KeyMap[n].vkShifted) ||
............^
%CC-I-IMPLICITFUNC, In this statement, the identifier "isalpha" is implicitly declared as a function.
at line number 360 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVKEYBOARD.C;1

this is in ctype.h

(FIXED)

[.PAL.X11]DRVMEMORY.C

                TWIN_SystemError(0,SYSERR_MEMORY,3,dwParam1);
................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "TWIN_SystemError" is implicitly declared as a function.
at line number 44 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVMEMORY.C;1
 
comes from DRVINIT.C, add a prototype

(FIXED)

[.PAL.X11]DRVPRINTING.C

void *   OpenPrinterPort(){
^
%CC-W-MISSINGRETURN, Non-void function "OpenPrinterPort" does not contain a return statement.
at line number 111 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVPRINTING.C;1

void *SetUpOffscreenDLOG( ){
^
%CC-W-MISSINGRETURN, Non-void function "SetUpOffscreenDLOG" does not contain a return statement.
at line number 166 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVPRINTING.C;1

These are both empty.  They need to return a pointer of sometype to avoid
an error, so #ifdef in return (NULL);

(FIXED)

$ mycc [.PAL.X11]DRVSYSTEM.C

    hSO = dlopen(LibraryFullName,RTLD_LAZY);
..........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "dlopen" is implicitly declared as a function.
at line number 212 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVSYSTEM.C;1

dlopen is unix specific, the OpenVMS equivalent is: 
  LIB$FIND_IMAGE_SYMBOL  (filename ,symbol ,symbol-value [,image-name])

which does both dlopen and dlsym's jobs, there is no dlclose
     void *dlopen(const char *pathname, int mode);
                  ^name of file         ^access mode
     void *dlsym(void *handle, const char *name);
                 ^from dlopen  ^name of symbol

The trick here is that TWIN wants to use dlopen and then pass around a handle,
which is a pointer to the file for use with dlsym.  It probably loses
the name of the file, and it probably can keep multiple handles.  So 
what we have to do in VMS is coopt the handle to be a pointer to the 
name descriptors that we create and stuff up into memory.  Twin can
then pass around the handles, thinking they are unix dlopen handles,
and we can grab them at the appropriate time when we do the
lib$find_image_symbol at each dlsym.  The only problem is that I can't
find dlsym anywhere!!! 

(NOT FIXED) (in a big way!)

[.PAL.X11]DRVTEXT.C

                if(strcasecmp(fp->fontface,face) == 0) {
...................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "strcasecmp" is 
implicitly declared as a function.
at line number 852 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVTEXT.C;2

added a conditional VMS <7 prototype for it.

LATER, removed that, the one in platform.h covers it.

(FIXED)

        TWIN_SwitchStackAssem(sp);
........^
%CC-I-IMPLICITFUNC, In this statement, the identifier 
"TWIN_SwitchStackAssem" is implicitly declared as a function.
at line number 99 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVTHREADS_GENERIC.C;1

Not in any local *.c, not in ANY *.h,  not in ANY *.c

Hmm, neither this file, nor the DRVTHREADS_NOTHREADS.C is found in any
of the makefiles.  Skip them.

[.PAL.X11]DRVTHREADS_X386.C

        asm ("mov  8(%ebp),%eax");
........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "asm" is 
implicitly declared as a function.
at line number 80 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]DRVTHREADS_X386.C;1

that looks an *awful* lot like embedded Intel assembler.

(NOT FIXED)

DRVTIME.C

  if (stime(&t) == -1)
......^
%CC-I-IMPLICITFUNC, In this statement, the identifier "stime" is 
implicitly declared as a function.
at line number 491 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.
X11]DRVTIME.C;1

That sets the system time, not something we're likely to implement on 
OpenVMS!  Disable that function, so that it always returns FALSE.

(FIXED) (sort of)

[.PAL.X11]DRVWINSOCK.C
Ugh. it's based on fcntl and iocntl.  Need I say more?  This module
needs pretty much a complete rewrite.

(NOT FIXED) in a big way!

[.PAL.X11]XEVENTS.C

                if(InternalICCCM(report->type,dp,report))
...................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "InternalICCCM" is implicitly declared as a function.
at line number 332 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]XEVENTS.C;1

added prototype


                msgposted =  DrvWindowsEvents(0L,0L,(LPVOID)report);
.............................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "DrvWindowsEvents" is implicitly declared as a function.
at line number 451 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]XEVENTS.C;1

added prototype


                msgposted =  DrvHandleKeyboardEvents(0L,0L,(LPVOID)report);
.............................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "DrvHandleKeyboardEvents" is implicitly declared as a function.
at line number 464 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]XEVENTS.C;1

added prototype

(FIXED)

[.PAL.X11]XICCCM.C

        DumpMemory("propertydata",propertydata,nitems);
........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "DumpMemory" is implicitly declared as a function.
at line number 69 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]XICCCM.C;1

Not in any local .h, or .c, or ANY .h or .c.  Part of X11 maybe?  Ah,
found it in [.WIN]UTILS.C.  Add prototype

extern void DumpMemory(char *s,char *p,int n)


                InternalClipboard( dp,
................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "InternalClipboard" is implicitly declared as a function.
at line number 99 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]XICCCM.C;1

In drvipc.c, add prototype
extern int InternalClipboard(PRIVATEDISPLAY *dp, Window wid, Atom atm, Time t, int state)

        DumpMemory("propertydata",propertydata,nitems);
........^
%CC-W-PTRMISMATCH, In this statement, the referenced type of the pointer value "propertydata" is "unsigned char", which is not compa
tible with "char".
at line number 73 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.X11]XICCCM.C;2

#ifdef for __VMS a forced type converion on the second parameter.

(FIXED)

[.READLINE]COMPLETE.C
    SIZE_T      ac;
....^
%CC-E-BADSTMT, Invalid statement.
at line number 55 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.READLINE]COMPLETE.C;1

    DIR         *dp;
....^
%CC-E-UNDECLARED, In this statement, "DIR" is not declared.
at line number 53 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.READLINE]COMPLETE.C;1

    DIRENTRY    *ep;
....^
%CC-E-UNDECLARED, In this statement, "DIRENTRY" is not declared.
at line number 54 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.READLINE]COMPLETE.C;1

    if ((dp = opendir(dir)) == NULL)
..............^
%CC-I-IMPLICITFUNC, In this statement, the identifier "opendir" is implicitly declared as a function.
at line number 58 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.READLINE]COMPLETE.C;1

    len = strlen(file);
..........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "strlen" is implicitly declared as a function.
at line number 63 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.READLINE]COMPLETE.C;1

    while ((ep = readdir(dp)) != NULL) {
.................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "readdir" is implicitly declared as a function.
at line number 64 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.READLINE]COMPLETE.C;1

etc, ad nauseum.  NOT Great. It needs all the readdir stuff (which I have from Pat Rankin
from other ports).  What do they do on Mac???

(NOT FIXED) skip all of readdir, we can *probably* live without it.

[.shell]ABOUT.C

        struct          utsname uts;
................................^
%CC-E-INCOMPNOLINK, In this declaration, "uts" has no linkage and is of an incomplete type.
at line number 94 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.SHELL]ABOUT.C;1

               uname(&uts);
................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "uname" is implicitly declared as a function.
at line number 142 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.SHELL]ABOUT.C;1

stuff from VMS > 7.0, can work around these though with enough work
using getsyi, but since this is just cosmetic, go ahead and comment
them out for VMS <7.0. 

(FIXED) (well, ignored)

[.shell]REGISTRY.C

    sprintf(buf,"key=%x",lpSubKey);
....^
%CC-I-IMPLICITFUNC, In this statement, the identifier "sprintf" is implicitly declared as a function.
at line number 95 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.SHELL]REGISTRY.C;1

somebody forgot to include <stdio.h>!!!  No need to ifdef that.

(FIXED)

[.shell]SHELLIF.C

long int
^
%CC-W-MISSINGRETURN, Non-void function "IT_EXTRACTASSICON" does not contain a return statement.
at line number 50 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.SHELL]SHELLIF.C;1

long int
^
%CC-W-MISSINGRETURN, Non-void function "IT_DOSENVSUBST" does not contain a return statement.
at line number 73 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.SHELL]SHELLIF.C;1

#ifdef in some for __VMS to kill warnings.  They should probably be redone as
void functions though.

(FIXED)

[.WIN]CLASSES.C

            if((!strcasecmp(lpAtomString,lpClassName)) &&
.................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "strcasecmp" is implicitly declared as a function.
at line number 438 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]CLASSES.C;1

need a prototype for VMS < 7.0 

Later, let it stand, change in platform.h covers it.

(FIXED)
[.WIN]COMM.C

#include <termios.h>
.^
%CC-F-NOINCLFILE, Cannot find file <termios.h> specified in #include directive.
at line number 79 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]COMM.C;1

Ugh, not good.  This is a pile of Unix specific terminal control stuff.  Try
commenting out the include and see if anything works...  Hah, hah, that
was dreaming.  Wonder what they do on the mac?

(NOT FIXED) in a big way.

[.WIN]DDEML.C
lots of problems, starting with #ifdef 0, that isn't valid.
This looks like an attempt to "comment out" code via an ifdef.
Is the function in question used anywhere?  Apparently not,
so change it to #if 0

#ifdef 0
.......^
%CC-W-BADIFDEF, An #ifdef or #ifndef is not followed by an identifier.
at line number 242 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]DDEMLDEFS.H;1

changed to #ifdef THIS_WILL_NEVER_BE_SET, they probably wanted #if 0

    WORD    bAppReturnCode:8,
............^
%CC-W-BITNOTINT, In the declaration of "bAppReturnCode", the bitfield type is not an int, signed int or unsigned int.
at line number 51 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.INCLUDE]DDE.H;1

bitfields of inappropriate types are bAppReturnCode, reserved, fBusy, fAck,fDeferUpd,fAckReq,unused,fResponse
  fRelease

Hmm, oh, I see. This is a warning, it is using an ANSI C extension.  Change the compilation of this
one module to disable BITNOTINT

(FIXED) (sort of)

$ mycc [.WIN]DIALOG.C

#ifdef 0
.......^
%CC-W-BADIFDEF, An #ifdef or #ifndef is not followed by an identifier.
at line number 392 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]DIALOG.C;1
 
changed to #ifdef THIS_WILL_NEVER_BE_SET

(FIXED)

[.WIN]EXECLINUX.C
this blew up, but it's full of intel assembler anyway. Skip it.

(NOT FIXED) (may not be used on OpenVMS)

[.WIN]EXECSYSV.C
 sysv unix specific. Skip it

(NOT FIXED) (may not be used on OpenVMS - but we probably need an equivalent)

[.WIN]HOOKIF.C

                         (strcasecmp(cs.lpszClass,"MDICLIENT") == 0) ) {
..........................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "strcasecmp" is implicitly declared as a function.
at line number 283 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]HOOKIF.C;1

add an ifdef'd prototype.
Later, let it stand, change in platform.h covers it.

(FIXED)

[.WIN]INTP.C

#define SP ((LPBYTE)(envp->reg.sp))
...........^
%CC-W-MACROREDEF, The redefinition of the macro "SP" conflicts with a current definition because the replacement lists differ.  The
redefinition is now in effect.
at line number 138 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]BINTYPES.H;1

#define BP ((LPBYTE)(envp->reg.bp))
...........^
%CC-W-MACROREDEF, The redefinition of the macro "BP" conflicts with a current definition because the replacement lists differ.  The
redefinition is now in effect.
at line number 139 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]BINTYPES.H;1

get rid of these by undef first, conditional on #ifdef __VMS

    SP = (WORD)(env->reg.sp - (DWORD)ss);
....^
%CC-E-UNDECLARED, In this statement, "envp" is not declared.
at line number 268 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]INTP.C;1


Odd, looks like a header problem.  env is defined at this point though.
Before this redefinition SP was #define SP r.x.sp, after it was
#define SP ((LPBYTE)(envp->reg.sp)).  Off the top of my head
I would have thought that here it should have been
#define SP ((LPBYTE)(env->reg.sp))  (note the env, rather than envp)


            INT_handler((WORD)(*(++IP)),env);
............^
%CC-I-IMPLICITFUNC, In this statement, the identifier "INT_handler" is implicitly declared as a function.
at line number 1333 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]INTP.C;1

(NOT FIXED) (reported as bug)

12-JUL-1997, received a LINUX makefile output from Rob Farnum <robf@twinux.com>
gives a better idea of some of operations the makefile does.  Semimodified 
it to VMS syntax, stored in SEMI_VMS_MAKE_COMMANDS.TXT.  Note, that is for
version 3.0.12, site www.twinux.com has 3.0.11, and the main site has 3.0.11.

Continue building in the [.win] area

[.WIN]KRNATOMS.C

                        if(strcasecmp(&at->AtomData[lp->idx],lpstr) == 0)
...........................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "strcasecmp" is 
implicitly declared as a function.
at line number 179 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]KRNATOMS.C;1


Hmm.  There is a platform.h, put it in there!  Go back and take it out of 
modules that had ONLY this fix.

(FIXED)

[.WIN]LISTBOX.C

    return strncasecmp((LPSTR)(lpcis->itemData1),
...........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "strncasecmp" is 
implicitly declared as a function.
at line number 1972 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]LISTBOX.C;1

Figures that this one would be here too.  It is already in vms_pieces, add 
prototype along with strcasecmp to platform.h

(FIXED)

[.WIN]LOADDLL.C

            //SplashScreen(SPLASH_WAIT, 0L);
............^
%CC-E-BADSTMT, Invalid statement.
at line number 1339 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]LOADDLL.C;1

SLOPPY, change it to /**/, no ifdef

(FIXED)

[.WIN]LOADLIBRARY.C

            //SplashScreen(SPLASH_INIT, 0L);
............^
%CC-E-BADSTMT, Invalid statement.
at line number 489 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]LOADLIBRARY.C;1

SLOPPY, change it to /**/, no ifdef

(FIXED)

[.WIN]LZC.C
Don't build this one, it isn't built in the LINUX.

(NOT FIXED)

[.WIN]LZEXPAND.C

  int  strncasecmp(const char *, const char *, size_t);
...............................................^
%CC-E-PARMTYPLIST, Ill-formed parameter type list.
at line number 141 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.INCLUDE]PLATFORM.H;3

Missing an include, apparently, or wrong type, needs stdlib.h for this.  
Hope it isn't a problem including it here, as it may cause stdlib.h to come 
in before some other include.

(FIXED)

[.WIN]MESSAGES.C

        dladdrtosym(lpfnwndproc,functionaddress);
........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "dladdrtosym" is 
implicitly declared as a function.
at line number 96 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]MESSAGES.C;1

Ugh, this is in the debugger in HASH.C, which we are not building

(NOT FIXED)

[.WIN]METAFILE.C

                        unlink(lpszFile);
........................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "unlink" is 
implicitly declared as a function.
at line number 321 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]METAFILE.C;1

Add #define unlink(x) delete(x) to platform.h
It also needs unixio.h.  Rats, doing it that way causes header conflicts.
Ok, put unixio.h in the file itself.  Don't you just hate it when header
file order matters???

(FIXED)

[.WIN]MMBIN.C

static ENTRYTAB entry_tab_MMSYSTEM[] =
................^
%CC-E-DECLARATION, Invalid declaration.
at line number 49 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]MMBIN.C;1

etc.

Seen this before, it is pickup up the wrong modtable.h file.  Hmm. In this 
case it looks like mmbin.c should be included by something else.  Yup, it
goes into MODTABLE.C., so don't compile it separately.

(FIXED)

[.WIN]PROFILE.C

                          unlink(wp->output);
..........................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "delete" is 
implicitly declared as a function.
at line number 473 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]PROFILE.C;1

ifdef in <unixio.h>

(FIXED)

[.WIN]UTILS.C

                (void) unlink(fn);
.......................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "delete" is 
implicitly declared as a function.
at line number 76 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]UTILS.C;1

(FIXED)

[.WIN]VERSION.C
need to generate this in the build script.  Use example from makefile
to figure out what to do.  Like Unix, except times are given in
VMS format, and are local rather than GMT.  See make_vms.com

[.WIN]WINBIN.C

    TYPEINFO    *ResourceTable;
....^
%CC-E-MISSINGTYPE, Missing type specifier or type qualifier.
at line number 120 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]MODULE.H;1

Hasn't found TYPEINFO at this point.  TYPEINFO is defined in [.include]resources.h,
which must not have been included for some reason?  HMMM, this module isn't 
compiled in the LINUX version, so skip it.

(NOT FIXED) (not needed?)

[.WIN]WINDOWCREATE.C

    //SplashScreen(SPLASH_WAIT, 0L);


SLOPPY, change it to /**/, no ifdef

(FIXED)

[.WIN]WINDOWPOS.C

TWIN_VisibleChildWindowFromPoint(HWND hWndParent, POINT pt)
^
%CC-W-LONGEXTERN, The external identifier name exceeds 31 characters; 
truncated to "TWIN_VISIBLECHILDWINDOWFROMPOIN".
at line number 2966 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]WINDOWPOS.C;1

should be harmless.  Suppress the warning in the build file.

(FIXED)

Good, that's all of [.win]

[.WINSOCK]MODTABLE.C

ORIGINAL FROM MODTABLE...
.........^
%CC-E-DECLARATION, Invalid declaration.
at line number 2 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WINSOCK]MODTABLE.H;1

That sure looks like a TYPO.  Maybe this one isn't supposed to be used, the
one from /include is?  Nope, that isn't it.  This version of modtable
isn't supposed to be compiled.  Take it out of the build procedure.  In 
fact, don't build any of these.

(NOT FIXED)

[.xdos]DOS_CREATE.C

#include <sys/param.h>
.^
%CC-F-NOINCLFILE, Cannot find file <sys/param.h> specified in #include directive.
at line number 41 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.XDOS]DOSDEFN.H;1

No such beast, #ifdef it out.

[.xdos]DOS_IOCTL.C

}
.^
%CC-E-BADSTMT, Invalid statement.
at line number 67 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.XDOS]
DOS_IOCTL.C;1

Not built explicitly on Linux, so take it out.

[.xdos]FAT_ACCESS>C
Not built explicitly on Linux, so take it out.

[.xdos]FAT_FILEIO.C

#include <utime.h>
.^
%CC-F-NOINCLFILE, Cannot find file <utime.h> specified in #include directive.
at line number 36 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.XDOS]FAT_FILEIO.C;1

No such beast, not even for VMS> 7.0.  Ifdef it out

        struct utimbuf  modtimes;
........................^
%CC-E-INCOMPNOLINK, In this declaration, "modtimes" has no linkage and is of an incomplete type.
at line number 309 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.XDOS]FAT_FILEIO.C;2

doesn't know what a utimbuf is

                        utime(fp->filename,&modtimes);
........................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "utime" is implicitly declared as a function.
at line number 327 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.XDOS]FAT_FILEIO.C;2

it has no idea what utime() is, neither do I.  Go look on SGI

utime - set file access and modification times.  Why would we ever do that?
The operating system already keeps track of that for us.

          struct    utimbuf        {
               time_t      actime; /* access time */
               time_t      modtime;/* modification time */
          };

Aha, NETWARE has these ifdef'd out already.  Add VMS to that.  If somebody 
wants to implement this in the future, it should be possible via calls to 
the OS.

(FIXED)

[.xdos]FAT_FINDFILE.C

                 if (sbuf.st_mode & S_IFDIR)
....................................^
%CC-E-UNDECLARED, In this statement, "S_IFDIR" is not declared.
at line number 224 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.XDOS]
FAT_FINDFILE.C;1

This is XPG4 extension, have to include <stat.h> and define _XOPEN_SOURCE

(FIXED)

[.xdos]FAT_LIB.C

        struct timeval  tv;
........................^
%CC-E-INCOMPNOLINK, In this declaration, "tv" has no linkage and is of an incomplete type.
at line number 764 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.XDOS]FAT_LIB.C;1

It goes on to mess around, but it looks like we can just use time() and 
localtime() to get the same effect.

Had to change the variable name in the routine from time to time_var
to avoid confusing the compiler with time().

(FIXED)

Don't build fat_main,fat_search, fat_tools, not built on LINUX.

[.xdos]FN_36.C

#include <sys/vfs.h>
.^
%CC-F-NOINCLFILE, Cannot find file <sys/vfs.h> specified in #include directive.
at line number 55 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.XDOS]FN_36.C;1

No idea what that is, comment it out.  Hmm, seems to be involved
with statfs, something about file system information. Nothing like that
even for VMS >= 7.0.  Go read the routine  - it to return the Number of free 
clusters, Number of total clusters on disk, Bytes per sector, Sectors per 
cluster.  Well, sho dev d/full has all of this info, so sys$getdvi should 
have it.  Bytes/sector is always 512.  Sectors/cluster must be the 
clustering factor.  Free clusters is freeblocks/sector size, and 
driveclusters is total blocks/cluster size.  More or less.

                unsigned int    *clusters,      /* Number of free clusters */
                unsigned int    *driveclusters, /* Number of total lcusters on disk */
                unsigned int    *sectorsize,    /* Bytes per sector */
                unsigned int    *sectorsper     /* Sectors per cluster */


Found an example in PRGDISK:[SHARED.PROGRAMS.KERMIT.SOURCE]CKVFIO.C
(NOT DONE)

See if any of the rest of this builds...
[.XDOS]FN_38.c -> INT_15.C   ok

[.xdos]INT_1A.C

        struct timezone tzp;
........................^
%CC-E-INCOMPNOLINK, In this declaration, "tzp" has no linkage and is of an 
incomplete type.
at line number 193 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.XDOS]INT_1A
.C;1

        gettimeofday(&tp, &tzp);        /* secs since 1/1/70 GMT*/
........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "gettimeofday" is 
implicitly declared as a function.
at line number 200 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.XDOS]INT_1A
.C;1

Like I have not seen this a few times before!!!  Use the gettimeofday from
Amulet, put it into VMS_PIECES.  Set up the ifdef's so that gettimeofday, tzp
get defined for VMS <7 

(DONE)

[.xdos]MFS_CONFIG.C

#include <Files.h>
..................^
%CC-E-FOUNDCR, A carriage-return character was encountered; it is being 
treated as white space.
at line number 34 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.PAL.MAC]DIRENT.H;1

Definitely not the intended DIRENT.  

Get the DIRENT.H include out (ifdef __VMS) and see what it is in there for, 
possibly we can live without it.

Amazing, it compiles cleanly without it.  BIZARRE!!!

(FIXED)

[.xdos]MFS_CORE.C

same deal, take out the dirent.h.  No such luck, this one uses readdir etc.
Ok.  Put it back in, and put in dirent.h/readdir from Pat Rankin. Better, 
but:

        return (DWORD)closedir((DIR*) dirp);
......................^
%CC-E-NEEDNONVOID, In this statement, "closedir(...)" has void type, but 
occurs in a context that requires a non-void result.
at line number 621 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.XDOS]MFS_CORE.C;1

Hey, even on Unix closedir is VOID, what the heck are they returning???
#ifdef'd it to MFS_SUCCESS.

(FIXED)

[.xdos]MFS_FILEIO.C

#include <utime.h>
.^
%CC-F-NOINCLFILE, Cannot find file <utime.h> specified in #include 
directive.
at line number 41 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.XDOS]MFS_FILEIO.C;1

Seen this before, look for NETWARE sections.  Bingo, there it is. Comment 
it out.   Next, implicit functions for delete (include unixio.h), fileno (
compile = /relaxed), and ftruncate (?). Ok ftruncate is VMS > 7 
_XOPEN_SOURCE and NOT _POSIX_C_SOURCE.

       int ftruncate (int __filedes, __off_t __length );

looks like it truncates a file to a particular offset.  Found an 
implementation at:  PRGDISK:[SHARED.PROGRAMS.ML.ML-2_3.IMAP-4.SRC.OSDEP.UNIX]OS_MNT.C,
problem is, all it says inside is: "gotta figure out how to do this"!
It is used in PINE somewhere, mail to Rob Harper for his code.  Need to add 
this function, but for now, just put in a header so that this module will
build.

(FIXED)  (but it won't work, so NOT FIXED - implement ftruncate())

[.xdos]MFS_FINDFILE.C

                 if (sbuf.st_mode & S_IFDIR)
....................................^
%CC-E-UNDECLARED, In this statement, "S_IFDIR" is not declared.
at line number 203 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.XDOS]
MFS_FINDFILE.C;1

This is XPG4 extension, have to include <stat.h> and define _XOPEN_SOURCE

(FIXED)

The [.UTILITIES] are not built on Linux, so don't mess with them here 
either.

[.SAMPLES.BINDEMO]BINDEMO.C

    LibMain();
....^
%CC-I-IMPLICITFUNC, In this statement, the identifier "LibMain" is implicitly declared as a function.
at line number 69 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.BINDEMO]BINDEMO.C;1

AH! Just used before it is declared.  Added a prototype.

        AddOEMTable("cards", OEM_tab_cards);
........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "AddOEMTable" is implicitly declared as a function.
at line number 307 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.BINDEMO]BINDEMO.C;1

From PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]OEMROUTINES.C;1
int AddOEMTable(LPSTR lpstr, HSMT_OEMENTRYTAB *oementry)

added a prototype

    invoke_binary();
....^
%CC-I-IMPLICITFUNC, In this statement, the identifier "invoke_binary" is implicitly declared as a function.
at line number 340 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.BINDEMO]BINDEMO.C;1

invoke_binary() comes from PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.WIN]INVOKE_BINARY.C;1
where it is at least correctly typed as:  void invoke_binary().  Added a 
prototype.

(FIXED)

[.SAMPLES.BINDEMO2]BINDEMO2.C,BINLIB2.C

        AddOEMTable("cards", OEM_tab_cards);
........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "AddOEMTable" is implicitly declared as a function.
at line number 61 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.BINDEMO2]BINLIB2.C;1

int FAR PASCAL _export
^
%CC-W-MISSINGRETURN, Non-void function "WEP" does not contain a return statement.
at line number 64 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.BINDEMO2]BINLIB2.C;1

return 0;  ifdef'd

      invoke_binary();
......^
%CC-I-IMPLICITFUNC, In this statement, the identifier "invoke_binary" is implicitly declared as a function.
at line number 174 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.BINDEMO2]BINLIB2.C;1

Add some prototypes

(FIXED)

[.SAMPLES.BN2DEMO]BINDEMO.C,BINLIB.C

        WndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
...........................^
%CC-W-CVTDIFTYPES, In this statement, "((void ...)0)" of type "pointer to void", is being converted to "unsigned int".
at line number 45 in file PRGDISK:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.BN2DEMO]BINDEMO.C;1

Huh?  OH, use of NULL instead of 0.  Many of these, fixed them.  (THIS IS 
WHAT HAPPENS WHEN YOU DON'T USE ANSI TYPE CHECKING !!!!!)

[.SAMPLES.BN2DEMO]BINDEMO.C,BINLIB.C

        AddOEMTable("cards", OEM_tab_cards);
........^
%CC-I-IMPLICITFUNC, In this statement, the identifier "AddOEMTable" is implicitly declared as a function.
at line number 61 in file SEQAXP$DKB400:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.BN2DEMO]BINLIB.C;1

add prototype

int FAR PASCAL _export
^
%CC-W-MISSINGRETURN, Non-void function "WEP" does not contain a return statement.
at line number 64 in file SEQAXP$DKB400:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.BN2DEMO]BINLIB.C;1

return 0, ifdef'd for __VMS.

      invoke_binary();
......^
%CC-I-IMPLICITFUNC, In this statement, the identifier "invoke_binary" is 
implicitly declared as a function.
at line number 174 in file SEQAXP$DKB400:[SHARED.PROGRAMS.TWIN.3_0_10.
SAMPLES.BN2DEMO]BINLIB.C;1

add prototype

(FIXED)

[.SAMPLES.CLIPTEXT]CLIPTEXT.C

........................................................^
%CC-E-FOUNDCR, A carriage-return character was encountered; it is being treated as white space.
at line number 122 in file SEQAXP$DKB400:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.CLIPTEXT]CLIPTEXT.C;1

Nasty Windows/DOS file, fix format on it.  Many others in this directory too.
It also has // comments, replace with /* */

MANY uses of NULL for zero.  ACK!  Also some correct uses of NULL for NULL.  Fixed them.

WORD wParam;
.....^
%CC-W-PROMOTMATCHW, In the definition of the function "About", the promoted type of wParam is incompatible with the type of the
corresponding parameter in a prior declaration. 
at line number 413 in file SEQAXP$DKB400:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.CLIPTEXT]CLIPTEXT.C;4

Hmm.  I think this is because there is in  MainWndProc(hWnd, message, wParam, lParam) this
definition of wParam:

   WPARAM wParam;

and this procedure touches the About function, which has it's own internal definition which is:

   WORD wParam;

These must not be compatible.  Odd though, because WPARAM is defined as WORD in most places.  Run it through the preprocessor
and see what comes out.  Aha, in this module, WPARAM is from windows.h

typedef WLS_UINT WPARAM;

That's a bug.

typedef unsigned short  WORD;
typedef unsigned int        WLS_UINT;

email to  Rob Farnum <robf@twinux.com>, what is preferred fix (presumably modify About, but...)

(NOT FIXED)

[.SAMPLES.CTRLDEMO]CTRLDEMO.C,PROPPAGE.C

                            ShellAbout(hWnd, Program, Title, hIcon);
............................^
%CC-I-IMPLICITFUNC, In this statement, the identifier "ShellAbout" is implicitly declared as a function.
at line number 294 in file SEQAXP$DKB400:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.CTRLDEMO]CTRLDEMO.C;1

added prototype

        union /*_tagIconA*/ {
........^
%CC-W-UNSTRUCTMEM, The declaration of a member which is an unnamed struct or union type is an extension and may not be portable.
at line number 108 in file SEQAXP$DKB400:[SHARED.PROGRAMS.TWIN.3_0_10.INCLUDE]PRSHT.H;1

suppress warning

(FIXED)

[.SAMPLES.DLLDEMO]BITMAPS.C,DLLDEMO.C,DLLRES.C

#include <malloc.h>
.^
%CC-F-NOINCLFILE, Cannot find file <malloc.h> specified in #include directive.
at line number 9 in file SEQAXP$DKB400:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.DLLDEMO]DLLDEMO.H;1

#ifdef __VMS'd it out

(FIXED)

[.SAMPLES.LISTVIEW]LISTVIEW.C

        union /*_tagTemplateA*/ {
........^
%CC-W-UNSTRUCTMEM, The declaration of a member which is an unnamed struct or union type is an extension and may not be portable.
at line number 96 in file SEQAXP$DKB400:[SHARED.PROGRAMS.TWIN.3_0_10.INCLUDE]PRSHT.H;1

suppress warning

        while (GetMessage(&msg,
...............^
%CC-W-CVTDIFTYPES, In this statement, "((void ...)0)" of type "pointer to void", is being converted to "unsigned int".
at line number 62 in file SEQAXP$DKB400:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.LISTVIEW]LISTVIEW.C;1

NULL for 0, sigh.  Changed all the bad ones.

(FIXED)

[.SAMPLES.PROGBAR]PROGRESS.C

#include "windows.h"    // includes basic windows functionality
........................^
%CC-W-IGNOREEXTRA, Spurious token(s) ignored on preprocessor directive line.
at line number 10 in file SEQAXP$DKB400:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.PROGBAR]PROGRESS.C;1

Many, changed them to /**/  Also in progress.h

        union /*_tagTemplateA*/ {
........^
%CC-W-UNSTRUCTMEM, The declaration of a member which is an unnamed struct or union type is an extension and may not be portable.
at line number 96 in file SEQAXP$DKB400:[SHARED.PROGRAMS.TWIN.3_0_10.INCLUDE]PRSHT.H;1

suppress warnings

Also, a bunch of NULL for 0 (big surprise).

(FIXED)

[.SAMPLES.TREEVIEW]TVDIALOG.C,TVIEWAPP.C

        union /*_tagTemplateA*/ {
........^
%CC-W-UNSTRUCTMEM, The declaration of a member which is an unnamed struct or union type is an extension and may not be portable.
at line number 96 in file SEQAXP$DKB400:[SHARED.PROGRAMS.TWIN.3_0_10.INCLUDE]PRSHT.H;1

suppress warnings

        g_hMDlg = CreateDialog(_hInstance,
..................^
%CC-W-PTRMISMATCH, In this statement, the referenced type of the pointer value "TVDialog_DlgProc" is "function (unsigned int, unsign
ed int, unsigned int, long) returning long", which is not compatible with "function () returning int".
at line number 60 in file SEQAXP$DKB400:[SHARED.PROGRAMS.TWIN.3_0_10.SAMPLES.TREEVIEW]TVDIALOG.C;1

Implicit functions for:  ImageList_DragMove,ImageList_EndDrag,ImageList_BeginDrag,ImageList_DragEnter
These are prototyped in [.INCLUDE]COMMCTRL.H, so just include that.  Odd, that does seem to be
included in TVDIALOG.C, have to look more closely, maybe it is ifdef'd out?  Nope.  What about in
the .h file, some problem with the prototypes?  Ack, that's a zoo.  Have to compile /preprocess
to figure it out. HEY!  These are effectively commented out in COMMCTRL.H via an
#if 0

Some sort of version inconsistency???  Don't build this one for now (comment out in
make_vms.com

(NOT FIXED)

That's the end of the list!  Hip Hip Hooray, and once more into the fray.  
First go back and clean up the directories a bit.


What key pieces are missing?  Well RC won't link, but it compiles. 
18-JUL-1997, release at this point. DRM.
