Back to index

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

Go to the source code of this file.

Defines

#define INCL_DOSMODULEMGR
#define INCL_DOSERRORS

Typedefs

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

Functions

APIRET InitializeXPIStub ()
APIRET DeInitializeXPIStub ()
int GetTotalArchivesToInstall (PSZ listArchive[])
APIRET SmartUpdateJars (PSZ szAppName, PSZ szAppPath, PSZ 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
LHANDLE hXPIStubInst

Define Documentation

Definition at line 42 of file xpi.c.

Definition at line 41 of file xpi.c.


Typedef Documentation

typedef void(_cdecl * XpiExit)(void)

Definition at line 47 of file xpi.c.

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

Definition at line 45 of file xpi.c.

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

Definition at line 46 of file xpi.c.


Function Documentation

void cbXPIFinal ( const char *  URL,
PRInt32  finalStatus 
)

Definition at line 187 of file xpi.c.

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

Definition at line 174 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 170 of file xpi.c.

{
}
APIRET DeInitializeXPIStub ( void  )

Definition at line 91 of file xpi.c.

{
  pfnXpiInit    = NULL;
  pfnXpiInstall = NULL;
  pfnXpiExit    = NULL;

  if(hXPIStubInst)
    DosFreeModule(hXPIStubInst);

  return(0);
}
int GetTotalArchivesToInstall ( PSZ  listArchive[])

Definition at line 103 of file xpi.c.

{
  int i = 0;

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

Definition at line 55 of file xpi.c.

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

  hXPIStubInst = NULL;

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

  /* load xpistub.dll */
  if((DosLoadModule(&szBuf, sizeof(szBuf), szXPIStubFile, &hXPIStubInst)) != NO_ERROR)
  {
    sprintf(szBuf, "Error loading library: %s\n", szXPIStubFile);
    PrintError(szBuf, ERROR_CODE_SHOW, 1);
  }
  if((pfnXpiInit = DosQueryProcAddr(hXPIStubInst, 1L, NULL,"XPI_Init")) == NULL)
  {
    sprintf(szBuf, "DosQueryProcAddr() failed: XPI_Init\n");
    PrintError(szBuf, ERROR_CODE_SHOW, 1);
  }
  if((pfnXpiInstall = DosQueryProcAddr(hXPIStubInst, 1L, NULL,"XPI_Install")) == NULL)
  {
    sprintf(szBuf, "DosQueryProcAddr() failed: XPI_Install\n");
    PrintError(szBuf, ERROR_CODE_SHOW, 1);
  }
  if((pfnXpiExit = DosQueryProcAddr(hXPIStubInst, 1L, NULL,"XPI_Exit")) == NULL)
  {
    sprintf(szBuf, "DosQueryProcAddr() failed: XPI_Exit\n");
    PrintError(szBuf, ERROR_CODE_SHOW, 1);
  }

  return(0);
}

Here is the call graph for this function:

Definition at line 191 of file xpi.c.

{
  QMSG qmsg;
  HAB hab;

  hab = WinInitialize(0);

  while(WinPeekMsg(hab, &qmsg, (HWND) NULL, 0, 0, PM_REMOVE))
  {
      WinDispatchMsg(hab, &qmsg);
  }
  WinTerminate(hab);
}
APIRET SmartUpdateJars ( PSZ  szAppName,
PSZ  szAppPath,
PSZ  listArchive[] 
)

Definition at line 116 of file xpi.c.

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

  hXPIStubInst = NULL;

  if((hrResult = InitializeXPIStub()) == TEST_OK)
  {
    RemoveBackSlash(szAppPath);
    hrResult = pfnXpiInit(szAppPath, cbXPIProgress);
    if(hrResult != 0)
    {
      sprintf(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))
      {
        sprintf(szBuf, "XpiInstall() failed: %d", hrResult);
        PrintError(szBuf, ERROR_CODE_HIDE, hrResult);

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

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

  DeInitializeXPIStub();
  return(hrResult);
}

Variable Documentation

LHANDLE hXPIStubInst

Definition at line 49 of file setup.c.

XpiExit pfnXpiExit [static]

Definition at line 51 of file xpi.c.

XpiInit pfnXpiInit [static]

Definition at line 49 of file xpi.c.

Definition at line 50 of file xpi.c.