/*
 *  tapctl -- Utility to manipulate TUN/TAP adapters on Windows
 *
 *  Copyright (C) 2018-2021 Simon Rozman <simon@rozman.si>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2
 *  as published by the Free Software Foundation.
 *
 *  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.,
 *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */

#ifdef HAVE_CONFIG_H
#include <config.h>
#else
#include <config-msvc-version.h>
#endif
#include <winresrc.h>

#pragma code_page(65001) /* UTF8 */

LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL

VS_VERSION_INFO VERSIONINFO
    FILEVERSION OPENVPN_VERSION_RESOURCE
    PRODUCTVERSION OPENVPN_VERSION_RESOURCE
    FILEFLAGSMASK VS_FF_DEBUG | VS_FF_PRERELEASE | VS_FF_PATCHED | VS_FF_PRIVATEBUILD | VS_FF_SPECIALBUILD
#ifdef _DEBUG
    FILEFLAGS VS_FF_DEBUG
#else
    FILEFLAGS 0x0L
#endif
    FILEOS VOS_NT_WINDOWS32
    FILETYPE VFT_APP
    FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "CompanyName", "The OpenVPN Project"
            VALUE "FileDescription", "Utility to manipulate TUN/TAP adapters on Windows"
            VALUE "FileVersion", PACKAGE_VERSION ".0"
            VALUE "InternalName", "OpenVPN"
            VALUE "LegalCopyright", "Copyright © The OpenVPN Project"
            VALUE "OriginalFilename", "tapctl.exe"
            VALUE "ProductName", "OpenVPN"
            VALUE "ProductVersion", PACKAGE_VERSION ".0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END

1 RT_MANIFEST "tapctl.exe.manifest"
