// Resource script for Python core DLL.
// Currently only holds version information.
//
#include "ver.h"
#include "winver.h"

#define MS_WINDOWS
#include "modsupport.h"
#include "patchlevel.h"

#define MS_DLL_ID "2.0"

#define PYTHON_VERSION MS_DLL_ID "." PYTHON_API_STRING "\0"

#ifndef PYTHON_DLL_NAME
#define PYTHON_DLL_NAME "Python20.dll"
#endif

// String Tables
STRINGTABLE DISCARDABLE
BEGIN
	1000,	MS_DLL_ID
END

/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 1,6,0,0
 PRODUCTVERSION 1,6,0,0
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x40004L
 FILETYPE 0x1L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "000004b0"
        BEGIN
            VALUE "CompanyName", "BeOpen.com\0"
            VALUE "FileDescription", "Python Core\0"
            VALUE "FileVersion", PYTHON_VERSION
            VALUE "InternalName", "Python DLL\0"
            VALUE "LegalCopyright", "Copyright (c) 2000 BeOpen.com. Copyright (c) 1995-2000 CNRI. Copyright (c) 1990-1995 SMC.\0"
            VALUE "OriginalFilename", PYTHON_DLL_NAME "\0"
            VALUE "ProductName", "Python\0"
            VALUE "ProductVersion", PYTHON_VERSION
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x0, 1200
    END
END

/////////////////////////////////////////////////////////////////////////////
