static void parse_args( int argc, char *argv[] ) { int ret, optc; static struct option long_options[] = { {"debug", 2, NULL, 'd'}, {"foreground", 0, NULL, 'f'}, {"help", 0, NULL, 'h'}, {"kill", 2, NULL, 'k'}, {"persistent", 2, NULL, 'p'}, {"version", 0, NULL, 'v'}, {"wait", 0, NULL, 'w'}, { NULL, 0, NULL, 0} }; server_argv0 = argv[0]; while ((optc = getopt_long( argc, argv, "d::fhk::p::vw", long_options, NULL )) != -1) { switch(optc) { case 'd': if (optarg && isdigit(*optarg)) debug_level = atoi( optarg ); else debug_level++; break; case 'f': foreground = 1; break; case 'h': usage(); exit(0); break; case 'k': if (optarg && isdigit(*optarg)) ret = kill_lock_owner( atoi( optarg ) ); else ret = kill_lock_owner(-1); exit( !ret ); case 'p': if (optarg && isdigit(*optarg)) master_socket_timeout = (timeout_t)atoi( optarg ) * -TICKS_PER_SEC; else master_socket_timeout = TIMEOUT_INFINITE; break; case 'v': fprintf( stderr, "%s\n", wine_get_build_id()); exit(0); case 'w': wait_for_lock(); exit(0); default: usage(); exit(1); } } }
static bool FetchWineInfoAppend(pfc::string_base & out) { typedef const char *(__cdecl *t_wine_get_build_id)(void); typedef void (__cdecl *t_wine_get_host_version)( const char **sysname, const char **release ); const HMODULE ntdll = GetModuleHandle(L"ntdll.dll"); if (ntdll == NULL) return false; t_wine_get_build_id wine_get_build_id; t_wine_get_host_version wine_get_host_version; wine_get_build_id = (t_wine_get_build_id)GetProcAddress(ntdll, "wine_get_build_id"); wine_get_host_version = (t_wine_get_host_version)GetProcAddress(ntdll, "wine_get_host_version"); if (wine_get_build_id == NULL || wine_get_host_version == NULL) { if (GetProcAddress(ntdll, "wine_server_call") != NULL) { out << "wine (unknown version)"; return true; } return false; } const char * sysname = NULL; const char * release = NULL; wine_get_host_version(&sysname, &release); out << wine_get_build_id() << ", on: " << sysname << " / " << release; return true; }
/*********************************************************************** * check_command_line * * Check if command line is one that needs to be handled specially. */ static void check_command_line( int argc, char *argv[] ) { static const char usage[] = "Usage: wine PROGRAM [ARGUMENTS...] Run the specified program\n" " wine --help Display this help and exit\n" " wine --version Output version information and exit"; if (argc <= 1) { fprintf( stderr, "%s\n", usage ); exit(1); } if (!strcmp( argv[1], "--help" )) { printf( "%s\n", usage ); exit(0); } if (!strcmp( argv[1], "--version" )) { printf( "%s\n", wine_get_build_id() ); exit(0); } }
{ ABOUT_INFO *info = (ABOUT_INFO *)lParam; WCHAR template[512], buffer[512], version[64]; extern const char *wine_get_build_id(void); if (info) { SendDlgItemMessageW(hWnd, stc1, STM_SETICON,(WPARAM)info->hIcon, 0); GetWindowTextW( hWnd, template, sizeof(template)/sizeof(WCHAR) ); sprintfW( buffer, template, info->szApp ); SetWindowTextW( hWnd, buffer ); SetWindowTextW( GetDlgItem(hWnd, IDC_ABOUT_STATIC_TEXT1), info->szApp ); SetWindowTextW( GetDlgItem(hWnd, IDC_ABOUT_STATIC_TEXT2), info->szOtherStuff ); GetWindowTextW( GetDlgItem(hWnd, IDC_ABOUT_STATIC_TEXT3), template, sizeof(template)/sizeof(WCHAR) ); MultiByteToWideChar( CP_UTF8, 0, wine_get_build_id(), -1, version, sizeof(version)/sizeof(WCHAR) ); sprintfW( buffer, template, version ); SetWindowTextW( GetDlgItem(hWnd, IDC_ABOUT_STATIC_TEXT3), buffer ); hWndCtl = GetDlgItem(hWnd, IDC_ABOUT_LISTBOX); SendMessageW( hWndCtl, WM_SETREDRAW, 0, 0 ); SendMessageW( hWndCtl, WM_SETFONT, (WPARAM)info->hFont, 0 ); add_authors( hWndCtl ); SendMessageW( hWndCtl, WM_SETREDRAW, 1, 0 ); } } return 1; case WM_PAINT: { PAINTSTRUCT ps;
/********************************************************************* * wine_get_build_id (NTDLL.@) */ const char * CDECL NTDLL_wine_get_build_id(void) { return wine_get_build_id(); }