503 |
get_file_version (const char *fname, WORD *major, WORD *minor, |
get_file_version (const char *fname, WORD *major, WORD *minor, |
504 |
WORD *patch1, WORD *patch2) |
WORD *patch1, WORD *patch2) |
505 |
{ |
{ |
506 |
VS_FIXEDFILEINFO *inf = {0}; |
VS_FIXEDFILEINFO *inf; |
507 |
char file[MAX_PATH+1] = {0}; |
char file[MAX_PATH+1] = {0}; |
508 |
LPVOID buf, data; |
LPVOID buf, data; |
509 |
DWORD arg; |
DWORD arg; |
514 |
size = GetFileVersionInfoSize (file, &arg); |
size = GetFileVersionInfoSize (file, &arg); |
515 |
if (!size) |
if (!size) |
516 |
return -1; |
return -1; |
517 |
buf = (LPVOID)new CHAR[size]; |
buf = (LPVOID)new char[size]; |
518 |
if (!buf) |
if (!buf) |
519 |
BUG (NULL); |
BUG (NULL); |
520 |
GetFileVersionInfo (file, 0, size, buf); |
GetFileVersionInfo (file, 0, size, buf); |
522 |
qlen=0; |
qlen=0; |
523 |
VerQueryValue (buf, "\\", &data, &qlen); |
VerQueryValue (buf, "\\", &data, &qlen); |
524 |
if (!qlen) { |
if (!qlen) { |
525 |
delete [] (char*)buf; |
delete [](char*)buf; |
526 |
return -1; |
return -1; |
527 |
} |
} |
528 |
inf = (VS_FIXEDFILEINFO*)data; |
inf = (VS_FIXEDFILEINFO*)data; |
536 |
if (patch2) |
if (patch2) |
537 |
*patch2 = LOWORD (inf->dwProductVersionLS); |
*patch2 = LOWORD (inf->dwProductVersionLS); |
538 |
|
|
539 |
delete [] (char*)buf; |
delete [](char*)buf; |
540 |
return 0; |
return 0; |
541 |
} |
} |
542 |
|
|