Skip to content
Snippets Groups Projects
Commit dded8fb7 authored by Michael McCormack's avatar Michael McCormack Committed by Alexandre Julliard
Browse files

Use an enumeration for file states.

parent 4413adf9
No related branches found
No related tags found
No related merge requests found
......@@ -1305,7 +1305,7 @@ static UINT load_file(MSIRECORD *row, LPVOID param)
file->Attributes = MSI_RecordGetInteger( row, 7 );
file->Sequence = MSI_RecordGetInteger( row, 8 );
file->State = 0;
file->state = msifs_invalid;
TRACE("File Loaded (%s)\n",debugstr_w(file->File));
......@@ -1861,7 +1861,7 @@ static UINT ACTION_CostFinalize(MSIPACKAGE *package)
if (GetFileAttributesW(file->TargetPath) == INVALID_FILE_ATTRIBUTES)
{
file->State = 1;
file->state = msifs_missing;
comp->Cost += file->FileSize;
continue;
}
......@@ -1896,16 +1896,16 @@ static UINT ACTION_CostFinalize(MSIPACKAGE *package)
debugstr_w(filever));
if (strcmpiW(filever,file->Version)<0)
{
file->State = 2;
FIXME("cost should be diff in size\n");
file->state = msifs_overwrite;
/* FIXME: cost should be diff in size */
comp->Cost += file->FileSize;
}
else
file->State = 3;
file->state = msifs_present;
msi_free(version);
}
else
file->State = 3;
file->state = msifs_present;
}
TRACE("Evaluating Condition Table\n");
......
......@@ -93,6 +93,15 @@ typedef struct tagMSIFOLDER
INT Space;
} MSIFOLDER;
typedef enum _msi_file_state {
msifs_invalid,
msifs_missing,
msifs_overwrite,
msifs_present,
msifs_installed,
msifs_skipped,
} msi_file_state;
typedef struct tagMSIFILE
{
struct list entry;
......@@ -105,14 +114,7 @@ typedef struct tagMSIFILE
LPWSTR Language;
INT Attributes;
INT Sequence;
INT State;
/* 0 = uninitialize */
/* 1 = not present */
/* 2 = present but replace */
/* 3 = present do not replace */
/* 4 = Installed */
/* 5 = Skipped */
msi_file_state state;
LPWSTR SourcePath;
LPWSTR TargetPath;
} MSIFILE;
......
......@@ -221,7 +221,7 @@ static INT_PTR cabinet_notify(FDINOTIFICATIONTYPE fdint, PFDINOTIFICATION pfdin)
return 0;
}
if (f->State != 1 && f->State != 2)
if (f->state != msifs_missing && f->state != msifs_overwrite)
{
TRACE("Skipping extraction of %s\n",debugstr_a(pfdin->psz1));
return 0;
......@@ -240,7 +240,7 @@ static INT_PTR cabinet_notify(FDINOTIFICATIONTYPE fdint, PFDINOTIFICATION pfdin)
return 0;
}
f->State = 4;
f->state = msifs_installed;
return (INT_PTR) handle;
}
case fdintCLOSE_FILE_INFO:
......@@ -615,7 +615,7 @@ static UINT get_file_target(MSIPACKAGE *package, LPCWSTR file_key,
{
if (lstrcmpW( file_key, file->File )==0)
{
if (file->State >= 2)
if (file->state >= msifs_overwrite)
{
*file_source = strdupW( file->TargetPath );
return ERROR_SUCCESS;
......@@ -629,11 +629,11 @@ static UINT get_file_target(MSIPACKAGE *package, LPCWSTR file_key,
}
/*
* In order to make this work more effeciencly I am going to do this in 2
* passes.
* Pass 1) Correct all the TargetPaths and determin what files are to be
* installed.
* Pass 2) Extract Cabinents and copy files.
* ACTION_InstallFiles()
*
* For efficiency, this is done in two passes:
* 1) Correct all the TargetPaths and determine what files are to be installed.
* 2) Extract Cabinets and copy files.
*/
UINT ACTION_InstallFiles(MSIPACKAGE *package)
{
......@@ -648,7 +648,7 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package)
/* increment progress bar each time action data is sent */
ui_progress(package,1,1,0,0);
/* handle the keys for the SouceList */
/* handle the keys for the SourceList */
ptr = strrchrW(package->PackagePath,'\\');
if (ptr)
{
......@@ -669,7 +669,7 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package)
TRACE("File %s is not scheduled for install\n",
debugstr_w(file->File));
file->State = 5;
file->state = msifs_skipped;
}
}
......@@ -686,7 +686,7 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package)
/* Pass 2 */
LIST_FOR_EACH_ENTRY( file, &package->files, MSIFILE, entry )
{
if (file->State != 1 && file->State != 2)
if (file->state != msifs_missing && file->state != msifs_overwrite)
continue;
TRACE("Pass 2: %s\n",debugstr_w(file->File));
......@@ -702,7 +702,7 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package)
TRACE("file paths %s to %s\n",debugstr_w(file->SourcePath),
debugstr_w(file->TargetPath));
if (file->State != 1 && file->State != 2)
if (file->state != msifs_missing && file->state != msifs_overwrite)
continue;
/* compressed files are extracted in ready_media_for_file */
......@@ -720,7 +720,7 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package)
rc = GetLastError();
ERR("Unable to copy file (%s -> %s) (error %d)\n",
debugstr_w(file->SourcePath), debugstr_w(file->TargetPath), rc);
if (rc == ERROR_ALREADY_EXISTS && file->State == 2)
if (rc == ERROR_ALREADY_EXISTS && file->state == msifs_overwrite)
{
rc = 0;
}
......@@ -737,7 +737,7 @@ UINT ACTION_InstallFiles(MSIPACKAGE *package)
}
else
{
file->State = 4;
file->state = msifs_installed;
rc = ERROR_SUCCESS;
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment