Added NR_RegFlush (14909, required for 16283/16600); warning cleanup (15626) r=shaver

This commit is contained in:
dveditz%netscape.com 1999-10-17 21:47:53 +00:00
Родитель ff810222da
Коммит b556814a7b
5 изменённых файлов: 105 добавлений и 53 удалений

Просмотреть файл

@ -160,6 +160,19 @@ VR_INTERFACE(REGERR) NR_RegClose(
);
/* ---------------------------------------------------------------------
* NR_RegFlush - Manually flush data in a netscape XP registry
*
* Parameters:
* hReg - handle of open registry to be flushed.
*
* ---------------------------------------------------------------------
*/
VR_INTERFACE(REGERR) NR_RegFlush(
HREG hReg /* handle of open registry to flush */
);
/* ---------------------------------------------------------------------
* NR_RegIsWritable - Check read/write status of open registry
*

Просмотреть файл

@ -1058,7 +1058,7 @@ VR_INTERFACE(REGERR) VR_SetRefCount(char *component_path, int refcount)
{
REGERR err;
RKEY rootKey;
RKEY key;
RKEY key = 0;
char rcstr[MAXREGNAMELEN];
err = vr_Init();
@ -1312,7 +1312,7 @@ static REGERR vr_unmanglePackageName(char *mangledPackageName, char *regPackageN
VR_INTERFACE(REGERR) VR_UninstallCreateNode(char *regPackageName, char *userPackageName)
{
REGERR err;
RKEY key;
RKEY key = 0;
char *regbuf;
uint32 regbuflen = 0;
@ -1345,7 +1345,7 @@ VR_INTERFACE(REGERR) VR_UninstallCreateNode(char *regPackageName, char *userPack
}
if (err == REGERR_OK)
err = NR_RegSetEntryString( vreg, key, PACKAGENAMESTR, userPackageName );
err = NR_RegSetEntryString(vreg, key, PACKAGENAMESTR, userPackageName);
return err;
@ -1354,7 +1354,7 @@ VR_INTERFACE(REGERR) VR_UninstallCreateNode(char *regPackageName, char *userPack
VR_INTERFACE(REGERR) VR_GetUninstallUserName(char *regPackageName, char *outbuf, uint32 buflen)
{
REGERR err;
RKEY key;
RKEY key = 0;
char *regbuf = NULL;
char *convertedName = NULL;
uint32 convertedDataLength = 0;
@ -1402,7 +1402,7 @@ VR_INTERFACE(REGERR) VR_GetUninstallUserName(char *regPackageName, char *outbuf,
VR_INTERFACE(REGERR) VR_UninstallAddFileToList(char *regPackageName, char *vrName)
{
REGERR err;
RKEY key;
RKEY key = 0;
char *regbuf;
uint32 regbuflen = 0;
uint32 curregbuflen = 0;
@ -1442,11 +1442,7 @@ VR_INTERFACE(REGERR) VR_UninstallAddFileToList(char *regPackageName, char *vrNam
err = REGERR_MEMORY;
}
if (err != REGERR_OK)
{
return err;
}
if (err == REGERR_OK)
err = NR_RegSetEntryString( vreg, key, vrName, "");
return err;
@ -1456,7 +1452,7 @@ VR_INTERFACE(REGERR) VR_UninstallAddFileToList(char *regPackageName, char *vrNam
VR_INTERFACE(REGERR) VR_UninstallFileExistsInList(char *regPackageName, char *vrName)
{
REGERR err;
RKEY key;
RKEY key = 0;
char *regbuf;
char sharedfilesstr[MAXREGNAMELEN];
uint32 regbuflen = 0;
@ -1497,11 +1493,7 @@ VR_INTERFACE(REGERR) VR_UninstallFileExistsInList(char *regPackageName, char *vr
err = REGERR_MEMORY;
}
if (err != REGERR_OK)
{
return err;
}
if (err == REGERR_OK)
err = NR_RegGetEntryString( vreg, key, vrName, sharedfilesstr,
sizeof(sharedfilesstr) );
return err;
@ -1512,7 +1504,7 @@ VR_INTERFACE(REGERR) VR_UninstallEnumSharedFiles(char *component_path, REGENUM *
char *buffer, uint32 buflen)
{
REGERR err;
RKEY key;
RKEY key = 0;
char *regbuf;
char *converted_component_path;
uint32 convertedDataLength = 0;
@ -1566,9 +1558,7 @@ VR_INTERFACE(REGERR) VR_UninstallEnumSharedFiles(char *component_path, REGENUM *
XP_FREE(converted_component_path);
if (err != REGERR_OK)
return err;
if (err == REGERR_OK)
err = NR_RegEnumEntries( vreg, key, state, buffer, buflen, NULL);
return err;
@ -1578,7 +1568,7 @@ VR_INTERFACE(REGERR) VR_UninstallEnumSharedFiles(char *component_path, REGENUM *
VR_INTERFACE(REGERR) VR_UninstallDeleteFileFromList(char *component_path, char *vrName)
{
REGERR err;
RKEY key;
RKEY key = 0;
char *regbuf;
char *converted_component_path;
uint32 convertedDataLength = 0;
@ -1635,12 +1625,9 @@ VR_INTERFACE(REGERR) VR_UninstallDeleteFileFromList(char *component_path, char *
XP_FREE(converted_component_path);
if (err != REGERR_OK)
{
return err;
}
if (err == REGERR_OK)
err = NR_RegDeleteEntry( vreg, key, vrName);
return err;
} /* UninstallDeleteFileFromList */

Просмотреть файл

@ -83,7 +83,7 @@ struct BufioFileStruct
PRInt32 dirtystart;
PRInt32 dirtyend;
PRBool readOnly; /* whether the file allows writing or not */
#ifdef DEBUG_dveditz
#ifdef DEBUG_dveditzbuf
PRUint32 reads;
PRUint32 writes;
#endif
@ -103,7 +103,6 @@ BufioFile* bufio_Open(const char* name, const char* mode)
{
FILE *fd;
BufioFile *file = NULL;
PRBool cleanup = PR_FALSE;
fd = fopen( name, mode );
@ -284,7 +283,7 @@ PRUint32 bufio_Read(BufioFile* file, char* dest, PRUint32 count)
memcpy( dest, file->data + startOffset, bytesCopied );
retcount = bytesCopied;
file->fpos += bytesCopied;
#ifdef DEBUG_dveditz
#ifdef DEBUG_dveditzbuf
file->reads++;
#endif
@ -318,7 +317,7 @@ PRUint32 bufio_Read(BufioFile* file, char* dest, PRUint32 count)
memcpy( dest+bytesCopied, file->data+startOffset, bytesRead );
file->fpos += bytesRead;
retcount += bytesRead;
#ifdef DEBUG_dveditz
#ifdef DEBUG_dveditzbuf
file->reads++;
#endif
}
@ -357,7 +356,7 @@ PRUint32 bufio_Read(BufioFile* file, char* dest, PRUint32 count)
/* the tail end of the range we want is already buffered */
/* first copy the buffered data to the dest area */
memcpy( dest+leftover, file->data, bytesCopied );
#ifdef DEBUG_dveditz
#ifdef DEBUG_dveditzbuf
file->reads++;
#endif
}
@ -380,7 +379,7 @@ PRUint32 bufio_Read(BufioFile* file, char* dest, PRUint32 count)
if ( bytesRead )
{
memcpy( dest, file->data+startOffset, bytesRead );
#ifdef DEBUG_dveditz
#ifdef DEBUG_dveditzbuf
file->reads++;
#endif
}
@ -445,7 +444,7 @@ PRUint32 bufio_Write(BufioFile* file, const char* src, PRUint32 count)
endOffset = startOffset + bytesCopied;
file->dirtystart = PR_MIN( startOffset, file->dirtystart );
file->dirtyend = PR_MAX( endOffset, file->dirtyend );
#ifdef DEBUG_dveditz
#ifdef DEBUG_dveditzbuf
file->writes++;
#endif
@ -477,7 +476,7 @@ PRUint32 bufio_Write(BufioFile* file, const char* src, PRUint32 count)
file->bufdirty = PR_TRUE;
file->dirtystart = 0;
file->dirtyend = PR_MAX( endOffset, file->dirtyend );
#ifdef DEBUG_dveditz
#ifdef DEBUG_dveditzbuf
file->writes++;
#endif
@ -499,7 +498,7 @@ PRUint32 bufio_Write(BufioFile* file, const char* src, PRUint32 count)
file->bufdirty = PR_TRUE;
file->dirtystart = startOffset;
file->dirtyend = endOffset;
#ifdef DEBUG_dveditz
#ifdef DEBUG_dveditzbuf
file->writes++;
#endif
if ( endOffset > file->datasize )
@ -596,7 +595,7 @@ static PRBool _bufio_loadBuf( BufioFile* file, PRUint32 count )
file->bufdirty = PR_FALSE;
file->dirtystart = BUFIO_BUFSIZE;
file->dirtyend = 0;
#ifdef DEBUG_dveditz
#ifdef DEBUG_dveditzbuf
printf("REG: buffer read %d (%d) after %d reads\n",startBuf,file->fpos,file->reads);
file->reads = 0;
file->writes = 0;
@ -624,7 +623,7 @@ static int _bufio_flushBuf( BufioFile* file )
written = fwrite( file->data+file->dirtystart, 1, dirtyamt, file->fd );
if ( written == dirtyamt )
{
#ifdef DEBUG_dveditz
#ifdef DEBUG_dveditzbuf
printf("REG: buffer flush %d - %d after %d writes\n",startpos,startpos+written,file->writes);
file->writes = 0;
#endif

Просмотреть файл

@ -78,7 +78,7 @@
#define MAX_PATH 1024
#endif
#elif defined(WIN32)
#include <windef.h> /* for MAX_PATH */
#define MAX_PATH _MAX_PATH
#elif defined(XP_MAC)
#define MAX_PATH 512
#elif defined(XP_BEOS)
@ -2119,6 +2119,11 @@ static REGERR nr_RegClose( HREG hReg )
{
XP_ASSERT( VALID_FILEHANDLE(reg->fh) );
/* save changed header info */
if ( reg->hdrDirty ) {
nr_WriteHdr( reg );
}
/* lower REGFILE user count */
reg->refCount--;
@ -2126,14 +2131,16 @@ static REGERR nr_RegClose( HREG hReg )
if ( reg->refCount < 1 )
{
/* ...then close the file */
if ( reg->hdrDirty ) {
nr_WriteHdr( reg );
}
nr_CloseFile( &(reg->fh) );
/* ...and mark REGFILE node for deletion from list */
needDelete = TRUE;
}
else
{
/* ...otherwise make sure any writes are flushed */
XP_FileFlush( reg->fh );
}
reghnd->magic = 0; /* prevent accidental re-use */
PR_Unlock( reg->lock );
@ -2306,6 +2313,51 @@ VR_INTERFACE(REGERR) NR_RegClose( HREG hReg )
/* ---------------------------------------------------------------------
* NR_RegFlush - Manually flush data in a netscape XP registry
*
* Parameters:
* hReg - handle of open registry to be flushed.
* ---------------------------------------------------------------------
*/
VR_INTERFACE(REGERR) NR_RegFlush( HREG hReg )
{
REGERR err;
REGFILE* reg;
/* verify parameters */
err = VERIFY_HREG( hReg );
if ( err != REGERR_OK )
return err;
reg = ((REGHANDLE*)hReg)->pReg;
/* can't flush a read-only registry */
if ( reg->readOnly )
return REGERR_READONLY;
/* lock the registry file */
err = nr_Lock( reg );
if ( err == REGERR_OK )
{
if ( reg->hdrDirty ) {
nr_WriteHdr( reg );
}
XP_FileFlush( reg->fh );
/* unlock the registry */
nr_Unlock( reg );
}
return err;
} /* NR_RegFlush */
/* ---------------------------------------------------------------------
* NR_RegIsWritable - Check read/write status of open registry
*
@ -3238,6 +3290,9 @@ VR_INTERFACE(REGERR) NR_RegEnumSubkeys( HREG hReg, RKEY key, REGENUM *state,
if ( err != REGERR_OK )
return err;
desc.down = 0; /* initialize to quiet warnings */
desc.location = 0;
/* verify starting key */
key = nr_TranslateKey( reg, key );
if ( key == 0 )
@ -3521,6 +3576,7 @@ VR_INTERFACE(REGERR) NR_RegEnumEntries( HREG hReg, RKEY key, REGENUM *state,
#ifndef STANDALONE_REGISTRY
#include "VerReg.h"
#ifdef RESURRECT_LATER
static REGERR nr_createTempRegName( char *filename, uint32 filesize );
static REGERR nr_addNodesToNewReg( HREG hReg, RKEY rootkey, HREG hRegNew, void *userData, nr_RegPackCallbackFunc fn );
/* -------------------------------------------------------------------- */
@ -3528,7 +3584,7 @@ static REGERR nr_createTempRegName( char *filename, uint32 filesize )
{
struct stat statbuf;
XP_Bool nameFound = FALSE;
char tmpname[MAX_PATH];
char tmpname[MAX_PATH+1];
uint32 len;
int err;
@ -3634,8 +3690,8 @@ static REGERR nr_addNodesToNewReg( HREG hReg, RKEY rootkey, HREG hRegNew, void *
XP_FREEIF(buffer);
return err;
}
#endif /* RESURRECT_LATER */
@ -3654,8 +3710,8 @@ VR_INTERFACE(REGERR) NR_RegPack( HREG hReg, void *userData, nr_RegPackCallbackFu
XP_File fh;
REGFILE* reg;
HREG hRegTemp;
char tempfilename[MAX_PATH] = {0};
char oldfilename[MAX_PATH] = {0};
char tempfilename[MAX_PATH+1] = {0};
char oldfilename[MAX_PATH+1] = {0};
XP_Bool bCloseTempFile = FALSE;

Просмотреть файл

@ -158,7 +158,7 @@ typedef MmioFile* XP_File;
#define XP_FileTell(file) bufio_Tell(file)
#define XP_FileClose(file) bufio_Close(file)
#define XP_FileOpen(path, mode) bufio_Open((path), (mode))
#define XP_FileFlush(file) ((void)1)
#define XP_FileFlush(file) bufio_Flush(file)
@ -181,10 +181,7 @@ typedef BufioFile* XP_File;
#define XP_FileTell(file) PR_Seek(file, 0, PR_SEEK_CUR)
#define XP_FileOpen(path, mode) PR_Open((path), mode )
#define XP_FileClose(file) PR_Close(file)
#ifdef XP_MAC
#define XP_FileFlush(file) PR_Sync(file)
#else
#define XP_FileFlush(file) ((void)1)
#endif
typedef PRFileDesc* XP_File;