ReactOS 0.4.15-dev-7918-g2a2556c
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_limited (void)
 
UINT run_query (MSIHANDLE hdb, MSIHANDLE hrec, const char *query)
 

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 2373 of file install.c.

2374{
2375 CCAB cabParams;
2376 LPCSTR ptr;
2377 HFCI hfci;
2378 ERF erf;
2379 BOOL res;
2380
2381 set_cab_parameters(&cabParams, name, max_size);
2382
2385 get_temp_file, &cabParams, NULL);
2386
2387 ok(hfci != NULL, "Failed to create an FCI context\n");
2388
2389 ptr = files;
2390 while (*ptr)
2391 {
2392 res = add_file(hfci, ptr, tcompTYPE_MSZIP);
2393 ok(res, "Failed to add file: %s\n", ptr);
2394 ptr += lstrlenA(ptr) + 1;
2395 }
2396
2398 ok(res, "Failed to flush the cabinet\n");
2399
2400 res = FCIDestroy(hfci);
2401 ok(res, "Failed to destroy the cabinet\n");
2402}
#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:2360
static BOOL CDECL get_next_cabinet(PCCAB pccab, ULONG cbPrevCab, void *pv)
Definition: install.c:2136
static UINT CDECL fci_write(INT_PTR hf, void *memory, UINT cb, int *err, void *pv)
Definition: install.c:2188
static BOOL CDECL get_temp_file(char *pszTempName, int cbTempName, void *pv)
Definition: install.c:2301
static UINT CDECL fci_read(INT_PTR hf, void *memory, UINT cb, int *err, void *pv)
Definition: install.c:2176
static INT_PTR CDECL fci_open(char *pszFile, int oflag, int pmode, int *err, void *pv)
Definition: install.c:2153
static BOOL add_file(HFCI hfci, const char *file, TCOMP compress)
Definition: install.c:2345
static int CDECL fci_delete(char *pszFile, int *err, void *pv)
Definition: install.c:2219
static int CDECL file_placed(PCCAB pccab, char *pszFile, LONG cbFile, BOOL fContinuation, void *pv)
Definition: install.c:2147
static LONG CDECL fci_seek(INT_PTR hf, LONG dist, int seektype, int *err, void *pv)
Definition: install.c:2208
static int CDECL fci_close(INT_PTR hf, int *err, void *pv)
Definition: install.c:2200
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 3097 of file install.c.

3098{
3099 SHFILEOPSTRUCTA shfl;
3100 CHAR path[MAX_PATH+10];
3101
3103 lstrcatA(path, "\\*.cab");
3104 path[strlen(path) + 1] = '\0';
3105
3106 shfl.hwnd = NULL;
3107 shfl.wFunc = FO_DELETE;
3108 shfl.pFrom = path;
3109 shfl.pTo = NULL;
3111
3112 SHFileOperationA(&shfl);
3113}
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:65
#define FO_DELETE
Definition: shellapi.h:138
#define FOF_FILESONLY
Definition: shellapi.h:148
#define FOF_NOCONFIRMATION
Definition: shellapi.h:145
#define FOF_SILENT
Definition: shellapi.h:143
#define FOF_NORECURSION
Definition: shlfileop.c:38
int WINAPI SHFileOperationA(LPSHFILEOPSTRUCTA lpFileOp)
Definition: shlfileop.cpp:1059
FILEOP_FLAGS fFlags
Definition: shellapi.h:349
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()

◆ file_exists()

BOOL file_exists ( const char file)

Definition at line 3615 of file install.c.

3616{
3618}
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 2423 of file install.c.

2424{
2425 HKEY hkey;
2426 DWORD type, size;
2427
2428 if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion",
2429 0, KEY_QUERY_VALUE | KEY_WOW64_64KEY, &hkey))
2430 return FALSE;
2431
2432 size = MAX_PATH;
2433 if (RegQueryValueExA(hkey, "ProgramFilesDir (x86)", 0, &type, (LPBYTE)PROG_FILES_DIR, &size) &&
2434 RegQueryValueExA(hkey, "ProgramFilesDir", 0, &type, (LPBYTE)PROG_FILES_DIR, &size)) {
2435 RegCloseKey(hkey);
2436 return FALSE;
2437 }
2438
2439 size = MAX_PATH;
2440 if (RegQueryValueExA(hkey, "CommonFilesDir (x86)", 0, &type, (LPBYTE)COMMON_FILES_DIR, &size) &&
2441 RegQueryValueExA(hkey, "CommonFilesDir", 0, &type, (LPBYTE)COMMON_FILES_DIR, &size)) {
2442 RegCloseKey(hkey);
2443 return FALSE;
2444 }
2445
2446 size = MAX_PATH;
2447 if (RegQueryValueExA(hkey, "ProgramFilesDir", 0, &type, (LPBYTE)PROG_FILES_DIR_NATIVE, &size)) {
2448 RegCloseKey(hkey);
2449 return FALSE;
2450 }
2451
2452 RegCloseKey(hkey);
2453
2455 return FALSE;
2456
2457 return TRUE;
2458}
#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:68
char PROG_FILES_DIR_NATIVE[MAX_PATH]
Definition: install.c:67
char WINDOWS_DIR[MAX_PATH]
Definition: install.c:70
DWORD size
Definition: install.c:3757
#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 2404 of file install.c.

2405{
2406 HKEY hkey;
2407 DWORD type, size;
2408
2410 "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", &hkey))
2411 return FALSE;
2412
2413 size = MAX_PATH;
2414 if(RegQueryValueExA(hkey, "AppData", 0, &type, (LPBYTE)APP_DATA_DIR, &size)){
2415 RegCloseKey(hkey);
2416 return FALSE;
2417 }
2418
2419 RegCloseKey(hkey);
2420 return TRUE;
2421}
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3234
char APP_DATA_DIR[MAX_PATH]
Definition: install.c:69
#define HKEY_CURRENT_USER
Definition: winreg.h:11

Referenced by START_TEST().

◆ is_process_limited()

BOOL is_process_limited ( void  )

Definition at line 2254 of file install.c.

2255{
2257 PSID Group = NULL;
2258 BOOL IsInGroup;
2259 HANDLE token;
2260
2262 DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0, &Group) ||
2263 !CheckTokenMembership(NULL, Group, &IsInGroup))
2264 {
2265 trace("Could not check if the current user is an administrator\n");
2266 FreeSid(Group);
2267 return FALSE;
2268 }
2269 FreeSid(Group);
2270
2271 if (!IsInGroup)
2272 {
2273 /* Only administrators have enough privileges for these tests */
2274 return TRUE;
2275 }
2276
2278 {
2279 BOOL ret;
2281 DWORD size;
2282
2285 return (ret && type == TokenElevationTypeLimited);
2286 }
2287 return FALSE;
2288}
#define trace
Definition: atltest.h:70
static SID_IDENTIFIER_AUTHORITY NtAuthority
Definition: security.c:40
BOOL WINAPI CheckTokenMembership(IN HANDLE ExistingTokenHandle, IN PSID SidToCheck, OUT PBOOL IsMember)
Definition: token.c:21
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
BOOL WINAPI AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, PSID *pSid)
Definition: security.c:674
PVOID WINAPI FreeSid(PSID pSid)
Definition: security.c:698
#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
_In_opt_ PSID Group
Definition: rtlfuncs.h:1646
int ret
enum _TOKEN_ELEVATION_TYPE TOKEN_ELEVATION_TYPE
@ TokenElevationTypeLimited
Definition: winnt_old.h:2488
@ TokenElevationTypeDefault
Definition: winnt_old.h:2486
#define SECURITY_BUILTIN_DOMAIN_RID
Definition: setypes.h:581
#define TOKEN_QUERY
Definition: setypes.h:928
#define SECURITY_NT_AUTHORITY
Definition: setypes.h:554
@ TokenElevationType
Definition: setypes.h:983
#define DOMAIN_ALIAS_RID_ADMINS
Definition: setypes.h:652

Referenced by 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 3620 of file install.c.

3621{
3623
3625 lstrcatA(path, "\\");
3626 lstrcatA(path, file);
3627
3628 return file_exists(path);
3629}
BOOL file_exists(const char *file)
Definition: install.c:3615

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

◆ run_query()

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

Definition at line 3653 of file install.c.

3654{
3655 MSIHANDLE hview = 0;
3656 UINT r;
3657
3658 r = MsiDatabaseOpenViewA(hdb, query, &hview);
3659 if(r != ERROR_SUCCESS)
3660 return r;
3661
3662 r = MsiViewExecute(hview, hrec);
3663 if(r == ERROR_SUCCESS)
3664 r = MsiViewClose(hview);
3665 MsiCloseHandle(hview);
3666 return r;
3667}
#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 69 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 68 of file install.c.

Referenced by delete_cf(), and get_system_dirs().

◆ CURR_DIR

char CURR_DIR[MAX_PATH]
extern

Definition at line 65 of file install.c.

◆ PROG_FILES_DIR

◆ PROG_FILES_DIR_NATIVE

char PROG_FILES_DIR_NATIVE[MAX_PATH]
extern

Definition at line 67 of file install.c.

Referenced by delete_pf_native(), and get_system_dirs().

◆ WINDOWS_DIR

char WINDOWS_DIR[MAX_PATH]
extern

Definition at line 70 of file install.c.

Referenced by get_system_dirs(), and test_icon_table().