Пример #1
0
/*
 * Measure a header entry and all its children
 *
 * Short format:
 *  "     item->name\n"
 *  "        child1->address\n"
 *  "        child2->address\n"
 *    where there are nIndent number of spaces before the item and
 *    TEXT_INDENT spaces between levels
 *
 * Long format:
 *  int16 type
 *  item->name\n
 *  int32 addition_date
 *  int32 number of children
 *  item->description\0
 *
 * The item->description field is *NOT* \n terminated since it might
 *  be a multi-line string and is therefore \0 terminated.  Note that
 *  the address field is *NOT* written for headers since its it meaningless
 */
PRIVATE int32
hot_measure_Header(HotlistStruct * item, int bLongFormat, int nIndent)
{

    XP_List * list;
    int32 iSpace = 0;

    if(!item)
        return(0);

    if(bLongFormat) {

        /* type, addition_date, last_visit_date + # children + 2 \n's + 1 \0 */
        iSpace += 2 + 4 + 4 + 2 + 1;

        if(item->description)
            iSpace += XP_STRLEN(item->description);

    } else {

        /* space indentation and '\n' terminator */
        iSpace = 1 + nIndent;

    }

    /* the name appears in both formats */
    if(item->name)
        iSpace += XP_STRLEN(item->name);


    /* if no children just return */
    if(!item->children)
        return(iSpace);

    /* measure the amount of space taken up by this item's children */
    for(list = item->children->next; list; list = list->next) {
        HotlistStruct * child = (HotlistStruct *) list->object;

        if(!child)
            continue;

        switch(child->type) {
        case HOT_URLType:
            iSpace += hot_measure_URL(child, bLongFormat, nIndent + TEXT_INDENT);
            break;
        case HOT_HeaderType:
            iSpace += hot_measure_Header(child, bLongFormat, nIndent + TEXT_INDENT); 
            break;
        case HOT_SeparatorType:
            iSpace += hot_measure_Separator(child, bLongFormat, nIndent + TEXT_INDENT); 
            break;
        default:
            break;
        }

    }

    return(iSpace);

}
Пример #2
0
/*  Again like strdup but it concatinates and free's and uses Realloc
*/
PUBLIC char *
NET_SACat (char **destination, const char *source)
{
    if (source && *source)
      {
        if (*destination)
          {
            int length = XP_STRLEN (*destination);
            *destination = (char *) XP_REALLOC (*destination, length + XP_STRLEN(source) + 1);
            if (*destination == NULL)
            return(NULL);

            XP_STRCPY (*destination + length, source);
          }
        else
          {
            *destination = (char *) XP_ALLOC (XP_STRLEN(source) + 1);
            if (*destination == NULL)
                return(NULL);

             XP_STRCPY (*destination, source);
          }
      }
    return *destination;
}
Пример #3
0
/*
 * Measure a boring URL hotlist entry and return the length in bytes
 *
 * Short format:
 *  "     item->address\n"
 *    where there are nIndent number of spaces before the item
 *
 * Long format:
 *  int16 type
 *  item->name\n
 *  item->address\n
 *  int32 addition_date
 *  int32 last_visit_date
 *  item->description\0
 *
 * The item->description field is *NOT* \n terminated since it might
 *  be a multi-line string and is therefore \0 terminated
 */
PRIVATE int32
hot_measure_URL(HotlistStruct * item, int bLongFormat, int nIndent)
{

    int32 iSpace = 0;

    if(!item)
        return(0);

    if(bLongFormat) {

        /* type, addition_date, last_visit_date + 2 \n's + 1 \0 */
        iSpace += 2 + 4 + 4 + 2 + 1;

        if(item->name)
            iSpace += XP_STRLEN(item->name);
        if(item->description)
            iSpace += XP_STRLEN(item->description);

    } else {

        /* space indentation and '\n' terminator */
        iSpace = 1 + nIndent;

    }

    /* the address appears in both formats */
    if(item->address)
        iSpace += XP_STRLEN(item->address);

    return(iSpace);

}
Пример #4
0
void XFE_AddrBookView::abVCard()
{
	// Need to check if the user has created a card 
	XFE_GlobalPrefs    *prefs = &fe_globalPrefs;

	PersonEntry  person;
	ABook       *addr_book = fe_GetABook(0);
	DIR_Server  *dir;
	ABID         entry_id;

	person.Initialize();
	person.pGivenName = ((prefs->real_name) && 
						 (XP_STRLEN(prefs->real_name) > 0)) ?
		                 XP_STRDUP(prefs->real_name) : 0;
	person.pEmailAddress = ((prefs->email_address) && 
							(XP_STRLEN(prefs->email_address) > 0)) ?
		                    XP_STRDUP(prefs->email_address) : 0;
  
	DIR_GetPersonalAddressBook(m_directories, &dir);

	if (dir) {
		AB_GetEntryIDForPerson(dir, addr_book, &entry_id, &person);
		fe_showABCardPropertyDlg(getToplevel()->getBaseWidget(), 
								 m_contextData,
								 entry_id,
								 (MSG_MESSAGEIDNONE != entry_id)?FALSE:TRUE);
	}
	person.CleanUp();

}
Пример #5
0
PRIVATE int net_proxy_write (NET_StreamClass *stream, CONST char* s, int32 len)
{
	ProxyObj *obj=stream->data_object;
    /* send HTTP headers if not already getting an HTTP doc
     */	
    if(!obj->past_first_line)
      {
		if(obj->definately_send_headers || strncmp(s, "HTTP/", len >= 5 ? 5 : len))
		  {
            write(1, "HTTP/1.0 200 OK\r\n",17);
            write(1, "Content-type: ",14);
            write(1, obj->content_type, XP_STRLEN(obj->content_type));
            if(obj->content_encoding)
              {
                write(1, "\r\nContent-encoding: ",18);
                write(1, obj->content_encoding, XP_STRLEN(obj->content_encoding));
              }
            write(1, "\r\nServer: MKLib proxy agent\r\n",29);
            write(1, "\r\n", 2);  /* finish it */
		  }

		obj->past_first_line = TRUE;
      }

    write(1, s, len); 
    return(1);
}
Пример #6
0
char* vr_findVerRegName ()
{
    if ( verRegName != NULL )
        return verRegName;

#ifndef STANDALONE_REGISTRY
    {
        char *def = NULL;
        char *home = getenv("HOME");
        if (home != NULL) {
            def = (char *) XP_ALLOC(XP_STRLEN(home) + XP_STRLEN(DEF_VERREG)+1);
            if (def != NULL) {
                XP_STRCPY(def, home);
                XP_STRCAT(def, DEF_VERREG);
            }
        }
        if (def != NULL) {
            verRegName = XP_STRDUP(def);
        }
        XP_FREEIF(def);
    }
#else
    verRegName = XP_STRDUP(TheRegistry);
#endif /*STANDALONE_REGISTRY*/

    return verRegName;
}
Пример #7
0
char* vr_findVerRegName ()
{
    if ( verRegName != NULL )
        return verRegName;

#ifndef STANDALONE_REGISTRY
    {
        char *def = NULL;
        char settings[1024];
        find_directory(B_USER_SETTINGS_DIRECTORY, -1, false, settings, sizeof(settings));
        if (settings != NULL) {
            def = (char *) XP_ALLOC(XP_STRLEN(settings) + XP_STRLEN(BEOS_VERREG)+1);
            if (def != NULL) {
                XP_STRCPY(def, settings);
                XP_STRCAT(def, BEOS_VERREG);
            }
        }
        if (def != NULL) {
            verRegName = XP_STRDUP(def);
        }
        XP_FREEIF(def);
    }
#else
    verRegName = XP_STRDUP(TheRegistry);
#endif /*STANDALONE_REGISTRY*/

    return verRegName;
}
Пример #8
0
static void
fe_movemail_perror(MWContext *context, const char *message)
{
  int e = errno;
  char *es = 0;
  char *buf1 = 0;
  char buf2[512];
  char *suffix;
  int L;

  XP_ASSERT(context);
  if (!context) return;

  if ((unsigned)e < (unsigned)sys_nerr)
    {
      es = sys_errlist [e];
    }
  else
    {
      PR_snprintf (buf2, sizeof (buf2), XP_GetString( XFE_UNKNOWN_ERROR_CODE ),
		errno);
      es = buf2;
    }

  suffix = XP_GetString(XFE_MOVEMAIL_FAILURE_SUFFIX);
  if(!suffix) suffix = "";
  if(!message) message = "";
  L = XP_STRLEN(message) + XP_STRLEN(es) + XP_STRLEN(suffix) + 40;
  buf1 = (char *) XP_ALLOC(L);
  if(!buf1) return;
  PR_snprintf (buf1, L-1, "%s\n%s\n\n%s", message, es, suffix);
  FE_Alert (context, buf1);
  XP_FREE(buf1);
}
Пример #9
0
char *XP_Cat(char *a0, ...)
{
    va_list ap;
    char *a, *result, *cp;
    int len;

	/* Count up string length's */
    va_start(ap, a0);
	len = 1;
	a = a0;
    while (a != (char*) NULL) {
		len += XP_STRLEN(a);
		a = va_arg(ap, char*);
    }
	va_end(ap);

	/* Allocate memory and copy strings */
    va_start(ap, a0);
	result = cp = (char*) XP_ALLOC(len);
	if (!cp) return 0;
	a = a0;
	while (a != (char*) NULL) {
		len = XP_STRLEN(a);
		XP_MEMCPY(cp, a, len);
		cp += len;
		a = va_arg(ap, char*);
	}
	*cp = 0;
	va_end(ap);
    return result;
}
Пример #10
0
/**
 * Replaces all '/' with '_',in the given string.If an '_' already exists in the
 * given string, it is escaped by adding another '_' to it.
 */
static REGERR vr_convertPackageName(char *regPackageName, char *convertedPackageName, uint32 convertedDataLength)
{
    uint32 length = 0;
    uint32 i;
    uint32 j = 0;

    length = XP_STRLEN(regPackageName);
    
    if (convertedDataLength <= length)
        return REGERR_BUFTOOSMALL;

    for (i=0, j=0; i<length; i++, j++)
    {
        if (j < (convertedDataLength-1))
        {
            convertedPackageName[j] = regPackageName[i];
        }
        else
        {
            return REGERR_BUFTOOSMALL;
        }
        if (regPackageName[i] == '_')
        {
            if ((j+1) < (convertedDataLength-1))
            {
                convertedPackageName[j+1] = '_';
            }
            else
            {
                return REGERR_BUFTOOSMALL;
            }
            j = j + 1;
        }
    }

    if (convertedPackageName[j-1] == '/')
        convertedPackageName[j-1] = '\0';
    else
    {
        if (j < convertedDataLength)
        {
            convertedPackageName[j] = '\0';
        }
        else
        {
            return REGERR_BUFTOOSMALL;
        }
    }

    length = 0;
    length = XP_STRLEN(convertedPackageName);
    for (i=1; i<length; i++)
    {
        if (convertedPackageName[i] == '/')
            convertedPackageName[i] = '_';
    }

    return REGERR_OK;
}
Пример #11
0
VR_INTERFACE(REGERR) VR_UninstallDeleteSharedFilesKey(char *component_path)
{
    REGERR err;
    char *regbuf;
    char *converted_component_path;
    uint32 convertedDataLength = 0;
    uint32 regbuflen = 0;
    uint32 curregbuflen = 0;
    uint32 len = 0;
        
    err = vr_Init();
    if (err != REGERR_OK)
        return err;

    if ( component_path == NULL )
        err = REGERR_PARAM;

    convertedDataLength = 2 * XP_STRLEN(component_path) + 1;
    converted_component_path = (char*)XP_ALLOC(convertedDataLength);
    if (converted_component_path == NULL ) {
        err = REGERR_MEMORY;
        return err;
    }
    err = vr_convertPackageName(component_path, converted_component_path, convertedDataLength);
    if (err != REGERR_OK)
    {
        XP_FREEIF(converted_component_path);
        return err;
    }

    regbuflen = 256 + XP_STRLEN(converted_component_path);
    regbuf = (char*)XP_ALLOC( regbuflen );
    if (regbuf != NULL )
    {
        err = vr_GetUninstallItemPath(converted_component_path, regbuf, regbuflen); 
        if (err == REGERR_OK)
        {
            curregbuflen = XP_STRLEN(regbuf);
            len = XP_STRLEN(SHAREDFILESSTR);
            if (len < (regbuflen - curregbuflen))
            {
                XP_STRCAT(regbuf, SHAREDFILESSTR);
                err = NR_RegDeleteKey( vreg, ROOTKEY_PRIVATE, regbuf );
            }
            else
                err = REGERR_BUFTOOSMALL;
        }
        XP_FREE(regbuf);
    }
    else
    {
        err = REGERR_MEMORY;
    }

    XP_FREE(converted_component_path);
    return err;

}   /* UninstallDeleteSharedFilesKey */
Пример #12
0
/*
 * The beginning of a usemap MAP record.
 * Allocate the structure and initialize it.  It will be filled
 * by later AREA tags.
 */
void
lo_BeginMap(MWContext *context, lo_DocState *state, PA_Tag *tag)
{
	PA_Block buff;
	char *str;
	lo_MapRec *map;

	map = XP_NEW(lo_MapRec);
	if (map == NULL)
	{
		state->top_state->out_of_memory = TRUE;
		return;
	}

	map->name = NULL;
	map->areas = NULL;
	map->areas_last = NULL;
	map->next = NULL;

	buff = lo_FetchParamValue(context, tag, PARAM_NAME);
	if (buff != NULL)
	{
		char *name;

		PA_LOCK(str, char *, buff);
		if (str != NULL)
		{
			int32 len;

			len = lo_StripTextWhitespace(str, XP_STRLEN(str));
		}
		name = (char *)XP_ALLOC(XP_STRLEN(str) + 1);
		if (name == NULL)
		{
			map->name = NULL;
		}
		else
		{
			XP_STRCPY(name, str);
			map->name = name;
		}
		PA_UNLOCK(buff);
		PA_FREE(buff);
	}
	else
	{
		map->name = NULL;
	}

	if (map->name == NULL)
	{
		XP_DELETE(map);
		return;
	}

	state->top_state->current_map = map;
}
Пример #13
0
int
XFE_ABDirListView::ProcessTargets(int row, int col,
								  Atom *targets,
								  const char **data,
								  int numItems)
{
	int i;

	D(("XFE_ABDirListView::ProcessTargets(row=%d, col=%d, numItems=%d)\n", row, col, numItems));
	
	for (i=0; i < numItems; i++) {
		if (targets[i]==None || data[i]==NULL || strlen(data[i])==0)
			continue;
		
		D(("  [%d] %s: \"%s\"\n",i,XmGetAtomName(XtDisplay(m_widget),targets[i]),data[i]));
		if (targets[i] == XFE_OutlinerDrop::_XA_NETSCAPE_DIRSERV) {
#if defined(DEBUG_tao)
			printf("\nXFE_ABDirListView::ProcessTargets:_XA_NETSCAPE_DIRSERV\n");
#endif		
			/* decode
			 */			
			char *pStr = (char *) XP_STRDUP(data[i]);
			int   len = XP_STRLEN(pStr);

			uint32 pCount = 0;
			char tmp[32];
			sscanf(data[i], "%d", &pCount);
			int *indices = (int *) XP_CALLOC(pCount, sizeof(int));
			
			char *tok = 0,
			     *last = 0;
			int   count = 0;
			char *sep = " ";

			while (((tok=XP_STRTOK_R(count?nil:pStr, sep, &last)) != NULL)&&
				   XP_STRLEN(tok) &&
				   count < len) {
				int index = atoi(tok);
				if (!count)
					XP_ASSERT(index == pCount);
				else
					indices[count-1] = 	index;
				count++;
			}/* while */
			return TRUE;
		}/* if */
		else if (targets[i] == XFE_OutlinerDrop::_XA_NETSCAPE_PAB) {
			D(("  [%d] %s: \"%s\"\n",i,XmGetAtomName(XtDisplay(m_widget),targets[i]),data[i]));
#if defined(DEBUG_tao)
			printf("\nXFE_ABDirListView::ProcessTargets:_XA_NETSCAPE_PAB\n");
#endif
			return TRUE;
		}/* elss if */	
	}/* for i */
	return FALSE;
}
Пример #14
0
char * XP_PlatformFileToURL (const char *name)
{
    char *prefix = "file://";
    char *retVal = XP_ALLOC (XP_STRLEN(name) + XP_STRLEN(prefix) + 1);
    if (retVal)
    {
        XP_STRCPY (retVal, "file://");
        XP_STRCAT (retVal, name);
    }
    return retVal;
}
Пример #15
0
extern "C" void fe_showConference(Widget w, char *email, 
								  short use, char *coolAddr)
{
	// Assume that conference is located at the same directory as netscape
	XP_ASSERT(w);

	char execu[32];
	XP_STRCPY(execu, fe_conference_path);

#if defined(IRIX)
	pid_t mypid = fork();
#else
	pid_t mypid = vfork();
#endif
	if (mypid == 0) {

		close (ConnectionNumber(XtDisplay(w)));

		/* sports
		 * int execlp (const char *file, const char *arg0, ..., 
		 * int execvp (const char *file, char *const *argv);
		 * const char *argn, (char *)0);
		 */
		if (email && 
			XP_STRLEN(email)) {
			if (use == kDefaultDLS ||
				!coolAddr || 
				XP_STRLEN(coolAddr) == 0) {
				execlp(execu, execu, 
					   "-invite", email, 0);
			}/* if */
			else if (use == kSpecificDLS && 
					 coolAddr && 
					 XP_STRLEN(coolAddr)) {
				execlp(execu, execu, 
					   "-invite", email, 
					   "-server", coolAddr, 0);
			}/* else */
			else if (use == kHostOrIPAddress && 
					 coolAddr && 
					 XP_STRLEN(coolAddr)) {
				execlp(execu, execu, 
					   "-invite", email, 
					   "-direct", coolAddr, 0);
			}/* else */
		}/* if */
		else
			/* insufficient info to run
			 */
			execlp(execu, execu, 0);

		_exit(0);
	}/* if */
}/* fe_showConference() */
Пример #16
0
/*
 * used for ARCHIVE= and SRC= 
 * Create name of form "archive.jar/src.js" 
 */
static char *
lo_BuildJSArchiveURL( char *archive_name, char *filename )
{
    uint32 len = XP_STRLEN(archive_name) + XP_STRLEN(filename) + 2;
    char *path = XP_ALLOC(len);
    if (path)
    {
        XP_STRCPY(path, archive_name);
        XP_STRCAT(path, "/");
        XP_STRCAT(path, filename);
    }
    return path;
}
Пример #17
0
static XP_S16
findStartsWithChars( DictIter* iter, const XP_UCHAR* chars, XP_U16 charsOffset, 
                     array_edge* edge, XP_U16 nTilesUsed )
{
    XP_S16 result = -1;
    XP_U16 charsLen = XP_STRLEN( &chars[charsOffset] );
    if ( NULL == edge ) {
        if ( 0 == charsLen ) {
            iter->nEdges = nTilesUsed;
            result = charsOffset;
        } 
    } else if ( 0 == charsLen ) {
        iter->nEdges = nTilesUsed;
        result = charsOffset;
    } else {
        const DictionaryCtxt* dict = iter->dict;
        XP_U16 nodeSize = dict->nodeSize;
        for ( ; ; ) {       /* for all the tiles */
            Tile tile = EDGETILE( dict, edge );
            const XP_UCHAR* facep = NULL;
            for ( ; ; ) {       /* for each string that tile can be */
                facep = dict_getNextTileString( dict, tile, facep );
                if ( NULL == facep ) {
                    break;
                }
                XP_U16 faceLen = XP_STRLEN( facep );
                if ( faceLen > charsLen ) {
                    faceLen = charsLen;
                } 
                if ( 0 == XP_STRNCMP( facep, &chars[charsOffset], faceLen ) ) {
                    XP_S16 newOffset = 
                        findStartsWithChars( iter, chars, 
                                             charsOffset + faceLen, 
                                             dict_follow( dict, edge ), 
                                             nTilesUsed + 1 );
                    if ( result < newOffset ) {
                        iter->edges[nTilesUsed] = edge;
                        result = newOffset;
                    }
                    break;
                }
            }
            if ( IS_LAST_EDGE( dict, edge ) ) {
                break;
            }
            edge += nodeSize;
        }
    }
    return result;
}
Пример #18
0
extern XP_Bool XP_FileNameContainsBadChars (const char *name)
{
#ifdef XP_MAC
    char *badChars = ":";
#else /*XP_UNIX*/
    char *badChars = "/";
#endif
    int i, j;
    for (i = 0; i < XP_STRLEN(name); i++)
        for (j = 0; j < XP_STRLEN(badChars); j++)
            if (name[i] == badChars[j])
                return TRUE;
    return FALSE;
}
Пример #19
0
VR_INTERFACE(REGERR) VR_UninstallFileExistsInList(char *regPackageName, char *vrName)
{
    REGERR err;
    RKEY key = 0;
    char *regbuf;
    char  sharedfilesstr[MAXREGNAMELEN];
    uint32 regbuflen = 0;
    uint32 curregbuflen = 0;
    uint32 len = 0;
    
    err = vr_Init();
    if (err != REGERR_OK)
        return err;

    if ( regPackageName == NULL )
        err = REGERR_PARAM;

    if ( vrName == NULL )
        err = REGERR_PARAM;

    regbuflen = 256 + XP_STRLEN(regPackageName);
    regbuf = (char*)XP_ALLOC( regbuflen );
    if (regbuf != NULL )
    {
        err = vr_GetUninstallItemPath(regPackageName, regbuf, regbuflen);
        if (err == REGERR_OK)
        {
            curregbuflen = XP_STRLEN(regbuf);
            len = XP_STRLEN(SHAREDFILESSTR);
            if (len < (regbuflen - curregbuflen))
            {
                XP_STRCAT(regbuf, SHAREDFILESSTR);
                err = NR_RegGetKey( vreg, ROOTKEY_PRIVATE, regbuf, &key );
            }
            else
                err = REGERR_BUFTOOSMALL;
        }
        XP_FREEIF(regbuf);
    }
    else
    {
        err = REGERR_MEMORY;
    }
    
    if (err == REGERR_OK)
        err = NR_RegGetEntryString( vreg, key, vrName, sharedfilesstr,
                                    sizeof(sharedfilesstr) );
    return err;

}   /* UninstallFileExistsInList */
Пример #20
0
void FE_Trace (const char* buffer)
{
#if defined(DEBUG_warren)
	int len = XP_STRLEN(buffer); /* vsprintf does not return length */
    fwrite(buffer, 1, len, real_stderr);
#endif
}
Пример #21
0
nsWinRegValue* nsWinReg::nativeGetValue(char* subkey, char* valname)
{
#if defined (WIN32) || defined (XP_OS2)
    unsigned char    valbuf[STRBUFLEN];
    HKEY    root;
    HKEY    newkey;
    LONG    result;
    DWORD   length=STRBUFLEN;
    DWORD   type;
    char*    data;
    nsWinRegValue* value = NULL;

    root    = (HKEY) rootkey;

    result = RegOpenKeyEx( root, subkey, 0, KEY_ALL_ACCESS, &newkey );

    if ( ERROR_SUCCESS == result ) {

        result = RegQueryValueEx( newkey, valname, NULL, &type, valbuf, &length );

        if ( ERROR_SUCCESS == result ) {
            data = XP_STRDUP((char*)valbuf);
            length = XP_STRLEN(data);

            value = new nsWinRegValue(type, (void*)data, length);
        }

        RegCloseKey( newkey );
    }

    return value;
#else
    return NULL;
#endif
}
Пример #22
0
void CBigIcon::CenterText(CClientDC &dc, LPCSTR lpszStatus, int top)
{
	int			nMargin;
	CRect		rect;
	TEXTMETRIC	tm;

	// Leave a horizontal margin equal to the widest character
	VERIFY(dc.GetTextMetrics(&tm));
	nMargin = tm.tmMaxCharWidth;

	// Compute the opaque rect
	rect.left = nMargin;
	rect.right = m_sizeBitmap.cx - nMargin;
	rect.top = top;
	rect.bottom = rect.top + tm.tmHeight;

	// We need to compute where to draw the text so it is centered
	// horizontally
	int		x = rect.left;
    CSize   extent = CIntlWin::GetTextExtent(0, dc.m_hDC, lpszStatus, XP_STRLEN(lpszStatus));

	if (extent.cx < rect.Width())
		x += (rect.Width() - extent.cx) / 2;

	// Draw opaquely so we can avoid erasing the old text
	dc.ExtTextOut(x, rect.top, ETO_OPAQUE, &rect, lpszStatus, strlen(lpszStatus), NULL);


}
Пример #23
0
char * xp_FilePlatformName(const char * name, char* path)
{
    if ((name == NULL) || (XP_STRLEN(name) > 1000))
        return NULL;
    XP_STRCPY(path, name);
    return path;
}
Пример #24
0
VR_INTERFACE(REGERR) VR_GetUninstallUserName(char *regPackageName, char *outbuf, uint32 buflen)
{
    REGERR err;
    RKEY key = 0;
    char *regbuf = NULL;
    char *convertedName = NULL;
    uint32 convertedDataLength = 0;
    uint32 regbuflen = 0;

    err = vr_Init();
    if (err != REGERR_OK)
        return err;

    if ( regPackageName == NULL || *regPackageName == '\0' || outbuf == NULL )
        return REGERR_PARAM;
   
    convertedDataLength = 2 * XP_STRLEN(regPackageName) + 1;
    convertedName = (char*)XP_ALLOC(convertedDataLength);
    if (convertedName == NULL ) {
        err = REGERR_MEMORY;
        return err;
    }
  
    err = vr_convertPackageName(regPackageName, convertedName, convertedDataLength);
    if (err != REGERR_OK) {
        XP_FREE(convertedName);
        return err;
    }
    regbuflen = 256 + XP_STRLEN(convertedName);
    regbuf = (char*)XP_ALLOC( regbuflen );
    if (regbuf == NULL ) {
        err = REGERR_MEMORY;
    } else {
        err = vr_GetUninstallItemPath(convertedName, regbuf, regbuflen);
        if (err == REGERR_OK) {
            err = NR_RegGetKey( vreg, ROOTKEY_PRIVATE, regbuf, &key );
        }
        XP_FREE(regbuf);
    }

    if (err == REGERR_OK)
        err = NR_RegGetEntryString( vreg, key, PACKAGENAMESTR, outbuf, buflen );
  
    XP_FREE(convertedName);
    return err;

}   /* GetUninstallName */
Пример #25
0
NET_StreamClass *
OLE_ViewStream(int format_out, void *pDataObj, URL_Struct *urls,
              MWContext *pContext)
{
    NET_StreamClass *stream = nil, *viewstream;
	char *org_content_type;
    
    if (!(stream = XP_NEW_ZAP(NET_StreamClass))) {
		XP_TRACE(("OLE_ViewStream memory lossage"));
		return 0;
	}
	
    stream->name           = "ole viewer";
    stream->complete       = ole_view_complete;
    stream->abort          = ole_view_abort;
    stream->is_write_ready = ole_view_write_ready;
    stream->data_object    = NULL;
    stream->window_id      = pContext;
    stream->put_block      = (MKStreamWriteFunc)ole_view_write;

	org_content_type = urls->content_type; 
	urls->content_type = 0;
	StrAllocCopy(urls->content_type, TEXT_HTML);
	urls->is_binary = 1;	/* secret flag for mail-to save as */

	if((viewstream=NET_StreamBuilder(format_out, urls, pContext)) != 0)
	{
        char *buffer = (char*)
            XP_ALLOC(XP_STRLEN(fakehtml) + XP_STRLEN(urls->address) + 1);

        if (buffer)
        {
            XP_SPRINTF(buffer, fakehtml, urls->address);
            (*viewstream->put_block)(viewstream,
                                     buffer, XP_STRLEN(buffer));
            (*viewstream->complete)(viewstream);
            XP_FREE(buffer);
        }
	}

	/* XXX hack alert - this has to be set back for abort to work
       correctly */
	XP_FREE(urls->content_type);
	urls->content_type = org_content_type;

    return stream;
}
Пример #26
0
component_mozilla_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
    char *name, *type_str, *set_str, *prop_val;
    jsval type, func;

    if (!JSVAL_IS_STRING(id))
	return JS_TRUE;

    name = JS_GetStringBytes(JSVAL_TO_STRING(id));

    type_str = JS_malloc(cx, XP_STRLEN(lm_typePrefix_str) + XP_STRLEN(name) + 1);
    set_str = JS_malloc(cx, XP_STRLEN(lm_setPrefix_str) + XP_STRLEN(name) + 1);
    if (!type_str || !set_str)
	return JS_TRUE;

    XP_STRCPY(type_str, lm_typePrefix_str);
    XP_STRCAT(type_str, name);
    XP_STRCPY(set_str, lm_setPrefix_str);
    XP_STRCAT(set_str, name);
    if (!JS_GetProperty(cx, obj, type_str, &type) ||
	!JSVAL_IS_INT(type) ||
	!JS_GetProperty(cx, obj, set_str, &func))
	return JS_TRUE;

    JS_free(cx, type_str);
    JS_free(cx, set_str);
  
    switch(JSVAL_TO_INT(type)) {
    case ARGTYPE_INT32:
	if (JSVAL_IS_INT(*vp))
	    ET_moz_CompSetterFunction((ETCompPropSetterFunc)JSVAL_TO_INT(func), name, (void*)JSVAL_TO_INT(*vp));
	break;
    case ARGTYPE_BOOL:
	if (JSVAL_IS_BOOLEAN(*vp))
	    ET_moz_CompSetterFunction((ETCompPropSetterFunc)JSVAL_TO_INT(func), name, (void*)JSVAL_TO_BOOLEAN(*vp));
	break;
    case ARGTYPE_STRING:
	if (JSVAL_IS_STRING(*vp)) {
	    prop_val = JS_GetStringBytes(JSVAL_TO_STRING(*vp));
	    ET_moz_CompSetterFunction((ETCompPropSetterFunc)JSVAL_TO_INT(func), name, (void*)prop_val);
	}
	break;
    }

    return JS_TRUE;
}
Пример #27
0
/*
 * Make all the directories specified in the path
 */
int XP_MakeDirectoryR(const char* name, XP_FileType type)
{
    char separator;
    int result = 0;
    char * finalName;

#if defined(XP_WIN) || defined(XP_OS2)
    separator = '\\';
#elif defined XP_UNIX
    separator = '/';
#endif
    finalName = WH_FileName(name, type);
    if ( finalName )
    {
        char * dirPath;
        char * currentEnd;
        int err = 0;
        XP_StatStruct s;
        dirPath = XP_STRDUP( finalName );
        if (dirPath == NULL)
            return -1;

        currentEnd = XP_STRCHR(dirPath, separator);
        /* Loop through every part of the directory path */
        while (currentEnd != 0)
        {
            char savedChar;
            savedChar = currentEnd[1];
            currentEnd[1] = 0;
            if ( XP_Stat(dirPath, &s, xpURL ) != 0)
                err = XP_MakeDirectory(dirPath, xpURL);
            if ( err != 0)
            {
                XP_ASSERT( FALSE );	/* Could not create the directory? */
                break;
            }
            currentEnd[1] = savedChar;
            currentEnd = XP_STRCHR( &currentEnd[1], separator);
        }
        if ( err == 0 )
            /* If the path is not terminated with / */
        {
            if ( dirPath[XP_STRLEN( dirPath) - 1] != separator )
                if ( XP_Stat(dirPath, &s, xpURL ) != 0)
                    err = XP_MakeDirectory(dirPath, xpURL);
        }
        if ( 0 != err )
            result = err;
        if ( dirPath )
            XP_FREE( dirPath );
    }
    else
        result = -1;
    if ( finalName )
        XP_FREE( finalName );
    XP_ASSERT( result == 0 );	/* For debugging only */
    return result;
}
Пример #28
0
static REGERR vr_SetPathname(HREG reg, RKEY key, char *entry, char *dir)
{
    REGERR err;
    int32  datalen = XP_STRLEN(dir)+1; /* include '\0' */

    err = NR_RegSetEntry( reg, key, entry, REGTYPE_ENTRY_FILE, dir, datalen);

    return err;
}
Пример #29
0
void IStreamOut::WriteZString(char* pString){
    if( pString ){
        int32 iLen = XP_STRLEN( pString )+1;
        WriteInt( iLen );
        Write( pString, iLen );
    }
    else {
        WriteInt(0);
    }
}
Пример #30
0
component_mozilla_getProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp)
{
    char *name, *type_str, *get_str;
    jsval type, func;

    if (!JSVAL_IS_STRING(id))
	return JS_TRUE;

    name = JS_GetStringBytes(JSVAL_TO_STRING(id));

    type_str = JS_malloc(cx, XP_STRLEN(lm_typePrefix_str) + XP_STRLEN(name) + 1);
    get_str = JS_malloc(cx, XP_STRLEN(lm_getPrefix_str) + XP_STRLEN(name) + 1);
    if (!type_str || !get_str)
	return JS_TRUE;

    XP_STRCPY(type_str, lm_typePrefix_str);
    XP_STRCAT(type_str, name);
    XP_STRCPY(get_str, lm_getPrefix_str);
    XP_STRCAT(get_str, name);

    if (!JS_GetProperty(cx, obj, type_str, &type) ||
	!JSVAL_IS_INT(type) ||
	!JS_GetProperty(cx, obj, get_str, &func))
	return JS_TRUE;

    JS_free(cx, type_str);
    JS_free(cx, get_str);

    switch(JSVAL_TO_INT(type)) {
    case ARGTYPE_INT32:
	*vp = INT_TO_JSVAL((int32)ET_moz_CompGetterFunction((ETCompPropGetterFunc)JSVAL_TO_INT(func), name));
	break;
    case ARGTYPE_BOOL:
	*vp = BOOLEAN_TO_JSVAL((JSBool)ET_moz_CompGetterFunction((ETCompPropGetterFunc)JSVAL_TO_INT(func), name));
	break;
    case ARGTYPE_STRING:
	*vp = STRING_TO_JSVAL(JS_NewStringCopyZ(cx, 
		(char*)ET_moz_CompGetterFunction((ETCompPropGetterFunc)JSVAL_TO_INT(func), name)));
	break;
    }

    return JS_TRUE;
}