ReactOS 0.4.16-dev-297-gc569aee
utils.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _msi_table
 

Macros

#define ADD_TABLE(x)   {#x".idt", x##_dat, sizeof(x##_dat)}
 
#define create_database(name, tables, num_tables)
 
#define create_database_template(name, tables, num_tables, version, template)
 
#define create_file(name, size)   create_file_data(name, name, size)
 
#define create_pf(file, is_file)   create_pf_data(file, file, is_file)
 

Typedefs

typedef struct _msi_table msi_table
 

Functions

BOOL get_system_dirs (void)
 
BOOL get_user_dirs (void)
 
void create_database_wordcount (const char *name, const msi_table *tables, int num_tables, int version, int wordcount, const char *template, const char *packagecode)
 
void create_cab_file (const char *name, DWORD max_size, const char *files)
 
void create_file_data (const char *name, const char *data, DWORD size)
 
void create_pf_data (const char *file, const char *data, BOOL is_file)
 
void delete_cab_files (void)
 
BOOL delete_pf (const char *rel_path, BOOL is_file)
 
BOOL file_exists (const char *file)
 
BOOL pf_exists (const char *file)
 
BOOL is_process_elevated (void)
 
UINT run_query (MSIHANDLE hdb, MSIHANDLE hrec, const char *query)
 
void restart_as_admin_elevated (void)
 

Variables

char PROG_FILES_DIR [MAX_PATH]
 
char PROG_FILES_DIR_NATIVE [MAX_PATH]
 
char COMMON_FILES_DIR [MAX_PATH]
 
char APP_DATA_DIR [MAX_PATH]
 
char WINDOWS_DIR [MAX_PATH]
 
char CURR_DIR [MAX_PATH]
 

Macro Definition Documentation

◆ ADD_TABLE

#define ADD_TABLE (   x)    {#x".idt", x##_dat, sizeof(x##_dat)}

Definition at line 36 of file utils.h.

◆ create_database

#define create_database (   name,
  tables,
  num_tables 
)
Value:
create_database_wordcount(name, tables, num_tables, 100, 0, ";1033", \
"{004757CA-5092-49C2-AD20-28E1CE0DF5F2}");
struct nls_table * tables
Definition: nls_base.c:22
void create_database_wordcount(const char *name, const msi_table *tables, int num_tables, int version, int wordcount, const char *template, const char *packagecode)
Definition: name.c:39

Definition at line 42 of file utils.h.

◆ create_database_template

#define create_database_template (   name,
  tables,
  num_tables,
  version,
  template 
)
Value:
create_database_wordcount(name, tables, num_tables, version, 0, template, \
"{004757CA-5092-49C2-AD20-28E1CE0DF5F2}");
static const WCHAR version[]
Definition: asmname.c:66

Definition at line 46 of file utils.h.

◆ create_file

#define create_file (   name,
  size 
)    create_file_data(name, name, size)

Definition at line 52 of file utils.h.

◆ create_pf

#define create_pf (   file,
  is_file 
)    create_pf_data(file, file, is_file)

Definition at line 54 of file utils.h.

Typedef Documentation

◆ msi_table

Function Documentation

◆ create_cab_file()

void create_cab_file ( const char name,
DWORD  max_size,
const char files 
)

Definition at line 2307 of file install.c.

2308{
2309 CCAB cabParams;
2310 LPCSTR ptr;
2311 HFCI hfci;
2312 ERF erf;
2313 BOOL res;
2314
2315 set_cab_parameters(&cabParams, name, max_size);
2316
2319 get_temp_file, &cabParams, NULL);
2320
2321 ok(hfci != NULL, "Failed to create an FCI context\n");
2322
2323 ptr = files;
2324 while (*ptr)
2325 {
2326 res = add_file(hfci, ptr, tcompTYPE_MSZIP);
2327 ok(res, "Failed to add file: %s\n", ptr);
2328 ptr += lstrlenA(ptr) + 1;
2329 }
2330
2332 ok(res, "Failed to flush the cabinet\n");
2333
2334 res = FCIDestroy(hfci);
2335 ok(res, "Failed to destroy the cabinet\n");
2336}
#define ok(value,...)
Definition: atltest.h:57
static INT max_size
Definition: history.c:51
cd_progress_ptr progress
Definition: cdjpeg.h:152
#define mem_free(ptr, bsize)
Definition: types.h:124
#define NULL
Definition: types.h:112
#define mem_alloc(bsize)
Definition: types.h:123
#define FALSE
Definition: types.h:117
BOOL __cdecl FCIDestroy(HFCI hfci)
Definition: fci.c:1709
HFCI __cdecl FCICreate(PERF perf, PFNFCIFILEPLACED pfnfiledest, PFNFCIALLOC pfnalloc, PFNFCIFREE pfnfree, PFNFCIOPEN pfnopen, PFNFCIREAD pfnread, PFNFCIWRITE pfnwrite, PFNFCICLOSE pfnclose, PFNFCISEEK pfnseek, PFNFCIDELETE pfndelete, PFNFCIGETTEMPFILE pfnfcigtf, PCCAB pccab, void *pv)
Definition: fci.c:998
BOOL __cdecl FCIFlushCabinet(HFCI hfci, BOOL fGetNextCab, PFNFCIGETNEXTCABINET pfnfcignc, PFNFCISTATUS pfnfcis)
Definition: fci.c:1675
#define tcompTYPE_MSZIP
Definition: fci.h:65
unsigned int BOOL
Definition: ntddk_ex.h:94
GLuint res
Definition: glext.h:9613
int WINAPI lstrlenA(LPCSTR lpString)
Definition: lstring.c:145
double __cdecl erf(double)
static PVOID ptr
Definition: dispmode.c:27
static void set_cab_parameters(PCCAB pCabParams, const CHAR *name, DWORD max_size)
Definition: install.c:2294
static BOOL CDECL get_next_cabinet(PCCAB pccab, ULONG cbPrevCab, void *pv)
Definition: install.c:2120
static UINT CDECL fci_write(INT_PTR hf, void *memory, UINT cb, int *err, void *pv)
Definition: install.c:2172
static BOOL CDECL get_temp_file(char *pszTempName, int cbTempName, void *pv)
Definition: install.c:2235
static UINT CDECL fci_read(INT_PTR hf, void *memory, UINT cb, int *err, void *pv)
Definition: install.c:2160
static INT_PTR CDECL fci_open(char *pszFile, int oflag, int pmode, int *err, void *pv)
Definition: install.c:2137
static BOOL add_file(HFCI hfci, const char *file, TCOMP compress)
Definition: install.c:2279
static int CDECL fci_delete(char *pszFile, int *err, void *pv)
Definition: install.c:2203
static int CDECL file_placed(PCCAB pccab, char *pszFile, LONG cbFile, BOOL fContinuation, void *pv)
Definition: install.c:2131
static LONG CDECL fci_seek(INT_PTR hf, LONG dist, int seektype, int *err, void *pv)
Definition: install.c:2192
static int CDECL fci_close(INT_PTR hf, int *err, void *pv)
Definition: install.c:2184
Definition: fci.h:144
Definition: fci.h:44
const char * LPCSTR
Definition: xmlstorage.h:183

◆ create_database_wordcount()

void create_database_wordcount ( const char name,
const msi_table tables,
int  num_tables,
int  version,
int  wordcount,
const char template,
const char packagecode 
)

◆ create_file_data()

void create_file_data ( const char name,
const char data,
DWORD  size 
)

◆ create_pf_data()

void create_pf_data ( const char file,
const char data,
BOOL  is_file 
)

◆ delete_cab_files()

void delete_cab_files ( void  )

Definition at line 3003 of file install.c.

3004{
3005 SHFILEOPSTRUCTA shfl;
3006 CHAR path[MAX_PATH+10];
3007
3009 lstrcatA(path, "\\*.cab");
3010 path[strlen(path) + 1] = '\0';
3011
3012 shfl.hwnd = NULL;
3013 shfl.wFunc = FO_DELETE;
3014 shfl.pFrom = path;
3015 shfl.pTo = NULL;
3017
3018 SHFileOperationA(&shfl);
3019}
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
#define MAX_PATH
Definition: compat.h:34
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:100
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:123
char CURR_DIR[MAX_PATH]
Definition: install.c:49
#define FO_DELETE
Definition: shellapi.h:139
#define FOF_FILESONLY
Definition: shellapi.h:149
#define FOF_NOCONFIRMATION
Definition: shellapi.h:146
#define FOF_SILENT
Definition: shellapi.h:144
#define FOF_NORECURSION
Definition: shlfileop.c:38
int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp)
Definition: shlfileop.cpp:1060
FILEOP_FLAGS fFlags
Definition: shellapi.h:350
char CHAR
Definition: xmlstorage.h:175

Referenced by test_cabisextracted(), test_caborder(), test_continuouscabs(), test_file_in_use_cab(), test_lastusedsource(), test_readonlyfile_cab(), test_samesequence(), and test_uiLevelFlags().

◆ delete_pf()

BOOL delete_pf ( const char rel_path,
BOOL  is_file 
)

Definition at line 2433 of file install.c.

2434{
2436
2438 lstrcatA(path, "\\");
2439 lstrcatA(path, rel_path);
2440
2441 if (is_file)
2442 return DeleteFileA(path);
2443 else
2444 return RemoveDirectoryA(path);
2445}
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
Definition: delete.c:24
BOOL WINAPI RemoveDirectoryA(IN LPCSTR lpPathName)
Definition: dir.c:714
char PROG_FILES_DIR[MAX_PATH]
Definition: install.c:50

Referenced by delete_pf_files(), test_admin(), test_adminimage(), test_adminprops(), test_cabisextracted(), test_caborder(), test_concurrentinstall(), test_continuouscabs(), test_create_remove_shortcut(), test_currentworkingdir(), test_customaction51(), test_delete_services(), test_duplicate_files(), test_feature_override(), test_file_in_use(), test_file_in_use_cab(), test_find_related_products(), test_ini_values(), test_install_remove_odbc(), test_install_services(), test_Installer_InstallProduct(), test_installstate(), test_missingcab(), test_missingcomponent(), test_mixedmedia(), test_move_files(), test_MsiConfigureProductEx(), test_package_validation(), test_preselected(), test_process_components(), test_propcase(), test_publish_components(), test_publish_features(), test_publish_product(), test_readonlyfile(), test_readonlyfile_cab(), test_register_class_info(), test_register_extension_info(), test_register_font(), test_register_mime_info(), test_register_product(), test_register_progid_info(), test_register_typelib(), test_register_user(), test_remove_duplicate_files(), test_remove_existing_products(), test_remove_files(), test_samesequence(), test_self_registration(), test_setpropertyfolder(), test_shortcut(), test_simple_patch(), test_sourcedir_props(), test_sourcedirprop(), test_sourcefolder(), test_sourcepath(), test_start_stop_services(), test_transformprop(), test_uiLevelFlags(), test_upgrade_code(), test_validate_product_id(), and test_wow64().

◆ file_exists()

BOOL file_exists ( const char file)

Definition at line 3521 of file install.c.

3522{
3524}
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
Definition: fileinfo.c:636
Definition: fci.c:127
#define INVALID_FILE_ATTRIBUTES
Definition: vfdcmd.c:23

Referenced by pf_exists(), and test_icon_table().

◆ get_system_dirs()

BOOL get_system_dirs ( void  )

Definition at line 2357 of file install.c.

2358{
2359 HKEY hkey;
2360 DWORD type, size;
2361
2362 if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion",
2363 0, KEY_QUERY_VALUE | KEY_WOW64_64KEY, &hkey))
2364 return FALSE;
2365
2366 size = MAX_PATH;
2367 if (RegQueryValueExA(hkey, "ProgramFilesDir (x86)", 0, &type, (LPBYTE)PROG_FILES_DIR, &size) &&
2368 RegQueryValueExA(hkey, "ProgramFilesDir", 0, &type, (LPBYTE)PROG_FILES_DIR, &size)) {
2369 RegCloseKey(hkey);
2370 return FALSE;
2371 }
2372
2373 size = MAX_PATH;
2374 if (RegQueryValueExA(hkey, "CommonFilesDir (x86)", 0, &type, (LPBYTE)COMMON_FILES_DIR, &size) &&
2375 RegQueryValueExA(hkey, "CommonFilesDir", 0, &type, (LPBYTE)COMMON_FILES_DIR, &size)) {
2376 RegCloseKey(hkey);
2377 return FALSE;
2378 }
2379
2380 size = MAX_PATH;
2381 if (RegQueryValueExA(hkey, "ProgramFilesDir", 0, &type, (LPBYTE)PROG_FILES_DIR_NATIVE, &size)) {
2382 RegCloseKey(hkey);
2383 return FALSE;
2384 }
2385
2386 RegCloseKey(hkey);
2387
2389 return FALSE;
2390
2391 return TRUE;
2392}
#define RegCloseKey(hKey)
Definition: registry.h:49
#define TRUE
Definition: types.h:120
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
Definition: reg.c:3298
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
Definition: reg.c:4009
UINT WINAPI GetWindowsDirectoryA(OUT LPSTR lpBuffer, IN UINT uSize)
Definition: path.c:2337
unsigned long DWORD
Definition: ntddk_ex.h:95
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLsizeiptr size
Definition: glext.h:5919
char COMMON_FILES_DIR[MAX_PATH]
Definition: install.c:52
char PROG_FILES_DIR_NATIVE[MAX_PATH]
Definition: install.c:51
char WINDOWS_DIR[MAX_PATH]
Definition: install.c:54
DWORD size
Definition: install.c:3663
#define KEY_QUERY_VALUE
Definition: nt_native.h:1016
unsigned char * LPBYTE
Definition: typedefs.h:53
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define KEY_WOW64_64KEY
Definition: cmtypes.h:46

Referenced by START_TEST().

◆ get_user_dirs()

BOOL get_user_dirs ( void  )

Definition at line 2338 of file install.c.

2339{
2340 HKEY hkey;
2341 DWORD type, size;
2342
2344 "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", &hkey))
2345 return FALSE;
2346
2347 size = MAX_PATH;
2348 if(RegQueryValueExA(hkey, "AppData", 0, &type, (LPBYTE)APP_DATA_DIR, &size)){
2349 RegCloseKey(hkey);
2350 return FALSE;
2351 }
2352
2353 RegCloseKey(hkey);
2354 return TRUE;
2355}
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3234
char APP_DATA_DIR[MAX_PATH]
Definition: install.c:53
#define HKEY_CURRENT_USER
Definition: winreg.h:11

Referenced by START_TEST().

◆ is_process_elevated()

BOOL is_process_elevated ( void  )

Definition at line 2211 of file install.c.

2212{
2213 HANDLE token;
2215 DWORD size;
2216 BOOL ret;
2217
2221 return (ret && type == TokenElevationTypeFull);
2222}
BOOL WINAPI GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength, PDWORD ReturnLength)
Definition: security.c:411
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
Definition: security.c:294
#define CloseHandle
Definition: compat.h:739
#define GetCurrentProcess()
Definition: compat.h:759
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
Definition: glfuncs.h:210
int ret
enum _TOKEN_ELEVATION_TYPE TOKEN_ELEVATION_TYPE
@ TokenElevationTypeDefault
Definition: winnt_old.h:2515
@ TokenElevationTypeFull
Definition: winnt_old.h:2516
#define TOKEN_QUERY
Definition: setypes.h:928
@ TokenElevationType
Definition: setypes.h:983

Referenced by START_TEST(), test_adminimage(), test_adminprops(), test_allusers_prop(), test_cabisextracted(), test_continuouscabs(), test_currentworkingdir(), test_customaction51(), test_feature_override(), test_feature_tree(), test_file_in_use(), test_file_in_use_cab(), test_icon_table(), test_installed_prop(), test_installstate(), test_missingcab(), test_missingcomponent(), test_mixed_package(), test_mixedmedia(), test_MsiInstallProduct(), test_package_validation(), test_preselected(), test_propcase(), test_readonlyfile(), test_readonlyfile_cab(), test_remove_upgrade_code(), test_setdirproperty(), test_shared_component(), test_shortcut(), test_source_resolution(), test_sourcedirprop(), test_sourcefolder(), test_transformprop(), test_upgrade_code(), test_volume_props(), and test_wow64().

◆ pf_exists()

BOOL pf_exists ( const char file)

Definition at line 3526 of file install.c.

3527{
3529
3531 lstrcatA(path, "\\");
3532 lstrcatA(path, file);
3533
3534 return file_exists(path);
3535}
BOOL file_exists(const char *file)
Definition: install.c:3521

Referenced by test_feature_override(), test_missingcomponent(), test_shared_component(), and test_upgrade_code().

◆ restart_as_admin_elevated()

void restart_as_admin_elevated ( void  )

Definition at line 6478 of file action.c.

6479{
6480 HANDLE token;
6482 STARTUPINFOW si;
6483
6484 if (!(token = get_admin_token())) return;
6485
6486 memset(&si, 0, sizeof(si));
6487 si.cb = sizeof(si);
6489 {
6491
6492 trace("restarting\n");
6493 WaitForSingleObject(pi.hProcess, INFINITE);
6494 GetExitCodeProcess(pi.hProcess, &exit_code);
6495 CloseHandle(pi.hProcess);
6496 CloseHandle(pi.hThread);
6498 }
6499 else trace("failed to restart as admin %lu\n", GetLastError());
6500
6502}
#define trace
Definition: atltest.h:70
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessAsUserW(_In_opt_ HANDLE hToken, _In_opt_ LPCWSTR lpApplicationName, _Inout_opt_ LPWSTR lpCommandLine, _In_opt_ LPSECURITY_ATTRIBUTES lpProcessAttributes, _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_ BOOL bInheritHandles, _In_ DWORD dwCreationFlags, _In_opt_ LPVOID lpEnvironment, _In_opt_ LPCWSTR lpCurrentDirectory, _In_ LPSTARTUPINFOW lpStartupInfo, _Out_ LPPROCESS_INFORMATION lpProcessInformation)
Definition: logon.c:993
BOOL WINAPI GetExitCodeProcess(IN HANDLE hProcess, IN LPDWORD lpExitCode)
Definition: proc.c:1168
VOID WINAPI ExitProcess(IN UINT uExitCode)
Definition: proc.c:1487
LPWSTR WINAPI GetCommandLineW(VOID)
Definition: proc.c:2019
#define INFINITE
Definition: serial.h:102
static UINT exit_code
Definition: process.c:78
static HANDLE get_admin_token(void)
Definition: action.c:6456
static refpint_t pi[]
Definition: server.c:96
#define memset(x, y, z)
Definition: compat.h:39
DWORD cb
Definition: winbase.h:877
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
DWORD WINAPI GetLastError(void)
Definition: except.c:1042

Referenced by START_TEST().

◆ run_query()

UINT run_query ( MSIHANDLE  hdb,
MSIHANDLE  hrec,
const char query 
)

Definition at line 3559 of file install.c.

3560{
3561 MSIHANDLE hview = 0;
3562 UINT r;
3563
3564 r = MsiDatabaseOpenViewA(hdb, query, &hview);
3565 if(r != ERROR_SUCCESS)
3566 return r;
3567
3568 r = MsiViewExecute(hview, hrec);
3569 if(r == ERROR_SUCCESS)
3570 r = MsiViewClose(hview);
3571 MsiCloseHandle(hview);
3572 return r;
3573}
#define ERROR_SUCCESS
Definition: deptool.c:10
UINT WINAPI MsiCloseHandle(MSIHANDLE handle)
Definition: handle.c:269
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
UINT WINAPI MsiViewClose(MSIHANDLE hView)
Definition: msiquery.c:469
UINT WINAPI MsiViewExecute(MSIHANDLE hView, MSIHANDLE hRec)
Definition: msiquery.c:518
UINT WINAPI MsiDatabaseOpenViewA(MSIHANDLE hdb, const char *szQuery, MSIHANDLE *phView)
Definition: msiquery.c:88
unsigned int UINT
Definition: ndis.h:50
unsigned long MSIHANDLE
Definition: winemsi.idl:27

Referenced by add_custom_dll(), generate_transform(), test_customaction1(), and test_icon_table().

Variable Documentation

◆ APP_DATA_DIR

char APP_DATA_DIR[MAX_PATH]
extern

Definition at line 53 of file install.c.

Referenced by get_user_dirs(), and test_icon_table().

◆ COMMON_FILES_DIR

char COMMON_FILES_DIR[MAX_PATH]
extern

Definition at line 52 of file install.c.

Referenced by delete_cf(), get_system_dirs(), and START_TEST().

◆ CURR_DIR

char CURR_DIR[MAX_PATH]
extern

Definition at line 49 of file install.c.

◆ PROG_FILES_DIR

◆ PROG_FILES_DIR_NATIVE

char PROG_FILES_DIR_NATIVE[MAX_PATH]
extern

Definition at line 51 of file install.c.

Referenced by delete_pf_native(), and get_system_dirs().

◆ WINDOWS_DIR

char WINDOWS_DIR[MAX_PATH]
extern

Definition at line 54 of file install.c.

Referenced by get_system_dirs(), and test_icon_table().