Back to index

lightning-sunbird  0.9+nobinonly
Typedefs | Functions | Variables
xpi.c File Reference
#include "testxpi.h"

Go to the source code of this file.

Typedefs

typedef HRESULT(_cdeclXpiInit )(const char *, pfnXPIProgress)
typedef HRESULT(_cdeclXpiInstall )(const char *, const char *, long)
typedef void(_cdeclXpiExit )(void)

Functions

HRESULT InitializeXPIStub ()
HRESULT DeInitializeXPIStub ()
int GetTotalArchivesToInstall (LPSTR listArchive[])
HRESULT SmartUpdateJars (LPSTR szAppName, LPSTR szAppPath, LPSTR listArchive[])
void cbXPIStart (const char *URL, const char *UIName)
void cbXPIProgress (const char *msg, PRInt32 val, PRInt32 max)
void cbXPIFinal (const char *URL, PRInt32 finalStatus)
void ProcessWindowsMessages ()

Variables

static XpiInit pfnXpiInit
static XpiInstall pfnXpiInstall
static XpiExit pfnXpiExit
HANDLE hXPIStubInst

Typedef Documentation

typedef void(_cdecl * XpiExit)(void)

Definition at line 44 of file xpi.c.

typedef HRESULT(_cdecl * XpiInit)(const char *, pfnXPIProgress)

Definition at line 42 of file xpi.c.

typedef HRESULT(_cdecl * XpiInstall)(const char *, const char *, long)

Definition at line 43 of file xpi.c.


Function Documentation

void cbXPIFinal ( const char *  URL,
PRInt32  finalStatus 
)

Definition at line 184 of file xpi.c.

{
}
void cbXPIProgress ( const char *  msg,
PRInt32  val,
PRInt32  max 
)

Definition at line 171 of file xpi.c.

{
  char szFilename[MAX_BUF];

  ParsePath((char *)msg, szFilename, sizeof(szFilename), PP_FILENAME_ONLY);
  if(max == 0)
    printf("Processing: %s\n", szFilename);
  else
    printf("Installing: %d/%d %s\n", val, max, szFilename);

  ProcessWindowsMessages();
}

Here is the call graph for this function:

void cbXPIStart ( const char *  URL,
const char *  UIName 
)

Definition at line 167 of file xpi.c.

{
}

Definition at line 88 of file xpi.c.

int GetTotalArchivesToInstall ( LPSTR  listArchive[])

Definition at line 100 of file xpi.c.

{
  int i = 0;

  while(TRUE)
  {
    if(*listArchive[i] != '\0')
      ++i;
    else
      return(i);
  }
}

Definition at line 52 of file xpi.c.

{
  char szBuf[MAX_BUF];
  char szXPIStubFile[MAX_BUF];

  hXPIStubInst = NULL;

  /* get full path to xpistub.dll */
  if(GetFullPathName("xpistub.dll", sizeof(szXPIStubFile), szXPIStubFile, NULL) == FALSE)
    PrintError("File not found: xpistub.dll", ERROR_CODE_SHOW, 2);

  /* load xpistub.dll */
  if((hXPIStubInst = LoadLibraryEx(szXPIStubFile, NULL, LOAD_WITH_ALTERED_SEARCH_PATH)) == NULL)
  {
    wsprintf(szBuf, "Error loading library: %s\n", szXPIStubFile);
    PrintError(szBuf, ERROR_CODE_SHOW, 1);
  }
  if(((FARPROC)pfnXpiInit = GetProcAddress(hXPIStubInst, "XPI_Init")) == NULL)
  {
    wsprintf(szBuf, "GetProcAddress() failed: XPI_Init\n");
    PrintError(szBuf, ERROR_CODE_SHOW, 1);
  }
  if(((FARPROC)pfnXpiInstall = GetProcAddress(hXPIStubInst, "XPI_Install")) == NULL)
  {
    wsprintf(szBuf, "GetProcAddress() failed: XPI_Install\n");
    PrintError(szBuf, ERROR_CODE_SHOW, 1);
  }
  if(((FARPROC)pfnXpiExit = GetProcAddress(hXPIStubInst, "XPI_Exit")) == NULL)
  {
    wsprintf(szBuf, "GetProcAddress() failed: XPI_Exit\n");
    PrintError(szBuf, ERROR_CODE_SHOW, 1);
  }

  return(0);
}

Here is the call graph for this function:

Definition at line 188 of file xpi.c.

{
  MSG msg;

  while(PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
}
HRESULT SmartUpdateJars ( LPSTR  szAppName,
LPSTR  szAppPath,
LPSTR  listArchive[] 
)

Definition at line 113 of file xpi.c.

{
  int       i;
  int       iTotalArchives;
  char      szBuf[MAX_BUF];
  HRESULT   hrResult;

  hXPIStubInst = NULL;

  if((hrResult = InitializeXPIStub()) == TEST_OK)
  {
    RemoveBackSlash(szAppPath);
    hrResult = pfnXpiInit(szAppPath, cbXPIProgress);
    if(hrResult != 0)
    {
      wsprintf(szBuf, "XpiInit() failed: %d", hrResult);
      PrintError(szBuf, ERROR_CODE_HIDE, hrResult);
    }

    iTotalArchives = GetTotalArchivesToInstall(listArchive);
    for(i = 0; i < iTotalArchives; i++)
    {
      if(FileExists(listArchive[i]) == FALSE)
      {
        printf("File not found: %s\n", listArchive[i]);

        /* continue with next file */
        continue;
      }

      hrResult = pfnXpiInstall(listArchive[i], "", 0xFFFF);
      if((hrResult != TEST_OK) && (hrResult != 999))
      {
        wsprintf(szBuf, "XpiInstall() failed: %d", hrResult);
        PrintError(szBuf, ERROR_CODE_HIDE, hrResult);

        /* break out of the for loop */
        break;
      }
      printf("\n");
    }

    pfnXpiExit();
  }
  else
  {
    wsprintf(szBuf, "InitializeXPIStub() failed: %d", hrResult);
    PrintError(szBuf, ERROR_CODE_HIDE, hrResult);
  }

  DeInitializeXPIStub();
  return(hrResult);
}

Here is the call graph for this function:


Variable Documentation

Definition at line 49 of file setup.c.

XpiExit pfnXpiExit [static]

Definition at line 48 of file xpi.c.

XpiInit pfnXpiInit [static]

Definition at line 46 of file xpi.c.

Definition at line 47 of file xpi.c.